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

模拟服务器

开发平台:

C/C++

  1. /*******************************************************************************
  2. File        : UiTrembleItem.cpp
  3. Creator     : Fyt(Fan Zhanpeng)
  4. create data : 09-08-2003(mm-dd-yyyy)
  5. Description : 打造武器的界面
  6. ********************************************************************************/
  7. #include "KWin32.h"
  8. #include "KIniFile.h"
  9. #include "CoreShell.h"
  10. #include "GameDataDef.h"
  11. #include "../elem/wnds.h"
  12. #include "../Elem/WndMessage.h"
  13. #include "../UiBase.h"
  14. #include "../UiSoundSetting.h"
  15. #include "UiTrembleItem.h"
  16. #define TREMBLE_ITEM_INI "打造物品.ini"
  17. KUiTrembleItem* KUiTrembleItem::ms_pSelf = NULL;
  18. //////////////////////////////////////////////////////////////////////
  19. // Construction/Destruction
  20. //////////////////////////////////////////////////////////////////////
  21. KUiTrembleItem::KUiTrembleItem()
  22. {
  23. m_nStatus = STATUS_WAITING_MATERIALS;
  24. }
  25. KUiTrembleItem::~KUiTrembleItem()
  26. {
  27. }
  28. /*********************************************************************
  29. * 功能:打开窗口
  30. **********************************************************************/
  31. KUiTrembleItem* KUiTrembleItem::OpenWindow()
  32. {
  33. if (ms_pSelf == NULL)
  34. {
  35. ms_pSelf = new KUiTrembleItem;
  36. if (ms_pSelf)
  37. ms_pSelf->Initialize();
  38. }
  39. if (ms_pSelf)
  40. {
  41. UiSoundPlay(UI_SI_WND_OPENCLOSE);
  42. ms_pSelf->m_nStatus = STATUS_WAITING_MATERIALS;
  43. ms_pSelf->BringToTop();
  44. ms_pSelf->Show();
  45. }
  46. return ms_pSelf;
  47. }
  48. /*********************************************************************
  49. * 功能:如果窗口正被显示,则返回实例指针
  50. **********************************************************************/
  51. KUiTrembleItem* KUiTrembleItem::GetIfVisible()
  52. {
  53. if (ms_pSelf && ms_pSelf->IsVisible())
  54. return ms_pSelf;
  55. return NULL;
  56. }
  57. /*********************************************************************
  58. * 功能:关闭窗口,同时可以选则是否删除对象实例
  59. **********************************************************************/
  60. void KUiTrembleItem::CloseWindow(bool bDestory)
  61. {
  62. if (ms_pSelf)
  63. {
  64. ms_pSelf->Hide();
  65. if (bDestory)
  66. {
  67. ms_pSelf->Destroy();
  68. ms_pSelf = NULL;
  69. }
  70. }
  71. }
  72. /*********************************************************************
  73. * 功能:初始化
  74. **********************************************************************/
  75. void KUiTrembleItem::Initialize()
  76. {
  77. AddChild(&m_GemSpirit);
  78. AddChild(&m_GemWater);
  79. AddChild(&m_GemEarth);
  80. AddChild(&m_GemLevel);
  81. AddChild(&m_GemFire);
  82. AddChild(&m_GemGold);
  83. AddChild(&m_GemWood);
  84. AddChild(&m_Item);
  85. AddChild(&m_Confirm);
  86. AddChild(&m_Cancel);
  87. AddChild(&m_TrembleEffect);
  88. char Scheme[256];
  89. g_UiBase.GetCurSchemePath(Scheme, 256);
  90. LoadScheme(Scheme);
  91. Wnd_AddWindow(this);
  92. }
  93. /*********************************************************************
  94. * 功能:载入界面方案
  95. **********************************************************************/
  96. void KUiTrembleItem::LoadScheme(const char* pScheme)
  97. {
  98. if(ms_pSelf)
  99. {
  100. char Buff[128];
  101.      KIniFile Ini;
  102.      sprintf(Buff, "%s\%s", pScheme, TREMBLE_ITEM_INI);
  103.      if (Ini.Load(Buff))
  104.      {
  105. ms_pSelf->Init(&Ini, "Main");
  106. ms_pSelf->m_Item.Init(&Ini, "Item");
  107. ms_pSelf->m_GemGold.Init(&Ini, "GemGold");
  108. ms_pSelf->m_GemWood.Init(&Ini, "GemWood");
  109. ms_pSelf->m_GemWater.Init(&Ini, "GemWater");
  110. ms_pSelf->m_GemFire.Init(&Ini, "GemFire");
  111. ms_pSelf->m_GemEarth.Init(&Ini, "GemEarth");
  112. ms_pSelf->m_GemLevel.Init(&Ini, "GemLevel");
  113. ms_pSelf->m_GemSpirit.Init(&Ini, "GemSpirit");
  114. ms_pSelf->m_TrembleEffect.Init(&Ini, "Effect");
  115. ms_pSelf->m_Confirm.Init(&Ini, "Assemble");
  116. ms_pSelf->m_Cancel.Init(&Ini, "Close");
  117. }
  118. }
  119. }
  120. /*********************************************************************
  121. * 功能:载入界面方案
  122. **********************************************************************/
  123. int KUiTrembleItem::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
  124. {
  125. switch(uMsg)
  126. {
  127. case WND_N_BUTTON_CLICK:
  128. if(uParam == (unsigned int)&m_Confirm)
  129. {
  130. }
  131. else if(uParam == (unsigned int)&m_Cancel)
  132. {
  133. CloseWindow();
  134. }
  135. break;
  136. default:
  137. return KWndImage::WndProc(uMsg, uParam, nParam);
  138. }
  139. return 1;
  140. }
  141. /*********************************************************************
  142. * 功能:活动函数
  143. **********************************************************************/
  144. void KUiTrembleItem::Breathe()
  145. {
  146. if(m_nStatus == STATUS_BEGIN_TREMBLE)
  147. {
  148. m_TrembleEffect.Show();
  149. m_TrembleEffect.SetFrame(0);
  150. m_nStatus = STATUS_TREMBLING;
  151. }
  152. else if(m_nStatus == STATUS_TREMBLING)
  153. {
  154. if(!PlayEffect())
  155. {
  156. m_nStatus = STATUS_CHANGING_ITEM;
  157. m_TrembleEffect.Hide();
  158. }
  159. }
  160. else if(m_nStatus == STATUS_CHANGING_ITEM)
  161. {
  162. UpdateResult();
  163. m_nStatus = STATUS_FINISH;
  164. }
  165. }
  166. /*********************************************************************
  167. * 功能:播放特效
  168. **********************************************************************/
  169. int KUiTrembleItem::PlayEffect()
  170. {
  171. if(m_TrembleEffect.GetMaxFrame() == 0 ||
  172.    m_TrembleEffect.GetMaxFrame() >= m_TrembleEffect.GetCurrentFrame() - 1)
  173. {
  174. m_TrembleEffect.SetFrame(0);
  175. return 0;
  176. }
  177. else
  178. {
  179. m_TrembleEffect.NextFrame();
  180. return 1;
  181. }
  182. }
  183. /*********************************************************************
  184. * 功能:把结果更新到界面上
  185. **********************************************************************/
  186. void KUiTrembleItem::UpdateResult()
  187. {
  188. }
  189. int KCanGetNumImage::GetMaxFrame()
  190. {
  191. return m_Image.nNumFrames;
  192. }
  193. int KCanGetNumImage::GetCurrentFrame()
  194. {
  195. return m_Image.nFrame;
  196. }