Basic.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. /*
  2. FinalSun/FinalAlert 2 Mission Editor
  3. Copyright (C) 1999-2024 Electronic Arts, Inc.
  4. Authored by Matthias Wagner
  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. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program. If not, see <https://www.gnu.org/licenses/>.
  15. */
  16. // Basic.cpp: Implementierungsdatei
  17. //
  18. #include "stdafx.h"
  19. #include "FinalSun.h"
  20. #include "Basic.h"
  21. #include "resource.h"
  22. #include "mapdata.h"
  23. #include "variables.h"
  24. #include "functions.h"
  25. #ifdef _DEBUG
  26. #define new DEBUG_NEW
  27. #undef THIS_FILE
  28. static char THIS_FILE[] = __FILE__;
  29. #endif
  30. /////////////////////////////////////////////////////////////////////////////
  31. // Eigenschaftenseite CBasic
  32. IMPLEMENT_DYNCREATE(CBasic, CPropertyPage)
  33. CBasic::CBasic() : CDialog(CBasic::IDD)
  34. {
  35. //{{AFX_DATA_INIT(CBasic)
  36. //}}AFX_DATA_INIT
  37. }
  38. CBasic::~CBasic()
  39. {
  40. }
  41. void CBasic::DoDataExchange(CDataExchange* pDX)
  42. {
  43. CDialog::DoDataExchange(pDX);
  44. //{{AFX_DATA_MAP(CBasic)
  45. DDX_Control(pDX, IDC_REQUIREDADDON, m_RequiredAddOn);
  46. DDX_Control(pDX, IDC_VEINGROWTHENABLED, m_VeinGrowthEnabled);
  47. DDX_Control(pDX, IDC_TRUCKCRATE, m_TruckCrate);
  48. DDX_Control(pDX, IDC_TRAINCRATE, m_TrainCrate);
  49. DDX_Control(pDX, IDC_TIBERIUMGROWTHENABLED, m_TiberiumGrowthEnabled);
  50. DDX_Control(pDX, IDC_TIBERIUMDEATHTOVISCEROID, m_TiberiumDeathToVisceroid);
  51. DDX_Control(pDX, IDC_SKIPSCORE, m_SkipScore);
  52. DDX_Control(pDX, IDC_SKIPMAPSELECT, m_SkipMapSelect);
  53. DDX_Control(pDX, IDC_ONETIMEONLY, m_OneTimeOnly);
  54. DDX_Control(pDX, IDC_OFFICIAL, m_Official);
  55. DDX_Control(pDX, IDC_NEXTSCENARIO, m_NextScenario);
  56. DDX_Control(pDX, IDC_PERCENT, m_Percent);
  57. DDX_Control(pDX, IDC_NEWINIFORMAT, m_NewINIFormat);
  58. DDX_Control(pDX, IDC_NAME, m_Name);
  59. DDX_Control(pDX, IDC_MULTIPLAYERONLY, m_MultiplayerOnly);
  60. DDX_Control(pDX, IDC_INITTIME, m_InitTime);
  61. DDX_Control(pDX, IDC_IGNOREGLOBALAITRIGGERS, m_IgnoreGlobalAITriggers);
  62. DDX_Control(pDX, IDC_ICEGROWTHENABLED, m_IceGrowthEnabled);
  63. DDX_Control(pDX, IDC_FREERADAR, m_FreeRadar);
  64. DDX_Control(pDX, IDC_ENDOFGAME, m_EndOfGame);
  65. DDX_Control(pDX, IDC_CARRYOVERCAP, m_CarryOverCap);
  66. DDX_Control(pDX, IDC_ALTNEXTSCENARIO, m_AltNextScenario);
  67. //}}AFX_DATA_MAP
  68. }
  69. BEGIN_MESSAGE_MAP(CBasic, CDialog)
  70. //{{AFX_MSG_MAP(CBasic)
  71. ON_EN_CHANGE(IDC_NAME, OnChangeName)
  72. ON_CBN_EDITCHANGE(IDC_NEXTSCENARIO, OnEditchangeNextscenario)
  73. ON_CBN_EDITCHANGE(IDC_ALTNEXTSCENARIO, OnEditchangeAltnextscenario)
  74. ON_EN_CHANGE(IDC_NEWINIFORMAT, OnChangeNewiniformat)
  75. ON_EN_CHANGE(IDC_CARRYOVERCAP, OnChangeCarryovercap)
  76. ON_CBN_EDITCHANGE(IDC_ENDOFGAME, OnEditchangeEndofgame)
  77. ON_CBN_EDITCHANGE(IDC_SKIPSCORE, OnEditchangeSkipscore)
  78. ON_CBN_EDITCHANGE(IDC_ONETIMEONLY, OnEditchangeOnetimeonly)
  79. ON_CBN_EDITCHANGE(IDC_SKIPMAPSELECT, OnEditchangeSkipmapselect)
  80. ON_CBN_EDITCHANGE(IDC_OFFICIAL, OnEditchangeOfficial)
  81. ON_CBN_EDITCHANGE(IDC_IGNOREGLOBALAITRIGGERS, OnEditchangeIgnoreglobalaitriggers)
  82. ON_CBN_EDITCHANGE(IDC_TRUCKCRATE, OnEditchangeTruckcrate)
  83. ON_CBN_EDITCHANGE(IDC_TRAINCRATE, OnEditchangeTraincrate)
  84. ON_EN_CHANGE(IDC_PERCENT, OnChangePercent)
  85. ON_EN_CHANGE(IDC_MULTIPLAYERONLY, OnChangeMultiplayeronly)
  86. ON_CBN_EDITCHANGE(IDC_TIBERIUMGROWTHENABLED, OnEditchangeTiberiumgrowthenabled)
  87. ON_CBN_EDITCHANGE(IDC_VEINGROWTHENABLED, OnEditchangeVeingrowthenabled)
  88. ON_CBN_EDITCHANGE(IDC_ICEGROWTHENABLED, OnEditchangeIcegrowthenabled)
  89. ON_CBN_EDITCHANGE(IDC_TIBERIUMDEATHTOVISCEROID, OnEditchangeTiberiumdeathtovisceroid)
  90. ON_CBN_EDITCHANGE(IDC_FREERADAR, OnEditchangeFreeradar)
  91. ON_EN_CHANGE(IDC_INITTIME, OnChangeInittime)
  92. ON_CBN_EDITCHANGE(IDC_REQUIREDADDON, OnEditchangeRequiredaddon)
  93. //}}AFX_MSG_MAP
  94. END_MESSAGE_MAP()
  95. /////////////////////////////////////////////////////////////////////////////
  96. // Behandlungsroutinen für Nachrichten CBasic
  97. //DEL void CBasic::OnOK()
  98. //DEL {
  99. //DEL // TODO: Zusätzliche Prüfung hier einfügen
  100. //DEL
  101. //DEL CPropertyPage::OnOK();
  102. //DEL }
  103. void CBasic::UpdateDialog()
  104. {
  105. CIniFile& ini=Map->GetIniFile();
  106. m_AltNextScenario.SetWindowText(ini.sections["Basic"].values["AltNextScenario"]);
  107. m_Name.SetWindowText(ini.sections["Basic"].values["Name"]);
  108. m_CarryOverCap.SetWindowText(ini.sections["Basic"].values["CarryOverCap"]);
  109. m_EndOfGame.SetWindowText(ini.sections["Basic"].values["EndOfGame"]);
  110. m_FreeRadar.SetWindowText(ini.sections["Basic"].values["FreeRadar"]);
  111. m_IceGrowthEnabled.SetWindowText(ini.sections["Basic"].values["IceGrowthEnabled"]);
  112. m_IgnoreGlobalAITriggers.SetWindowText(ini.sections["Basic"].values["IgnoreGlobalAITriggers"]);
  113. m_InitTime.SetWindowText(ini.sections["Basic"].values["InitTime"]);
  114. m_MultiplayerOnly.SetWindowText(ini.sections["Basic"].values["MultiplayerOnly"]);
  115. m_NewINIFormat.SetWindowText(ini.sections["Basic"].values["NewINIFormat"]);
  116. m_NextScenario.SetWindowText(ini.sections["Basic"].values["NextScenario"]);
  117. m_Official.SetWindowText(ini.sections["Basic"].values["Official"]);
  118. m_OneTimeOnly.SetWindowText(ini.sections["Basic"].values["OneTimeOnly"]);
  119. m_Percent.SetWindowText(ini.sections["Basic"].values["Percent"]);
  120. m_SkipMapSelect.SetWindowText(ini.sections["Basic"].values["SkipMapSelect"]);
  121. m_SkipScore.SetWindowText(ini.sections["Basic"].values["SkipScore"]);
  122. m_TiberiumDeathToVisceroid.SetWindowText(ini.sections["Basic"].values["TiberiumDeathToVisceroid"]);
  123. m_TiberiumGrowthEnabled.SetWindowText(ini.sections["Basic"].values["TiberiumGrowthEnabled"]);
  124. m_TrainCrate.SetWindowText(ini.sections["Basic"].values["TrainCrate"]);
  125. m_TruckCrate.SetWindowText(ini.sections["Basic"].values["TruckCrate"]);
  126. m_VeinGrowthEnabled.SetWindowText(ini.sections["Basic"].values["VeinGrowthEnabled"]);
  127. if(ini.sections["Basic"].values.find("RequiredAddOn")!=ini.sections["Basic"].values.end())
  128. {
  129. m_RequiredAddOn.SetWindowText(ini.sections["Basic"].values["RequiredAddOn"]);
  130. }
  131. else
  132. m_RequiredAddOn.SetWindowText("0");
  133. }
  134. void CBasic::OnChangeName()
  135. {
  136. CIniFile& ini=Map->GetIniFile();
  137. ini.sections["Basic"].values["Name"]=GetText(&m_Name);
  138. }
  139. void CBasic::UpdateData()
  140. {
  141. // MessageBox("This function ( UpdateData() ) should not be called here... please report to the author.");
  142. errstream << "CBasic::UpdateData() called - should not be called" << endl;
  143. errstream.flush();
  144. }
  145. void CBasic::OnEditchangeNextscenario()
  146. {
  147. CIniFile& ini=Map->GetIniFile();
  148. ini.sections["Basic"].values["NextScenario"]=GetText(&m_NextScenario);
  149. }
  150. void CBasic::OnEditchangeAltnextscenario()
  151. {
  152. CIniFile& ini=Map->GetIniFile();
  153. ini.sections["Basic"].values["AltNextScenario"]=GetText(&m_AltNextScenario);
  154. }
  155. void CBasic::OnChangeNewiniformat()
  156. {
  157. CIniFile& ini=Map->GetIniFile();
  158. ini.sections["Basic"].values["NewINIFormat"]=GetText(&m_NewINIFormat);
  159. }
  160. void CBasic::OnChangeCarryovercap()
  161. {
  162. CIniFile& ini=Map->GetIniFile();
  163. ini.sections["Basic"].values["CarryOverCap"]=GetText(&m_CarryOverCap);
  164. }
  165. void CBasic::OnEditchangeEndofgame()
  166. {
  167. CIniFile& ini=Map->GetIniFile();
  168. ini.sections["Basic"].values["EndOfGame"]=GetText(&m_EndOfGame);
  169. }
  170. void CBasic::OnEditchangeSkipscore()
  171. {
  172. CIniFile& ini=Map->GetIniFile();
  173. ini.sections["Basic"].values["SkipScore"]=GetText(&m_SkipScore);
  174. }
  175. void CBasic::OnEditchangeOnetimeonly()
  176. {
  177. CIniFile& ini=Map->GetIniFile();
  178. ini.sections["Basic"].values["OneTimeOnly"]=GetText(&m_OneTimeOnly);
  179. }
  180. void CBasic::OnEditchangeSkipmapselect()
  181. {
  182. CIniFile& ini=Map->GetIniFile();
  183. ini.sections["Basic"].values["SkipMapSelect"]=GetText(&m_SkipMapSelect);
  184. }
  185. void CBasic::OnEditchangeOfficial()
  186. {
  187. CIniFile& ini=Map->GetIniFile();
  188. ini.sections["Basic"].values["Official"]=GetText(&m_Official);
  189. }
  190. void CBasic::OnEditchangeIgnoreglobalaitriggers()
  191. {
  192. CIniFile& ini=Map->GetIniFile();
  193. ini.sections["Basic"].values["IgnoreGlobalAITriggers"]=GetText(&m_IgnoreGlobalAITriggers);
  194. }
  195. void CBasic::OnEditchangeTruckcrate()
  196. {
  197. CIniFile& ini=Map->GetIniFile();
  198. ini.sections["Basic"].values["TruckCrate"]=GetText(&m_TruckCrate);
  199. }
  200. void CBasic::OnEditchangeTraincrate()
  201. {
  202. CIniFile& ini=Map->GetIniFile();
  203. ini.sections["Basic"].values["TrainCrate"]=GetText(&m_TrainCrate);
  204. }
  205. void CBasic::OnChangePercent()
  206. {
  207. CIniFile& ini=Map->GetIniFile();
  208. ini.sections["Basic"].values["Percent"]=GetText(&m_Percent);
  209. }
  210. void CBasic::OnChangeMultiplayeronly()
  211. {
  212. CIniFile& ini=Map->GetIniFile();
  213. ini.sections["Basic"].values["MultiplayerOnly"]=GetText(&m_MultiplayerOnly);
  214. }
  215. void CBasic::OnEditchangeTiberiumgrowthenabled()
  216. {
  217. CIniFile& ini=Map->GetIniFile();
  218. ini.sections["Basic"].values["TiberiumGrowthEnabled"]=GetText(&m_TiberiumGrowthEnabled);
  219. }
  220. void CBasic::OnEditchangeVeingrowthenabled()
  221. {
  222. CIniFile& ini=Map->GetIniFile();
  223. ini.sections["Basic"].values["VeinGrowthEnabled"]=GetText(&m_VeinGrowthEnabled);
  224. }
  225. void CBasic::OnEditchangeIcegrowthenabled()
  226. {
  227. CIniFile& ini=Map->GetIniFile();
  228. ini.sections["Basic"].values["IceGrowthEnabled"]=GetText(&m_IceGrowthEnabled);
  229. }
  230. void CBasic::OnEditchangeTiberiumdeathtovisceroid()
  231. {
  232. CIniFile& ini=Map->GetIniFile();
  233. ini.sections["Basic"].values["TiberiumDeathToVisceroid"]=GetText(&m_TiberiumDeathToVisceroid);
  234. }
  235. void CBasic::OnEditchangeFreeradar()
  236. {
  237. CIniFile& ini=Map->GetIniFile();
  238. ini.sections["Basic"].values["FreeRadar"]=GetText(&m_FreeRadar);
  239. }
  240. void CBasic::OnChangeInittime()
  241. {
  242. CIniFile& ini=Map->GetIniFile();
  243. ini.sections["Basic"].values["InitTime"]=GetText(&m_InitTime);
  244. }
  245. void CBasic::UpdateStrings()
  246. {
  247. SetDlgItemText(IDC_LDESC, GetLanguageStringACP("BasicDesc"));
  248. SetDlgItemText(IDC_LNAME, GetLanguageStringACP("BasicName"));
  249. SetDlgItemText(IDC_LNEXTSCENARIO, GetLanguageStringACP("BasicNextScenario"));
  250. SetDlgItemText(IDC_LALTNEXTSCENARIO, GetLanguageStringACP("BasicAltNextScenario"));
  251. SetDlgItemText(IDC_LNEWINIFORMAT, GetLanguageStringACP("BasicNewIniFormat"));
  252. SetDlgItemText(IDC_LCARRYOVERCAP, GetLanguageStringACP("BasicCarryOverCap"));
  253. SetDlgItemText(IDC_LENDOFGAME, GetLanguageStringACP("BasicEndOfGame"));
  254. SetDlgItemText(IDC_LSKIPSCORE, GetLanguageStringACP("BasicSkipScore"));
  255. SetDlgItemText(IDC_LONETIMEONLY, GetLanguageStringACP("BasicOneTimeOnly"));
  256. SetDlgItemText(IDC_LSKIPMAPSELECT, GetLanguageStringACP("BasicSkipMapSelect"));
  257. SetDlgItemText(IDC_LOFFICIAL, GetLanguageStringACP("BasicOfficial"));
  258. SetDlgItemText(IDC_LIGNOREGLOBALAITRIGGERS, GetLanguageStringACP("BasicIgnoreGlobalAITriggers"));
  259. SetDlgItemText(IDC_LTRUCKCRATE, GetLanguageStringACP("BasicTruckCrate"));
  260. SetDlgItemText(IDC_LTRAINCRATE, GetLanguageStringACP("BasicTrainCrate"));
  261. SetDlgItemText(IDC_LPERCENT, GetLanguageStringACP("BasicPercent"));
  262. SetDlgItemText(IDC_LMULTIPLAYERONLY, GetLanguageStringACP("BasicMultiplayerOnly"));
  263. SetDlgItemText(IDC_LTIBERIUMGROWTHENABLED, GetLanguageStringACP("BasicTiberiumGrowthEnabled"));
  264. SetDlgItemText(IDC_LVEINGROWTHENABLED, GetLanguageStringACP("BasicVeinGrowthEnabled"));
  265. SetDlgItemText(IDC_LICEGROWTHENABLED, GetLanguageStringACP("BasicIceGrowthEnabled"));
  266. SetDlgItemText(IDC_LTIBERIUMDEATHTOVISCEROID, GetLanguageStringACP("BasicTiberiumDeathToVisceroid"));
  267. SetDlgItemText(IDC_LFREERADAR, GetLanguageStringACP("BasicFreeRadar"));
  268. SetDlgItemText(IDC_LINITIME, GetLanguageStringACP("BasicInitTime"));
  269. SetDlgItemText(IDC_LADDONNEEDED, GetLanguageStringACP("BasicAddOnNeeded"));
  270. #ifdef RA2_MODE
  271. GetDlgItem(IDC_LVEINGROWTHENABLED)->ShowWindow(SW_HIDE);
  272. GetDlgItem(IDC_VEINGROWTHENABLED)->ShowWindow(SW_HIDE);
  273. GetDlgItem(IDC_LTRAINCRATE)->ShowWindow(SW_HIDE);
  274. GetDlgItem(IDC_TRAINCRATE)->ShowWindow(SW_HIDE);
  275. GetDlgItem(IDC_ICEGROWTHENABLED)->ShowWindow(SW_HIDE);
  276. GetDlgItem(IDC_LICEGROWTHENABLED)->ShowWindow(SW_HIDE);
  277. GetDlgItem(IDC_TIBERIUMDEATHTOVISCEROID)->ShowWindow(SW_HIDE);
  278. GetDlgItem(IDC_LTIBERIUMDEATHTOVISCEROID)->ShowWindow(SW_HIDE);
  279. #endif
  280. SetWindowText(TranslateStringACP("Basic"));
  281. }
  282. void CBasic::OnEditchangeRequiredaddon()
  283. {
  284. CIniFile& ini=Map->GetIniFile();
  285. ini.sections["Basic"].values["RequiredAddOn"]=GetText(&m_RequiredAddOn);
  286. if(ini.sections["Basic"].values["RequiredAddOn"]=="0") ini.sections["Basic"].values.erase("RequiredAddOn");
  287. }
  288. void CBasic::PostNcDestroy()
  289. {
  290. // do not call PostNcDestroy as this is a member of FinalSunDlg
  291. //CPropertyPage::PostNcDestroy();
  292. }