(svn r10643) -Merge (from NoAI): properly counting the amount of signs instead of using the size of the sign pool.
--- a/src/signs.cpp Fri Jul 20 18:34:21 2007 +0000
+++ b/src/signs.cpp Fri Jul 20 18:35:33 2007 +0000
@@ -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 Fri Jul 20 18:34:21 2007 +0000
+++ b/src/signs.h Fri Jul 20 18:35:33 2007 +0000
@@ -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;
}
/**