/Code/IntroGame/DemoGameManager.h

http://angel-engine.googlecode.com/ · C Header · 82 lines · 35 code · 17 blank · 30 comment · 0 complexity · ff4d27b3708bcf7626a046323d19ab4e MD5 · raw file

  1. //////////////////////////////////////////////////////////////////////////////
  2. // Copyright (C) 2008-2012, Shane Liesegang
  3. // All rights reserved.
  4. //
  5. // Redistribution and use in source and binary forms, with or without
  6. // modification, are permitted provided that the following conditions are met:
  7. //
  8. // * Redistributions of source code must retain the above copyright
  9. // notice, this list of conditions and the following disclaimer.
  10. // * Redistributions in binary form must reproduce the above copyright
  11. // notice, this list of conditions and the following disclaimer in the
  12. // documentation and/or other materials provided with the distribution.
  13. // * Neither the name of the copyright holder nor the names of any
  14. // contributors may be used to endorse or promote products derived from
  15. // this software without specific prior written permission.
  16. //
  17. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  18. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19. // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20. // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  21. // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  22. // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  23. // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  24. // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  25. // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  26. // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  27. // POSSIBILITY OF SUCH DAMAGE.
  28. //////////////////////////////////////////////////////////////////////////////
  29. #pragma once
  30. #include "stdafx.h"
  31. #include <vector>
  32. #include <string>
  33. class DemoScreen : public Renderable
  34. {
  35. public:
  36. DemoScreen();
  37. virtual void Start();
  38. virtual void Stop(); //calls remove on all _objects and deletes them
  39. virtual void Update(float dt);
  40. virtual void Render();
  41. virtual void ReceiveMessage(Message *message) {}
  42. protected:
  43. std::vector<Renderable*> _objects;
  44. };
  45. //DemoGameManager is a singleton and inherits from:
  46. // GameManager -- so we receive update and render calls, plus collision notifications
  47. #define theDemoGame DemoGameManager::GetInstance()
  48. class DemoGameManager : public GameManager
  49. {
  50. public:
  51. void MoveForwards();
  52. void MoveBackwards();
  53. static DemoGameManager &GetInstance();
  54. DemoScreen* GetCurrentScreen();
  55. virtual void Render();
  56. virtual void SoundEnded(AngelSoundHandle sound);
  57. virtual void ReceiveMessage(Message* message);
  58. protected:
  59. DemoGameManager();
  60. static DemoGameManager *s_DemoGameManager;
  61. private:
  62. std::vector<DemoScreen*> _screens;
  63. int _current;
  64. AngelSampleHandle sample;
  65. };