Skip to content

Commit 4624a25

Browse files
committed
Move LanguageStrings.cmake to a C Macro
1 parent a842f5a commit 4624a25

4 files changed

Lines changed: 96 additions & 123 deletions

File tree

cmake-scripts/BuildLanguages.cmake

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,12 @@
11
#
2-
# BuildLanguages.cmake has two jobs:
3-
# - it generates src/resources/generated_languages.h from LanguageStrings.cmake, and
4-
# - if option BUILD_LANGUAGES is on, builds the .LNG files from resources/translations/*.TXT
2+
# BuildLanguages.cmake has one job:
3+
# if option BUILD_LANGUAGES is on, builds the .LNG files from resources/translations/*.TXT
54
#
65

7-
macro(lang_str enum_name)
8-
if(${ARGC} GREATER 1)
9-
set(count "${ARGV1}")
10-
11-
if(${count} LESS 1)
12-
message(FATAL_ERROR "Cannot add less than 1 of lang_str '${enum_name}'.")
13-
endif()
14-
15-
string(APPEND LANG_ENUM "\n ${enum_name} = ${Lang_Count},")
16-
string(APPEND LANG_ENUM "\n ${enum_name}_Last = ${Lang_Count} + (${count} - 1),\n")
17-
math(EXPR Lang_Count "${Lang_Count} + ${count}")
18-
else()
19-
string(APPEND LANG_ENUM "\n ${enum_name} = ${Lang_Count},\n")
20-
math(EXPR Lang_Count "${Lang_Count} + 1")
21-
endif()
22-
endmacro()
23-
set(Lang_Count 0)
24-
set(LANG_ENUM "")
25-
include("cmake-scripts/LanguageStrings.cmake")
26-
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/resources/generated_languages.h.in" "${CMAKE_CURRENT_BINARY_DIR}/src/resources/generated_languages.h")
27-
28-
message(STATUS "BuildLanguages' Lang_Count: ${Lang_Count}")
29-
30-
316
if(NOT BUILD_LANGUAGES)
32-
# early out, having written generated_languages.h
337
return()
348
endif()
359

36-
3710
if(WIN32)
3811
set(LANGUAGE_INSTALL_PATH "openomf/resources/")
3912
else()
@@ -48,6 +21,8 @@ file(GLOB OPENOMF_LANGS
4821
"${LANG_SRC}/*.TXT"
4922
)
5023

24+
file(READ "${LANG_SRC}/langstr_count" Lang_Count)
25+
5126
# generate custom target info
5227
set(BUILD_LANG_COMMANDS)
5328
set(BUILD_LANG_SOURCES)

cmake-scripts/LanguageStrings.cmake

Lines changed: 0 additions & 77 deletions
This file was deleted.

src/resources/generated_languages.h.in

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/resources/languages.h

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#ifndef LANGUAGES_H
22
#define LANGUAGES_H
33

4-
#include "resources/generated_languages.h"
54
#include <stdbool.h>
65

