author | rubidium |
Thu, 01 Feb 2007 15:49:12 +0000 | |
changeset 5893 | 7e431a4abebb |
parent 5587 | 167d9a91ef02 |
child 6248 | e4a2ed7e5613 |
permissions | -rw-r--r-- |
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 |
|
4666
172a0cdf28a6
(svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents:
3971
diff
changeset
|
3 |
#ifndef UNMOVABLE_MAP_H |
172a0cdf28a6
(svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents:
3971
diff
changeset
|
4 |
#define UNMOVABLE_MAP_H |
172a0cdf28a6
(svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents:
3971
diff
changeset
|
5 |
|
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
|
6 |
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
|
7 |
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
|
8 |
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
|
9 |
}; |
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
|
10 |
|
3310
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
11 |
typedef enum UnmovableType { |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
12 |
UNMOVABLE_TRANSMITTER = 0, |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
13 |
UNMOVABLE_LIGHTHOUSE = 1, |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
14 |
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
|
15 |
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
|
16 |
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
|
17 |
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
|
18 |
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
|
19 |
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
|
20 |
|
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
|
21 |
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
|
22 |
} UnmovableType; |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
23 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
24 |
|
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
|
25 |
|
3310
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
26 |
static inline UnmovableType GetUnmovableType(TileIndex t) |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
27 |
{ |
3369
cab209754317
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3310
diff
changeset
|
28 |
assert(IsTileType(t, MP_UNMOVABLE)); |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5475
diff
changeset
|
29 |
return (UnmovableType)_m[t].m5; |
3310
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
30 |
} |
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 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
33 |
static inline bool IsTransmitterTile(TileIndex t) |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
34 |
{ |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
35 |
return |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
36 |
IsTileType(t, MP_UNMOVABLE) && |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
37 |
GetUnmovableType(t) == UNMOVABLE_TRANSMITTER; |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
38 |
} |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
39 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
40 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
41 |
static inline bool IsOwnedLand(TileIndex t) |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
42 |
{ |
3369
cab209754317
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3310
diff
changeset
|
43 |
assert(IsTileType(t, MP_UNMOVABLE)); |
3310
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
44 |
return GetUnmovableType(t) == UNMOVABLE_OWNED_LAND; |
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 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
47 |
static inline bool IsOwnedLandTile(TileIndex t) |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
48 |
{ |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
49 |
return IsTileType(t, MP_UNMOVABLE) && IsOwnedLand(t); |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
50 |
} |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
51 |
|
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
|
52 |
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
|
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 |
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
|
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 |
|
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 |
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
|
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 |
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
|
60 |
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
|
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 |
|
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 |
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
|
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 |
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
|
66 |
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
|
67 |
} |
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
|
68 |
|
3310
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
69 |
|
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 |
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
|
71 |
{ |
3705
3232570a91b7
(svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents:
3427
diff
changeset
|
72 |
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
|
73 |
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
|
74 |
|
3705
3232570a91b7
(svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents:
3427
diff
changeset
|
75 |
_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
|
76 |
_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
|
77 |
_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
|
78 |
_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
|
79 |
} |
e94795a55f13
(svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents:
3385
diff
changeset
|
80 |
|
e94795a55f13
(svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents:
3385
diff
changeset
|
81 |
|
3310
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
82 |
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
|
83 |
{ |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
84 |
SetTileType(t, MP_UNMOVABLE); |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
85 |
SetTileOwner(t, o); |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
86 |
_m[t].m2 = 0; |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
87 |
_m[t].m3 = 0; |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
88 |
_m[t].m4 = 0; |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
89 |
_m[t].m5 = u; |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
90 |
} |
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 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
93 |
static inline void MakeTransmitter(TileIndex t) |
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 |
MakeUnmovable(t, UNMOVABLE_TRANSMITTER, OWNER_NONE); |
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 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
98 |
static inline void MakeLighthouse(TileIndex t) |
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 |
MakeUnmovable(t, UNMOVABLE_LIGHTHOUSE, OWNER_NONE); |
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 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
103 |
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
|
104 |
{ |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
105 |
MakeUnmovable(t, UNMOVABLE_STATUE, 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 |
|
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
108 |
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
|
109 |
{ |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
110 |
MakeUnmovable(t, UNMOVABLE_OWNED_LAND, o); |
a19f247b75b6
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
111 |
} |
3385
18e4ca6d3ef4
(svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents:
3369
diff
changeset
|
112 |
|
18e4ca6d3ef4
(svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents:
3369
diff
changeset
|
113 |
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
|
114 |
{ |
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(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
|
116 |
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
|
117 |
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
|
118 |
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
|
119 |
} |
4666
172a0cdf28a6
(svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents:
3971
diff
changeset
|
120 |
|
172a0cdf28a6
(svn r6560) - Codechange: Minor fix; add missing #include guards and comments, and correct svn properties on bmp.[ch]
peter1138
parents:
3971
diff
changeset
|
121 |
#endif /* UNMOVABLE_MAP_H */ |