author | Darkvater |
Tue, 27 Feb 2007 15:19:36 +0000 | |
branch | 0.5 |
changeset 5452 | ab277a12dab5 |
parent 4666 | 850b5b6e4bac |
permissions | -rw-r--r-- |
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 |
|
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
|
3 |
#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
|
4 |
#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
|
5 |
|
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
|
6 |
enum { |
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
|
7 |
HQ_NUM_TILE = 4, |
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 |
HQ_NUM_SIZE = 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
|
9 |
}; |
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
|
10 |
|
3310
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
11 |
typedef enum UnmovableType { |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
12 |
UNMOVABLE_TRANSMITTER = 0, |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
13 |
UNMOVABLE_LIGHTHOUSE = 1, |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
14 |
UNMOVABLE_STATUE = 2, |
3385
41ebb01a92f2
(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, |
41ebb01a92f2
(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, |
41ebb01a92f2
(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, |
41ebb01a92f2
(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, |
41ebb01a92f2
(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
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
|
20 |
|
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
|
21 |
UNMOVABLE_HQ_END = UNMOVABLE_HQ_NORTH + HQ_NUM_SIZE * HQ_NUM_TILE |
3310
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
22 |
} UnmovableType; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
23 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
24 |
|
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 |
|
3310
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
26 |
static inline UnmovableType GetUnmovableType(TileIndex t) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
27 |
{ |
3369
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3310
diff
changeset
|
28 |
assert(IsTileType(t, MP_UNMOVABLE)); |
3310
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
29 |
return _m[t].m5; |
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 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
32 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
33 |
static inline bool IsTransmitterTile(TileIndex t) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
34 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
35 |
return |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
36 |
IsTileType(t, MP_UNMOVABLE) && |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
37 |
GetUnmovableType(t) == UNMOVABLE_TRANSMITTER; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
38 |
} |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
39 |
|
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 |
static inline bool IsOwnedLand(TileIndex t) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
42 |
{ |
3369
00c2ca209a89
(svn r4166) Sprinkle several map accessors with assert()s
tron
parents:
3310
diff
changeset
|
43 |
assert(IsTileType(t, MP_UNMOVABLE)); |
3310
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
44 |
return GetUnmovableType(t) == UNMOVABLE_OWNED_LAND; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
45 |
} |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
46 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
47 |
static inline bool IsOwnedLandTile(TileIndex t) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
48 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
49 |
return IsTileType(t, MP_UNMOVABLE) && IsOwnedLand(t); |
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 |
|
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
|
52 |
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
|
53 |
{ |
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
|
54 |
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
|
55 |
} |
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
|
56 |
|
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
|
57 |
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
|
58 |
{ |
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
|
59 |
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
|
60 |
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
|
61 |
} |
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
|
62 |
|
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
|
63 |
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
|
64 |
{ |
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
|
65 |
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
|
66 |
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
|
67 |
} |
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
|
68 |
|
3310
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
69 |
|
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
|
70 |
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
|
71 |
{ |
3705
539e1366ccae
(svn r4648) - Fix (r4196): Company HQ's were not upgraded during the monthly loops.
Darkvater
parents:
3427
diff
changeset
|
72 |
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
|
73 |
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
|
74 |
|
3705
539e1366ccae
(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; |
539e1366ccae
(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; |
539e1366ccae
(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; |
539e1366ccae
(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
c802170b5dd4
(svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents:
3385
diff
changeset
|
79 |
} |
c802170b5dd4
(svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ
celestar
parents:
3385
diff
changeset
|
80 |
|
c802170b5dd4
(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
7339b2b1e957
(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) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
83 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
84 |
SetTileType(t, MP_UNMOVABLE); |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
85 |
SetTileOwner(t, o); |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
86 |
_m[t].m2 = 0; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
87 |
_m[t].m3 = 0; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
88 |
_m[t].m4 = 0; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
89 |
_m[t].m5 = u; |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
90 |
} |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
91 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
92 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
93 |
static inline void MakeTransmitter(TileIndex t) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
94 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
95 |
MakeUnmovable(t, UNMOVABLE_TRANSMITTER, OWNER_NONE); |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
96 |
} |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
97 |
|
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
98 |
static inline void MakeLighthouse(TileIndex t) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
99 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
100 |
MakeUnmovable(t, UNMOVABLE_LIGHTHOUSE, OWNER_NONE); |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
101 |
} |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
102 |
|
7339b2b1e957
(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) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
104 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
105 |
MakeUnmovable(t, UNMOVABLE_STATUE, o); |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
106 |
} |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
107 |
|
7339b2b1e957
(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) |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
109 |
{ |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
110 |
MakeUnmovable(t, UNMOVABLE_OWNED_LAND, o); |
7339b2b1e957
(svn r4073) Add functions to make and test for (most) unmovable tiles
tron
parents:
diff
changeset
|
111 |
} |
3385
41ebb01a92f2
(svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents:
3369
diff
changeset
|
112 |
|
41ebb01a92f2
(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) |
41ebb01a92f2
(svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents:
3369
diff
changeset
|
114 |
{ |
41ebb01a92f2
(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); |
41ebb01a92f2
(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); |
41ebb01a92f2
(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); |
41ebb01a92f2
(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); |
41ebb01a92f2
(svn r4193) -Codechange: Add and make use of an accessor function to create company HQs
celestar
parents:
3369
diff
changeset
|
119 |
} |
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
|
120 |
|
850b5b6e4bac
(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 */ |