src/unmovable_map.h
author belugas
Fri, 13 Jun 2008 01:17:03 +0000
changeset 10949 a9907493981a
parent 10429 1b99254f9607
permissions -rw-r--r--
(svn r13503) -Fix(r13173)[FS#2073]: Wrong widget numbers & event handlers were assigned to the zoom in and out buttons in the scenario editor
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
10429
1b99254f9607 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 8706
diff changeset
     3
/** @file unmovable_map.h Map accessors for unmovable tiles. */
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
     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
8706
e76561c3dd66 (svn r11773) -Codechange: move some non-clear-land functions from clear_cmd.cpp to a more correct location.
rubidium
parents: 8450
diff changeset
     8
#include "core/bitmath_func.hpp"
e76561c3dd66 (svn r11773) -Codechange: move some non-clear-land functions from clear_cmd.cpp to a more correct location.
rubidium
parents: 8450
diff changeset
     9
#include "tile_map.h"
e76561c3dd66 (svn r11773) -Codechange: move some non-clear-land functions from clear_cmd.cpp to a more correct location.
rubidium
parents: 8450
diff changeset
    10
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
enum {
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    12
	HQ_NUM_TILE = 4, ///< Number of HQ tiles
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    13
	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
    14
};
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
    15
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    16
/** Types of unmovable structure */
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 5838
diff changeset
    17
enum UnmovableType {
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    18
	UNMOVABLE_TRANSMITTER = 0,    ///< The large antenna
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    19
	UNMOVABLE_LIGHTHOUSE  = 1,    ///< The nice lighthouse
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    20
	UNMOVABLE_STATUE      = 2,    ///< Statue in towns
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    21
	UNMOVABLE_OWNED_LAND  = 3,    ///< Owned land 'flag'
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    22
	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
    23
	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
    24
	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
    25
	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
    26
8450
dce58137301f (svn r11510) -Codechange: merge the IS_*INSIDE* functions and rename them fitting to the naming style
skidd13
parents: 6985
diff changeset
    27
	/** End of the HQ (rather end + 1 for IsInside) */
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
    28
	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
    29
};
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    30
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    31
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
    32
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    33
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    34
 * Gets the UnmovableType of the given unmovable tile
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    35
 * @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
    36
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    37
 * @return the type.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    38
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    39
static inline UnmovableType GetUnmovableType(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    40
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3310
diff changeset
    41
	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
    42
	return (UnmovableType)_m[t].m5;
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    43
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    44
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    45
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    46
 * Does the given tile have a transmitter?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    47
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    48
 * @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
    49
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    50
static inline bool IsTransmitterTile(TileIndex t)
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
	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
    53
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    54
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    55
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    56
 * Is this unmovable tile an 'owned land' tile?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    57
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    58
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    59
 * @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
    60
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    61
static inline bool IsOwnedLand(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    62
{
3369
00c2ca209a89 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3310
diff changeset
    63
	assert(IsTileType(t, MP_UNMOVABLE));
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    64
	return GetUnmovableType(t) == UNMOVABLE_OWNED_LAND;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    65
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    66
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    67
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    68
 * 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
    69
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    70
 * @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
    71
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    72
static inline bool IsOwnedLandTile(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    73
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    74
	return IsTileType(t, MP_UNMOVABLE) && IsOwnedLand(t);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    75
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    76
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    77
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    78
 * Is this unmovable tile a HQ tile?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    79
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    80
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    81
 * @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
    82
 */
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
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
    84
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    85
	assert(IsTileType(t, MP_UNMOVABLE));
8450
dce58137301f (svn r11510) -Codechange: merge the IS_*INSIDE* functions and rename them fitting to the naming style
skidd13
parents: 6985
diff changeset
    86
	return IsInsideMM(GetUnmovableType(t), UNMOVABLE_HQ_NORTH, UNMOVABLE_HQ_END);
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
    87
}
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
    88
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    89
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    90
 * Is this unmovable tile a statue?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    91
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    92
 * @pre IsTileType(t, MP_UNMOVABLE)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
    93
 * @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
    94
 */
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
    95
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
    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
	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
    98
	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
    99
}
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
   100
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   101
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   102
 * Is the given tile a statue?
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   103
 * @param t the tile to inspect.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   104
 * @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
   105
 */
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
   106
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
   107
{
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
   108
	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
   109
}
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
   110
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   111
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   112
 * Get the town of the given statue tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   113
 * @param t the tile of the statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   114
 * @pre IsStatueTile(t)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   115
 * @return the town the given statue is in.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   116
 */
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
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
   118
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   119
	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
   120
	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
   121
}
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
   122
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   123
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   124
 * Get the 'stage' of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   125
 * @param t a tile of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   126
 * @pre IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   127
 * @return the 'stage' of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   128
 */
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
   129
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
   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
	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
   132
	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
   133
}
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
   134
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   135
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   136
 * Get the 'section' (including stage) of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   137
 * @param t a tile of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   138
 * @pre IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t)
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   139
 * @return the 'section' of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   140
 */
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
   141
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
   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
	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
   144
	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
   145
}
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
   146
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   147
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   148
 * 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
   149
 * is larger than the current size, nothing happens.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   150
 * @param t the tile of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   151
 * @param size the new size of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   152
 * @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
   153
 */
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
   154
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
   155
{
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   156
	assert(GB(GetCompanyHQSection(t), 0, 2) == 0);
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
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
	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
   159
	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
   160
3705
539e1366ccae (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
   161
	_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
   162
	_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
   163
	_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
   164
	_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
   165
}
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   166
c802170b5dd4 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
   167
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   168
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   169
 * Make an Unmovable tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   170
 * @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
   171
 * @param t the tile to make unmovable.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   172
 * @param u the unmovable type of the tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   173
 * @param o the new owner of the tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   174
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   175
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
   176
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   177
	SetTileType(t, MP_UNMOVABLE);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   178
	SetTileOwner(t, o);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   179
	_m[t].m2 = 0;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   180
	_m[t].m3 = 0;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   181
	_m[t].m4 = 0;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   182
	_m[t].m5 = u;
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   183
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   184
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   185
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   186
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   187
 * Make a transmitter tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   188
 * @param t the tile to make a transmitter.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   189
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   190
static inline void MakeTransmitter(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   191
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   192
	MakeUnmovable(t, UNMOVABLE_TRANSMITTER, OWNER_NONE);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   193
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   194
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   195
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   196
 * Make a lighthouse tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   197
 * @param t the tile to make a transmitter.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   198
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   199
static inline void MakeLighthouse(TileIndex t)
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   200
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   201
	MakeUnmovable(t, UNMOVABLE_LIGHTHOUSE, OWNER_NONE);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   202
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   203
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   204
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   205
 * Make a statue tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   206
 * @param t the tile to make a statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   207
 * @param o the owner of the statue.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   208
 * @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
   209
 */
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
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
   211
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   212
	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
   213
	_m[t].m2 = town_id;
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   214
}
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   215
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   216
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   217
 * Make an 'owned land' tile.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   218
 * @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
   219
 * @param o the owner of the land.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   220
 */
3310
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   221
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
   222
{
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   223
	MakeUnmovable(t, UNMOVABLE_OWNED_LAND, o);
7339b2b1e957 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   224
}
3385
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   225
6985
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   226
/**
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   227
 * 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
   228
 * @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
   229
 * @param o the owner of the HQ.
6fd300b20503 (svn r9670) -Documentation: add documentation to some the _map files.
rubidium
parents: 6919
diff changeset
   230
 */
3385
41ebb01a92f2 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   231
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
   232
{
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(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
   234
	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
   235
	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
   236
	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
   237
}
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
   238
850b5b6e4bac (svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents: 3971
diff changeset
   239
#endif /* UNMOVABLE_MAP_H */