| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // ----------------------------------------------------------------
- // From Game Programming in C++ by Sanjay Madhav
- // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
- //
- // Released under the BSD License
- // See LICENSE in root directory for full details.
- // ----------------------------------------------------------------
- #pragma once
- #include "SDL/SDL.h"
- #include <unordered_map>
- #include <string>
- #include <vector>
- #include "Math.h"
- #include "Board.h"
- class Game
- {
- public:
- Game();
- bool Initialize();
- void RunLoop();
- void Shutdown();
- void AddActor(class Actor* actor);
- void RemoveActor(class Actor* actor);
- void AddSprite(class SpriteComponent* sprite);
- void RemoveSprite(class SpriteComponent* sprite);
-
- SDL_Texture* GetTexture(const std::string& fileName);
- // Helper to draw a texture without sprite components
- void DrawTexture(SDL_Texture* texture, const Vector2& pos, const Vector2& size);
- private:
- void ProcessInput();
- void UpdateGame();
- void GenerateOutput();
- void LoadData();
- void UnloadData();
-
- // Map of textures loaded
- std::unordered_map<std::string, SDL_Texture*> mTextures;
- // All the actors in the game
- std::vector<class Actor*> mActors;
- // Any pending actors
- std::vector<class Actor*> mPendingActors;
- // All the sprite components drawn
- std::vector<class SpriteComponent*> mSprites;
- SDL_Window* mWindow;
- SDL_Renderer* mRenderer;
- Uint32 mTicksCount;
- bool mIsRunning;
- // Track if we're updating actors right now
- bool mUpdatingActors;
- // Game-specific
- BoardState mBoardState;
- };
|