src/tree_map.h
author KUDr
Fri, 20 Apr 2007 19:43:06 +0000
changeset 6513 454347ca3dfb
parent 6422 6679df1c05ba
child 7597 e9ad1ed5c4d5
permissions -rw-r--r--
(svn r9697) -Fix [YAPF](r9694): 'unused variable' warning (glx)
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     1
/* $Id$ */
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     2
6422
6679df1c05ba (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6248
diff changeset
     3
/** @file tree_map.h */
6679df1c05ba (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6248
diff changeset
     4
3145
e833d7a78887 (svn r3765) Fix some naming glitches in r3763 and add missing svn properties
tron
parents: 3144
diff changeset
     5
#ifndef TREE_MAP_H
e833d7a78887 (svn r3765) Fix some naming glitches in r3763 and add missing svn properties
tron
parents: 3144
diff changeset
     6
#define TREE_MAP_H
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     7
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     8
#include "macros.h"
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     9
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5587
diff changeset
    10
enum TreeType {
3441
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    11
	TREE_INVALID      = -1,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    12
	TREE_TEMPERATE    = 0,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    13
	TREE_SUB_ARCTIC   = 12,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    14
	TREE_RAINFOREST   = 20,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    15
	TREE_CACTUS       = 27,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    16
	TREE_SUB_TROPICAL = 28,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    17
	TREE_TOYLAND      = 32
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5587
diff changeset
    18
};
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    19
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    20
enum {
3441
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    21
	TREE_COUNT_TEMPERATE    = TREE_SUB_ARCTIC   - TREE_TEMPERATE,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    22
	TREE_COUNT_SUB_ARCTIC   = TREE_RAINFOREST   - TREE_SUB_ARCTIC,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    23
	TREE_COUNT_RAINFOREST   = TREE_CACTUS       - TREE_RAINFOREST,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    24
	TREE_COUNT_SUB_TROPICAL = TREE_SUB_TROPICAL - TREE_CACTUS,
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3369
diff changeset
    25
	TREE_COUNT_TOYLAND      = 9
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    26
};
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    27
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    28
/* ground type, m2 bits 4...5
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    29
 * valid densities (bits 6...7) in comments after the enum */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5587
diff changeset
    30
enum TreeGround {
6422
6679df1c05ba (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6248
diff changeset
    31
	TREE_GROUND_GRASS       = 0, ///< 0
6679df1c05ba (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6248
diff changeset
    32
	TREE_GROUND_ROUGH       = 1, ///< 0
6679df1c05ba (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6248
diff changeset
    33
	TREE_GROUND_SNOW_DESERT = 2  ///< 0-3 for snow, 3 for desert
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5587
diff changeset
    34
};
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    35
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    36
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    37
static inline TreeType GetTreeType(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    38
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    39
	assert(IsTileType(t, MP_TREES));
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    40
	return (TreeType)_m[t].m3;
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    41
}
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    42
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    43
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    44
static inline TreeGround GetTreeGround(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    45
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    46
	assert(IsTileType(t, MP_TREES));
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    47
	return (TreeGround)GB(_m[t].m2, 4, 2);
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    48
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    49
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    50
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    51
static inline uint GetTreeDensity(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    52
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    53
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    54
	return GB(_m[t].m2, 6, 2);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    55
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    56
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    57
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    58
static inline void SetTreeGroundDensity(TileIndex t, TreeGround g, uint d)
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    59
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    60
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    61
	SB(_m[t].m2, 4, 2, g);
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    62
	SB(_m[t].m2, 6, 2, d);
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    63
}
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    64
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    65
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    66
static inline uint GetTreeCount(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    67
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    68
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    69
	return GB(_m[t].m5, 6, 2);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    70
}
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    71
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    72
static inline void AddTreeCount(TileIndex t, int c)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    73
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    74
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    75
	_m[t].m5 += c << 6;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    76
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    77
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    78
static inline void SetTreeCount(TileIndex t, uint c)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    79
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    80
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    81
	SB(_m[t].m5, 6, 2, c);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    82
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    83
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    84
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    85
static inline uint GetTreeGrowth(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    86
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    87
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    88
	return GB(_m[t].m5, 0, 3);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    89
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    90
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    91
static inline void AddTreeGrowth(TileIndex t, int a)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    92
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    93
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    94
	_m[t].m5 += a;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    95
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    96
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    97
static inline void SetTreeGrowth(TileIndex t, uint g)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    98
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    99
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   100
	SB(_m[t].m5, 0, 3, g);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   101
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   102
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   103
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   104
static inline uint GetTreeCounter(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   105
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   106
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   107
	return GB(_m[t].m2, 0, 4);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   108
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   109
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   110
static inline void AddTreeCounter(TileIndex t, int a)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   111
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   112
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   113
	_m[t].m2 += a;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   114
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   115
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   116
static inline void SetTreeCounter(TileIndex t, uint c)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   117
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   118
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   119
	SB(_m[t].m2, 0, 4, c);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   120
}
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
   121
3079
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   122
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   123
static inline void MakeTree(TileIndex t, TreeType type, uint count, uint growth, TreeGround ground, uint density)
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   124
{
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   125
	SetTileType(t, MP_TREES);
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   126
	SetTileOwner(t, OWNER_NONE);
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   127
	_m[t].m2 = density << 6 | ground << 4 | 0;
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   128
	_m[t].m3 = type;
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   129
	_m[t].m4 = 0 << 5 | 0 << 2;
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   130
	_m[t].m5 = count << 6 | growth;
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   131
}
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   132
4666
172a0cdf28a6 (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3441
diff changeset
   133
#endif /* TREE_MAP_H */