Changeset - r17350:ee624c6795a6
[Not reviewed]
master
0 3 0
frosch - 13 years ago 2011-02-19 13:16:34
frosch@openttd.org
(svn r22106) -Codechange: Add DrawTileSeqStruct::MakeTerminator(), DrawTileSeqStruct::IsTerminator(), DrawTileSeqStruct::IsParentSprite() to simplify stuff.
3 files changed with 25 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -1223,7 +1223,7 @@ static ChangeInfoResult StationChangeInf
 
						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 *b
 

	
 
						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 *b
 
					}
 

	
 
					/* Set the terminator value. */
 
					const_cast<DrawTileSeqStruct *>(group->dts->seq)[i].delta_x = (int8)0x80;
 
					const_cast<DrawTileSeqStruct *>(group->dts->seq)[i].MakeTerminator();
 

	
 
					break;
 
				}
src/sprite.cpp
Show inline comments
 
@@ -43,7 +43,7 @@ void DrawCommonTileSeq(const TileInfo *t
 

	
 
		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
 

	
 
		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);
 

	
src/sprite.h
Show inline comments
 
@@ -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);
0 comments (0 inline, 0 general)