diff options
author | peter1138 <peter1138@openttd.org> | 2007-01-14 19:57:49 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-01-14 19:57:49 +0000 |
commit | 92d418b031d23cf42a4df09e12945cc4b737bce2 (patch) | |
tree | c62990da208a45b3bd1c7379a1835190458d5a49 /src/industry_cmd.cpp | |
parent | 19d31c7417e4c8ad763c6674b7d1c6f9022e3703 (diff) | |
download | openttd-92d418b031d23cf42a4df09e12945cc4b737bce2.tar.xz |
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
This lets us increase the sprite width from 14 to up to 29 bits,
effectively nulling the old sprite limit. Table changes in next commit.
Diffstat (limited to 'src/industry_cmd.cpp')
-rw-r--r-- | src/industry_cmd.cpp | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 5b37939c0..fe9b3d580 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -125,14 +125,14 @@ static void IndustryDrawSugarMine(const TileInfo *ti) d = &_draw_industry_spec1[GetIndustryAnimationState(ti->tile)]; - AddChildSpriteScreen(SPR_IT_SUGAR_MINE_SIEVE + d->image_1, d->x, 0); + AddChildSpriteScreen(SPR_IT_SUGAR_MINE_SIEVE + d->image_1, PAL_NONE, d->x, 0); image = d->image_2; - if (image != 0) AddChildSpriteScreen(SPR_IT_SUGAR_MINE_CLOUDS + image - 1, 8, 41); + if (image != 0) AddChildSpriteScreen(SPR_IT_SUGAR_MINE_CLOUDS + image - 1, PAL_NONE, 8, 41); image = d->image_3; if (image != 0) { - AddChildSpriteScreen(SPR_IT_SUGAR_MINE_PILE + image - 1, + AddChildSpriteScreen(SPR_IT_SUGAR_MINE_PILE + image - 1, PAL_NONE, _drawtile_proc1_x[image - 1], _drawtile_proc1_y[image - 1]); } } @@ -147,16 +147,16 @@ static void IndustryDrawToffeeQuarry(const TileInfo *ti) x = 0; } - AddChildSpriteScreen(SPR_IT_TOFFEE_QUARRY_SHOVEL, 22 - x, 24 + x); - AddChildSpriteScreen(SPR_IT_TOFFEE_QUARRY_TOFFEE, 6, 14); + AddChildSpriteScreen(SPR_IT_TOFFEE_QUARRY_SHOVEL, PAL_NONE, 22 - x, 24 + x); + AddChildSpriteScreen(SPR_IT_TOFFEE_QUARRY_TOFFEE, PAL_NONE, 6, 14); } static void IndustryDrawBubbleGenerator( const TileInfo *ti) { if (IsIndustryCompleted(ti->tile)) { - AddChildSpriteScreen(SPR_IT_BUBBLE_GENERATOR_BUBBLE, 5, _industry_anim_offs_2[GetIndustryAnimationState(ti->tile)]); + AddChildSpriteScreen(SPR_IT_BUBBLE_GENERATOR_BUBBLE, PAL_NONE, 5, _industry_anim_offs_2[GetIndustryAnimationState(ti->tile)]); } else { - AddChildSpriteScreen(SPR_IT_BUBBLE_GENERATOR_SPRING, 3, 67); + AddChildSpriteScreen(SPR_IT_BUBBLE_GENERATOR_SPRING, PAL_NONE, 3, 67); } } @@ -167,15 +167,15 @@ static void IndustryDrawToyFactory(const TileInfo *ti) d = &_industry_anim_offs_3[GetIndustryAnimationState(ti->tile)]; if (d->image_1 != 0xFF) { - AddChildSpriteScreen(SPR_IT_TOY_FACTORY_CLAY, 50 - d->image_1 * 2, 96 + d->image_1); + AddChildSpriteScreen(SPR_IT_TOY_FACTORY_CLAY, PAL_NONE, 50 - d->image_1 * 2, 96 + d->image_1); } if (d->image_2 != 0xFF) { - AddChildSpriteScreen(SPR_IT_TOY_FACTORY_ROBOT, 16 - d->image_2 * 2, 100 + d->image_2); + AddChildSpriteScreen(SPR_IT_TOY_FACTORY_ROBOT, PAL_NONE, 16 - d->image_2 * 2, 100 + d->image_2); } - AddChildSpriteScreen(SPR_IT_TOY_FACTORY_STAMP, 7, d->image_3); - AddChildSpriteScreen(SPR_IT_TOY_FACTORY_STAMP_HOLDER, 0, 42); + AddChildSpriteScreen(SPR_IT_TOY_FACTORY_STAMP, PAL_NONE, 7, d->image_3); + AddChildSpriteScreen(SPR_IT_TOY_FACTORY_STAMP_HOLDER, PAL_NONE, 0, 42); } static void IndustryDrawCoalPlantSparks(const TileInfo *ti) @@ -185,6 +185,7 @@ static void IndustryDrawCoalPlantSparks(const TileInfo *ti) if (image != 0 && image < 7) { AddChildSpriteScreen(image + SPR_IT_POWER_PLANT_TRANSFORMERS, + PAL_NONE, _coal_plant_sparks_x[image - 1], _coal_plant_sparks_y[image - 1] ); @@ -207,41 +208,46 @@ static void DrawTile_Industry(TileInfo *ti) const Industry *ind; const DrawBuildingsTileStruct *dits; byte z; - uint32 image, ormod; + SpriteID image; + SpriteID pal; /* Pointer to industry */ ind = GetIndustryByTile(ti->tile); - ormod = GENERAL_SPRITE_COLOR(ind->random_color); /* Retrieve pointer to the draw industry tile struct */ dits = &_industry_draw_tile_data[gfx << 2 | (_industry_section_draw_animation_state[gfx] ? GetIndustryAnimationState(ti->tile) & 3 : GetIndustryConstructionStage(ti->tile))]; - image = dits->ground; - if (image & PALETTE_MODIFIER_COLOR && (image & PALETTE_SPRITE_MASK) == 0) - image |= ormod; + image = dits->ground.sprite; + if (HASBIT(image, PALETTE_MODIFIER_COLOR) && dits->ground.pal == PAL_NONE) { + pal = GENERAL_SPRITE_COLOR(ind->random_color); + } else { + pal = dits->ground.pal; + } z = ti->z; /* Add bricks below the industry? */ if (ti->tileh != SLOPE_FLAT) { - AddSortableSpriteToDraw(SPR_FOUNDATION_BASE + ti->tileh, ti->x, ti->y, 16, 16, 7, z); - AddChildSpriteScreen(image, 31, 1); + AddSortableSpriteToDraw(SPR_FOUNDATION_BASE + ti->tileh, PAL_NONE, ti->x, ti->y, 16, 16, 7, z); + AddChildSpriteScreen(image, pal, 31, 1); z += TILE_HEIGHT; } else { /* Else draw regular ground */ - DrawGroundSprite(image); + DrawGroundSprite(image, pal); } /* Add industry on top of the ground? */ - image = dits->building; + image = dits->building.sprite; if (image != 0) { - if (image & PALETTE_MODIFIER_COLOR && (image & PALETTE_SPRITE_MASK) == 0) - image |= ormod; - - if (_display_opt & DO_TRANS_BUILDINGS) MAKE_TRANSPARENT(image); + if (_display_opt & DO_TRANS_BUILDINGS) { + SETBIT(image, PALETTE_MODIFIER_TRANSPARENT); + pal = PALETTE_TO_TRANSPARENT; + } else { + pal = dits->building.pal; + } - AddSortableSpriteToDraw(image, + AddSortableSpriteToDraw(image, pal, ti->x + dits->subtile_x, ti->y + dits->subtile_y, dits->width + 1, |