76
/*
@@ -31,4 +30,96 @@ const char *lang_get(int id);
3130
#define lang_get_offset(LangStr, offset) lang_get_offset_impl(LangStr, LangStr##_Last, (offset))
3231
const char *lang_get_offset_impl(int id, int last, int offset);
3332

33+
#define lang_str(enum_variant) enum_variant
34+
#define lang_str_range(enum_variant, count) enum_variant, enum_variant##_Last = enum_variant + (count - 1)
35+
36+
/*! \brief OpenOMF String ID
37+
*
38+
* These string IDs are generated by BuildLanguages.cmake from the list in LanguageStrings.cmake,
39+
* and match the generated .LNG files.
40+
*/
41+
enum
42+
{
43+
// lang_str(<enum variant> [<str count>]),
44+
// The <enum variant> is what's used in the C code to refer to this language string.
45+
// Specifying a <str count> allows for a range of lang strs to be added under one name
46+
47+
// strings from OMF 2097
48+
lang_str_range(LangPilot, 11),
49+
lang_str_range(LangPilotDescription, 11),
50+
lang_str_range(LangRobot, 11),
51+
lang_str_range(LangRobotDescription, 11),
52+
lang_str_range(LangArena, 5),
53+
lang_str_range(LangArenaDescription, 5),
54+
lang_str_range(LangPronoun, 6),
55+
lang_str(LangNewsroomUnrankedChallengerDialog),
56+
lang_str_range(LangNewsroomUnrankedChallenger, 2),
57+
lang_str(LangNewsroomNewChampion),
58+
lang_str_range(LangNewsroomReport, 48),
59+
lang_str_range(LangCpuDifficulty, 7),
60+
lang_str(LangTooPatheticDialog),
61+
lang_str(LangTooPatheticInsult),
62+
lang_str_range(LangVsInsult1, 121),
63+
lang_str_range(LangVsInsult2, 121),
64+
lang_str_range(LangPlug, 16),
65+
lang_str(LangPilotStatPower),
66+
lang_str(LangPilotStatSpeed),
67+
lang_str(LangPilotStatEndurance),
68+
lang_str(LangChooseYourPilot),
69+
lang_str(LangChooseYourRobot),
70+
lang_str(LangSceneEnd),
71+
lang_str_range(LangSceneEnd1, 10),
72+
lang_str_range(LangSceneEnd2, 10),
73+
lang_str(LangSelectTournament),
74+
lang_str(LangSelectPhotoForChr),
75+
lang_str(LangSelectChrToLoad),
76+
lang_str(LangSelectChrToDelete),
77+
lang_str(LangSelectOpponent),
78+
lang_str_range(LangTrainingTitle, 3),
79+
lang_str_range(LangTrainingConfirmation, 3),
80+
lang_str_range(LangTrainingHelp, 3),
81+
lang_str(LangTrainingDone),
82+
lang_str(LangTradeGainCash),
83+
lang_str(LangTradeSpendCash),
84+
lang_str(LangTradeEquitable),
85+
lang_str(LangButtonSelect),
86+
lang_str(LangTournamentFight),
87+
lang_str(LangEnterTrainingHelp),
88+
lang_str(LangBuyUpgradesHelp),
89+
lang_str(LangSellUpgradesHelp),
90+
lang_str(LangChrLoadHelp),
91+
lang_str(LangChrCreateHelp),
92+
lang_str(LangChrDeleteHelp),
93+
lang_str(LangTournamentSimHelp),
94+
lang_str(LangTournamentQuitHelp),
95+
lang_str(LangTournamentRegisterHelp),
96+
lang_str_range(LangTournamentDifficulty, 4),
97+
lang_str(LangNo),
98+
lang_str(LangYes),
99+
lang_str(LangPromptChrName),
100+
lang_str(LangCustomizeColor1),
101+
lang_str(LangCustomizeColor2),
102+
lang_str(LangCustomizeColor3),
103+
lang_str(LangUpgradePowerSell),
104+
lang_str(LangUpgradePowerBuy),
105+
lang_str(LangUpgradeSpeedSell),
106+
lang_str(LangUpgradeSpeedBuy),
107+
lang_str(LangUpgradeArmorSell),
108+
lang_str(LangUpgradeArmorBuy),
109+
lang_str(LangUpgradeStunResistanceSell),
110+
lang_str(LangUpgradeStunResistanceBuy),
111+
lang_str(LangTradeHelp),
112+
lang_str(LangTradeNoneAvailable),
113+
lang_str(LangTradeAvailable),
114+
lang_str(LangUpgradeQuitSell),
115+
lang_str(LangUpgradeQuitBuy),
116+
// strings new in OpenOMF
117+
lang_str(LangLanguage),
118+
119+
Lang_Count,
120+
};
121+
122+
#undef lang_str
123+
#undef lang_str_range
124+
34125
#endif // LANGUAGES_H

0 commit comments

Comments
 (0)