diff options
author | frosch <frosch@openttd.org> | 2011-02-19 13:16:34 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2011-02-19 13:16:34 +0000 |
commit | 57dc3ed716b50fa2e0db5fb691fb70c0766826f4 (patch) | |
tree | 5a55a7fcfdd5db2ee08dc31052f1da5fcd72efe7 | |
parent | 72e027e4d6ff168ab9f77d1001f877c55071c59c (diff) | |
download | openttd-57dc3ed716b50fa2e0db5fb691fb70c0766826f4.tar.xz |
(svn r22106) -Codechange: Add DrawTileSeqStruct::MakeTerminator(), DrawTileSeqStruct::IsTerminator(), DrawTileSeqStruct::IsParentSprite() to simplify stuff.
-rw-r--r-- | src/newgrf.cpp | 6 | ||||
-rw-r--r-- | src/sprite.cpp | 4 | ||||
-rw-r--r-- | src/sprite.h | 22 |
3 files changed, 25 insertions, 7 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 395212a91..0a70a41d4 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1223,7 +1223,7 @@ static ChangeInfoResult StationChangeInfo(uint stid, int numinfo, int prop, Byte DrawTileSeqStruct *dtss = const_cast<DrawTileSeqStruct *>(&dts->seq[seq_count - 1]); dtss->delta_x = buf->ReadByte(); - if ((byte) dtss->delta_x == 0x80) break; + if (dtss->IsTerminator()) break; dtss->delta_y = buf->ReadByte(); dtss->delta_z = buf->ReadByte(); dtss->size_x = buf->ReadByte(); @@ -3955,7 +3955,7 @@ static void NewSpriteGroup(ByteReader *buf) if (type > 0) { seq->delta_z = buf->ReadByte(); - if ((byte)seq->delta_z == 0x80) continue; + if (!seq->IsParentSprite()) continue; } seq->size_x = buf->ReadByte(); @@ -3964,7 +3964,7 @@ static void NewSpriteGroup(ByteReader *buf) } /* Set the terminator value. */ - const_cast<DrawTileSeqStruct *>(group->dts->seq)[i].delta_x = (int8)0x80; + const_cast<DrawTileSeqStruct *>(group->dts->seq)[i].MakeTerminator(); break; } diff --git a/src/sprite.cpp b/src/sprite.cpp index df4eec8ef..2e453941a 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -43,7 +43,7 @@ void DrawCommonTileSeq(const TileInfo *ti, const DrawTileSprites *dts, Transpare PaletteID pal = SpriteLayoutPaletteTransform(image, dtss->image.pal, default_palette); - if ((byte)dtss->delta_z != 0x80) { + if (dtss->IsParentSprite()) { parent_sprite_encountered = true; AddSortableSpriteToDraw( image, pal, @@ -94,7 +94,7 @@ void DrawCommonTileSeqInGUI(int x, int y, const DrawTileSprites *dts, int32 orig PaletteID pal = SpriteLayoutPaletteTransform(image, dtss->image.pal, default_palette); - if ((byte)dtss->delta_z != 0x80) { + if (dtss->IsParentSprite()) { Point pt = RemapCoords(dtss->delta_x, dtss->delta_y, dtss->delta_z); DrawSprite(image, pal, x + pt.x, y + pt.y); diff --git a/src/sprite.h b/src/sprite.h index 5d1c7f07b..3e03aee6a 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -27,11 +27,29 @@ struct DrawTileSeqStruct { int8 delta_x; ///< \c 0x80 is sequence terminator int8 delta_y; - int8 delta_z; + int8 delta_z; ///< \c 0x80 identifies child sprites byte size_x; byte size_y; byte size_z; PalSpriteID image; + + /** Make this struct a sequence terminator. */ + void MakeTerminator() + { + this->delta_x = (int8)0x80; + } + + /** Check whether this is a sequence terminator. */ + bool IsTerminator() const + { + return (byte)this->delta_x == 0x80; + } + + /** Check whether this is a parent sprite with a boundingbox. */ + bool IsParentSprite() const + { + return (byte)this->delta_z != 0x80; + } }; /** Ground palette sprite of a tile, together with its child sprites */ @@ -56,7 +74,7 @@ struct DrawBuildingsTileStruct { }; /** Iterate through all DrawTileSeqStructs in DrawTileSprites. */ -#define foreach_draw_tile_seq(idx, list) for (idx = list; ((byte) idx->delta_x) != 0x80; idx++) +#define foreach_draw_tile_seq(idx, list) for (idx = list; !idx->IsTerminator(); idx++) void DrawCommonTileSeq(const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, int32 orig_offset, uint32 newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned); void DrawCommonTileSeqInGUI(int x, int y, const DrawTileSprites *dts, int32 orig_offset, uint32 newgrf_offset, PaletteID default_palette, bool child_offset_is_unsigned); |