git repos / blockattack-game

commit ba83b3f9

Poul Sander · 2025-12-01 21:15
ba83b3f99188ae213911216ea71373d6f82347ce patch · browse files
parent f7f0c59354418dd2949382d2a6c20886c0e350e3

Fix resizing while rotaating. Not a problem in BlockAttack at the moment but the base code should work.

Changed files

M source/code/sago/SagoSprite.cpp before
diff --git a/source/code/sago/SagoSprite.cpp b/source/code/sago/SagoSprite.cpp index e097660..64ed100 100644 --- a/source/code/sago/SagoSprite.cpp +++ b/source/code/sago/SagoSprite.cpp
@@ -72,10 +72,19 @@ void SagoSprite::DrawScaledAndRotated(SDL_Renderer* target, Sint32 frameTime, in
pos.h = h;
}
double angleDegress = angleRadian/M_PI*180.0;
+ SDL_Point scaledCenter;
+ const SDL_Point* centerToUse = center;
if (resize) {
+ SDL_Rect originalPos = pos;
resize->LogicalToPhysical(pos);
+ // Scale the center point proportionally if resize is active
+ if (center) {
+ scaledCenter.x = (center->x * pos.w) / originalPos.w;
+ scaledCenter.y = (center->y * pos.h) / originalPos.h;
+ centerToUse = &scaledCenter;
+ }
}
- SDL_RenderCopyEx(target, tex.get(), &rect, &pos, angleDegress, center, flip);
+ SDL_RenderCopyEx(target, tex.get(), &rect, &pos, angleDegress, centerToUse, flip);
}
void SagoSprite::Draw(SDL_Renderer* target, Sint32 frameTime, int x, int y, const SDL_Rect& part, SagoLogicalResize* resize) const {