UiOptions.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:18k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // -------------------------------------------------------------------------
  2. // 文件名 : UiOptions.cpp
  3. // 创建者 : 吕桂华
  4. // 创建时间 : 2002-9-11 15:05:15
  5. // 功能描述 :
  6. // -------------------------------------------------------------------------
  7. #include "KWin32.h"
  8. #include "KIniFile.h"
  9. #include "../Elem/WndMessage.h"
  10. #include "../Elem/wnds.h"
  11. #include "uioptions.h"
  12. #include "UiInit.h"
  13. #include "../ShortcutKey.h"
  14. #include "../../../core/src/coreshell.h"
  15. #include "../../../core/src/GameDataDef.h"
  16. #include "../UiBase.h"
  17. #include "../Elem/PopupMenu.h"
  18. #include "../UiSoundSetting.h"
  19. #include "../UiChatPhrase.h"
  20. extern iCoreShell* g_pCoreShell;
  21. #define SCHEME_INI_OPTION "选项.ini"
  22. #define OPTIONS_SAVE_SECTION "Options"
  23. #define DEFAULT_SETTING_SET "\Ui\autoexec.lua"
  24. #define LEGEND_SETTING_SET "\Ui\船鳍配置.lua"
  25. const char* ls_ToggleOptionName[OPTION_INDEX_COUNT] = 
  26. {
  27. "DynamicLight",
  28. "Weather",
  29. "Perspective",
  30. };
  31. KUiOptions* KUiOptions::m_pSelf = NULL;
  32. extern int g_bRepresent3;
  33. extern int g_bScreen;
  34. KUiOptions::KUiOptions()
  35. {
  36. m_pReturn = NULL;
  37. m_nToggleItemCount = 0;
  38. m_pSkinMenu = NULL;
  39. m_nBrightness = 50;
  40. m_nSoundValue = 100;
  41. m_nMusicValue = 100;
  42. m_nShortcutSet = 0;
  43. m_nFirstControlableIndex = 0;
  44. m_nToggleBtnValidCount = 0;
  45. m_nToggleItemCount = 0;
  46. m_nStatusEnableFrame = m_nStatusDisableFrame = m_nStatusInvalidFrame;
  47. for (int i = 0; i < OPTION_INDEX_COUNT; i++)
  48. {
  49. m_ToggleItemList[i].szName[0] = 0;
  50. }
  51. m_ToggleItemList[OPTION_I_DYNALIGHT].bInvalid = !g_bRepresent3;
  52. m_ToggleItemList[OPTION_I_WEATHER].bInvalid = false;
  53. m_ToggleItemList[OPTION_I_PERSPECTIVE].bInvalid = !g_bRepresent3;
  54. }
  55. void KUiOptions::CancelMenu()
  56. {
  57. if (m_pSkinMenu)
  58. {
  59. KPopupMenu::Cancel();
  60. free(m_pSkinMenu);
  61. m_pSkinMenu = NULL;
  62. }
  63. }
  64. //--------------------------------------------------------------------------
  65. // 功能:如果窗口正被显示,则返回实例指针
  66. //--------------------------------------------------------------------------
  67. KUiOptions* KUiOptions::GetIfVisible()
  68. {
  69. if (m_pSelf && m_pSelf->IsVisible())
  70. return m_pSelf;
  71. return NULL;
  72. }
  73. //--------------------------------------------------------------------------
  74. // 功能:打开窗口,返回唯一的一个类对象实例
  75. //--------------------------------------------------------------------------
  76. KUiOptions* KUiOptions::OpenWindow(KWndWindow* pReturn)
  77. {
  78. if (m_pSelf == NULL)
  79. {
  80. m_pSelf = new KUiOptions;
  81. if (m_pSelf)
  82. m_pSelf->Initialize();
  83. }
  84. if (m_pSelf)
  85. {
  86. m_pSelf->m_pReturn = pReturn;
  87. LoadSetting(true, false);
  88. UiSoundPlay(UI_SI_POPUP_OUTGAME_WND);
  89. m_pSelf->Show();
  90. m_pSelf->BringToTop();
  91. }
  92. return m_pSelf;
  93. }
  94. //--------------------------------------------------------------------------
  95. // 功能:关闭窗口
  96. //--------------------------------------------------------------------------
  97. void KUiOptions::CloseWindow()
  98. {
  99. if (m_pSelf)
  100. {
  101. m_pSelf->CancelMenu();
  102. m_pSelf->StoreSetting();
  103. if (m_pSelf->m_pReturn)
  104. m_pSelf->m_pReturn->Show();
  105. m_pSelf->Destroy();
  106. m_pSelf = NULL;
  107. }
  108. }
  109. // -------------------------------------------------------------------------
  110. // 功能 : 初始化
  111. // -------------------------------------------------------------------------
  112. void KUiOptions::Initialize()
  113. {
  114. AddChild(&m_CloseBtn);
  115. //AddChild(&m_SkinBtn);
  116. AddChild(&m_BrightnessScroll);
  117. AddChild(&m_BGMValue);
  118. AddChild(&m_SoundValue);
  119. AddChild(&m_ShortcutSetView);
  120. AddChild(&m_Scroll);
  121. for (int i = 0; i < MAX_TOGGLE_BTN_COUNT; i++)
  122. {
  123. AddChild(&m_ToggleBtn[i]);
  124. AddChild(&m_StatusImage[i]);
  125. }
  126. char Scheme[256];
  127. g_UiBase.GetCurSchemePath(Scheme, 256);
  128. m_pSelf->LoadScheme(Scheme);
  129. // 注册本窗口
  130. Wnd_AddWindow(this);
  131. }
  132. // -------------------------------------------------------------------------
  133. // 功能 : 载入界面方案
  134. // -------------------------------------------------------------------------
  135. void KUiOptions::LoadScheme(const char* pScheme)
  136. {
  137. char Buff[128];
  138. KIniFile Ini;
  139. sprintf(Buff, "%s\%s", pScheme, SCHEME_INI_OPTION);
  140. if (m_pSelf && Ini.Load(Buff))
  141. {
  142. m_pSelf->LoadScheme(&Ini);
  143. }
  144. }
  145. //载入界面方案
  146. void KUiOptions::LoadScheme(KIniFile* pIni)
  147. {
  148. // assert(pIni);
  149. Init(pIni, "Main"); // 窗口背景数据
  150. m_CloseBtn.Init(pIni, "CloseBtn");
  151. m_ShortcutKeyBtn.Init(pIni, "ShortcutKeyBtn");
  152. // m_SkinBtn.Init(pIni, "SkinBtn");
  153. m_BrightnessScroll.Init(pIni, "Brightness");
  154. m_BGMValue.Init(pIni, "Music");
  155. m_SoundValue.Init(pIni, "Sound");
  156. m_ShortcutSetView.Init(pIni, "ShortcutSet");
  157. m_Scroll.Init(pIni, "Scroll");
  158. m_StatusImage[0].Init(pIni, "ToggleStatus");
  159. pIni->GetInteger("ToggleStatus", "NotCheckFrame", 0, &m_nStatusDisableFrame);
  160. pIni->GetInteger("ToggleStatus", "CheckFrame",    0, &m_nStatusEnableFrame);
  161. pIni->GetInteger("ToggleStatus", "DisableFrame",  0, &m_nStatusInvalidFrame);
  162. int nIntervalH, nIntervalV, nCountPerLine;
  163. m_ToggleBtn[0].Init(pIni, "ToggleBtn");
  164. pIni->GetInteger2("ToggleBtn", "Interval", &nIntervalH, &nIntervalV);
  165. pIni->GetInteger("ToggleBtn", "CountPerLine", 1, &nCountPerLine);
  166. int i, nBtnX, nBtnY, nImgX, nImgY;
  167. m_ToggleBtn[0].GetPosition(&nBtnX, &nBtnY);
  168. m_StatusImage[0].GetPosition(&nImgX, &nImgY);
  169. if (nCountPerLine < 1)
  170. nCountPerLine = 1;
  171. for (i = 1; i < MAX_TOGGLE_BTN_COUNT; i++)
  172. {
  173. int dx = (i % nCountPerLine) * nIntervalH;
  174. int dy = (i / nCountPerLine) * nIntervalV;
  175. m_ToggleBtn[0].Clone(&m_ToggleBtn[i]);
  176. m_ToggleBtn[i].SetPosition(nBtnX + dx, nBtnY + dy);
  177. m_StatusImage[0].Clone(&m_StatusImage[i]);
  178. m_StatusImage[i].SetPosition(nImgX + dx, nImgY + dy);
  179. }
  180. for (i = 0; i < OPTION_INDEX_COUNT; i++)
  181. {
  182. char szKey[16];
  183. pIni->GetString("ToggleOptionsName", itoa(i, szKey, 10), 
  184. "", m_ToggleItemList[i].szName, sizeof(m_ToggleItemList[i].szName));
  185. }
  186. m_nFirstControlableIndex = 0;
  187. m_nToggleBtnValidCount = (OPTION_INDEX_COUNT <= MAX_TOGGLE_BTN_COUNT) ? OPTION_INDEX_COUNT : MAX_TOGGLE_BTN_COUNT;
  188. UpdateAllToggleBtn();
  189. UpdateAllStatusImg();
  190. }
  191. // -------------------------------------------------------------------------
  192. // 功能 : 窗口函数
  193. // -------------------------------------------------------------------------
  194. int  KUiOptions::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
  195. {
  196. int nRet = 0;
  197. switch(uMsg)
  198. {
  199. case WND_N_SCORLLBAR_POS_CHANGED:
  200. OnScrollBarPosChanged((KWndWindow*)uParam, nParam);
  201. break;
  202. case WND_N_BUTTON_CLICK:
  203. if (uParam == (unsigned int)(KWndWindow*)&m_CloseBtn)
  204. CloseWindow();
  205. //else if (uParam == (unsigned int)(KWndWindow*)&m_SkinBtn)
  206. // PopupSkinMenu();
  207. else if (uParam == (unsigned int)(KWndWindow*)&m_ShortcutSetView)
  208. {
  209. int nX, nY, nWidth, nHeight;
  210. m_ShortcutSetView.GetPosition(&nX, &nY);
  211. m_ShortcutSetView.GetSize(&nWidth, &nHeight);
  212. nX += nWidth + m_nAbsoluteLeft;
  213. nY += nHeight + m_nAbsoluteTop;
  214. PopupSeleteSetMenu(nX, nY);
  215. }
  216. else
  217. {
  218. for (int i = 0; i < m_nToggleBtnValidCount; i++)
  219. {
  220. if (uParam == (unsigned int)(KWndWindow*)&m_ToggleBtn[i])
  221. {
  222. ToggleOption(m_nFirstControlableIndex + i);
  223. }
  224. }
  225. }
  226. break;
  227. case WM_KEYDOWN:
  228. if (uParam  == VK_ESCAPE)
  229. CloseWindow();
  230. nRet = true;
  231. break;
  232. case WND_M_MENUITEM_SELECTED:
  233. if (uParam == (unsigned int)(KWndWindow*)this)
  234. {
  235. if (HIWORD(nParam) == 1)
  236. {
  237. if (short(LOWORD(nParam)) >= 0)
  238. {
  239. m_nShortcutSet = LOWORD(nParam);
  240. UpdateSettingSet(LOWORD(nParam), false);
  241. }
  242. KPopupMenu::Cancel();
  243. }
  244. else
  245. {
  246.     CancelMenu();
  247. }
  248. //if (m_pSkinMenu && short(LOWORD(nParam)) >= 0 && LOWORD(nParam) < m_pSkinMenu->nNumItem)
  249. //{
  250. // if (g_UiBase.LoadScheme(m_pSkinMenu->Items[LOWORD(nParam)].szData))
  251. // m_SkinBtn.SetLabel(m_pSkinMenu->Items[LOWORD(nParam)].szData);
  252. //}
  253. }
  254. break;
  255. default:
  256. nRet = KWndWindow::WndProc(uMsg, uParam, nParam);
  257. break;
  258. }
  259. return nRet;
  260. }
  261. void KUiOptions::UpdateSettingSet(int eSet, bool bOnlyUpdateUi)
  262. {
  263. //这部分是根据CheckBox来做的
  264. /* if (eSet < SETTING_DEFAULT || eSet > SETTING_LEGEND)
  265. return;
  266. m_eSettingSet = eSet;
  267. m_IDefault.CheckButton(m_eSettingSet == SETTING_DEFAULT);
  268. // m_IMu.CheckButton(m_eSettingSet== SETTING_MU);
  269. m_ILegend.CheckButton(m_eSettingSet == SETTING_LEGEND);
  270. if (bOnlyUpdateUi == false)
  271. {
  272. KShortcutKeyCentre::ClearScript();
  273. const char* pszFileName;
  274. // if (m_eSettingSet== SETTING_MU)
  275. // pszFileName = MU_SETTING_SET;
  276. if (m_eSettingSet== SETTING_LEGEND)
  277. pszFileName = LEGEND_SETTING_SET;
  278. else
  279. pszFileName = DEFAULT_SETTING_SET;
  280. KShortcutKeyCentre::LoadScript((char*)pszFileName);
  281. }*/
  282. //这部分是按照按钮和弹出式菜单来做的,更新按钮和载入新配置
  283. KIniFile* pSetting = g_UiBase.GetCommConfigFile();
  284. if (pSetting)
  285. {
  286. int nCount;
  287. char szKey[16], szBuff[128];
  288. pSetting->GetInteger("ShortcutSet", "Count", 0, &nCount);
  289. if (eSet < 0 || eSet >= nCount)
  290. eSet = 0;
  291. m_nShortcutSet = eSet;
  292. sprintf(szKey, "%d_Name", eSet);
  293. pSetting->GetString("ShortcutSet", szKey, "", szBuff, sizeof(szBuff));
  294. m_ShortcutSetView.SetLabel(szBuff);
  295. if (bOnlyUpdateUi == false)
  296. {
  297. sprintf(szKey, "%d_File", eSet);
  298. pSetting->GetString("ShortcutSet", szKey, "", szBuff, sizeof(szBuff));
  299. if (szBuff[0])
  300. {
  301. KShortcutKeyCentre::ClearScript();
  302. KShortcutKeyCentre::LoadScript(szBuff);
  303. }
  304. }
  305. g_UiBase.CloseCommConfigFile();
  306. }
  307. }
  308. // -------------------------------------------------------------------------
  309. // 功能 : 弹出选择配置方案的菜单
  310. // -------------------------------------------------------------------------
  311. void KUiOptions::PopupSeleteSetMenu(int nX, int nY)
  312. {
  313. KIniFile* pSetting = g_UiBase.GetCommConfigFile();
  314. if (pSetting)
  315. {
  316. char szKey[16];
  317. int nCount, i;
  318. pSetting->GetInteger("ShortcutSet", "Count", 0, &nCount);
  319. if (nCount > 0)
  320. {
  321.     KPopupMenuData* pMenuData = (KPopupMenuData*)malloc(MENU_DATA_SIZE(nCount));
  322. if (pMenuData)
  323. {
  324. KPopupMenu::InitMenuData(pMenuData, nCount);
  325. for (i = 0;i < nCount;i++)
  326. {
  327. sprintf(szKey, "%d_Name", i);
  328. pSetting->GetString("ShortcutSet", szKey, "", pMenuData->Items[i].szData, sizeof(pMenuData->Items[i].szData));
  329. pMenuData->Items[i].uDataLen = strlen(pMenuData->Items[i].szData);
  330. }
  331. pMenuData->nX = nX;
  332. pMenuData->nY = nY;
  333. KPopupMenu::Popup(pMenuData, (KWndWindow*)this, 1);
  334. }
  335.      }
  336. g_UiBase.CloseCommConfigFile();
  337. }
  338. }
  339. /*void KUiOptions::PopupSkinMenu()
  340. {
  341. if (m_pSkinMenu)
  342. return;
  343. int nCount = g_UiBase.SchemeCount();
  344. if (nCount <= 0)
  345. return;
  346. m_pSkinMenu = (KPopupMenuData*)malloc(MENU_DATA_SIZE(nCount));
  347. if (m_pSkinMenu == NULL)
  348. return;
  349. KPopupMenu::InitMenuData(m_pSkinMenu, nCount);
  350. for (int i = 0; i < nCount; i++)
  351. {
  352. g_UiBase.GetScheme(i, m_pSkinMenu->Items[i].szData, NULL);
  353. m_pSkinMenu->Items[i].uDataLen = strlen(m_pSkinMenu->Items[i].szData);
  354. }
  355. int x, y;
  356. m_SkinBtn.GetPosition(&x, &y);
  357. m_pSkinMenu->nX = x + m_nAbsoluteLeft;
  358. m_pSkinMenu->nY = y + m_nAbsoluteTop;
  359. KPopupMenu::Popup(m_pSkinMenu, (KWndWindow*)this, 0);
  360. }*/
  361. // -------------------------------------------------------------------------
  362. // 功能 : 响应滚动条被拖动
  363. // -------------------------------------------------------------------------
  364. void KUiOptions::OnScrollBarPosChanged(KWndWindow* pWnd, int nPos)
  365. {
  366. if (pWnd == (KWndWindow*)&m_BGMValue)
  367. SetMusicValue(nPos);
  368. else if (pWnd == (KWndWindow*)&m_SoundValue)
  369. SetSoundValue(nPos);
  370. else if(pWnd == (KWndWindow*)&m_BrightnessScroll)
  371. SetBrightness(nPos);
  372. else if (pWnd == (KWndWindow*)&m_Scroll)
  373. {
  374. if (m_nToggleItemCount < m_nToggleItemCount &&
  375. nPos != m_nFirstControlableIndex &&
  376. nPos < m_nToggleItemCount && nPos >= 0)
  377. {
  378. m_nFirstControlableIndex = nPos;
  379. m_nToggleBtnValidCount = m_nToggleItemCount - m_nFirstControlableIndex;
  380. if (m_nToggleBtnValidCount > MAX_TOGGLE_BTN_COUNT)
  381. m_nToggleBtnValidCount = MAX_TOGGLE_BTN_COUNT;
  382. UpdateAllToggleBtn();
  383. UpdateAllStatusImg();
  384. }
  385. }
  386. }
  387. void KUiOptions::UpdateAllToggleBtn()
  388. {
  389. int i = 0;
  390. for (; i < m_nToggleBtnValidCount; i++)
  391. {
  392. m_ToggleBtn[i].Show();
  393. m_StatusImage[i].Show();
  394. int nIndex = m_nFirstControlableIndex + i;
  395. m_ToggleBtn[i].SetLabel(m_ToggleItemList[nIndex].szName);
  396. if (m_ToggleItemList[nIndex].bInvalid == false)
  397. {
  398. m_ToggleBtn[i].Enable(true);
  399. m_ToggleBtn[i].SetLabelColor(m_ToggleItemList[nIndex].bEnable ?
  400. m_uEnableTextColor : m_uDisableTextColor);
  401. }
  402. else
  403. {
  404. m_ToggleBtn[i].Enable(false);
  405. m_ToggleBtn[i].SetLabelColor(m_uInvalidTextColor);
  406. }
  407. }
  408. for (; i < MAX_TOGGLE_BTN_COUNT; i++)
  409. {
  410. m_ToggleBtn[i].Hide();
  411. m_StatusImage[i].Hide();
  412. }
  413. }
  414. void KUiOptions::UpdateAllStatusImg()
  415. {
  416. int nFrame;
  417. for (int i = 0; i < m_nToggleBtnValidCount; i++)
  418. {
  419. if (m_ToggleItemList[m_nFirstControlableIndex + i].bInvalid == false)
  420. {
  421. nFrame = m_ToggleItemList[m_nFirstControlableIndex + i].bEnable ?
  422. m_nStatusEnableFrame : m_nStatusDisableFrame;
  423. }
  424. else
  425. {
  426. nFrame = m_nStatusInvalidFrame;
  427. }
  428. m_StatusImage[i].SetFrame(nFrame);
  429. }
  430. }
  431. // -------------------------------------------------------------------------
  432. // 功能 : 更新数据
  433. // -------------------------------------------------------------------------
  434. void KUiOptions::LoadSetting(bool bReload, bool bUpdateOption)
  435. {
  436. int nBrightness  = 50;
  437. int nSoundValue  = 100;
  438. int nMusicValue  = 100;
  439. int nSettingSet  = 0;
  440. int i;
  441. int bOptionsEnable[OPTION_INDEX_COUNT] =
  442. {
  443. true, true, true
  444. };
  445. if (bReload == false && m_pSelf)
  446. {
  447. nBrightness  = m_pSelf->m_nBrightness;
  448. nSoundValue  = m_pSelf->m_nSoundValue;
  449. nMusicValue  = m_pSelf->m_nMusicValue;
  450. nSettingSet  = m_pSelf->m_nShortcutSet;
  451. for (i = 0; i < OPTION_INDEX_COUNT; i++)
  452. bOptionsEnable[i] = m_pSelf->m_ToggleItemList[i].bEnable;
  453. }
  454. else
  455. {
  456. KIniFile* pSetting = g_UiBase.GetCommSettingFile();
  457. if (pSetting)
  458. {
  459. pSetting->GetInteger(OPTIONS_SAVE_SECTION, "Brightness", 50, &nBrightness);
  460. pSetting->GetInteger(OPTIONS_SAVE_SECTION, "MusicValue", 100, &nMusicValue);
  461. pSetting->GetInteger(OPTIONS_SAVE_SECTION, "SoundValue", 100, &nSoundValue);
  462. pSetting->GetInteger(OPTIONS_SAVE_SECTION, "ShortcutSet", 0, &nSettingSet);
  463. for (i = 0; i < OPTION_INDEX_COUNT; i++)
  464. pSetting->GetInteger(OPTIONS_SAVE_SECTION, ls_ToggleOptionName[i], true, &bOptionsEnable[i]);
  465. g_UiBase.CloseCommSettingFile(false);
  466. }
  467. }
  468. if (g_bRepresent3 == false)
  469. {
  470. bOptionsEnable[OPTION_I_DYNALIGHT] = false;
  471. bOptionsEnable[OPTION_I_PERSPECTIVE] = false;
  472. }
  473. if (bUpdateOption && g_pCoreShell)
  474. {
  475. if (g_bRepresent3)
  476. {
  477. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_PERSPECTIVE, bOptionsEnable[OPTION_I_PERSPECTIVE]);
  478. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_DYNALIGHT, bOptionsEnable[OPTION_I_DYNALIGHT]);
  479. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_BRIGHTNESS, nBrightness);
  480. }
  481. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_MUSIC_VALUE, nMusicValue);
  482. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_SOUND_VALUE, nSoundValue);
  483. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_WEATHER, bOptionsEnable[OPTION_I_WEATHER]);
  484. }
  485. if (m_pSelf)
  486. {
  487. if (bReload)
  488. {
  489. for (i = 0; i < OPTION_INDEX_COUNT; i++)
  490. m_pSelf->m_ToggleItemList[i].bEnable = bOptionsEnable[i];
  491. //m_pSelf->m_nBrightness = nBrightness;
  492. //m_pSelf->m_nSoundValue = nSoundValue;
  493. //m_pSelf->m_nMusicValue = nMusicValue;
  494. m_pSelf->m_nShortcutSet = nSettingSet;
  495. m_pSelf->m_BrightnessScroll.SetScrollPos(nBrightness);
  496. m_pSelf->m_BGMValue.SetScrollPos(nMusicValue);
  497. m_pSelf->m_SoundValue.SetScrollPos(nSoundValue);
  498. m_pSelf->UpdateSettingSet(nSettingSet, true);
  499. m_pSelf->UpdateAllToggleBtn();
  500. m_pSelf->UpdateAllStatusImg();
  501. }
  502. m_pSelf->m_BrightnessScroll.Enable(g_bRepresent3 && g_bScreen);
  503. }
  504. }
  505. void KUiOptions::StoreSetting()
  506. {
  507. KIniFile* pSetting = NULL;
  508. pSetting = g_UiBase.GetCommSettingFile();
  509. if (pSetting)
  510. {
  511. for (int i = 0; i < OPTION_INDEX_COUNT; i++)
  512. {
  513. pSetting->WriteInteger(OPTIONS_SAVE_SECTION, ls_ToggleOptionName[i],
  514. m_ToggleItemList[i].bEnable);
  515. }
  516. pSetting->WriteInteger(OPTIONS_SAVE_SECTION, "Brightness", m_nBrightness);
  517. pSetting->WriteInteger(OPTIONS_SAVE_SECTION, "MusicValue", m_nMusicValue);
  518. pSetting->WriteInteger(OPTIONS_SAVE_SECTION, "SoundValue", m_nSoundValue);
  519. pSetting->WriteInteger(OPTIONS_SAVE_SECTION, "ShortcutSet", m_nShortcutSet);
  520. }
  521. g_UiBase.CloseCommSettingFile(true);
  522. }
  523. //切换开关型选项
  524. void KUiOptions::ToggleOption(int nIndex)
  525. {
  526. if (nIndex < OPTION_I_START || nIndex >= OPTION_INDEX_COUNT)
  527. return;
  528. if (m_ToggleItemList[nIndex].bInvalid)
  529. return;
  530. bool bEnable = m_ToggleItemList[nIndex].bEnable = !m_ToggleItemList[nIndex].bEnable;
  531. switch(nIndex)
  532. {
  533. case OPTION_I_DYNALIGHT: //动态光影
  534. if (g_pCoreShell)
  535. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_DYNALIGHT, bEnable);
  536. break;
  537. case OPTION_I_WEATHER: //天气开关
  538. if (g_pCoreShell)
  539. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_WEATHER, bEnable);
  540. break;
  541. case OPTION_I_PERSPECTIVE: //透视模式
  542. if (g_pCoreShell)
  543. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_PERSPECTIVE, bEnable);
  544. break;
  545. }
  546. UpdateAllStatusImg();
  547. }
  548. void KUiOptions::SetMusicValue(int n)
  549. {
  550. if (m_nMusicValue != n)
  551. {
  552. m_nMusicValue = n;
  553. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_MUSIC_VALUE, m_nMusicValue);
  554. }
  555. }
  556. void KUiOptions::SetSoundValue(int n)
  557. {
  558. if (m_nSoundValue != n)
  559. {
  560. m_nSoundValue = n;
  561. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_SOUND_VALUE, m_nSoundValue);
  562. }
  563. }
  564. void KUiOptions::SetBrightness(int n)
  565. {
  566. if (g_bRepresent3)
  567. {
  568. if (m_nBrightness != n)
  569. {
  570. m_nBrightness = n;
  571. g_pCoreShell->OperationRequest(GOI_OPTION_SETTING, OPTION_BRIGHTNESS, m_nBrightness);
  572. }
  573. }
  574. }