From 07633a064c062bc5e997c6aa74a48aa4a82e8cc8 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Fri, 25 Nov 2011 23:06:17 +0000 Subject: [PATCH] (svn r23329) -Fix (r23316): Scale child sprite pixel offsets unless told not to. Fixes lifts and industry graphics. --- src/viewport.cpp | 10 +++++----- src/viewport_func.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/viewport.cpp b/src/viewport.cpp index 56b2941aae..0d97c3d248 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -513,7 +513,7 @@ static void AddChildSpriteToFoundation(SpriteID image, PaletteID pal, const SubS int *old_child = _vd.last_child; _vd.last_child = _vd.last_foundation_child[foundation_part]; - AddChildSpriteScreen(image, pal, offs.x + extra_offs_x, offs.y + extra_offs_y, false, sub); + AddChildSpriteScreen(image, pal, offs.x + extra_offs_x, offs.y + extra_offs_y, false, sub, false); /* Switch back to last ChildSprite list */ _vd.last_child = old_child; @@ -611,7 +611,7 @@ static void AddCombinedSprite(SpriteID image, PaletteID pal, int x, int y, int z return; const ParentSpriteToDraw *pstd = _vd.parent_sprites_to_draw.End() - 1; - AddChildSpriteScreen(image, pal, pt.x - pstd->left, pt.y - pstd->top, false, sub); + AddChildSpriteScreen(image, pal, pt.x - pstd->left, pt.y - pstd->top, false, sub, false); } /** @@ -794,7 +794,7 @@ bool IsInsideRotatedRectangle(int x, int y) * @param transparent if true, switch the palette between the provided palette and the transparent palette, * @param sub Only draw a part of the sprite. */ -void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent, const SubSprite *sub) +void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent, const SubSprite *sub, bool scale) { assert((image & SPRITE_MASK) < MAX_SPRITES); @@ -813,8 +813,8 @@ void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool tran cs->image = image; cs->pal = pal; cs->sub = sub; - cs->x = x; - cs->y = y; + cs->x = scale ? x * ZOOM_LVL_BASE : x; + cs->y = scale ? y * ZOOM_LVL_BASE : y; cs->next = -1; /* Append the sprite to the active ChildSprite list. diff --git a/src/viewport_func.h b/src/viewport_func.h index 7faa173a1b..dba28bb9ea 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -50,7 +50,7 @@ void OffsetGroundSprite(int x, int y); void DrawGroundSprite(SpriteID image, PaletteID pal, const SubSprite *sub = NULL, int extra_offs_x = 0, int extra_offs_y = 0); void DrawGroundSpriteAt(SpriteID image, PaletteID pal, int32 x, int32 y, int z, const SubSprite *sub = NULL, int extra_offs_x = 0, int extra_offs_y = 0); void AddSortableSpriteToDraw(SpriteID image, PaletteID pal, int x, int y, int w, int h, int dz, int z, bool transparent = false, int bb_offset_x = 0, int bb_offset_y = 0, int bb_offset_z = 0, const SubSprite *sub = NULL); -void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent = false, const SubSprite *sub = NULL); +void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent = false, const SubSprite *sub = NULL, bool scale = true); void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, uint64 params_1, uint64 params_2 = 0, Colours colour = INVALID_COLOUR);