unmovable_map.h
author bjarni
Sat, 26 Aug 2006 22:28:40 +0000
changeset 4408 db2afc41002a
parent 3971 77061ae9b534
child 4666 172a0cdf28a6
permissions -rw-r--r--
(svn r6161) -Feature: List of vehicles with the same shared orders
the list is available in the orders window and looks like the list buttons from the station windows (small vehicle)
The button is disabled if the vehicle do not have any shared orders or it got shared orders, but an empty order list
based on a patch by nycom, thought it ended up getting heavily modified
Thanks to TrueLight for proofreading and suggestions
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
     1
/* $Id$ */
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
     2
3427
3a512f7b7f6a (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
     3
enum {
3a512f7b7f6a (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
     4
	HQ_NUM_TILE = 4,
3a512f7b7f6a (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
     5
	HQ_NUM_SIZE = 5
3a512f7b7f6a (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
     6
};
3a512f7b7f6a (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
     7
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
     8
typedef enum UnmovableType {
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
     9
	UNMOVABLE_TRANSMITTER = 0,
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    10
	UNMOVABLE_LIGHTHOUSE  = 1,
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    11
	UNMOVABLE_STATUE      = 2,
3385
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
    12
	UNMOVABLE_OWNED_LAND  = 3,
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
    13
	UNMOVABLE_HQ_NORTH    = 0x80,
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
    14
	UNMOVABLE_HQ_WEST     = 0x81,
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
    15
	UNMOVABLE_HQ_EAST     = 0x82,
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
    16
	UNMOVABLE_HQ_SOUTH    = 0x83,
3427
3a512f7b7f6a (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
    17
3a512f7b7f6a (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
    18
	UNMOVABLE_HQ_END      = UNMOVABLE_HQ_NORTH + HQ_NUM_SIZE * HQ_NUM_TILE
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    19
} UnmovableType;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    20
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    21
3427
3a512f7b7f6a (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
    22
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    23
static inline UnmovableType GetUnmovableType(TileIndex t)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    24
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3310
diff changeset
    25
	assert(IsTileType(t, MP_UNMOVABLE));
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    26
	return _m[t].m5;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    27
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    28
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    29
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    30
static inline bool IsTransmitterTile(TileIndex t)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    31
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    32
	return
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    33
		IsTileType(t, MP_UNMOVABLE) &&
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    34
		GetUnmovableType(t) == UNMOVABLE_TRANSMITTER;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    35
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    36
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    37
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    38
static inline bool IsOwnedLand(TileIndex t)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    39
{
3369
cab209754317 (svn r4166) Sprinkle several map accessors with assert()s
tron
parents: 3310
diff changeset
    40
	assert(IsTileType(t, MP_UNMOVABLE));
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    41
	return GetUnmovableType(t) == UNMOVABLE_OWNED_LAND;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    42
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    43
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    44
static inline bool IsOwnedLandTile(TileIndex t)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    45
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    46
	return IsTileType(t, MP_UNMOVABLE) && IsOwnedLand(t);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    47
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    48
3427
3a512f7b7f6a (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
    49
static inline bool IsCompanyHQ(TileIndex t)
3a512f7b7f6a (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
    50
{
3a512f7b7f6a (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
    51
	return IS_INT_INSIDE(GetUnmovableType(t), UNMOVABLE_HQ_NORTH, UNMOVABLE_HQ_END);
3a512f7b7f6a (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
    52
}
3a512f7b7f6a (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
    53
3a512f7b7f6a (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
    54
static inline byte GetCompanyHQSize(TileIndex t)
3a512f7b7f6a (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
    55
{
3a512f7b7f6a (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
    56
	assert(IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t));
3a512f7b7f6a (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
    57
	return GB(_m[t].m5, 2, 3);
3a512f7b7f6a (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
    58
}
3a512f7b7f6a (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
    59
3a512f7b7f6a (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
    60
static inline byte GetCompanyHQSection(TileIndex t)
3a512f7b7f6a (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
    61
{
3a512f7b7f6a (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
    62
	assert(IsTileType(t, MP_UNMOVABLE) && IsCompanyHQ(t));
3a512f7b7f6a (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
    63
	return GB(_m[t].m5, 0, 5);
3a512f7b7f6a (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
    64
}
3a512f7b7f6a (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
    65
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    66
3388
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    67
static inline void EnlargeCompanyHQ(TileIndex t, byte size)
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    68
{
3705
3232570a91b7 (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
    69
	size *= 4;
3388
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    70
	if (size <= _m[t].m5 - UNMOVABLE_HQ_NORTH) return;
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    71
3705
3232570a91b7 (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
    72
	_m[t + TileDiffXY(0, 0)].m5 = UNMOVABLE_HQ_NORTH + size;
3232570a91b7 (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
    73
	_m[t + TileDiffXY(0, 1)].m5 = UNMOVABLE_HQ_WEST  + size;
3232570a91b7 (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
    74
	_m[t + TileDiffXY(1, 0)].m5 = UNMOVABLE_HQ_EAST  + size;
3232570a91b7 (svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents: 3427
diff changeset
    75
	_m[t + TileDiffXY(1, 1)].m5 = UNMOVABLE_HQ_SOUTH + size;
3388
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    76
}
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    77
e94795a55f13 (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents: 3385
diff changeset
    78
3310
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    79
static inline void MakeUnmovable(TileIndex t, UnmovableType u, Owner o)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    80
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    81
	SetTileType(t, MP_UNMOVABLE);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    82
	SetTileOwner(t, o);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    83
	_m[t].m2 = 0;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    84
	_m[t].m3 = 0;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    85
	_m[t].m4 = 0;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    86
	_m[t].m5 = u;
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    87
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    88
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    89
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    90
static inline void MakeTransmitter(TileIndex t)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    91
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    92
	MakeUnmovable(t, UNMOVABLE_TRANSMITTER, OWNER_NONE);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    93
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    94
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    95
static inline void MakeLighthouse(TileIndex t)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    96
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    97
	MakeUnmovable(t, UNMOVABLE_LIGHTHOUSE, OWNER_NONE);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    98
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
    99
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   100
static inline void MakeStatue(TileIndex t, Owner o)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   101
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   102
	MakeUnmovable(t, UNMOVABLE_STATUE, o);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   103
}
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   104
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   105
static inline void MakeOwnedLand(TileIndex t, Owner o)
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   106
{
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   107
	MakeUnmovable(t, UNMOVABLE_OWNED_LAND, o);
a19f247b75b6 (svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff changeset
   108
}
3385
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   109
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   110
static inline void MakeCompanyHQ(TileIndex t, Owner o)
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   111
{
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   112
	MakeUnmovable(t + TileDiffXY(0, 0), UNMOVABLE_HQ_NORTH, o);
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   113
	MakeUnmovable(t + TileDiffXY(0, 1), UNMOVABLE_HQ_WEST, o);
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   114
	MakeUnmovable(t + TileDiffXY(1, 0), UNMOVABLE_HQ_EAST, o);
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   115
	MakeUnmovable(t + TileDiffXY(1, 1), UNMOVABLE_HQ_SOUTH, o);
18e4ca6d3ef4 (svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents: 3369
diff changeset
   116
}