tree_map.h
author belugas
Mon, 03 Apr 2006 14:56:07 +0000
changeset 3432 650dd1972479
parent 3369 cab209754317
child 3441 fead68bcb6a3
permissions -rw-r--r--
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
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
3145
e833d7a78887 (svn r3765) Fix some naming glitches in r3763 and add missing svn properties
tron
parents: 3144
diff changeset
     3
#ifndef TREE_MAP_H
e833d7a78887 (svn r3765) Fix some naming glitches in r3763 and add missing svn properties
tron
parents: 3144
diff changeset
     4
#define TREE_MAP_H
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     5
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     6
#include "macros.h"
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
typedef enum TreeType {
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
     9
	TR_INVALID      = -1,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    10
	TR_TEMPERATE    = 0,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    11
	TR_SUB_ARCTIC   = 12,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    12
	TR_RAINFOREST   = 20,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    13
	TR_CACTUS       = 27,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    14
	TR_SUB_TROPICAL = 28,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    15
	TR_TOYLAND      = 32
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    16
} TreeType;
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    17
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    18
enum {
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    19
	TR_COUNT_TEMPERATE    = TR_SUB_ARCTIC   - TR_TEMPERATE,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    20
	TR_COUNT_SUB_ARCTIC   = TR_RAINFOREST   - TR_SUB_ARCTIC,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    21
	TR_COUNT_RAINFOREST   = TR_CACTUS       - TR_RAINFOREST,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    22
	TR_COUNT_SUB_TROPICAL = TR_SUB_TROPICAL - TR_CACTUS,
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    23
	TR_COUNT_TOYLAND      = 9
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    24
};
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    25
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    26
/* ground type, m2 bits 4...5
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    27
 * valid densities (bits 6...7) in comments after the enum */
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    28
typedef enum TreeGround {
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    29
	TR_GRASS       = 0, // 0
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    30
	TR_ROUGH       = 1, // 0
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    31
	TR_SNOW_DESERT = 2  // 0-3 for snow, 3 for desert
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    32
} TreeGround;
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    33
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    34
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    35
static inline TreeType GetTreeType(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    36
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    37
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    38
	return _m[t].m3;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    39
}
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    40
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    41
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    42
static inline TreeGround GetTreeGround(TileIndex t)
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
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    45
	return GB(_m[t].m2, 4, 2);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    46
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    47
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
static inline uint GetTreeDensity(TileIndex t)
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
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    52
	return GB(_m[t].m2, 6, 2);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    53
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    54
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    55
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    56
static inline void SetTreeGroundDensity(TileIndex t, TreeGround g, uint d)
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    57
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    58
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    59
	SB(_m[t].m2, 4, 2, g);
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    60
	SB(_m[t].m2, 6, 2, d);
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    61
}
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    62
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    63
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    64
static inline uint GetTreeCount(TileIndex t)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    65
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    66
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    67
	return GB(_m[t].m5, 6, 2);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    68
}
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
    69
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    70
static inline void AddTreeCount(TileIndex t, int c)
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    71
{
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    72
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    73
	_m[t].m5 += c << 6;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    74
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    75
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    76
static inline void SetTreeCount(TileIndex t, uint c)
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
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    79
	SB(_m[t].m5, 6, 2, c);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    80
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    81
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
static inline uint GetTreeGrowth(TileIndex t)
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
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    86
	return GB(_m[t].m5, 0, 3);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    87
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    88
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    89
static inline void AddTreeGrowth(TileIndex t, int a)
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
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    92
	_m[t].m5 += a;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    93
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    94
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    95
static inline void SetTreeGrowth(TileIndex t, uint g)
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
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    98
	SB(_m[t].m5, 0, 3, g);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
    99
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   100
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
static inline uint GetTreeCounter(TileIndex t)
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
	assert(IsTileType(t, MP_TREES));
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   105
	return GB(_m[t].m2, 0, 4);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   106
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   107
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   108
static inline void AddTreeCounter(TileIndex t, int a)
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
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   111
	_m[t].m2 += a;
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   112
}
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   113
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   114
static inline void SetTreeCounter(TileIndex t, uint c)
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
	assert(IsTileType(t, MP_TREES)); // XXX incomplete
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   117
	SB(_m[t].m2, 0, 4, c);
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3145
diff changeset
   118
}
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
   119
3079
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   120
a26f87fba4c1 (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)
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
	SetTileType(t, MP_TREES);
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   124
	SetTileOwner(t, OWNER_NONE);
a26f87fba4c1 (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;
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   126
	_m[t].m3 = type;
a26f87fba4c1 (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;
a26f87fba4c1 (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;
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   129
}
a26f87fba4c1 (svn r3668) Add a function to turn a tile into a tree tile
tron
parents: 2981
diff changeset
   130
2981
ca5959cf9fc7 (svn r3556) Add accessors for handling tree tiles
tron
parents:
diff changeset
   131
#endif