src/unmovable_map.h
author skidd13
Tue, 20 Nov 2007 14:11:19 +0000
changeset 8428 f8300c908bd9
parent 6985 6fd300b20503
child 8450 dce58137301f
child 9723 eee46cb39750
permissions -rw-r--r--
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
     1
/* $Id$ */
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
     2
6919
339210ecccd3 (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents: 6583
diff changeset
     3
/** @file unmovable_map.h */
339210ecccd3 (svn r9559) -Documentation: doxygen and comment changes: 'U' and 'V' now. Almost done. Yeah. I know, I've already said that...
belugas
parents: 6583
diff changeset
     4
4666
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3971
diff changeset
     5
#ifndef UNMOVABLE_MAP_H
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3971
diff changeset
     6
#define UNMOVABLE_MAP_H
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3971
diff changeset
     7
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
     8
enum {
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
     9
	HQ_NUM_TILE = 4, ///< Number of HQ tiles
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    10
	HQ_NUM_SIZE = 5  ///< Number of stages of an HQ
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    11
};
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    12
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    13
/** Types of unmovable structure */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5838
diff changeset
    14
enum UnmovableType {
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    15
	UNMOVABLE_TRANSMITTER = 0,    ///< The large antenna
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    16
	UNMOVABLE_LIGHTHOUSE  = 1,    ///< The nice lighthouse
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    17
	UNMOVABLE_STATUE      = 2,    ///< Statue in towns
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    18
	UNMOVABLE_OWNED_LAND  = 3,    ///< Owned land 'flag'
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    19
	UNMOVABLE_HQ_NORTH    = 0x80, ///< Offset for the northern HQ tile
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    20
	UNMOVABLE_HQ_WEST     = 0x81, ///< Offset for the western HQ tile
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    21
	UNMOVABLE_HQ_EAST     = 0x82, ///< Offset for the eastern HQ tile
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    22
	UNMOVABLE_HQ_SOUTH    = 0x83, ///< Offset for the southern HQ tile
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    23
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    24
	/** End of the HQ (rather end + 1 for IS_INT_INSIDE) */
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    25
	UNMOVABLE_HQ_END      = UNMOVABLE_HQ_NORTH + HQ_NUM_SIZE * HQ_NUM_TILE
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5838
diff changeset
    26
};
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    27
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    28
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    29
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    30
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    31
 * Gets the UnmovableType of the given unmovable tile
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    32
 * @param t the tile to get the type from.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    33
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    34
 * @return the type.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    35
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    36
static inline UnmovableType GetUnmovableType(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    37
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3310
diff changeset
    38
	assert(IsTileType(t, MP_UNMOVABLE));
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    39
	return (UnmovableType)_m[t].m5;
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    40
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    41
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    42
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    43
 * Does the given tile have a transmitter?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    44
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    45
 * @return true if and only if the tile has a transmitter.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    46
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    47
static inline bool IsTransmitterTile(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    48
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    49
	return IsTileType(t, MP_UNMOVABLE) && GetUnmovableType(t) == UNMOVABLE_TRANSMITTER;
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    50
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    51
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    52
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    53
 * Is this unmovable tile an 'owned land' tile?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    54
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    55
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    56
 * @return true if and only if the tile is an 'owned land' tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    57
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    58
static inline bool IsOwnedLand(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    59
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3310
diff changeset
    60
	assert(IsTileType(t, MP_UNMOVABLE));
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    61
	return GetUnmovableType(t) == UNMOVABLE_OWNED_LAND;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    62
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    63
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    64
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    65
 * Is the given tile (pre-)owned by someone (the little flags)?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    66
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    67
 * @return true if and only if the tile is an 'owned land' tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    68
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    69
static inline bool IsOwnedLandTile(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    70
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    71
	return IsTileType(t, MP_UNMOVABLE) && IsOwnedLand(t);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    72
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    73
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    74
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    75
 * Is this unmovable tile a HQ tile?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    76
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    77
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    78
 * @return true if and only if the tile is a HQ tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    79
 */
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    80
static inline bool IsCompanyHQ(TileIndex t)
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    81
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    82
	assert(IsTileType(t, MP_UNMOVABLE));
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    83
	return IS_INT_INSIDE(GetUnmovableType(t), UNMOVABLE_HQ_NORTH, UNMOVABLE_HQ_END);
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    84
}
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
    85
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    86
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    87
 * Is this unmovable tile a statue?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    88
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    89
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    90
 * @return true if and only if the tile is a statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    91
 */
6583
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
    92
static inline bool IsStatue(TileIndex t)
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
    93
{
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
    94
	assert(IsTileType(t, MP_UNMOVABLE));
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
    95
	return GetUnmovableType(t) == UNMOVABLE_STATUE;
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
    96
}
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
    97
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    98
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    99
 * Is the given tile a statue?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   100
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   101
 * @return true if and only if the tile is a statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   102
 */
6583
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   103
static inline bool IsStatueTile(TileIndex t)
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   104
{
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   105
	return IsTileType(t, MP_UNMOVABLE) && IsStatue(t);
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   106
}
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   107
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   108
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   109
 * Get the town of the given statue tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   110
 * @param t the tile of the statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   111
 * @pre IsStatueTile(t)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   112
 * @return the town the given statue is in.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   113
 */
6583
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   114
static inline TownID GetStatueTownID(TileIndex t)
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   115
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   116
	assert(IsStatueTile(t));
6583
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   117
	return _m[t].m2;
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   118
}
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   119
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   120
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   121
 * Get the 'stage' of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   122
 * @param t a tile of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   123
 * @pre IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   124
 * @return the 'stage' of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   125
 */
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   126
static inline byte GetCompanyHQSize(TileIndex t)
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   127
{
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   128
	assert(IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t));
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   129
	return GB(_m[t].m5, 2, 3);
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   130
}
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   131
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   132
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   133
 * Get the 'section' (including stage) of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   134
 * @param t a tile of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   135
 * @pre IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   136
 * @return the 'section' of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   137
 */
3427
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   138
static inline byte GetCompanyHQSection(TileIndex t)
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   139
{
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   140
	assert(IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t));
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   141
	return GB(_m[t].m5, 0, 5);
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   142
}
98d955156735 (svn r4255) -Codechange: Add and make use of more accessor functions concerning unmovables. unmovable_cmd is now map access free
celestar
parents: 3388
diff changeset
   143
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   144
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   145
 * Enlarge the given HQ to the given size. If the new size
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   146
 * is larger than the current size, nothing happens.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   147
 * @param t the tile of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   148
 * @param size the new size of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   149
 * @pre t is the northern tile of the HQ
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   150
 */
3388
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   151
static inline void EnlargeCompanyHQ(TileIndex t, byte size)
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   152
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   153
	assert(GB(GetCompanyHQSection(t), 0, 2) == 0);
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   154
3705
539e1366ccae (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
   155
	size *= 4;
3388
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   156
	if (size <= _m[t].m5 - UNMOVABLE_HQ_NORTH) return;
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   157
3705
539e1366ccae (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
   158
	_m[t + TileDiffXY(0, 0)].m5 = UNMOVABLE_HQ_NORTH + size;
539e1366ccae (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
   159
	_m[t + TileDiffXY(0, 1)].m5 = UNMOVABLE_HQ_WEST  + size;
539e1366ccae (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
   160
	_m[t + TileDiffXY(1, 0)].m5 = UNMOVABLE_HQ_EAST  + size;
539e1366ccae (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
   161
	_m[t + TileDiffXY(1, 1)].m5 = UNMOVABLE_HQ_SOUTH + size;
3388
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   162
}
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   163
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   164
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   165
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   166
 * Make an Unmovable tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   167
 * @note do not use this function directly. Use one of the other Make* functions.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   168
 * @param t the tile to make unmovable.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   169
 * @param u the unmovable type of the tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   170
 * @param o the new owner of the tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   171
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   172
static inline void MakeUnmovable(TileIndex t, UnmovableType u, Owner o)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   173
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   174
	SetTileType(t, MP_UNMOVABLE);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   175
	SetTileOwner(t, o);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   176
	_m[t].m2 = 0;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   177
	_m[t].m3 = 0;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   178
	_m[t].m4 = 0;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   179
	_m[t].m5 = u;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   180
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   181
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   182
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   183
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   184
 * Make a transmitter tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   185
 * @param t the tile to make a transmitter.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   186
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   187
static inline void MakeTransmitter(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   188
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   189
	MakeUnmovable(t, UNMOVABLE_TRANSMITTER, OWNER_NONE);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   190
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   191
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   192
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   193
 * Make a lighthouse tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   194
 * @param t the tile to make a transmitter.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   195
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   196
static inline void MakeLighthouse(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   197
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   198
	MakeUnmovable(t, UNMOVABLE_LIGHTHOUSE, OWNER_NONE);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   199
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   200
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   201
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   202
 * Make a statue tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   203
 * @param t the tile to make a statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   204
 * @param o the owner of the statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   205
 * @param town_id the town the statue was built in.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   206
 */
6583
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   207
static inline void MakeStatue(TileIndex t, Owner o, TownID town_id)
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   208
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   209
	MakeUnmovable(t, UNMOVABLE_STATUE, o);
6583
82012e77b10c (svn r9066) -Fix [FS#638]: store the owner of a statue, so when it gets removed, the town is notified of it
truelight
parents: 6574
diff changeset
   210
	_m[t].m2 = town_id;
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   211
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   212
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   213
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   214
 * Make an 'owned land' tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   215
 * @param t the tile to make an 'owned land' tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   216
 * @param o the owner of the land.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   217
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   218
static inline void MakeOwnedLand(TileIndex t, Owner o)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   219
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   220
	MakeUnmovable(t, UNMOVABLE_OWNED_LAND, o);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   221
}
3385
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   222
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   223
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   224
 * Make an HQ with the give tile as it's northern tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   225
 * @param t the tile to make the northern tile of a HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   226
 * @param o the owner of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   227
 */
3385
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   228
static inline void MakeCompanyHQ(TileIndex t, Owner o)
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   229
{
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   230
	MakeUnmovable(t + TileDiffXY(0, 0), UNMOVABLE_HQ_NORTH, o);
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   231
	MakeUnmovable(t + TileDiffXY(0, 1), UNMOVABLE_HQ_WEST, o);
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   232
	MakeUnmovable(t + TileDiffXY(1, 0), UNMOVABLE_HQ_EAST, o);
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   233
	MakeUnmovable(t + TileDiffXY(1, 1), UNMOVABLE_HQ_SOUTH, o);
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   234
}
4666
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3971
diff changeset
   235
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3971
diff changeset
   236
#endif /* UNMOVABLE_MAP_H */