Index: src/newgrf_text.cpp
===================================================================
--- src/newgrf_text.cpp (revision 27688)
+++ src/newgrf_text.cpp (working copy)
@@ -815,13 +815,15 @@
byte position;
const GRFFile *grffile;
bool used;
+ int paused;
- TextRefStack() : position(0), grffile(NULL), used(false) {}
+ TextRefStack() : position(0), grffile(NULL), used(false), paused(0) {}
TextRefStack(const TextRefStack &stack) :
position(stack.position),
grffile(stack.grffile),
- used(stack.used)
+ used(stack.used),
+ paused(stack.paused)
{
memcpy(this->stack, stack.stack, sizeof(this->stack));
}
@@ -948,6 +950,23 @@
}
}
+void PauseTextRefStackUsage()
+{
+ if (_newgrf_textrefstack.used || _newgrf_textrefstack.paused > 0)
+ {
+ _newgrf_textrefstack.used = false;
+ _newgrf_textrefstack.paused++;
+ }
+}
+
+void ResumeTextRefStackUsage()
+{
+ if (_newgrf_textrefstack.paused > 0) {
+ _newgrf_textrefstack.paused--;
+ if (_newgrf_textrefstack.paused == 0) _newgrf_textrefstack.used = true;
+ }
+}
+
/** Stop using the TTDP compatible string code parsing */
void StopTextRefStackUsage()
{
Index: src/newgrf_text.h
===================================================================
--- src/newgrf_text.h (revision 27688)
+++ src/newgrf_text.h (working copy)
@@ -37,6 +37,8 @@
void StartTextRefStackUsage(const GRFFile *grffile, byte numEntries, const uint32 *values = NULL);
void StopTextRefStackUsage();
+void PauseTextRefStackUsage();
+void ResumeTextRefStackUsage();
void RewindTextRefStack();
bool UsingNewGRFTextStack();
struct TextRefStack *CreateTextRefStackBackup();
Index: src/strings.cpp
===================================================================
--- src/strings.cpp (revision 27688)
+++ src/strings.cpp (working copy)
@@ -1132,7 +1132,9 @@
default: {
StringParameters tmp_params(*args, 1);
+ PauseTextRefStackUsage();
buff = GetStringWithArgs(buff, cargo_str, &tmp_params, last);
+ ResumeTextRefStackUsage();
break;
}
}
@@ -1146,7 +1148,9 @@
StringID cargo_str = (cargo == CT_INVALID) ? STR_QUANTITY_N_A : CargoSpec::Get(cargo)->quantifier;
StringParameters tmp_args(*args, 1);
+ PauseTextRefStackUsage();
buff = GetStringWithArgs(buff, cargo_str, &tmp_args, last);
+ ResumeTextRefStackUsage();
break;
}