git repos / saland

commit 63688f58

Poul Sander · 2025-11-30 22:30
63688f58717fedb4c6fec037f684004d4c34f89d patch · browse files
parent 77f66fdffb7bf31cf7cefa74c563d7173728ed18

Add scaling to the rotation logic

Changed files

M src/sago/SagoSprite.cpp before
diff --git a/src/sago/SagoSprite.cpp b/src/sago/SagoSprite.cpp index e097660..64ed100 100644 --- a/src/sago/SagoSprite.cpp +++ b/src/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 {