StateMenu.cpp
上传用户:jalin138
上传日期:2022-02-12
资源大小:5720k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #include "StateMenu.h"
  2. #include "StatePlay.h"
  3. #include "StateInfo.h"
  4. #include <stdio.h>
  5. CStateMenu::CStateMenu(void)
  6. {
  7. memset(m_pButton, NULL, sizeof(m_pButton));
  8. char sprName[64] = {0};
  9. hgeSprite *mt_spr = NULL;
  10. for (int i  = 0;i < 4;i ++)
  11. {
  12. sprintf_s(sprName, sizeof(sprName), "Button%d",i+1);
  13. mt_spr = g_Res->GetSprite( sprName );
  14. m_pButton[i] = new CbuttonPicture( mt_spr,
  15. 246.0f,
  16. 371.0f + i * 20.0f,
  17. 160.0f,
  18. 20.0f,
  19. 1.5f );
  20. }
  21. mt_spr = NULL;
  22. m_nState = 0;
  23. }
  24. CStateMenu::~CStateMenu(void)
  25. {
  26. for (int i = 0;i < 4;i ++)
  27. {
  28. SAFE_DELETE( m_pButton[i] );
  29. }
  30. }
  31. // 实现逻辑接口
  32. bool CStateMenu::Logic(void)
  33. {
  34. for (int i = 0;i < 4;i ++)
  35. {
  36. if ( m_pButton[i]->Logic( 27.0f,270.0f+i*40.0f ) )
  37. {
  38. m_nState = i;
  39. return true;
  40. }
  41. }
  42. return false;
  43. }
  44. // 实现渲染接口
  45. void CStateMenu::Render(void)
  46. {
  47. RenderBack();
  48. for (int i = 0;i < 4;i ++)
  49. {
  50. m_pButton[i]->Render();
  51. }
  52. }
  53. // 实现改变状态接口
  54. bool CStateMenu::Handle(CSceneManage *_SceneManage)
  55. {
  56. if ( NULL == _SceneManage )
  57. return false;
  58. switch ( m_nState )
  59. {
  60. case 0:
  61. _SceneManage->ChangeState( new CStatePlay() );
  62. break;
  63. case 1:
  64. break;
  65. case 2:
  66. _SceneManage->ChangeState( new CStateInfo() );
  67. break;
  68. case 3:
  69. return true;
  70. break;
  71. default:
  72. break;
  73. }
  74. return false;
  75. }