glx@9505: /* $Id$ */ glx@9505: rubidium@10455: /** @file landscape.h Functions related to OTTD's landscape. */ glx@9505: rubidium@9599: #ifndef LANDSCAPE_H rubidium@9599: #define LANDSCAPE_H rubidium@9599: rubidium@9723: #include "core/geometry_type.hpp" rubidium@9723: #include "tile_cmd.h" rubidium@9723: #include "slope_type.h" rubidium@9723: #include "direction_type.h" rubidium@9723: glx@9505: enum { glx@9505: SNOW_LINE_MONTHS = 12, glx@9505: SNOW_LINE_DAYS = 32, glx@9505: }; glx@9505: glx@9505: struct SnowLine { glx@9505: byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]; glx@9505: byte highest_value; glx@9505: }; glx@9505: glx@9505: bool IsSnowLineSet(void); glx@9505: void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]); glx@9505: byte GetSnowLine(void); glx@9505: byte HighestSnowLine(void); glx@9505: void ClearSnowLine(void); rubidium@9599: rubidium@9599: uint GetPartialZ(int x, int y, Slope corners); rubidium@9599: uint GetSlopeZ(int x, int y); truelight@9718: void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2); rubidium@9722: int GetSlopeZInCorner(Slope tileh, Corner corner); rubidium@9724: Slope GetFoundationSlope(TileIndex tile, uint* z); rubidium@9599: rubidium@9599: static inline Point RemapCoords(int x, int y, int z) rubidium@9599: { rubidium@9599: Point pt; rubidium@9599: pt.x = (y - x) * 2; rubidium@9599: pt.y = y + x - z; rubidium@9599: return pt; rubidium@9599: } rubidium@9599: rubidium@9599: static inline Point RemapCoords2(int x, int y) rubidium@9599: { rubidium@9599: return RemapCoords(x, y, GetSlopeZ(x, y)); rubidium@9599: } rubidium@9599: rubidium@9694: uint ApplyFoundationToSlope(Foundation f, Slope *s); rubidium@9694: void DrawFoundation(TileInfo *ti, Foundation f); rubidium@9599: rubidium@9599: void DoClearSquare(TileIndex tile); rubidium@9599: void RunTileLoop(); rubidium@9599: rubidium@9599: void InitializeLandscape(); rubidium@9599: void GenerateLandscape(byte mode); rubidium@9599: rubidium@9599: TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng); rubidium@9599: rubidium@9599: #endif /* LANDSCAPE_H */