Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
version.cpp
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(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
20// //
21// (c) 2001-2003 Electronic Arts Inc. //
22// //
24
25// FILE: version.cpp //////////////////////////////////////////////////////
26// Generals version number class
27// Author: Matthew D. Campbell, November 2001
28
29#include "PreRTS.h" // This must go first in EVERY cpp file int the GameEngine
30
31#include "GameClient/GameText.h"
32#include "Common/Version.h"
33
35
37{
38 m_major = 1;
39 m_minor = 0;
40 m_buildNum = 0;
41 m_localBuildNum = 0;
42 m_buildUser = AsciiString("somebody");
43 m_buildLocation = AsciiString("somewhere");
44#if defined _DEBUG || defined _INTERNAL
45 m_showFullVersion = TRUE;
46#else
47 m_showFullVersion = FALSE;
48#endif
49}
50
51void Version::setVersion(Int major, Int minor, Int buildNum,
52 Int localBuildNum, AsciiString user, AsciiString location,
53 AsciiString buildTime, AsciiString buildDate)
54{
55 m_major = major;
56 m_minor = minor;
57 m_buildNum = buildNum;
58 m_localBuildNum = localBuildNum;
59 m_buildUser = user;
60 m_buildLocation = location;
61 m_buildTime = buildTime;
62 m_buildDate = buildDate;
63}
64
66{
67 return m_major << 16 | m_minor;
68}
69
71{
72 AsciiString version;
73#if defined _DEBUG || defined _INTERNAL
74 if (m_localBuildNum)
75 version.format("%d.%d.%d.%d%c%c", m_major, m_minor, m_buildNum, m_localBuildNum,
76 m_buildUser.getCharAt(0), m_buildUser.getCharAt(1));
77 else
78 version.format("%d.%d.%d", m_major, m_minor, m_buildNum);
79#else // defined _DEBUG || defined _INTERNAL
80 version.format("%d.%d", m_major, m_minor);
81#endif // defined _DEBUG || defined _INTERNAL
82
83 return version;
84}
85
87{
88 UnicodeString version;
89
90#if defined _DEBUG || defined _INTERNAL
91 if (!m_localBuildNum)
92 version.format(TheGameText->fetch("Version:Format3").str(), m_major, m_minor, m_buildNum);
93 else
94 version.format(TheGameText->fetch("Version:Format4").str(), m_major, m_minor, m_buildNum, m_localBuildNum,
95 m_buildUser.getCharAt(0), m_buildUser.getCharAt(1));
96#else // defined _DEBUG || defined _INTERNAL
97 version.format(TheGameText->fetch("Version:Format2").str(), m_major, m_minor);
98#endif // defined _DEBUG || defined _INTERNAL
99
100#ifdef _DEBUG
101 version.concat(UnicodeString(L" Debug"));
102#endif
103
104#ifdef _INTERNAL
105 version.concat(UnicodeString(L" Internal"));
106#endif
107
108 return version;
109}
110
112{
113 UnicodeString version;
114
115 if (!m_localBuildNum)
116 version.format(TheGameText->fetch("Version:Format3").str(), m_major, m_minor, m_buildNum);
117 else
118 version.format(TheGameText->fetch("Version:Format4").str(), m_major, m_minor, m_buildNum, m_localBuildNum,
119 m_buildUser.getCharAt(0), m_buildUser.getCharAt(1));
120
121#ifdef _DEBUG
122 version.concat(UnicodeString(L" Debug"));
123#endif
124
125#ifdef _INTERNAL
126 version.concat(UnicodeString(L" Internal"));
127#endif
128
129 return version;
130}
131
133{
134 AsciiString timeStr;
135 timeStr.format("%s %s", m_buildDate.str(), m_buildTime.str());
136
137 return timeStr;
138}
139
141{
142 UnicodeString build;
143 UnicodeString dateStr;
144 UnicodeString timeStr;
145
146 dateStr.translate(m_buildDate);
147 timeStr.translate(m_buildTime);
148 build.format(TheGameText->fetch("Version:BuildTime").str(), dateStr.str(), timeStr.str());
149
150 return build;
151}
152
154{
155 return AsciiString(m_buildLocation);
156}
157
159{
160 UnicodeString build;
161 UnicodeString machine;
162
163 machine.translate(AsciiString(m_buildLocation));
164 build.format(TheGameText->fetch("Version:BuildMachine").str(), machine.str());
165
166 return build;
167}
168
170{
171 return AsciiString(m_buildUser);
172}
173
175{
176 UnicodeString build;
177 UnicodeString user;
178
179 user.translate(AsciiString(m_buildUser));
180 build.format(TheGameText->fetch("Version:BuildUser").str(), user.str());
181
182 return build;
183}
#define NULL
Definition BaseType.h:92
#define TRUE
Definition BaseType.h:109
#define FALSE
Definition BaseType.h:113
unsigned int UnsignedInt
Definition BaseType.h:126
GameTextInterface * TheGameText
Definition GameText.cpp:212
void format(AsciiString format,...)
void format(UnicodeString format,...)
void concat(const UnicodeString &stringSrc)
const WideChar * str() const
void translate(const AsciiString &stringSrc)
UnicodeString getFullUnicodeVersion(void)
Return a human-readable version number.
Definition version.cpp:111
UnicodeString getUnicodeBuildLocation(void)
Return a string with the build location.
Definition version.cpp:158
AsciiString getAsciiBuildTime(void)
Return a formated date/time string for build time.
Definition version.cpp:132
UnsignedInt getVersionNumber(void)
Return a 4-byte integer suitable for WOLAPI.
Definition version.cpp:65
AsciiString getAsciiBuildUser(void)
Return a string with the build user.
Definition version.cpp:169
UnicodeString getUnicodeVersion(void)
Return a human-readable version number.
Definition version.cpp:86
AsciiString getAsciiVersion(void)
Return a human-readable version number.
Definition version.cpp:70
UnicodeString getUnicodeBuildTime(void)
Return a formated date/time string for build time.
Definition version.cpp:140
Version()
Definition version.cpp:36
UnicodeString getUnicodeBuildUser(void)
Return a string with the build user.
Definition version.cpp:174
AsciiString getAsciiBuildLocation(void)
Return a string with the build location.
Definition version.cpp:153
void setVersion(Int major, Int minor, Int buildNum, Int localBuildNum, AsciiString user, AsciiString location, AsciiString buildTime, AsciiString buildDate)
Set version info.
Definition version.cpp:51
Version * TheVersion
The Version singleton.
Definition version.cpp:34