SingleplayerSettings.cpp 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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. // SingleplayerSettings.cpp: implementation file
  17. //
  18. #include "stdafx.h"
  19. #include "finalsun.h"
  20. #include "SingleplayerSettings.h"
  21. #include "mapdata.h"
  22. #include "variables.h"
  23. #include "functions.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // property page CSingleplayerSettings
  31. IMPLEMENT_DYNCREATE(CSingleplayerSettings, CDialog)
  32. CSingleplayerSettings::CSingleplayerSettings() : CDialog(IDD)
  33. {
  34. //{{AFX_DATA_INIT(CSingleplayerSettings)
  35. //}}AFX_DATA_INIT
  36. }
  37. CSingleplayerSettings::~CSingleplayerSettings()
  38. {
  39. }
  40. void CSingleplayerSettings::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CDialog::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CSingleplayerSettings)
  44. DDX_Control(pDX, IDC_TIMERINHERIT, m_TimerInherit);
  45. DDX_Control(pDX, IDC_STARTINGDROPSHIPS, m_StartingDropships);
  46. DDX_Control(pDX, IDC_FILLSILOS, m_FillSilos);
  47. DDX_Control(pDX, IDC_CARRYOVERMONEY, m_CarryOverMoney);
  48. DDX_Control(pDX, IDC_WIN, m_Win);
  49. DDX_Control(pDX, IDC_PREMAPSELECT, m_PreMapSelect);
  50. DDX_Control(pDX, IDC_POSTSCORE, m_PostScore);
  51. DDX_Control(pDX, IDC_LOSE, m_Lose);
  52. DDX_Control(pDX, IDC_INTRO, m_Intro);
  53. DDX_Control(pDX, IDC_BRIEF, m_Brief);
  54. DDX_Control(pDX, IDC_ACTION, m_Action);
  55. //}}AFX_DATA_MAP
  56. }
  57. BEGIN_MESSAGE_MAP(CSingleplayerSettings, CDialog)
  58. //{{AFX_MSG_MAP(CSingleplayerSettings)
  59. ON_CBN_EDITCHANGE(IDC_INTRO, OnEditchangeIntro)
  60. ON_CBN_EDITCHANGE(IDC_BRIEF, OnEditchangeBrief)
  61. ON_CBN_EDITCHANGE(IDC_WIN, OnEditchangeWin)
  62. ON_CBN_EDITCHANGE(IDC_LOSE, OnEditchangeLose)
  63. ON_CBN_EDITCHANGE(IDC_ACTION, OnEditchangeAction)
  64. ON_CBN_EDITCHANGE(IDC_POSTSCORE, OnEditchangePostscore)
  65. ON_CBN_EDITCHANGE(IDC_PREMAPSELECT, OnEditchangePremapselect)
  66. ON_CBN_EDITCHANGE(IDC_STARTINGDROPSHIPS, OnEditchangeStartingdropships)
  67. ON_EN_CHANGE(IDC_CARRYOVERMONEY, OnChangeCarryovermoney)
  68. ON_CBN_EDITCHANGE(IDC_TIMERINHERIT, OnEditchangeTimerinherit)
  69. ON_CBN_EDITCHANGE(IDC_FILLSILOS, OnEditchangeFillsilos)
  70. //}}AFX_MSG_MAP
  71. END_MESSAGE_MAP()
  72. /////////////////////////////////////////////////////////////////////////////
  73. // message handlers
  74. void CSingleplayerSettings::UpdateDialog()
  75. {
  76. CIniFile& ini=Map->GetIniFile();
  77. CIniFileSection& sec=ini.sections["Basic"];
  78. if(sec.values.find("Intro")!=sec.values.end())
  79. m_Intro.SetWindowText(sec.values["Intro"]);
  80. if(sec.values.find("Brief")!=sec.values.end())
  81. m_Brief.SetWindowText(sec.values["Brief"]);
  82. if(sec.values.find("Win")!=sec.values.end())
  83. m_Win.SetWindowText(sec.values["Win"]);
  84. if(sec.values.find("Lose")!=sec.values.end())
  85. m_Lose.SetWindowText(sec.values["Lose"]);
  86. if(sec.values.find("Action")!=sec.values.end())
  87. m_Action.SetWindowText(sec.values["Action"]);
  88. if(sec.values.find("PostScore")!=sec.values.end())
  89. m_PostScore.SetWindowText(sec.values["PostScore"]);
  90. if(sec.values.find("PreMapSelect")!=sec.values.end())
  91. m_PreMapSelect.SetWindowText(sec.values["PreMapSelect"]);
  92. if(sec.values.find("StartingDropships")!=sec.values.end())
  93. m_StartingDropships.SetWindowText(sec.values["StartingDropships"]);
  94. if(sec.values.find("CarryOverMoney")!=sec.values.end())
  95. m_CarryOverMoney.SetWindowText(sec.values["CarryOverMoney"]);
  96. if(sec.values.find("TimerInherit")!=sec.values.end())
  97. m_TimerInherit.SetWindowText(sec.values["TimerInherit"]);
  98. if(sec.values.find("FillSilos")!=sec.values.end())
  99. m_FillSilos.SetWindowText(sec.values["FillSilos"]);
  100. ListMovies(m_Intro, TRUE);
  101. ListMovies(m_Brief, TRUE);
  102. ListMovies(m_Win, TRUE);
  103. ListMovies(m_Lose, TRUE);
  104. ListMovies(m_Action, TRUE);
  105. ListMovies(m_PostScore, TRUE);
  106. ListMovies(m_PreMapSelect, TRUE);
  107. UpdateStrings();
  108. }
  109. void CSingleplayerSettings::OnEditchangeIntro()
  110. {
  111. CIniFile& ini=Map->GetIniFile();
  112. ini.sections["Basic"].values["Intro"]=GetText(&m_Intro);
  113. }
  114. void CSingleplayerSettings::OnEditchangeBrief()
  115. {
  116. CIniFile& ini=Map->GetIniFile();
  117. ini.sections["Basic"].values["Brief"]=GetText(&m_Brief);
  118. }
  119. void CSingleplayerSettings::OnEditchangeWin()
  120. {
  121. CIniFile& ini=Map->GetIniFile();
  122. ini.sections["Basic"].values["Win"]=GetText(&m_Win);
  123. }
  124. void CSingleplayerSettings::OnEditchangeLose()
  125. {
  126. CIniFile& ini=Map->GetIniFile();
  127. ini.sections["Basic"].values["Lose"]=GetText(&m_Lose);
  128. }
  129. void CSingleplayerSettings::OnEditchangeAction()
  130. {
  131. CIniFile& ini=Map->GetIniFile();
  132. ini.sections["Basic"].values["Action"]=GetText(&m_Action);
  133. }
  134. void CSingleplayerSettings::OnEditchangePostscore()
  135. {
  136. CIniFile& ini=Map->GetIniFile();
  137. ini.sections["Basic"].values["PostScore"]=GetText(&m_PostScore);
  138. }
  139. void CSingleplayerSettings::OnEditchangePremapselect()
  140. {
  141. CIniFile& ini=Map->GetIniFile();
  142. ini.sections["Basic"].values["PreMapSelect"]=GetText(&m_PreMapSelect);
  143. }
  144. void CSingleplayerSettings::OnEditchangeStartingdropships()
  145. {
  146. CIniFile& ini=Map->GetIniFile();
  147. ini.sections["Basic"].values["StartingDropships"]=GetText(&m_StartingDropships);
  148. }
  149. void CSingleplayerSettings::OnChangeCarryovermoney()
  150. {
  151. CIniFile& ini=Map->GetIniFile();
  152. ini.sections["Basic"].values["CarryOverMoney"]=GetText(&m_CarryOverMoney);
  153. }
  154. void CSingleplayerSettings::OnEditchangeTimerinherit()
  155. {
  156. CIniFile& ini=Map->GetIniFile();
  157. ini.sections["Basic"].values["TimerInherit"]=GetText(&m_TimerInherit);
  158. }
  159. void CSingleplayerSettings::OnEditchangeFillsilos()
  160. {
  161. CIniFile& ini=Map->GetIniFile();
  162. ini.sections["Basic"].values["FillSilos"]=GetText(&m_FillSilos);
  163. }
  164. void CSingleplayerSettings::UpdateStrings()
  165. {
  166. SetDlgItemText(IDC_LSTARTINGDROPSHIPS, GetLanguageStringACP("SingleplayerStartingDropships"));
  167. SetDlgItemText(IDC_LCARRYOVERMONEY, GetLanguageStringACP("SingleplayerCarryOverMoney"));
  168. SetDlgItemText(IDC_LINHERITTIMER, GetLanguageStringACP("SingleplayerTimerInherit"));
  169. SetDlgItemText(IDC_LFILLSILOS, GetLanguageStringACP("SingleplayerFillSilos"));
  170. SetDlgItemText(IDC_LMOVIES, GetLanguageStringACP("SingleplayerMovies"));
  171. SetDlgItemText(IDC_LINTRO, GetLanguageStringACP("SingleplayerIntro"));
  172. SetDlgItemText(IDC_LBRIEF, GetLanguageStringACP("SingleplayerBrief"));
  173. SetDlgItemText(IDC_LWIN, GetLanguageStringACP("SingleplayerWin"));
  174. SetDlgItemText(IDC_LLOSE, GetLanguageStringACP("SingleplayerLose"));
  175. SetDlgItemText(IDC_LACTION, GetLanguageStringACP("SingleplayerAction"));
  176. SetDlgItemText(IDC_LPOSTSCORE, GetLanguageStringACP("SingleplayerPostScore"));
  177. SetDlgItemText(IDC_LPREMAPSELECT, GetLanguageStringACP("SingleplayerPreMapSelect"));
  178. SetDlgItemText(IDC_DESC, GetLanguageStringACP("SingleplayerDesc"));
  179. SetWindowText(TranslateStringACP("Singleplayer settings"));
  180. #ifdef RA2_MODE
  181. GetDlgItem(IDC_LSTARTINGDROPSHIPS)->ShowWindow(SW_HIDE);
  182. GetDlgItem(IDC_STARTINGDROPSHIPS)->ShowWindow(SW_HIDE);
  183. #endif
  184. }
  185. void CSingleplayerSettings::PostNcDestroy()
  186. {
  187. // do not call CDialog::PostNcDestroy();
  188. // CDialog::PostNcDestroy();
  189. }