Files
@ r4603:3b159d0db197
Branch filter:
Location: cpp/openttd-patchpack/source/tile.c - annotation
r4603:3b159d0db197
1.1 KiB
text/x-c
(svn r6455) - Feature: Add 2cc (two company colours) livery schemes. This replaces the original colour selection window and bumps the saveload version. Liveries are supported for all vehicles, not just those with 2cc support. Thanks to lakie for GUI inspiration.
r2186:5ee653b1b5e1 r2186:5ee653b1b5e1 r1213:669b5bbfb6c5 r1211:0ff891861c37 r1211:0ff891861c37 r3636:a8e0c73aca96 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r4067:a9c6af704de1 r4067:a9c6af704de1 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r4067:a9c6af704de1 r1981:addba4bccc89 r4067:a9c6af704de1 r1981:addba4bccc89 r4067:a9c6af704de1 r1981:addba4bccc89 r4067:a9c6af704de1 r1335:da4955366538 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r4067:a9c6af704de1 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r1335:da4955366538 r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a r3773:96ded2ebf46a | /* $Id$ */
#include "stdafx.h"
#include "tile.h"
Slope GetTileSlope(TileIndex tile, uint *h)
{
uint a;
uint b;
uint c;
uint d;
uint min;
uint r;
assert(tile < MapSize());
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) {
if (h != NULL) *h = 0;
return 0;
}
min = a = TileHeight(tile);
b = TileHeight(tile + TileDiffXY(1, 0));
if (min >= b) min = b;
c = TileHeight(tile + TileDiffXY(0, 1));
if (min >= c) min = c;
d = TileHeight(tile + TileDiffXY(1, 1));
if (min >= d) min = d;
r = SLOPE_FLAT;
if ((a -= min) != 0) r += (--a << 4) + SLOPE_N;
if ((c -= min) != 0) r += (--c << 4) + SLOPE_E;
if ((d -= min) != 0) r += (--d << 4) + SLOPE_S;
if ((b -= min) != 0) r += (--b << 4) + SLOPE_W;
if (h != NULL) *h = min * TILE_HEIGHT;
return r;
}
uint GetTileZ(TileIndex tile)
{
uint h;
GetTileSlope(tile, &h);
return h;
}
uint GetTileMaxZ(TileIndex t)
{
uint max;
uint h;
h = TileHeight(t);
max = h;
h = TileHeight(t + TileDiffXY(1, 0));
if (h > max) max = h;
h = TileHeight(t + TileDiffXY(0, 1));
if (h > max) max = h;
h = TileHeight(t + TileDiffXY(1, 1));
if (h > max) max = h;
return max * 8;
}
|