Changeset - r4232:49639ff69a27
[Not reviewed]
master
0 2 0
tron - 18 years ago 2006-08-06 18:36:36
tron@openttd.org
(svn r5796) Use DrawTileSprites/DrawTileSeqStruct for road depot drawing data, too
2 files changed with 29 insertions and 38 deletions:
0 comments (0 inline, 0 general)
road_cmd.c
Show inline comments
 
@@ -5,6 +5,7 @@
 
#include "bridge_map.h"
 
#include "rail_map.h"
 
#include "road_map.h"
 
#include "sprite.h"
 
#include "table/sprites.h"
 
#include "table/strings.h"
 
#include "functions.h"
 
@@ -650,14 +651,6 @@ typedef struct DrawRoadTileStruct {
 
	byte subcoord_y;
 
} DrawRoadTileStruct;
 

	
 
typedef struct DrawRoadSeqStruct {
 
	uint32 image;
 
	byte subcoord_x;
 
	byte subcoord_y;
 
	byte width;
 
	byte height;
 
} DrawRoadSeqStruct;
 

	
 
#include "table/road_land.h"
 

	
 

	
 
@@ -783,19 +776,19 @@ static void DrawTile_Road(TileInfo *ti)
 

	
 
		default:
 
		case ROAD_TILE_DEPOT: {
 
			const DrawRoadSeqStruct* drss;
 
			const DrawTileSprites* dts;
 
			const DrawTileSeqStruct* dtss;
 
			uint32 palette;
 

	
 
			if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, ti->tileh);
 

	
 
			palette = PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile));
 

	
 
			drss = _road_depot[GetRoadDepotDirection(ti->tile)];
 
			dts =  &_road_depot[GetRoadDepotDirection(ti->tile)];
 
			DrawGroundSprite(dts->ground_sprite);
 

	
 
			DrawGroundSprite(drss++->image);
 

	
 
			for (; drss->image != 0; drss++) {
 
				uint32 image = drss->image;
 
			for (dtss = dts->seq; dtss->image != 0; dtss++) {
 
				uint32 image = dtss->image;
 

	
 
				if (_display_opt & DO_TRANS_BUILDINGS) {
 
					MAKE_TRANSPARENT(image);
 
@@ -804,8 +797,10 @@ 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
 
					image,
 
					ti->x + dtss->delta_x, ti->y + dtss->delta_y,
 
					dtss->size_x, dtss->size_y,
 
					dtss->size_z, ti->z
 
				);
 
			}
 
			break;
 
@@ -815,19 +810,20 @@ static void DrawTile_Road(TileInfo *ti)
 

	
 
void DrawRoadDepotSprite(int x, int y, DiagDirection dir)
 
{
 
	const DrawRoadSeqStruct* dtss = _road_depot[dir];
 
	uint32 ormod = PLAYER_SPRITE_COLOR(_local_player);
 
	uint32 palette = PLAYER_SPRITE_COLOR(_local_player);
 
	const DrawTileSprites* dts =  &_road_depot[dir];
 
	const DrawTileSeqStruct* dtss;
 

	
 
	x += 33;
 
	y += 17;
 

	
 
	DrawSprite(dtss++->image, x, y);
 
	DrawSprite(dts->ground_sprite, x, y);
 

	
 
	for (; dtss->image != 0; dtss++) {
 
		Point pt = RemapCoords(dtss->subcoord_x, dtss->subcoord_y, 0);
 
	for (dtss = dts->seq; dtss->image != 0; dtss++) {
 
		Point pt = RemapCoords(dtss->delta_x, dtss->delta_y, dtss->delta_z);
 
		uint32 image = dtss->image;
 

	
 
		if (image & PALETTE_MODIFIER_COLOR) image |= ormod;
 
		if (image & PALETTE_MODIFIER_COLOR) image |= palette;
 

	
 
		DrawSprite(image, x + pt.x, y + pt.y);
 
	}
table/road_land.h
Show inline comments
 
/* $Id$ */
 

	
 
#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 }
 
#define TILE_SEQ_LINE(img, dx, dy, sx, sy) { dx, dy, 0, sx, sy, 20, img },
 
#define TILE_SEQ_END() { 0, 0, 0, 0, 0, 0, 0 }
 

	
 
static const DrawRoadSeqStruct _road_depot_NE[] = {
 
	TILE_SEQ_BEGIN(0xA4A)
 
static const DrawTileSeqStruct _road_depot_NE[] = {
 
	TILE_SEQ_LINE(0x584 | PALETTE_MODIFIER_COLOR, 0, 15, 16, 1)
 
	TILE_SEQ_END()
 
};
 

	
 
static const DrawRoadSeqStruct _road_depot_SE[] = {
 
	TILE_SEQ_BEGIN(0xA4A)
 
static const DrawTileSeqStruct _road_depot_SE[] = {
 
	TILE_SEQ_LINE(0x580, 0, 0, 1, 16)
 
	TILE_SEQ_LINE(0x581 | PALETTE_MODIFIER_COLOR, 15, 0, 1, 16)
 
	TILE_SEQ_END()
 
};
 

	
 
static const DrawRoadSeqStruct _road_depot_SW[] = {
 
	TILE_SEQ_BEGIN(0xA4A)
 
static const DrawTileSeqStruct _road_depot_SW[] = {
 
	TILE_SEQ_LINE(0x582, 0, 0, 16, 1)
 
	TILE_SEQ_LINE(0x583 | PALETTE_MODIFIER_COLOR, 0, 15, 16, 1)
 
	TILE_SEQ_END()
 
};
 

	
 
static const DrawRoadSeqStruct _road_depot_NW[] = {
 
	TILE_SEQ_BEGIN(0xA4A)
 
static const DrawTileSeqStruct _road_depot_NW[] = {
 
	TILE_SEQ_LINE(0x585 | PALETTE_MODIFIER_COLOR, 15, 0, 1, 16)
 
	TILE_SEQ_END()
 
};
 

	
 
static const DrawRoadSeqStruct* const _road_depot[] = {
 
	_road_depot_NE,
 
	_road_depot_SE,
 
	_road_depot_SW,
 
	_road_depot_NW
 
static const DrawTileSprites _road_depot[] = {
 
	{ 0xA4A, _road_depot_NE },
 
	{ 0xA4A, _road_depot_SE },
 
	{ 0xA4A, _road_depot_SW },
 
	{ 0xA4A, _road_depot_NW }
 
};
 

	
 
#undef TILE_SEQ_BEGIN
0 comments (0 inline, 0 general)