1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/* $Id$ */ /** @file landscape.h */ #ifndef LANDSCAPE_H #define LANDSCAPE_H #include "core/geometry_type.hpp" #include "tile_cmd.h" #include "slope_type.h" #include "direction_type.h" enum { SNOW_LINE_MONTHS = 12, SNOW_LINE_DAYS = 32, }; struct SnowLine { byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; byte highest_value; }; bool IsSnowLineSet(void); void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]); byte GetSnowLine(void); byte HighestSnowLine(void); void ClearSnowLine(void); uint GetPartialZ(int x, int y, Slope corners); uint GetSlopeZ(int x, int y); void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2); int GetSlopeZInCorner(Slope tileh, Corner corner); Slope GetFoundationSlope(TileIndex tile, uint* z); static inline Point RemapCoords(int x, int y, int z) { Point pt; pt.x = (y - x) * 2; pt.y = y + x - z; return pt; } static inline Point RemapCoords2(int x, int y) { return RemapCoords(x, y, GetSlopeZ(x, y)); } uint ApplyFoundationToSlope(Foundation f, Slope *s); void DrawFoundation(TileInfo *ti, Foundation f); void DoClearSquare(TileIndex tile); void RunTileLoop(); void InitializeLandscape(); void GenerateLandscape(byte mode); TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng); #endif /* LANDSCAPE_H */