home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / demo4 / gamestate.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-12  |  3.7 KB  |  176 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 "demo4.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. CLevel            CGameState::m_level;
  31. CScene            CGameState::m_scene;
  32. CDemo4 *        CGameState::m_demo4 = 0;
  33.  
  34. //-------------------------------------------------------------
  35.  
  36. CGameState::CGameState()
  37. {
  38. }
  39.  
  40. //-------------------------------------------------------------
  41.  
  42. CGameState::~CGameState()
  43. {
  44. }
  45.  
  46. //-------------------------------------------------------------
  47.  
  48. bool CGameState::initialize(CDemo4 *demo4)
  49. {
  50.     m_demo4 = demo4;
  51.  
  52.     gsCFile::setDirectory(DIRECTORY_ROOT);
  53.  
  54.     if (!m_keyboard.create())
  55.         return false;
  56.  
  57.     if (!m_screen.createWindowed(m_demo4->getWindow()))
  58.         return false;
  59.  
  60.     // pre-load graphics
  61.  
  62.     gsCFile::setDirectory(DIRECTORY_GRAPHICS);
  63.  
  64.     if (!loadGraphics())
  65.         return false;
  66.  
  67.     m_starfield.initialize(8);
  68.  
  69.     m_demo4->changeState(CPlayGameState::instance());
  70.  
  71.     return true;
  72. }
  73.  
  74. //-------------------------------------------------------------
  75.  
  76. bool CGameState::shutdown()
  77. {
  78.     m_level.m_image.destroy();
  79.  
  80.     m_medium_font.destroy();
  81.     m_small_font.destroy();
  82.  
  83.     m_scene.destroyAll();
  84.  
  85.     m_screen.destroy();
  86.  
  87.     m_keyboard.destroy();
  88.  
  89.     return true;
  90. }
  91.  
  92. //-------------------------------------------------------------
  93.  
  94. bool CGameState::changeState(CGameState *new_game_state)
  95. {
  96.     if (m_demo4)
  97.         return m_demo4->changeState(new_game_state);
  98.  
  99.     return false;
  100. }
  101.  
  102. //-------------------------------------------------------------
  103.  
  104. bool CGameState::create()
  105. {
  106.     return true;
  107. }
  108.  
  109. //-------------------------------------------------------------
  110.  
  111. bool CGameState::update()
  112. {
  113.     return true;
  114. }
  115.  
  116. //-------------------------------------------------------------
  117.  
  118. bool CGameState::destroy()
  119. {
  120.     return true;
  121. }
  122.  
  123. //-------------------------------------------------------------
  124.  
  125. bool CGameState::loadGraphics()
  126. {
  127.     if (!m_scene.loadImages())
  128.         return false;
  129.  
  130.     if (!m_small_font.load("font8x8.bmp"))
  131.         return false;
  132.  
  133.     m_small_font.setTileSize(gsCPoint(8,8));
  134.     m_small_font.enableColourKey(gsCColour(gsMAGENTA));
  135.  
  136.     if (!m_medium_font.load("font16x16.bmp"))
  137.         return false;
  138.  
  139.     m_medium_font.setTileSize(gsCPoint(16,16));
  140.     m_medium_font.enableColourKey(gsCColour(gsMAGENTA));
  141.  
  142.     return true;
  143. }
  144.  
  145. //-------------------------------------------------------------
  146.  
  147. gsCApplication *CGameState::getApplication()
  148. {
  149.     return m_demo4;
  150. }
  151.  
  152. //-------------------------------------------------------------
  153.  
  154. gsKeyCode CGameState::getKey()
  155. {
  156.     gsKeyCode key = m_keyboard.getKey();
  157.  
  158.     return key;
  159. }
  160.  
  161. //-------------------------------------------------------------
  162.  
  163. void CGameState::getControl(Controls& controls,int player)
  164. {
  165.     controls.left = m_keyboard.testKey(gsKEY_LEFT);
  166.     controls.right = m_keyboard.testKey(gsKEY_RIGHT);
  167.     controls.up = m_keyboard.testKey(gsKEY_UP);
  168.     controls.down = m_keyboard.testKey(gsKEY_DOWN);
  169.     controls.fire = m_keyboard.testKey(gsKEY_LCONTROL,gsKEY_STATE);
  170.     controls.firePressed = m_keyboard.testKey(gsKEY_LCONTROL,gsKEY_PRESSED);
  171.     controls.divePressed = m_keyboard.testKey(gsKEY_LSHIFT,gsKEY_PRESSED);
  172.     controls.reversePressed = m_keyboard.testKey(gsKEY_ALT,gsKEY_PRESSED);
  173. }
  174.  
  175. //-------------------------------------------------------------
  176.