(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.

This commit is contained in:
rubidium 2007-07-20 18:35:33 +00:00
parent 7aa6d30922
commit 3f983ff1f2
2 changed files with 18 additions and 4 deletions

View File

@ -14,7 +14,8 @@
#include "command.h" #include "command.h"
#include "variables.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 * Called if a new block is added to the sign-pool
@ -145,7 +146,8 @@ CommandCost CmdPlaceSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
MarkSignDirty(si); MarkSignDirty(si);
InvalidateWindow(WC_SIGN_LIST, 0); InvalidateWindow(WC_SIGN_LIST, 0);
_sign_sort_dirty = true; _sign_sort_dirty = true;
_new_sign = si; _new_sign_id = si->index;
_total_signs++;
} }
return CommandCost(); return CommandCost();
@ -199,6 +201,7 @@ CommandCost CmdRenameSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
InvalidateWindow(WC_SIGN_LIST, 0); InvalidateWindow(WC_SIGN_LIST, 0);
_sign_sort_dirty = true; _sign_sort_dirty = true;
_total_signs--;
} }
} }
@ -215,7 +218,7 @@ CommandCost CmdRenameSign(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
void CcPlaceSign(bool success, TileIndex tile, uint32 p1, uint32 p2) void CcPlaceSign(bool success, TileIndex tile, uint32 p1, uint32 p2)
{ {
if (success) { if (success) {
ShowRenameSignWindow(_new_sign); ShowRenameSignWindow(GetSign(_new_sign_id));
ResetObjectToPlace(); ResetObjectToPlace();
} }
} }
@ -238,6 +241,7 @@ void PlaceProc_Sign(TileIndex tile)
*/ */
void InitializeSigns() void InitializeSigns()
{ {
_total_signs = 0;
CleanPool(&_Sign_pool); CleanPool(&_Sign_pool);
AddBlockToPool(&_Sign_pool); AddBlockToPool(&_Sign_pool);
} }
@ -275,6 +279,7 @@ static void Save_SIGN()
*/ */
static void Load_SIGN() static void Load_SIGN()
{ {
_total_signs = 0;
int index; int index;
while ((index = SlIterateArray()) != -1) { while ((index = SlIterateArray()) != -1) {
Sign *si; Sign *si;
@ -284,6 +289,8 @@ static void Load_SIGN()
si = GetSign(index); si = GetSign(index);
SlObject(si, _sign_desc); SlObject(si, _sign_desc);
_total_signs++;
} }
_sign_sort_dirty = true; _sign_sort_dirty = true;

View File

@ -18,6 +18,12 @@ struct Sign {
SignID index; SignID index;
}; };
enum {
INVALID_SIGN = 0xFFFF,
};
extern SignID _new_sign_id;
DECLARE_OLD_POOL(Sign, Sign, 2, 16000) DECLARE_OLD_POOL(Sign, Sign, 2, 16000)
static inline SignID GetMaxSignIndex() static inline SignID GetMaxSignIndex()
@ -32,7 +38,8 @@ static inline SignID GetMaxSignIndex()
static inline uint GetNumSigns() static inline uint GetNumSigns()
{ {
return GetSignPoolSize(); extern uint _total_signs;
return _total_signs;
} }
/** /**