Mercurial > hg > openttd
changeset 7295:9a2cabefad4d draft
(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Fri, 20 Jul 2007 18:35:33 +0000 |
parents | a9c7369fdb90 |
children | 75a41d83dd01 |
files | src/signs.cpp src/signs.h |
diffstat | 2 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/signs.cpp +++ b/src/signs.cpp @@ -14,7 +14,8 @@ #include "command.h" #include "variables.h" -static Sign *_new_sign; +SignID _new_sign_id; +uint _total_signs; /** * Called if a new block is added to the sign-pool @@ -145,7 +146,8 @@ MarkSignDirty(si); InvalidateWindow(WC_SIGN_LIST, 0); _sign_sort_dirty = true; - _new_sign = si; + _new_sign_id = si->index; + _total_signs++; } return CommandCost(); @@ -199,6 +201,7 @@ InvalidateWindow(WC_SIGN_LIST, 0); _sign_sort_dirty = true; + _total_signs--; } } @@ -215,7 +218,7 @@ void CcPlaceSign(bool success, TileIndex tile, uint32 p1, uint32 p2) { if (success) { - ShowRenameSignWindow(_new_sign); + ShowRenameSignWindow(GetSign(_new_sign_id)); ResetObjectToPlace(); } } @@ -238,6 +241,7 @@ */ void InitializeSigns() { + _total_signs = 0; CleanPool(&_Sign_pool); AddBlockToPool(&_Sign_pool); } @@ -275,6 +279,7 @@ */ static void Load_SIGN() { + _total_signs = 0; int index; while ((index = SlIterateArray()) != -1) { Sign *si; @@ -284,6 +289,8 @@ si = GetSign(index); SlObject(si, _sign_desc); + + _total_signs++; } _sign_sort_dirty = true;
--- a/src/signs.h +++ b/src/signs.h @@ -18,6 +18,12 @@ SignID index; }; +enum { + INVALID_SIGN = 0xFFFF, +}; + +extern SignID _new_sign_id; + DECLARE_OLD_POOL(Sign, Sign, 2, 16000) static inline SignID GetMaxSignIndex() @@ -32,7 +38,8 @@ static inline uint GetNumSigns() { - return GetSignPoolSize(); + extern uint _total_signs; + return _total_signs; } /**