Files
@ r5312:ffd375effb01
Branch filter:
Location: cpp/openttd-patchpack/source/tile.c - annotation
r5312:ffd375effb01
1.1 KiB
text/x-c
(svn r7468) -Codechange: [win32] Add some comments to MB/WIDE_TO_WIDE/MB_[BUFFER] macros and
use them some more in win32 code. Also for the clipboard use the convert_from_fs
function instead of calling Win32 API directly. Make the static buffers in OTTD2FS
and FS2OTTD the same size (character-length wise)
use them some more in win32 code. Also for the clipboard use the convert_from_fs
function instead of calling Win32 API directly. Make the static buffers in OTTD2FS
and FS2OTTD the same size (character-length wise)
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;
}
|