version.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /*
  2. ** Command & Conquer Generals(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: version.cpp //////////////////////////////////////////////////////
  24. // Generals version number class
  25. // Author: Matthew D. Campbell, November 2001
  26. #include "PreRTS.h" // This must go first in EVERY cpp file int the GameEngine
  27. #include "GameClient/GameText.h"
  28. #include "Common/Version.h"
  29. Version *TheVersion = NULL; ///< The Version singleton
  30. Version::Version()
  31. {
  32. m_major = 1;
  33. m_minor = 0;
  34. m_buildNum = 0;
  35. m_localBuildNum = 0;
  36. m_buildUser = AsciiString("somebody");
  37. m_buildLocation = AsciiString("somewhere");
  38. #if defined _DEBUG || defined _INTERNAL
  39. m_showFullVersion = TRUE;
  40. #else
  41. m_showFullVersion = FALSE;
  42. #endif
  43. }
  44. void Version::setVersion(Int major, Int minor, Int buildNum,
  45. Int localBuildNum, AsciiString user, AsciiString location,
  46. AsciiString buildTime, AsciiString buildDate)
  47. {
  48. m_major = major;
  49. m_minor = minor;
  50. m_buildNum = buildNum;
  51. m_localBuildNum = localBuildNum;
  52. m_buildUser = user;
  53. m_buildLocation = location;
  54. m_buildTime = buildTime;
  55. m_buildDate = buildDate;
  56. }
  57. UnsignedInt Version::getVersionNumber( void )
  58. {
  59. return m_major << 16 | m_minor;
  60. }
  61. AsciiString Version::getAsciiVersion( void )
  62. {
  63. AsciiString version;
  64. #if defined _DEBUG || defined _INTERNAL
  65. if (m_localBuildNum)
  66. version.format("%d.%d.%d.%d%c%c", m_major, m_minor, m_buildNum, m_localBuildNum,
  67. m_buildUser.getCharAt(0), m_buildUser.getCharAt(1));
  68. else
  69. version.format("%d.%d.%d", m_major, m_minor, m_buildNum);
  70. #else // defined _DEBUG || defined _INTERNAL
  71. version.format("%d.%d", m_major, m_minor);
  72. #endif // defined _DEBUG || defined _INTERNAL
  73. return version;
  74. }
  75. UnicodeString Version::getUnicodeVersion( void )
  76. {
  77. UnicodeString version;
  78. #if defined _DEBUG || defined _INTERNAL
  79. if (!m_localBuildNum)
  80. version.format(TheGameText->fetch("Version:Format3").str(), m_major, m_minor, m_buildNum);
  81. else
  82. version.format(TheGameText->fetch("Version:Format4").str(), m_major, m_minor, m_buildNum, m_localBuildNum,
  83. m_buildUser.getCharAt(0), m_buildUser.getCharAt(1));
  84. #else // defined _DEBUG || defined _INTERNAL
  85. version.format(TheGameText->fetch("Version:Format2").str(), m_major, m_minor);
  86. #endif // defined _DEBUG || defined _INTERNAL
  87. #ifdef _DEBUG
  88. version.concat(UnicodeString(L" Debug"));
  89. #endif
  90. #ifdef _INTERNAL
  91. version.concat(UnicodeString(L" Internal"));
  92. #endif
  93. return version;
  94. }
  95. UnicodeString Version::getFullUnicodeVersion( void )
  96. {
  97. UnicodeString version;
  98. if (!m_localBuildNum)
  99. version.format(TheGameText->fetch("Version:Format3").str(), m_major, m_minor, m_buildNum);
  100. else
  101. version.format(TheGameText->fetch("Version:Format4").str(), m_major, m_minor, m_buildNum, m_localBuildNum,
  102. m_buildUser.getCharAt(0), m_buildUser.getCharAt(1));
  103. #ifdef _DEBUG
  104. version.concat(UnicodeString(L" Debug"));
  105. #endif
  106. #ifdef _INTERNAL
  107. version.concat(UnicodeString(L" Internal"));
  108. #endif
  109. return version;
  110. }
  111. AsciiString Version::getAsciiBuildTime( void )
  112. {
  113. AsciiString timeStr;
  114. timeStr.format("%s %s", m_buildDate.str(), m_buildTime.str());
  115. return timeStr;
  116. }
  117. UnicodeString Version::getUnicodeBuildTime( void )
  118. {
  119. UnicodeString build;
  120. UnicodeString dateStr;
  121. UnicodeString timeStr;
  122. dateStr.translate(m_buildDate);
  123. timeStr.translate(m_buildTime);
  124. build.format(TheGameText->fetch("Version:BuildTime").str(), dateStr.str(), timeStr.str());
  125. return build;
  126. }
  127. AsciiString Version::getAsciiBuildLocation( void )
  128. {
  129. return AsciiString(m_buildLocation);
  130. }
  131. UnicodeString Version::getUnicodeBuildLocation( void )
  132. {
  133. UnicodeString build;
  134. UnicodeString machine;
  135. machine.translate(AsciiString(m_buildLocation));
  136. build.format(TheGameText->fetch("Version:BuildMachine").str(), machine.str());
  137. return build;
  138. }
  139. AsciiString Version::getAsciiBuildUser( void )
  140. {
  141. return AsciiString(m_buildUser);
  142. }
  143. UnicodeString Version::getUnicodeBuildUser( void )
  144. {
  145. UnicodeString build;
  146. UnicodeString user;
  147. user.translate(AsciiString(m_buildUser));
  148. build.format(TheGameText->fetch("Version:BuildUser").str(), user.str());
  149. return build;
  150. }