Loading

Paste #pbauyxjnc

  1. Index: src/newgrf_text.cpp
  2. ===================================================================
  3. --- src/newgrf_text.cpp (revision 27688)
  4. +++ src/newgrf_text.cpp (working copy)
  5. @@ -815,13 +815,15 @@
  6.     byte position;
  7.     const GRFFile *grffile;
  8.     bool used;
  9. +   int paused;
  10.  
  11. -   TextRefStack() : position(0), grffile(NULL), used(false) {}
  12. +   TextRefStack() : position(0), grffile(NULL), used(false), paused(0) {}
  13.  
  14.     TextRefStack(const TextRefStack &stack) :
  15.         position(stack.position),
  16.         grffile(stack.grffile),
  17. -       used(stack.used)
  18. +       used(stack.used),
  19. +       paused(stack.paused)
  20.     {
  21.         memcpy(this->stack, stack.stack, sizeof(this->stack));
  22.     }
  23. @@ -948,6 +950,23 @@
  24.     }
  25.  }
  26.  
  27. +void PauseTextRefStackUsage()
  28. +{
  29. +   if (_newgrf_textrefstack.used || _newgrf_textrefstack.paused > 0)
  30. +   {
  31. +       _newgrf_textrefstack.used = false;
  32. +       _newgrf_textrefstack.paused++;
  33. +   }
  34. +}
  35. +
  36. +void ResumeTextRefStackUsage()
  37. +{
  38. +   if (_newgrf_textrefstack.paused > 0) {
  39. +       _newgrf_textrefstack.paused--;
  40. +       if (_newgrf_textrefstack.paused == 0) _newgrf_textrefstack.used = true;
  41. +   }
  42. +}
  43. +
  44.  /** Stop using the TTDP compatible string code parsing */
  45.  void StopTextRefStackUsage()
  46.  {
  47. Index: src/newgrf_text.h
  48. ===================================================================
  49. --- src/newgrf_text.h   (revision 27688)
  50. +++ src/newgrf_text.h   (working copy)
  51. @@ -37,6 +37,8 @@
  52.  
  53.  void StartTextRefStackUsage(const GRFFile *grffile, byte numEntries, const uint32 *values = NULL);
  54.  void StopTextRefStackUsage();
  55. +void PauseTextRefStackUsage();
  56. +void ResumeTextRefStackUsage();
  57.  void RewindTextRefStack();
  58.  bool UsingNewGRFTextStack();
  59.  struct TextRefStack *CreateTextRefStackBackup();
  60. Index: src/strings.cpp
  61. ===================================================================
  62. --- src/strings.cpp (revision 27688)
  63. +++ src/strings.cpp (working copy)
  64. @@ -1132,7 +1132,9 @@
  65.  
  66.                     default: {
  67.                         StringParameters tmp_params(*args, 1);
  68. +                       PauseTextRefStackUsage();
  69.                         buff = GetStringWithArgs(buff, cargo_str, &tmp_params, last);
  70. +                       ResumeTextRefStackUsage();
  71.                         break;
  72.                     }
  73.                 }
  74. @@ -1146,7 +1148,9 @@
  75.  
  76.                 StringID cargo_str = (cargo == CT_INVALID) ? STR_QUANTITY_N_A : CargoSpec::Get(cargo)->quantifier;
  77.                 StringParameters tmp_args(*args, 1);
  78. +               PauseTextRefStackUsage();
  79.                 buff = GetStringWithArgs(buff, cargo_str, &tmp_args, last);
  80. +               ResumeTextRefStackUsage();
  81.                 break;
  82.             }
  83.  
  84.  

Comments