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

模拟服务器

开发平台:

C/C++

  1. /*******************************************************************************
  2. File        : UiTongAssignBox.h
  3. Creator     : Fyt(Fan Zhanpeng)
  4. create data : 08-29-2003(mm-dd-yyyy)
  5. Description : 任命帮会职位的界面
  6. ********************************************************************************/
  7. #include "KWin32.h"
  8. #include "KIniFile.h"
  9. #include "CoreShell.h"
  10. #include "../elem/wnds.h"
  11. #include "../elem/wndmessage.h"
  12. #include "../UiBase.h"
  13. #include "../UiSoundSetting.h"
  14. #include "../../../Engine/src/KFilePath.h"
  15. #include "../../Core/Src/GameDataDef.h"
  16. #include "UiTongAssignBox.h"
  17. #include "UiInformation.h"
  18. #include "UiTongGetString.h"
  19. #define TONG_ASSIGN_BOX_INI "帮会职位任命.ini"
  20. extern iCoreShell *g_pCoreShell;
  21. KUiTongAssignBox* KUiTongAssignBox::ms_pSelf = NULL;
  22. //////////////////////////////////////////////////////////////////////
  23. // Construction/Destruction
  24. //////////////////////////////////////////////////////////////////////
  25. KUiTongAssignBox::KUiTongAssignBox()
  26. {
  27. m_pMain = NULL;
  28. m_nSelectFigure = -1;
  29. m_szTargetPlayerName[0] = 0;
  30. m_szTargetPlayerAgName[0] = 0;
  31. }
  32. KUiTongAssignBox::~KUiTongAssignBox()
  33. {
  34. }
  35. /*********************************************************************
  36. * 功能:打开窗口
  37. **********************************************************************/
  38. KUiTongAssignBox* KUiTongAssignBox::OpenWindow()
  39. {
  40. if(g_pCoreShell)
  41. {
  42.      if (ms_pSelf == NULL)
  43.      {
  44.     ms_pSelf = new KUiTongAssignBox;
  45.     if (ms_pSelf)
  46.      ms_pSelf->Initialize();
  47.      }
  48.      if (ms_pSelf)
  49.      {
  50.     UiSoundPlay(UI_SI_WND_OPENCLOSE);
  51. ms_pSelf->BringToTop();
  52. ms_pSelf->Show();
  53.     }
  54. }
  55. return ms_pSelf;
  56. }
  57. /*********************************************************************
  58. * 功能:如果窗口正被显示,则返回实例指针
  59. **********************************************************************/
  60. KUiTongAssignBox* KUiTongAssignBox::GetIfVisible()
  61. {
  62. if (ms_pSelf && ms_pSelf->IsVisible())
  63. return ms_pSelf;
  64. return NULL;
  65. }
  66. /*********************************************************************
  67. * 功能:关闭窗口,同时可以选则是否删除对象实例
  68. **********************************************************************/
  69. void KUiTongAssignBox::CloseWindow(bool bDestory)
  70. {
  71. if (ms_pSelf)
  72. {
  73. ms_pSelf->Hide();
  74. if (bDestory)
  75. {
  76. ms_pSelf->Destroy();
  77. ms_pSelf = NULL;
  78. }
  79. }
  80. }
  81. /*********************************************************************
  82. * 功能:初始化
  83. **********************************************************************/
  84. void KUiTongAssignBox::Initialize()
  85. {
  86. AddChild(&m_BtnPilgarlic);
  87. AddChild(&m_TargetName);
  88. AddChild(&m_BtnCaptain);
  89. AddChild(&m_BtnConfirm);
  90. AddChild(&m_BtnCancel);
  91. AddChild(&m_BtnElder);
  92. AddChild(&m_TextError);
  93. // m_BtnPilgarlic.Hide();
  94. // m_TargetName.Hide();
  95. // m_BtnCaptain.Hide();
  96. // m_BtnConfirm.Hide();
  97. // m_BtnCancel.Hide();
  98. // m_BtnElder.Hide();
  99. // m_BtnConfirm.Enable(FALSE);
  100. char Scheme[256];
  101. g_UiBase.GetCurSchemePath(Scheme, 256);
  102. LoadScheme(Scheme);
  103. Wnd_AddWindow(this);
  104. }
  105. /*********************************************************************
  106. * 功能:载入界面方案
  107. **********************************************************************/
  108. void KUiTongAssignBox::LoadScheme(const char* pScheme)
  109. {
  110. if(ms_pSelf)
  111. {
  112. char Buff[128];
  113. KIniFile Ini;
  114. sprintf(Buff, "%s\%s", pScheme, TONG_ASSIGN_BOX_INI);
  115. if(Ini.Load(Buff))
  116. {
  117. ms_pSelf->Init(&Ini, "Main");
  118. ms_pSelf->m_BtnPilgarlic.Init(&Ini, "BtnMember");
  119. ms_pSelf->m_BtnCaptain.Init(&Ini, "BtnManager");
  120. ms_pSelf->m_BtnConfirm.Init(&Ini, "BtnConfirm");
  121. ms_pSelf->m_BtnElder.Init(&Ini, "BtnDirector");
  122. ms_pSelf->m_BtnCancel.Init(&Ini, "BtnCancel");
  123. ms_pSelf->m_TargetName.Init(&Ini, "PlayerName");
  124. ms_pSelf->m_TextError.Init(&Ini, "ErrorBox");
  125. ms_pSelf->m_BtnElder.SetText("长老");
  126. ms_pSelf->m_BtnCaptain.SetText("队长");
  127. ms_pSelf->m_BtnPilgarlic.SetText("帮众");
  128. Ini.GetString("Main", "AssignString", "", ms_pSelf->m_szAssign, sizeof(ms_pSelf->m_szAssign));
  129. Ini.GetString("Main", "CancelString", "", ms_pSelf->m_szCancel, sizeof(ms_pSelf->m_szCancel));
  130. Ini.GetString("Main", "ConfirmString", "", ms_pSelf->m_szConfirm, sizeof(ms_pSelf->m_szConfirm));
  131. Ini.GetString("Main", "ErrorFigure", "请选择职位", ms_pSelf->m_szErrorNotSelectFigure, sizeof(ms_pSelf->m_szErrorNotSelectFigure));
  132. }
  133. }
  134. }
  135. /*********************************************************************
  136. * 功能:窗口函数
  137. **********************************************************************/
  138. int KUiTongAssignBox::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
  139. {
  140. switch(uMsg)
  141. {
  142. case WND_N_BUTTON_CLICK:
  143. if(uParam == (unsigned int)&m_BtnConfirm)
  144. {
  145. OnConfirm();
  146. }
  147. else if(uParam == (unsigned int)&m_BtnCancel)
  148. {
  149. if(m_pMain)
  150. {
  151.      m_pMain->Show();
  152.      m_pMain = NULL;
  153. }
  154. CloseWindow();
  155. }
  156. else if(uParam == (unsigned int)&m_BtnElder)
  157. {
  158. UpdateCheckButton(enumTONG_FIGURE_DIRECTOR);
  159. }
  160. else if(uParam == (unsigned int)&m_BtnCaptain)
  161. {
  162. UpdateCheckButton(enumTONG_FIGURE_MANAGER);
  163. }
  164. else if(uParam == (unsigned int)&m_BtnPilgarlic)
  165. {
  166. UpdateCheckButton(enumTONG_FIGURE_MEMBER);
  167. }
  168. break;
  169. case WND_M_OTHER_WORK_RESULT:
  170. if(uParam == RESULT_T_ASSIGN)
  171. {
  172. if(nParam && g_pCoreShell)
  173. {
  174. KTongOperationParam Param;
  175.      KTongMemberItem Member;
  176.     Param.eOper = TONG_ACTION_ASSIGN;
  177.     Param.nData[0] = m_nCurrentFigure;
  178.     Param.nData[2] = m_nSelectFigure;
  179.     Param.nData[1] = 0;//m_nCurrentPostion;
  180.     Param.nData[3] = 0;
  181.     memset(&Member, 0, sizeof(KTongMemberItem));
  182.     strcpy(Member.Name, (char *)nParam);
  183.       g_pCoreShell->TongOperation(GTOI_TONG_ACTION, (unsigned int)&Param, (int)&Member);
  184. }
  185. if(m_pMain)
  186. {
  187.      m_pMain->Show();
  188.      m_pMain = NULL;
  189. }
  190. CloseWindow();
  191. }
  192. break;
  193. default:
  194. return KWndImage::WndProc(uMsg, uParam, nParam);
  195. }
  196. return 1;
  197. }
  198. /*********************************************************************
  199. * 功能:建立这个界面和主界面的关联
  200. **********************************************************************/
  201. void KUiTongAssignBox::LinkToMainWindow(KWndWindow *pMain)
  202. {
  203. if(pMain && ms_pSelf)
  204. {
  205. ms_pSelf->m_pMain = pMain;
  206. ms_pSelf->m_pMain->Hide();
  207. }
  208. }
  209. /*********************************************************************
  210. * 功能:为任命案的书写安排数据
  211. **********************************************************************/
  212. void KUiTongAssignBox::ArrangeData(int nType, char* szTarName, char* szTarAgName, int nCurrentFigure, int nCurrentPosition)
  213. {
  214. if((nType == enumTONG_FIGURE_DIRECTOR || nType == enumTONG_FIGURE_MASTER) &&
  215. szTarName && szTarName[0] && nCurrentFigure >= enumTONG_FIGURE_MEMBER &&
  216. nCurrentFigure <= enumTONG_FIGURE_DIRECTOR && ms_pSelf)
  217. {
  218. ms_pSelf->m_nType = nType;
  219. strcpy(ms_pSelf->m_szTargetPlayerName, szTarName);
  220. ms_pSelf->m_TargetName.SetText(szTarName);
  221. if(szTarAgName && szTarAgName[0])
  222. {
  223. strcpy(ms_pSelf->m_szTargetPlayerAgName, szTarAgName);
  224. }
  225. ms_pSelf->m_nCurrentFigure = nCurrentFigure;
  226. ms_pSelf->m_nCurrentPostion = nCurrentPosition;
  227. if(nType == enumTONG_FIGURE_DIRECTOR)
  228. {
  229. ms_pSelf->m_BtnElder.Hide();
  230. ms_pSelf->m_BtnCaptain.Show();
  231. ms_pSelf->m_BtnPilgarlic.Show();
  232. }
  233. else if(nType == enumTONG_FIGURE_MASTER)
  234. {
  235. ms_pSelf->m_BtnElder.Show();
  236. ms_pSelf->m_BtnCaptain.Show();
  237. ms_pSelf->m_BtnPilgarlic.Show();
  238. }
  239. if(nCurrentFigure == enumTONG_FIGURE_DIRECTOR)
  240. {
  241. ms_pSelf->m_BtnElder.Hide();
  242. }
  243. else if(nCurrentFigure == enumTONG_FIGURE_MANAGER)
  244. {
  245. ms_pSelf->m_BtnCaptain.Hide();
  246. }
  247. else if(nCurrentFigure == enumTONG_FIGURE_MEMBER)
  248. {
  249. ms_pSelf->m_BtnPilgarlic.Hide();
  250. }
  251. }
  252. }
  253. /*********************************************************************
  254. * 功能:Check管理函数
  255. **********************************************************************/
  256. void KUiTongAssignBox::UpdateCheckButton(int nFigure)
  257. {
  258. if(nFigure >= enumTONG_FIGURE_MEMBER && nFigure <= enumTONG_FIGURE_DIRECTOR)
  259. {
  260. m_BtnElder.CheckButton(FALSE);
  261. m_BtnCaptain.CheckButton(FALSE);
  262. m_BtnPilgarlic.CheckButton(FALSE);
  263. m_nSelectFigure = nFigure;
  264. switch(nFigure)
  265. {
  266. case enumTONG_FIGURE_MEMBER:
  267. m_BtnPilgarlic.CheckButton(TRUE);
  268. break;
  269. case enumTONG_FIGURE_MANAGER:
  270. m_BtnCaptain.CheckButton(TRUE);
  271. break;
  272. case enumTONG_FIGURE_DIRECTOR:
  273. m_BtnElder.CheckButton(TRUE);
  274. break;
  275. }
  276. m_BtnConfirm.Enable(TRUE);
  277. }
  278. else
  279. {
  280. m_BtnConfirm.Enable(FALSE);
  281. }
  282. }
  283. /*********************************************************************
  284. * 功能:弹出确认窗口
  285. **********************************************************************/
  286. void KUiTongAssignBox::PopupConfirmWindow(const char* pszInfo, unsigned int uHandleID)
  287. {
  288.     KUiTongGetString::OpenWindow(pszInfo, m_szTargetPlayerName, this, uHandleID, 2, 32);
  289. Hide();
  290. }
  291. /*********************************************************************
  292. * 功能:响应确认操作
  293. **********************************************************************/
  294. void KUiTongAssignBox::OnConfirm()
  295. {
  296. if(m_nSelectFigure != -1)
  297. {
  298. PopupConfirmWindow(m_szAssign, RESULT_T_ASSIGN);
  299. }
  300. else
  301. {
  302. m_TextError.SetText(m_szErrorNotSelectFigure);
  303. }
  304. }