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

模拟服务器

开发平台:

C/C++

  1. // -------------------------------------------------------------------------
  2. // 文件名 : UiSelPlayer.cpp
  3. // 创建者 : 吕桂华
  4. // 创建时间 : 2002-9-10 14:24:12
  5. // 功能描述 :
  6. // -------------------------------------------------------------------------
  7. #include "KWin32.h"
  8. #include "KIniFile.h"
  9. #include "../Elem/WndMessage.h"
  10. #include "../elem/wnds.h"
  11. #include "UiSelPlayer.h"
  12. #include "UiSelNativePlace.h"
  13. #include "UiSelServer.h"
  14. #include "UiLoginbg.h"
  15. #include "UiConnectInfo.h"
  16. #include "../UiSoundSetting.h"
  17. #include "../UiBase.h"
  18. #include "../UiShell.h"
  19. #include "../../Login/Login.h"
  20. #include "../../Core/Src/GameDataDef.h"
  21. #include "../../../Represent/iRepresent/iRepresentShell.h"
  22. #include <crtdbg.h>
  23. extern iRepresentShell* g_pRepresentShell;
  24. #define SCHEME_INI_SELPLAYER  "选游戏存档人物.ini"
  25. #define SERIES_INI "\Ui\五行.ini"
  26. #define LIFE_TIME_STRING_ID "25"
  27. #define LIFE_TIME_DAY_ID "26"
  28. #define LIFE_TIME_HOUR_ID "27"
  29. #define LIFE_TIME_MINUTE_ID "28"
  30. #define LIFE_TIME_SECOND_ID "29"
  31. const char* PROP_GetTitleString(OBJ_ATTRIBYTE_TYPE eType);
  32. KUiSelPlayer* KUiSelPlayer::m_pSelf=NULL;
  33. //--------------------------------------------------------------------------
  34. // 功能:析构函数
  35. //--------------------------------------------------------------------------
  36. KUiSelPlayer::KUiSelPlayer()
  37. {
  38. m_nSelPlayer = -1;
  39. m_nNumPlayer = 0;
  40. m_szLoginBg[0] = 0;
  41. m_szPlayerImgPrefix[0] = 0;
  42. m_bJustClicked = false;
  43. m_szSelPlayerSound[0][0] = m_szSelPlayerSound[1][0] =
  44. m_szSelPlayerSound[2][0] = m_szSelPlayerSound[3][0] =
  45. m_szSelPlayerSound[4][0] = 0;
  46. }
  47. //--------------------------------------------------------------------------
  48. // 功能:打开窗口,返回唯一的一个类对象实例
  49. //--------------------------------------------------------------------------
  50. KUiSelPlayer* KUiSelPlayer::OpenWindow()
  51. {
  52. if (m_pSelf == NULL)
  53. {
  54. m_pSelf = new KUiSelPlayer;
  55. if (m_pSelf)
  56. m_pSelf->Initialize();
  57. }
  58. if (m_pSelf)
  59. {
  60. UiSoundPlay(UI_SI_POPUP_OUTGAME_WND);
  61. m_pSelf->UpdateData();
  62. KUiLoginBackGround::SetConfig(m_pSelf->m_szLoginBg);
  63. m_pSelf->Show();
  64. }
  65. return m_pSelf;
  66. }
  67. //--------------------------------------------------------------------------
  68. // 功能:关闭窗口,同时可以选则是否删除对象实例
  69. //--------------------------------------------------------------------------
  70. void KUiSelPlayer::CloseWindow()
  71. {
  72. if (m_pSelf)
  73. {
  74. m_pSelf->m_bJustClicked = false;
  75. m_pSelf->Destroy();
  76. m_pSelf = NULL;
  77. }
  78. }
  79. void KUiSelPlayer::Hide()
  80. {
  81. m_pSelf->m_bJustClicked = false;
  82. KWndShowAnimate::Hide();
  83. }
  84. // -------------------------------------------------------------------------
  85. // 函数 : KUiSelPlayer::Initialize
  86. // 功能 : 初始化
  87. // -------------------------------------------------------------------------
  88. void KUiSelPlayer::Initialize()
  89. {
  90. AddChild(&m_btnOk);
  91. AddChild(&m_btnCancel);
  92. AddChild(&m_btnDel);
  93. AddChild(&m_btnNew);
  94. AddChild(&m_ButterflyWnd);
  95. char Scheme[128];
  96. g_UiBase.GetCurSchemePath(Scheme, 128);
  97. m_pSelf->LoadScheme(Scheme);
  98. // 注册本窗口
  99. Wnd_AddWindow(this, WL_TOPMOST);
  100. }
  101. // -------------------------------------------------------------------------
  102. // 函数 : KUiSelPlayer::LoadScheme
  103. // 功能 : 载入界面方案
  104. // -------------------------------------------------------------------------
  105. void KUiSelPlayer::LoadScheme(const char* pScheme)
  106. {
  107. char Buff[128];
  108. KIniFile Ini;
  109. sprintf(Buff, "%s\%s", pScheme, SCHEME_INI_SELPLAYER);
  110. if (Ini.Load(Buff))
  111. {
  112. Init(&Ini, "SelRole"); // 窗口背景数据
  113. Ini.GetString("SelRole", "LoginBg", "", m_szLoginBg, sizeof(m_szLoginBg));
  114. Ini.GetString("SelRole", "PlayerImgPrefix", "", m_szPlayerImgPrefix, sizeof(m_szPlayerImgPrefix));
  115. Buff[0] = ''; // 清空缓存
  116. m_btnOk.Init(&Ini, "Ok");
  117. m_btnCancel.Init(&Ini, "Cancel");
  118. m_btnDel.Init(&Ini, "Del");
  119. m_btnNew.Init(&Ini, "New");
  120. m_ButterflyWnd.Init(&Ini, "Butterfly");
  121. m_player[0].Init(&Ini, "Player");
  122. m_Name[0].Init(&Ini, "Name");
  123. m_Level[0].Init(&Ini, "Level");
  124. m_PlayerInfoBg[0].Init(&Ini, "PlayerInfoBg");
  125. for (int i = 1; i < MAX_PLAYER_PER_ACCOUNT; i ++)
  126. {
  127. m_player[0].Clone(&m_player[i]);
  128. m_Name[0].Clone(&m_Name[i]);
  129. m_Level[0].Clone(&m_Level[i]);
  130. m_PlayerInfoBg[0].Clone(&m_PlayerInfoBg[i]);
  131. }
  132. Ini.GetInteger("SelRole", "Player2Pos_0",  0, &m_ChildWndXOffset[0]);
  133. Ini.GetInteger("SelRole", "Player2Pos_1",  0, &m_ChildWndXOffset[1]);
  134. Ini.GetInteger("SelRole", "Player3Pos_0",  0, &m_ChildWndXOffset[2]);
  135. Ini.GetInteger("SelRole", "Player3Pos_1",  0, &m_ChildWndYOffset);
  136. Ini.GetInteger("SelRole", "Player3Pos_2",  0, &m_ChildWndXOffset[3]);
  137. m_player[0].GetPosition(&m_ChildPos[0], NULL);
  138. m_Name[0].GetPosition(&m_ChildPos[1], NULL);
  139. m_Level[0].GetPosition(&m_ChildPos[2], NULL);
  140. m_PlayerInfoBg[0].GetPosition(&m_ChildPos[3], NULL);
  141. m_LifeTimeText.Init(&Ini, "LifeTime");
  142. }
  143. }
  144. // -------------------------------------------------------------------------
  145. // 功能 : 绘制窗口
  146. // -------------------------------------------------------------------------
  147. void KUiSelPlayer::PaintWindow()
  148. {
  149. KWndShowAnimate::PaintWindow();
  150. for (int i = 0; i < m_nNumPlayer; i++)
  151. {
  152. int nLoopBack = m_player[i].NextFrame();
  153. if (m_bJustClicked && nLoopBack && i == m_nSelPlayer)
  154. {
  155. char szFileName[128];
  156. GetRoleImageName(szFileName, m_szPlayerImgPrefix, m_Gender[m_nSelPlayer], m_Attribute[m_nSelPlayer], 0);
  157. m_player[m_nSelPlayer].SetImage(ISI_T_SPR, szFileName);
  158. m_player[m_nSelPlayer].SetFrame(0);
  159. m_bJustClicked = false;
  160. }
  161. }
  162. m_LifeTimeText.PaintWindow();
  163. }
  164. // -------------------------------------------------------------------------
  165. // 功能 : 更新
  166. // -------------------------------------------------------------------------
  167. void KUiSelPlayer::UpdateData()
  168. {
  169. int nSel;
  170. m_nNumPlayer = g_LoginLogic.GetRoleCount(nSel);
  171. if (m_nNumPlayer > 0 && nSel < 0)
  172. m_nSelPlayer = 0;
  173. else
  174. m_nSelPlayer = nSel;
  175. int x, y;
  176. //---调整子窗口位置----
  177. switch(m_nNumPlayer)
  178. {
  179. case 1:
  180. m_player[0].GetPosition(&x, &y);
  181. x = m_ChildPos[0];
  182. m_player[0].SetPosition(x, y);
  183. m_Name[0].GetPosition(&x, &y);
  184. x = m_ChildPos[1];
  185. m_Name[0].SetPosition(x, y);
  186.         m_Level[0].GetPosition(&x, &y);
  187. x = m_ChildPos[2];
  188. m_Level[0].SetPosition(x, y);
  189.         m_PlayerInfoBg[0].GetPosition(&x, &y);
  190. x = m_ChildPos[3];
  191. m_PlayerInfoBg[0].SetPosition(x, y);
  192. break;
  193. case 2:
  194. m_player[0].GetPosition(&x, &y);
  195. x = m_ChildPos[0] + m_ChildWndXOffset[0];
  196. m_player[0].SetPosition(x, y);
  197. x = m_ChildPos[0] + m_ChildWndXOffset[1];
  198. m_player[1].SetPosition(x, y);
  199. m_Name[0].GetPosition(&x, &y);
  200. x = m_ChildPos[1] + m_ChildWndXOffset[0];
  201. m_Name[0].SetPosition(x, y);
  202. x = m_ChildPos[1] + m_ChildWndXOffset[1];
  203. m_Name[1].SetPosition(x, y);
  204.         m_Level[0].GetPosition(&x, &y);
  205. x = m_ChildPos[2] + m_ChildWndXOffset[0];
  206. m_Level[0].SetPosition(x, y);
  207. x = m_ChildPos[2] + m_ChildWndXOffset[1];
  208. m_Level[1].SetPosition(x, y);
  209.         m_PlayerInfoBg[0].GetPosition(&x, &y);
  210. x = m_ChildPos[3] + m_ChildWndXOffset[0];
  211. m_PlayerInfoBg[0].SetPosition(x, y);
  212. x = m_ChildPos[3] + m_ChildWndXOffset[1];
  213. m_PlayerInfoBg[1].SetPosition(x, y);
  214. break;
  215. case 3:
  216. m_player[0].GetPosition(&x, &y);
  217. x = m_ChildPos[0];
  218. m_player[1].SetPosition(x, y + m_ChildWndYOffset);
  219. x += m_ChildWndXOffset[2];
  220. m_player[0].SetPosition(x, y);
  221. x = m_ChildPos[0] + m_ChildWndXOffset[3];
  222. m_player[2].SetPosition(x, y);
  223. m_Name[0].GetPosition(&x, &y);
  224. x = m_ChildPos[1];
  225. m_Name[1].SetPosition(x, y + m_ChildWndYOffset);
  226. x += m_ChildWndXOffset[2];
  227. m_Name[0].SetPosition(x, y);
  228. x = m_ChildPos[1] + m_ChildWndXOffset[3];
  229. m_Name[2].SetPosition(x, y);
  230.         m_Level[0].GetPosition(&x, &y);
  231. x = m_ChildPos[2];
  232. m_Level[1].SetPosition(x, y + m_ChildWndYOffset);
  233. x += m_ChildWndXOffset[2];
  234. m_Level[0].SetPosition(x, y);
  235. x = m_ChildPos[2] + m_ChildWndXOffset[3];
  236. m_Level[2].SetPosition(x, y);
  237.         m_PlayerInfoBg[0].GetPosition(&x, &y);
  238. x = m_ChildPos[3];
  239. m_PlayerInfoBg[1].SetPosition(x, y + m_ChildWndYOffset);
  240. x += m_ChildWndXOffset[2];
  241. m_PlayerInfoBg[0].SetPosition(x, y);
  242. x = m_ChildPos[3] + m_ChildWndXOffset[3];
  243. m_PlayerInfoBg[2].SetPosition(x, y);
  244. break;
  245. }
  246. int i;
  247. char szFileName[128];
  248. if (m_nNumPlayer > 0)
  249. {
  250. KIniFile Ini;
  251. Ini.Load(SERIES_INI);
  252. for (i = 0; i < m_nNumPlayer; i++)
  253. {
  254. KRoleChiefInfo Info;
  255. g_LoginLogic.GetRoleInfo(i, &Info);
  256. m_Name[i].SetText(Info.Name);
  257. m_Level[i].SetIntText(Info.nLevel);
  258. AddChild(&m_PlayerInfoBg[i]);
  259. AddChild(&m_player[i]);
  260. AddChild(&m_Name[i]);
  261. AddChild(&m_Level[i]);
  262. m_Gender[i] = Info.Gender;
  263. m_Attribute[i] = Info.Attribute;
  264. m_szSelPlayerSound[i][0] = 0;
  265. Ini.GetString(PROP_GetTitleString((OBJ_ATTRIBYTE_TYPE)Info.Attribute),
  266. Info.Gender ? "SelSound_f" : "SelSound_m", "",
  267. m_szSelPlayerSound[i], sizeof(m_szSelPlayerSound[i]));
  268. GetRoleImageName(szFileName, m_szPlayerImgPrefix, Info.Gender, Info.Attribute, 2);
  269. m_player[i].SetImage(ISI_T_SPR, szFileName);
  270. m_player[i].SetFrame(0);
  271. }
  272. if (m_nSelPlayer < 0)
  273. m_nSelPlayer = 0;
  274. OnSelectPlayer(m_nSelPlayer);
  275. }
  276. for (i = m_nNumPlayer; i < MAX_PLAYER_PER_ACCOUNT; i++)
  277. {
  278. m_player[i].LeaveAlone();
  279. m_Name[i].LeaveAlone();
  280. m_Level[i].LeaveAlone();
  281. m_PlayerInfoBg[i].LeaveAlone();
  282. }
  283. m_btnOk.BringToTop();
  284. m_btnCancel.BringToTop();
  285. m_btnDel.BringToTop();
  286. m_btnNew.BringToTop();
  287. m_btnNew.Enable(m_nNumPlayer < MAX_PLAYER_PER_ACCOUNT);
  288. m_btnDel.Enable(m_nNumPlayer > 0 && m_nSelPlayer >= 0);
  289. m_btnOk.Enable(m_nNumPlayer > 0 && m_nSelPlayer >= 0);
  290. DWORD dwLifeTime = g_LoginLogic.GetAccountLifeTime();
  291. int nDays, nHours, nMinutes;
  292. nDays = dwLifeTime / 86400;
  293. dwLifeTime -= nDays * 86400;
  294. nHours = dwLifeTime / 3600;
  295. dwLifeTime -= nHours * 3600;
  296. nMinutes = dwLifeTime / 60;
  297. dwLifeTime -= nMinutes * 60;
  298.     char szInfo[128] = "";
  299. char szDay[16] = "day(s)";
  300. char szHour[16] = "hour(s)";
  301. char szMinute[16] = "minute(s)";
  302. char szSecond[16] = "second(s)";
  303. KIniFile* pSetting = g_UiBase.GetCommConfigFile();
  304. if (pSetting)
  305. {
  306. pSetting->GetString("InfoString", LIFE_TIME_STRING_ID,
  307. "", szInfo, sizeof(szInfo));
  308. pSetting->GetString("InfoString", LIFE_TIME_DAY_ID,
  309. "day(s)", szDay, sizeof(szDay));
  310. pSetting->GetString("InfoString", LIFE_TIME_HOUR_ID,
  311. "hour(s)", szHour, sizeof(szHour));
  312. pSetting->GetString("InfoString", LIFE_TIME_MINUTE_ID,
  313. "minute(s)", szMinute, sizeof(szMinute));
  314. pSetting->GetString("InfoString", LIFE_TIME_SECOND_ID,
  315. "second(s)", szSecond, sizeof(szSecond));
  316. g_UiBase.CloseCommConfigFile();
  317. }
  318. int nLen = strlen(szInfo);
  319. if (nDays)
  320. {
  321. nLen += sprintf(szInfo + nLen, "%d%s", nDays, szDay);
  322. }
  323. if (nHours)
  324. {
  325. nLen += sprintf(szInfo + nLen, "%d%s", nHours, szHour);
  326. }
  327. if (nDays == 0)
  328. {
  329. if (nMinutes)
  330. {
  331. nLen += sprintf(szInfo + nLen, "%d%s", nMinutes, szMinute);
  332. }
  333. if (nHours == 0 && (dwLifeTime || nMinutes == 0))
  334. {
  335. nLen += sprintf(szInfo + nLen, "%d%s", dwLifeTime, szSecond);
  336. }
  337. }
  338. m_LifeTimeText.SetText(szInfo, nLen);
  339. }
  340. void KUiSelPlayer::GetRoleImageName(char* pszName, const char* pszPrefix, unsigned char bGender, unsigned char bAttribute, int nIndex)
  341. {
  342. _ASSERT(pszName && bAttribute >= series_metal && bAttribute < series_num);
  343. static const char* pszAttribute[series_num] = { "金", "木", "水", "火", "土" };
  344. static const char* pszGender[2] = { "男", "女" };
  345. sprintf(pszName, "%s_%s_%s_%d.spr", pszPrefix, pszAttribute[bAttribute],
  346. (bGender ? pszGender[1] : pszGender[0]), nIndex);
  347. }
  348. // -------------------------------------------------------------------------
  349. // 函数 : 消息处理
  350. // -------------------------------------------------------------------------
  351. int KUiSelPlayer::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
  352. {
  353. int nRet = 0;
  354. switch(uMsg)
  355. {
  356. case WND_N_BUTTON_CLICK:
  357. OnClickButton((KWndButton*)(KWndWindow*)uParam, false);
  358.         break;
  359. case WND_N_BUTTON_DB_CLICK:
  360. OnClickButton((KWndButton*)(KWndWindow*)uParam, true);
  361.         break;
  362. case WM_KEYDOWN:
  363. nRet = OnKeyDown(uParam);
  364. break;
  365. default:
  366. nRet = KWndShowAnimate::WndProc(uMsg, uParam, nParam);
  367. break;
  368. }
  369. return nRet;
  370. }
  371. int KUiSelPlayer::OnKeyDown(unsigned int uKey)
  372. {
  373. int nRet = 1;
  374. KWndWindow* pActive = NULL;
  375. KWndButton* pToActive = NULL;
  376. switch (uKey)
  377. {
  378. case VK_RETURN:
  379. pActive = GetActiveBtn();
  380. if (pActive == NULL && m_btnOk.IsDisable() == FALSE)
  381. pActive = &m_btnOk;
  382. OnClickButton((KWndButton*)pActive, false);
  383. break;
  384. case VK_ESCAPE:
  385. OnCancel();
  386. nRet = 1;
  387. break;
  388. case VK_UP:
  389. pActive = GetActiveBtn();
  390. if (pActive == &m_btnCancel)
  391. pToActive = &m_btnDel;
  392. else if (pActive == &m_btnDel)
  393. pToActive = &m_btnNew;
  394. else if (pActive == &m_btnOk)
  395. pToActive = &m_btnCancel;
  396. else
  397. pToActive = &m_btnOk;
  398. nRet = 1;
  399. break;
  400. case VK_DOWN:
  401. pActive = GetActiveBtn();
  402. if (pActive == &m_btnOk)
  403. pToActive = &m_btnNew;
  404. else if (pActive == &m_btnNew)
  405. pToActive = &m_btnDel;
  406. else if (pActive == &m_btnCancel)
  407. pToActive = &m_btnOk;
  408. else
  409. pToActive = &m_btnCancel;
  410. nRet = 1;
  411. break;
  412. case VK_LEFT:
  413. if (m_nSelPlayer > 0)
  414. OnSelectPlayer(m_nSelPlayer - 1);
  415. else if (m_nSelPlayer < 0 && m_nNumPlayer > 0)
  416. OnSelectPlayer(0);
  417. m_btnDel.Enable(m_nSelPlayer >= 0);
  418. nRet = 1;
  419. break;
  420. case VK_RIGHT:
  421. case VK_SPACE:
  422. if (m_nSelPlayer < m_nNumPlayer - 1)
  423. OnSelectPlayer(m_nSelPlayer + 1);
  424. else if (m_nNumPlayer < 0 && m_nNumPlayer > 0)
  425. OnSelectPlayer(0);
  426. m_btnDel.Enable(m_nSelPlayer >= 0);
  427. nRet = 1;
  428. break;
  429. default:
  430. nRet = 0;
  431. }
  432. if (pToActive)
  433. pToActive->SetCursorAbove();
  434. return nRet;
  435. }
  436. void KUiSelPlayer::OnSelectPlayer(int nSel, bool bPlaySound)
  437. {
  438. char szFileName[128];
  439. if (m_nSelPlayer != nSel)
  440. {
  441. if (m_nSelPlayer >= 0)
  442. {
  443. GetRoleImageName(szFileName, m_szPlayerImgPrefix, m_Gender[m_nSelPlayer], m_Attribute[m_nSelPlayer], 2);
  444. m_player[m_nSelPlayer].SetImage(ISI_T_SPR, szFileName);
  445. m_player[m_nSelPlayer].SetFrame(0);
  446. }
  447. m_btnDel.Enable(true);
  448. m_nSelPlayer = nSel;
  449. }
  450. GetRoleImageName(szFileName, m_szPlayerImgPrefix, m_Gender[m_nSelPlayer], m_Attribute[m_nSelPlayer], 1);
  451. m_player[m_nSelPlayer].SetImage(ISI_T_SPR, szFileName);
  452. m_player[m_nSelPlayer].SetFrame(0);
  453. m_bJustClicked = true;
  454. if (bPlaySound)
  455. UiSoundPlay(m_szSelPlayerSound[m_nSelPlayer]);
  456. }
  457. // -------------------------------------------------------------------------
  458. // 函数 : KUiSelPlayer::OnClickButton
  459. // 功能 : 响应点击按钮
  460. // 参数 : KWndWindow* pWnd ---> 被点击的控件指针
  461. // -------------------------------------------------------------------------
  462. void KUiSelPlayer::OnClickButton(KWndButton* pWnd, bool bDoubleClick)
  463. {
  464. // ---> 判断点中的是那个控件
  465. for (int i = 0; i < m_nNumPlayer; i ++)
  466. {
  467. if (pWnd == (KWndWindow*)&m_player[i]) // 点中了某个玩家信息框
  468. {
  469. OnSelectPlayer(i, !bDoubleClick);
  470.             // 如果是双击,就仿真选择用户
  471.             if (bDoubleClick)
  472.             {
  473.          OnEnterGame();
  474.             }
  475. return;
  476. }
  477. }
  478. if (pWnd == (KWndWindow*)&m_btnNew)
  479. OnNew();
  480. else if (pWnd == (KWndWindow*)&m_btnCancel)
  481. OnCancel();
  482. else if (pWnd == (KWndWindow*)&m_btnOk)
  483. OnEnterGame();
  484. else if (pWnd == (KWndWindow*)&m_btnDel)
  485. OnDel();
  486. }
  487. void KUiSelPlayer::OnEnterGame()
  488. {
  489. if (m_nSelPlayer >= 0)
  490. {
  491. if (g_LoginLogic.SelectRole(m_nSelPlayer))
  492. {
  493. KUiConnectInfo::OpenWindow(CI_MI_ENTERING_GAME, LL_S_IN_GAME);
  494. Hide();
  495. }
  496. }
  497. }
  498. // -------------------------------------------------------------------------
  499. // 函数 : KUiSelPlayer::OnNew
  500. // 功能 : 新建按钮点击事件处理
  501. // -------------------------------------------------------------------------
  502. void KUiSelPlayer::OnNew()
  503. {
  504. int nSel;
  505. if (g_LoginLogic.GetRoleCount(nSel) < MAX_PLAYER_PER_ACCOUNT)
  506. {
  507. Hide();
  508. KUiSelNativePlace::OpenWindow(); // 打开新建角色对话框
  509. }
  510. }
  511. void KUiSelPlayer::OnDel()
  512. {
  513. if (m_nSelPlayer >= 0)
  514. {
  515. KUiConnectInfo::OpenWindow(CI_MI_TO_DEL_ROLE, CI_NS_SEL_ROLE_WND, m_nSelPlayer);
  516. Hide();
  517. }
  518. }
  519. // -------------------------------------------------------------------------
  520. // 函数 : KUiSelPlayer::OnCancel
  521. // 功能 : 取消按钮点击事件处理
  522. // -------------------------------------------------------------------------
  523. void KUiSelPlayer::OnCancel()
  524. {
  525. Hide();
  526. g_LoginLogic.ReturnToIdle();
  527. KUiSelServer::OpenWindow();
  528. }
  529. KWndButton* KUiSelPlayer::GetActiveBtn()
  530. {
  531. KWndButton* pBtn = NULL;
  532. if (m_btnOk.IsButtonActive())
  533. pBtn = &m_btnOk;
  534. else if (m_btnCancel.IsButtonActive())
  535. pBtn = &m_btnCancel;
  536. else if (m_btnDel.IsButtonActive())
  537. pBtn = &m_btnDel;
  538. else if (m_btnNew.IsButtonActive())
  539. pBtn = &m_btnNew;
  540. return pBtn;
  541. }