diff --git a/road_cmd.c b/road_cmd.c index 3e607c554a..0c78deac4f 100644 --- a/road_cmd.c +++ b/road_cmd.c @@ -733,7 +733,6 @@ static void DrawTile_Road(TileInfo *ti) { uint32 image; uint16 m2; - const byte *s; if ( (ti->map5 & 0xF0) == 0) { // if it is a road the upper 4 bits are 0 const DrawRoadTileStruct *drts; @@ -773,7 +772,7 @@ static void DrawTile_Road(TileInfo *ti) return; } - drts = (const DrawRoadTileStruct*)_road_display_table[m2][ti->map5 & 0xF]; + drts = _road_display_table[m2][ti->map5 & 0xF]; while ((image = drts->image) != 0) { int x = ti->x | drts->subcoord_x; @@ -816,13 +815,13 @@ static void DrawTile_Road(TileInfo *ti) if (player < MAX_PLAYERS) ormod = PLAYER_SPRITE_COLOR(player); - s = _road_display_datas[ti->map5 & 0xF]; + drss = _road_display_datas[ti->map5 & 0xF]; - DrawGroundSprite(*(const uint32*)s); - s += sizeof(uint32); - drss = (const DrawRoadSeqStruct*)s; + DrawGroundSprite(drss++->image); + + for (; drss->image != 0; drss++) { + uint32 image = drss->image; - while ((image=drss->image) != 0) { if (image & 0x8000) image |= ormod; if (_display_opt & DO_TRANS_BUILDINGS) // show transparent depots @@ -830,7 +829,6 @@ static void DrawTile_Road(TileInfo *ti) AddSortableSpriteToDraw(image, ti->x | drss->subcoord_x, ti->y | drss->subcoord_y, drss->width, drss->height, 0x14, ti->z); - drss++; } } } @@ -839,19 +837,17 @@ void DrawRoadDepotSprite(int x, int y, int image) { uint32 ormod; const DrawRoadSeqStruct *dtss; - const byte *t; ormod = PLAYER_SPRITE_COLOR(_local_player); - t = _road_display_datas[image]; + dtss = _road_display_datas[image]; x+=33; y+=17; - DrawSprite(*(const uint32*)t, x, y); - t += sizeof(uint32); + DrawSprite(dtss++->image, x, y); - for(dtss = (const DrawRoadSeqStruct *)t; dtss->image != 0; dtss++) { + for(; dtss->image != 0; dtss++) { Point pt = RemapCoords(dtss->subcoord_x, dtss->subcoord_y, 0); image = dtss->image; diff --git a/table/road_land.h b/table/road_land.h index 5328bc6a1d..b0c46711ea 100644 --- a/table/road_land.h +++ b/table/road_land.h @@ -1,40 +1,44 @@ -#define TILE_SEQ_BEGIN(x) ADD_DWORD(x), -#define TILE_SEQ_LINE(a,b,c,d,e) ADD_DWORD(a), b,c,d,e, -#define TILE_SEQ_END() 0,0,0,0 +#define TILE_SEQ_BEGIN(x) { x, 0, 0, 0, 0 }, +#define TILE_SEQ_LINE(a, b, c, d, e) { a, b, c, d, e }, +#define TILE_SEQ_END() { 0, 0, 0, 0, 0 } -static const byte _road_display_datas_0[] = { +static const DrawRoadSeqStruct _road_display_datas_0[] = { TILE_SEQ_BEGIN(0xA4A) TILE_SEQ_LINE(0x8584, 0, 15, 16, 1) TILE_SEQ_END() }; -static const byte _road_display_datas_1[] = { +static const DrawRoadSeqStruct _road_display_datas_1[] = { TILE_SEQ_BEGIN(0xA4A) TILE_SEQ_LINE(0x580, 0, 0, 1, 16) TILE_SEQ_LINE(0x8581, 15, 0, 1, 16) TILE_SEQ_END() }; -static const byte _road_display_datas_2[] = { +static const DrawRoadSeqStruct _road_display_datas_2[] = { TILE_SEQ_BEGIN(0xA4A) TILE_SEQ_LINE(0x582, 0, 0, 16, 1) TILE_SEQ_LINE(0x8583, 0, 15, 16, 1) TILE_SEQ_END() }; -static const byte _road_display_datas_3[] = { +static const DrawRoadSeqStruct _road_display_datas_3[] = { TILE_SEQ_BEGIN(0xA4A) TILE_SEQ_LINE(0x8585, 15, 0, 1, 16) TILE_SEQ_END() }; -static const byte * const _road_display_datas[4] = { +static const DrawRoadSeqStruct* const _road_display_datas[] = { _road_display_datas_0, _road_display_datas_1, _road_display_datas_2, _road_display_datas_3, }; +#undef TILE_SEQ_BEGIN +#undef TILE_SEQ_LINE +#undef TILE_SEQ_END + static const SpriteID _road_tile_sprites_1[16] = { 0, 0x546, 0x545, 0x53B, 0x544, 0x534, 0x53E, 0x539, @@ -43,182 +47,184 @@ static const SpriteID _road_tile_sprites_1[16] = { -#define MAKELINE(a,b,c) ADD_WORD(a), b, c, -static const byte _road_display_datas2_0[] = { - 0,0 +#define MAKELINE(a, b, c) { a, b, c }, +#define ENDLINE { 0, 0, 0 } +static const DrawRoadTileStruct _road_display_datas2_0[] = { + ENDLINE }; -static const byte _road_display_datas2_1[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_1[] = { + ENDLINE }; -static const byte _road_display_datas2_2[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_2[] = { + ENDLINE }; -static const byte _road_display_datas2_3[] = { +static const DrawRoadTileStruct _road_display_datas2_3[] = { MAKELINE(0x57f,1,8) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_4[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_4[] = { + ENDLINE }; -static const byte _road_display_datas2_5[] = { +static const DrawRoadTileStruct _road_display_datas2_5[] = { MAKELINE(0x57f,1,8) MAKELINE(0x57e,14,8) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_6[] = { +static const DrawRoadTileStruct _road_display_datas2_6[] = { MAKELINE(0x57e,8,1) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_7[] = { +static const DrawRoadTileStruct _road_display_datas2_7[] = { MAKELINE(0x57f,1,8) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_8[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_8[] = { + ENDLINE }; -static const byte _road_display_datas2_9[] = { +static const DrawRoadTileStruct _road_display_datas2_9[] = { MAKELINE(0x57f,8,14) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_10[] = { +static const DrawRoadTileStruct _road_display_datas2_10[] = { MAKELINE(0x57f,8,14) MAKELINE(0x57e,8,1) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_11[] = { +static const DrawRoadTileStruct _road_display_datas2_11[] = { MAKELINE(0x57f,8,14) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_12[] = { +static const DrawRoadTileStruct _road_display_datas2_12[] = { MAKELINE(0x57e,8,1) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_13[] = { +static const DrawRoadTileStruct _road_display_datas2_13[] = { MAKELINE(0x57e,14,8) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_14[] = { +static const DrawRoadTileStruct _road_display_datas2_14[] = { MAKELINE(0x57e,8,1) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_15[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_15[] = { + ENDLINE }; -static const byte _road_display_datas2_16[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_16[] = { + ENDLINE }; -static const byte _road_display_datas2_17[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_17[] = { + ENDLINE }; -static const byte _road_display_datas2_18[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_18[] = { + ENDLINE }; -static const byte _road_display_datas2_19[] = { +static const DrawRoadTileStruct _road_display_datas2_19[] = { MAKELINE(0x1212,0,2) MAKELINE(0x1212,3,9) MAKELINE(0x1212,10,12) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_20[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_20[] = { + ENDLINE }; -static const byte _road_display_datas2_21[] = { +static const DrawRoadTileStruct _road_display_datas2_21[] = { MAKELINE(0x1212,0,2) MAKELINE(0x1212,0,10) MAKELINE(0x1212,12,2) MAKELINE(0x1212,12,10) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_22[] = { +static const DrawRoadTileStruct _road_display_datas2_22[] = { MAKELINE(0x1212,10,0) MAKELINE(0x1212,3,3) MAKELINE(0x1212,0,10) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_23[] = { +static const DrawRoadTileStruct _road_display_datas2_23[] = { MAKELINE(0x1212,0,2) MAKELINE(0x1212,0,10) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_24[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_24[] = { + ENDLINE }; -static const byte _road_display_datas2_25[] = { +static const DrawRoadTileStruct _road_display_datas2_25[] = { MAKELINE(0x1212,12,2) MAKELINE(0x1212,9,9) MAKELINE(0x1212,2,12) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_26[] = { +static const DrawRoadTileStruct _road_display_datas2_26[] = { MAKELINE(0x1212,2,0) MAKELINE(0x1212,10,0) MAKELINE(0x1212,2,12) MAKELINE(0x1212,10,12) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_27[] = { +static const DrawRoadTileStruct _road_display_datas2_27[] = { MAKELINE(0x1212,2,12) MAKELINE(0x1212,10,12) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_28[] = { +static const DrawRoadTileStruct _road_display_datas2_28[] = { MAKELINE(0x1212,2,0) MAKELINE(0x1212,9,3) MAKELINE(0x1212,12,10) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_29[] = { +static const DrawRoadTileStruct _road_display_datas2_29[] = { MAKELINE(0x1212,12,2) MAKELINE(0x1212,12,10) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_30[] = { +static const DrawRoadTileStruct _road_display_datas2_30[] = { MAKELINE(0x1212,2,0) MAKELINE(0x1212,10,0) - 0,0 + ENDLINE }; -static const byte _road_display_datas2_31[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_31[] = { + ENDLINE }; -static const byte _road_display_datas2_32[] = { - 0,0 +static const DrawRoadTileStruct _road_display_datas2_32[] = { + ENDLINE }; #undef MAKELINE +#undef ENDLINE -static const byte * const _road_display_table_1[16] = { +static const DrawRoadTileStruct* const _road_display_table_1[] = { _road_display_datas2_32,_road_display_datas2_32, _road_display_datas2_32,_road_display_datas2_32, _road_display_datas2_32,_road_display_datas2_32, @@ -229,7 +235,7 @@ static const byte * const _road_display_table_1[16] = { _road_display_datas2_32,_road_display_datas2_32, }; -static const byte * const _road_display_table_2[16] = { +static const DrawRoadTileStruct* const _road_display_table_2[] = { _road_display_datas2_0, _road_display_datas2_1, _road_display_datas2_2, @@ -248,7 +254,7 @@ static const byte * const _road_display_table_2[16] = { _road_display_datas2_15, }; -static const byte * const _road_display_table_3[16] = { +static const DrawRoadTileStruct* const _road_display_table_3[] = { _road_display_datas2_16, _road_display_datas2_17, _road_display_datas2_18, @@ -268,7 +274,7 @@ static const byte * const _road_display_table_3[16] = { _road_display_datas2_31, }; -static const byte* const * const _road_display_table[6] = { +static const DrawRoadTileStruct* const * const _road_display_table[] = { _road_display_table_1, _road_display_table_1, _road_display_table_1,