src/landscape.h
author rubidium
Sun, 03 Feb 2008 20:17:54 +0000
branchnoai
changeset 9724 b39bc69bb2f2
parent 9723 eee46cb39750
child 9800 ab08ca2a2018
permissions -rw-r--r--
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
9505
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
     1
/* $Id$ */
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
     2
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
     3
/** @file landscape.h */
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
     4
9599
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
     5
#ifndef LANDSCAPE_H
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
     6
#define LANDSCAPE_H
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
     7
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
     8
#include "core/geometry_type.hpp"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
     9
#include "tile_cmd.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
    10
#include "slope_type.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
    11
#include "direction_type.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents: 9722
diff changeset
    12
9505
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    13
enum {
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    14
	SNOW_LINE_MONTHS = 12,
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    15
	SNOW_LINE_DAYS   = 32,
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    16
};
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    17
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    18
struct SnowLine {
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    19
	byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS];
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    20
	byte highest_value;
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    21
};
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    22
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    23
bool IsSnowLineSet(void);
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    24
void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS]);
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    25
byte GetSnowLine(void);
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    26
byte HighestSnowLine(void);
9711235f5693 (svn r9396) [NoAI] -Sync with trunk r9362:9393
glx
parents:
diff changeset
    27
void ClearSnowLine(void);
9599
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    28
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    29
bool IsValidTile(TileIndex tile);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    30
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    31
uint GetPartialZ(int x, int y, Slope corners);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    32
uint GetSlopeZ(int x, int y);
9718
f82a4facea8b (svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents: 9694
diff changeset
    33
void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
9722
ebf0ece7d8f6 (svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents: 9718
diff changeset
    34
int GetSlopeZInCorner(Slope tileh, Corner corner);
9724
b39bc69bb2f2 (svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents: 9723
diff changeset
    35
Slope GetFoundationSlope(TileIndex tile, uint* z);
9599
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    36
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    37
static inline Point RemapCoords(int x, int y, int z)
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    38
{
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    39
	Point pt;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    40
	pt.x = (y - x) * 2;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    41
	pt.y = y + x - z;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    42
	return pt;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    43
}
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    44
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    45
static inline Point RemapCoords2(int x, int y)
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    46
{
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    47
	return RemapCoords(x, y, GetSlopeZ(x, y));
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    48
}
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    49
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9624
diff changeset
    50
uint ApplyFoundationToSlope(Foundation f, Slope *s);
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9624
diff changeset
    51
void DrawFoundation(TileInfo *ti, Foundation f);
9599
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    52
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    53
void DoClearSquare(TileIndex tile);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    54
void RunTileLoop();
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    55
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    56
void InitializeLandscape();
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    57
void GenerateLandscape(byte mode);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    58
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    59
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    60
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    61
#endif /* LANDSCAPE_H */