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
 
@@ -2,12 +2,13 @@
 

	
 
#include "stdafx.h"
 
#include "openttd.h"
 
#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"
 
#include "map.h"
 
#include "tile.h"
 
#include "town_map.h"
 
@@ -647,20 +648,12 @@ static int32 ClearTile_Road(TileIndex ti
 
typedef struct DrawRoadTileStruct {
 
	uint16 image;
 
	byte subcoord_x;
 
	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"
 

	
 

	
 
uint GetRoadFoundation(Slope tileh, RoadBits bits)
 
{
 
	uint i;
 
@@ -780,57 +773,60 @@ static void DrawTile_Road(TileInfo *ti)
 
			if (GetRailTypeCrossing(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
 
			break;
 
		}
 

	
 
		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);
 
				} else if (image & PALETTE_MODIFIER_COLOR) {
 
					image |= palette;
 
				}
 

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

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

	
 
static uint GetSlopeZ_Road(TileIndex tile, uint x, uint 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
 
#undef TILE_SEQ_LINE
 
#undef TILE_SEQ_END
 

	
0 comments (0 inline, 0 general)