tree_map.h
author KUDr
Sun, 31 Dec 2006 23:48:04 +0000
branchcustombridgeheads
changeset 5618 a7db50b9f817
parent 4666 850b5b6e4bac
permissions -rw-r--r--
(svn r7710) [cbh] - Fix: [YAPF] one more assert fixed. Call from the TrainController() added by (r7705) has broken YAPF because it was called when vehicle was already on the next tile (with cbh choice). Before it was always called before the train entered tile with choice.
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     1
/* $Id$ */
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     2
3145
349b745dfbf4 (svn r3765) Fix some naming glitches in r3763 and add missing svn properties
tron
parents: 3144
diff changeset
     3
#ifndef TREE_MAP_H
349b745dfbf4 (svn r3765) Fix some naming glitches in r3763 and add missing svn properties
tron
parents: 3144
diff changeset
     4
#define TREE_MAP_H
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     5
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     6
#include "macros.h"
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     7
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     8
typedef enum TreeType {
3441
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
     9
	TREE_INVALID      = -1,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    10
	TREE_TEMPERATE    = 0,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    11
	TREE_SUB_ARCTIC   = 12,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    12
	TREE_RAINFOREST   = 20,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    13
	TREE_CACTUS       = 27,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    14
	TREE_SUB_TROPICAL = 28,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    15
	TREE_TOYLAND      = 32
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    16
} TreeType;
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    17
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    18
enum {
3441
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    19
	TREE_COUNT_TEMPERATE    = TREE_SUB_ARCTIC   - TREE_TEMPERATE,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    20
	TREE_COUNT_SUB_ARCTIC   = TREE_RAINFOREST   - TREE_SUB_ARCTIC,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    21
	TREE_COUNT_RAINFOREST   = TREE_CACTUS       - TREE_RAINFOREST,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    22
	TREE_COUNT_SUB_TROPICAL = TREE_SUB_TROPICAL - TREE_CACTUS,
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    23
	TREE_COUNT_TOYLAND      = 9
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    24
};
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    25
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    26
/* ground type, m2 bits 4...5
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    27
 * valid densities (bits 6...7) in comments after the enum */
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    28
typedef enum TreeGround {
3441
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    29
	TREE_GROUND_GRASS       = 0, // 0
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    30
	TREE_GROUND_ROUGH       = 1, // 0
d1cef7047cd4 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    31
	TREE_GROUND_SNOW_DESERT = 2  // 0-3 for snow, 3 for desert
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    32
} TreeGround;
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    33
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    34
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    35
static inline TreeType GetTreeType(TileIndex t)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    36
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    37
	assert(IsTileType(t, MP_TREES));
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    38
	return _m[t].m3;
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    39
}
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    40
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    41
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    42
static inline TreeGround GetTreeGround(TileIndex t)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    43
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    44
	assert(IsTileType(t, MP_TREES));
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    45
	return GB(_m[t].m2, 4, 2);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    46
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    47
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    48
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    49
static inline uint GetTreeDensity(TileIndex t)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    50
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    51
	assert(IsTileType(t, MP_TREES));
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    52
	return GB(_m[t].m2, 6, 2);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    53
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    54
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    55
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    56
static inline void SetTreeGroundDensity(TileIndex t, TreeGround g, uint d)
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    57
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    58
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    59
	SB(_m[t].m2, 4, 2, g);
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    60
	SB(_m[t].m2, 6, 2, d);
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    61
}
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    62
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    63
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    64
static inline uint GetTreeCount(TileIndex t)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    65
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    66
	assert(IsTileType(t, MP_TREES));
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    67
	return GB(_m[t].m5, 6, 2);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    68
}
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    69
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    70
static inline void AddTreeCount(TileIndex t, int c)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    71
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    72
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    73
	_m[t].m5 += c << 6;
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    74
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    75
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    76
static inline void SetTreeCount(TileIndex t, uint c)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    77
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    78
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    79
	SB(_m[t].m5, 6, 2, c);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    80
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    81
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    82
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    83
static inline uint GetTreeGrowth(TileIndex t)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    84
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    85
	assert(IsTileType(t, MP_TREES));
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    86
	return GB(_m[t].m5, 0, 3);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    87
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    88
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    89
static inline void AddTreeGrowth(TileIndex t, int a)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    90
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    91
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    92
	_m[t].m5 += a;
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    93
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    94
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    95
static inline void SetTreeGrowth(TileIndex t, uint g)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    96
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    97
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    98
	SB(_m[t].m5, 0, 3, g);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    99
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   100
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   101
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   102
static inline uint GetTreeCounter(TileIndex t)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   103
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   104
	assert(IsTileType(t, MP_TREES));
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   105
	return GB(_m[t].m2, 0, 4);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   106
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   107
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   108
static inline void AddTreeCounter(TileIndex t, int a)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   109
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   110
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   111
	_m[t].m2 += a;
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   112
}
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   113
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   114
static inline void SetTreeCounter(TileIndex t, uint c)
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   115
{
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   116
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   117
	SB(_m[t].m2, 0, 4, c);
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   118
}
2981
31760b6a88aa (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
   119
3079
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   120
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   121
static inline void MakeTree(TileIndex t, TreeType type, uint count, uint growth, TreeGround ground, uint density)
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   122
{
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   123
	SetTileType(t, MP_TREES);
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   124
	SetTileOwner(t, OWNER_NONE);
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   125
	_m[t].m2 = density << 6 | ground << 4 | 0;
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   126
	_m[t].m3 = type;
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   127
	_m[t].m4 = 0 << 5 | 0 << 2;
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   128
	_m[t].m5 = count << 6 | growth;
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   129
}
d6541c027250 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   130
4666
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3441
diff changeset
   131
#endif /* TREE_MAP_H */