src/landscape.h
author truebrain
Mon, 16 Jun 2008 14:43:19 +0000
branchnoai
changeset 10978 13fd0364b2c6
parent 10455 22c441f5adf9
permissions -rw-r--r--
(svn r13532) [NoAI] -Fix: in MultiPlayer SignID wasn't set correctly, causing weird effects. Code is now more unified, which should avoid simular effects in the future (tnx to glx for initial patch)
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
10455
22c441f5adf9 (svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents: 9800
diff changeset
     3
/** @file landscape.h Functions related to OTTD's landscape. */
9505
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
uint GetPartialZ(int x, int y, Slope corners);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    30
uint GetSlopeZ(int x, int y);
9718
f82a4facea8b (svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents: 9694
diff changeset
    31
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
    32
int GetSlopeZInCorner(Slope tileh, Corner corner);
9724
b39bc69bb2f2 (svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents: 9723
diff changeset
    33
Slope GetFoundationSlope(TileIndex tile, uint* z);
9599
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    34
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    35
static inline Point RemapCoords(int x, int y, int z)
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
	Point pt;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    38
	pt.x = (y - x) * 2;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    39
	pt.y = y + x - z;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    40
	return pt;
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    41
}
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    42
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    43
static inline Point RemapCoords2(int x, int y)
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
	return RemapCoords(x, y, GetSlopeZ(x, 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
9694
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9624
diff changeset
    48
uint ApplyFoundationToSlope(Foundation f, Slope *s);
e72987579514 (svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents: 9624
diff changeset
    49
void DrawFoundation(TileInfo *ti, Foundation f);
9599
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    50
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    51
void DoClearSquare(TileIndex tile);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    52
void RunTileLoop();
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    53
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    54
void InitializeLandscape();
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    55
void GenerateLandscape(byte mode);
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    56
949374e83b78 (svn r9632) [NoAI] -Sync with trunk r9574:9631.
rubidium
parents: 9505
diff changeset
    57
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
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
#endif /* LANDSCAPE_H */