2
0

Game.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // ----------------------------------------------------------------
  2. // From Game Programming in C++ by Sanjay Madhav
  3. // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
  4. //
  5. // Released under the BSD License
  6. // See LICENSE in root directory for full details.
  7. // ----------------------------------------------------------------
  8. #pragma once
  9. #include <SDL/SDL.h>
  10. #include <unordered_map>
  11. #include <string>
  12. #include <vector>
  13. #include "Math.h"
  14. #include "SoundEvent.h"
  15. class Game
  16. {
  17. public:
  18. Game();
  19. bool Initialize();
  20. void RunLoop();
  21. void Shutdown();
  22. void AddActor(class Actor* actor);
  23. void RemoveActor(class Actor* actor);
  24. class Renderer* GetRenderer() { return mRenderer; }
  25. class AudioSystem* GetAudioSystem() { return mAudioSystem; }
  26. private:
  27. void ProcessInput();
  28. void HandleKeyPress(int key);
  29. void UpdateGame();
  30. void GenerateOutput();
  31. void LoadData();
  32. void UnloadData();
  33. // All the actors in the game
  34. std::vector<class Actor*> mActors;
  35. // Any pending actors
  36. std::vector<class Actor*> mPendingActors;
  37. class Renderer* mRenderer;
  38. class AudioSystem* mAudioSystem;
  39. Uint32 mTicksCount;
  40. bool mIsRunning;
  41. // Track if we're updating actors right now
  42. bool mUpdatingActors;
  43. // Game-specific code
  44. class FPSActor* mFPSActor;
  45. class FollowActor* mFollowActor;
  46. class OrbitActor* mOrbitActor;
  47. class SplineActor* mSplineActor;
  48. class Actor* mStartSphere;
  49. class Actor* mEndSphere;
  50. class SpriteComponent* mCrosshair;
  51. SoundEvent mMusicEvent;
  52. SoundEvent mReverbSnap;
  53. void ChangeCamera(int mode);
  54. };