home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / demo2 / gamestate.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-13  |  3.6 KB  |  173 lines

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    CGameState
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    06/05/00
  8. //
  9. // Base:    None
  10. //
  11. // Derived:    CMainMenuState
  12. //            COptionsMenuState
  13. //            CPlayGameState
  14. //            CScoreEntryState
  15. //            CScoreTableState
  16. //
  17. //-------------------------------------------------------------
  18.  
  19. #include "demo2.h"
  20.  
  21. //-------------------------------------------------------------
  22.  
  23. gsCScreen        CGameState::m_screen;
  24. gsCKeyboard        CGameState::m_keyboard;
  25.  
  26. gsCFont            CGameState::m_small_font;
  27. gsCFont            CGameState::m_medium_font;
  28. gsCStarfield    CGameState::m_starfield;
  29.  
  30. CScene            CGameState::m_scene;
  31. CDemo2 *        CGameState::m_demo2 = 0;
  32.  
  33. //-------------------------------------------------------------
  34.  
  35. CGameState::CGameState()
  36. {
  37. }
  38.  
  39. //-------------------------------------------------------------
  40.  
  41. CGameState::~CGameState()
  42. {
  43. }
  44.  
  45. //-------------------------------------------------------------
  46.  
  47. bool CGameState::initialize(CDemo2 *demo2)
  48. {
  49.     m_demo2 = demo2;
  50.  
  51.     gsCFile::setDirectory(DIRECTORY_ROOT);
  52.  
  53.     if (!m_keyboard.create())
  54.         return false;
  55.  
  56.     if (!m_screen.createWindowed(m_demo2->getWindow()))
  57.         return false;
  58.  
  59.     // pre-load graphics
  60.  
  61.     gsCFile::setDirectory(DIRECTORY_GRAPHICS);
  62.  
  63.     if (!loadGraphics())
  64.         return false;
  65.  
  66.     m_starfield.initialize(8);
  67.  
  68.     m_demo2->changeState(CPlayGameState::instance());
  69.  
  70.     return true;
  71. }
  72.  
  73. //-------------------------------------------------------------
  74.  
  75. bool CGameState::shutdown()
  76. {
  77.     m_medium_font.destroy();
  78.     m_small_font.destroy();
  79.  
  80.     m_scene.destroyAll();
  81.  
  82.     m_screen.destroy();
  83.  
  84.     m_keyboard.destroy();
  85.  
  86.     return true;
  87. }
  88.  
  89. //-------------------------------------------------------------
  90.  
  91. bool CGameState::changeState(CGameState *new_game_state)
  92. {
  93.     if (m_demo2)
  94.         return m_demo2->changeState(new_game_state);
  95.  
  96.     return false;
  97. }
  98.  
  99. //-------------------------------------------------------------
  100.  
  101. bool CGameState::create()
  102. {
  103.     return true;
  104. }
  105.  
  106. //-------------------------------------------------------------
  107.  
  108. bool CGameState::update()
  109. {
  110.     return true;
  111. }
  112.  
  113. //-------------------------------------------------------------
  114.  
  115. bool CGameState::destroy()
  116. {
  117.     return true;
  118. }
  119.  
  120. //-------------------------------------------------------------
  121.  
  122. bool CGameState::loadGraphics()
  123. {
  124.     if (!m_scene.loadImages())
  125.         return false;
  126.  
  127.     if (!m_small_font.load("font8x8.bmp"))
  128.         return false;
  129.  
  130.     m_small_font.setTileSize(gsCPoint(8,8));
  131.     m_small_font.enableColourKey(gsCColour(gsMAGENTA));
  132.  
  133.     if (!m_medium_font.load("font16x16.bmp"))
  134.         return false;
  135.  
  136.     m_medium_font.setTileSize(gsCPoint(16,16));
  137.     m_medium_font.enableColourKey(gsCColour(gsMAGENTA));
  138.  
  139.     return true;
  140. }
  141.  
  142. //-------------------------------------------------------------
  143.  
  144. gsCApplication *CGameState::getApplication()
  145. {
  146.     return m_demo2;
  147. }
  148.  
  149. //-------------------------------------------------------------
  150.  
  151. gsKeyCode CGameState::getKey()
  152. {
  153.     gsKeyCode key = m_keyboard.getKey();
  154.  
  155.     return key;
  156. }
  157.  
  158. //-------------------------------------------------------------
  159.  
  160. void CGameState::getControl(Controls& controls,int player)
  161. {
  162.     controls.left = m_keyboard.testKey(gsKEY_LEFT);
  163.     controls.right = m_keyboard.testKey(gsKEY_RIGHT);
  164.     controls.up = m_keyboard.testKey(gsKEY_UP);
  165.     controls.down = m_keyboard.testKey(gsKEY_DOWN);
  166.     controls.fire = m_keyboard.testKey(gsKEY_LCONTROL,gsKEY_STATE);
  167.     controls.firePressed = m_keyboard.testKey(gsKEY_LCONTROL,gsKEY_PRESSED);
  168.     controls.divePressed = m_keyboard.testKey(gsKEY_LSHIFT,gsKEY_PRESSED);
  169.     controls.reversePressed = m_keyboard.testKey(gsKEY_ALT,gsKEY_PRESSED);
  170. }
  171.  
  172. //-------------------------------------------------------------
  173.