Mercurial > hg > openttd
annotate src/signs.h @ 7493:2068a51c2e6c draft
(svn r11004) -Codechange: some reworks of the saveload mechanism to be able to save and load private and protected variables in the vehicle struct.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Thu, 30 Aug 2007 13:09:44 +0000 |
parents | 571c87eed06c |
children | 96d510452b4d |
rev | line source |
---|---|
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
1 /* $Id$ */ |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
2 |
6420
080aae477331
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents:
6248
diff
changeset
|
3 /** @file signs.h */ |
080aae477331
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents:
6248
diff
changeset
|
4 |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
5 #ifndef SIGNS_H |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
6 #define SIGNS_H |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
7 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
8 #include "oldpool.h" |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
9 |
7384
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
10 struct Sign; |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
11 DECLARE_OLD_POOL(Sign, Sign, 2, 16000) |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
12 |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
13 struct Sign : PoolItem<Sign, SignID, &_Sign_pool> { |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
14 StringID str; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
15 ViewportSign sign; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
16 int32 x; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
17 int32 y; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
18 byte z; |
5587
c44c070c5032
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium <rubidium@openttd.org>
parents:
5475
diff
changeset
|
19 PlayerByte owner; // placed by this player. Anyone can delete them though. OWNER_NONE for gray signs from old games. |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
20 |
7384
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
21 /** |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
22 * Creates a new sign |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
23 */ |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
24 Sign(StringID string = STR_NULL); |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
25 |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
26 /** Destroy the sign */ |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
27 ~Sign(); |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
28 |
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
29 bool IsValid() const { return this->str != STR_NULL; } |
6248
0789677a15a0
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents:
6247
diff
changeset
|
30 }; |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
31 |
7295
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
32 enum { |
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
33 INVALID_SIGN = 0xFFFF, |
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
34 }; |
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
35 |
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
36 extern SignID _new_sign_id; |
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
37 |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
38 |
6247
57363e064324
(svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents:
5751
diff
changeset
|
39 static inline SignID GetMaxSignIndex() |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
40 { |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
41 /* TODO - This isn't the real content of the function, but |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
42 * with the new pool-system this will be replaced with one that |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
43 * _really_ returns the highest index. Now it just returns |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
44 * the next safe value we are sure about everything is below. |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
45 */ |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
46 return GetSignPoolSize() - 1; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
47 } |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
48 |
6247
57363e064324
(svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents:
5751
diff
changeset
|
49 static inline uint GetNumSigns() |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
50 { |
7295
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
51 extern uint _total_signs; |
9a2cabefad4d
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
rubidium <rubidium@openttd.org>
parents:
7127
diff
changeset
|
52 return _total_signs; |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
53 } |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
54 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
55 static inline bool IsValidSignID(uint index) |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
56 { |
7384
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
57 return index < GetSignPoolSize() && GetSign(index)->IsValid(); |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
58 } |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
59 |
7384
e2eb0f20e603
(svn r10753) -Codechange: make the sign struct use the pool item class as super class.
rubidium <rubidium@openttd.org>
parents:
7295
diff
changeset
|
60 #define FOR_ALL_SIGNS_FROM(ss, start) for (ss = GetSign(start); ss != NULL; ss = (ss->index + 1U < GetSignPoolSize()) ? GetSign(ss->index + 1U) : NULL) if (ss->IsValid()) |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
61 #define FOR_ALL_SIGNS(ss) FOR_ALL_SIGNS_FROM(ss, 0) |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
62 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
63 VARDEF bool _sign_sort_dirty; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
64 |
6247
57363e064324
(svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents:
5751
diff
changeset
|
65 void UpdateAllSignVirtCoords(); |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
66 void PlaceProc_Sign(TileIndex tile); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
67 |
7127
2116c82efa49
(svn r10401) -Feature: new sign editor features including switching to previous/next sign (XeryusTC)
peter1138 <peter1138@openttd.org>
parents:
6420
diff
changeset
|
68 /* signs_gui.cpp */ |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
69 void ShowRenameSignWindow(const Sign *si); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
70 |
6247
57363e064324
(svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents:
5751
diff
changeset
|
71 void ShowSignList(); |
5751
e94b9d9f8530
(svn r8301) -Codechange: Move the code relating to the sign list window from graph_gui.cpp to a file of its own: signs_gui.cpp.
maedhros <maedhros@openttd.org>
parents:
5587
diff
changeset
|
72 |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
73 #endif /* SIGNS_H */ |