Added copy operators for game's static instance

Player
CommandParser can be swapped but not copied.
This commit is contained in:
2026-08-28 20:38:11 -05:00
parent ef54fa6609
commit 45c365e317
6 changed files with 99 additions and 12 deletions
+15 -5
View File
@@ -2,6 +2,7 @@
#include <filesystem>
#include <fstream>
#include <string>
#include <utility>
#include <vector>
#include "CommandParser.h"
#include "game.h"
@@ -37,6 +38,9 @@ private:
public:
Game();
Game(Game& rhs);
Game& operator=(Game& rhs);
inline bool GetIsActive() const { return isActive; }
bool Init();
void Run();
@@ -54,18 +58,24 @@ public:
void SetIsActive(const bool active) { isActive = active; }
static void SetGameInstance(Game * g) {
game_ = g;
}
static Game &Instance() {
if (game_ == nullptr) {
game_ = new Game();
game_->Init();
}
return *game_;
}
~Game() = default;
inline friend void swap(Game &lhs, Game &rhs)
{
using std::swap;
swap(lhs.isActive, rhs.isActive);
swap(lhs.progress, rhs.progress);
swap(lhs.player, rhs.player);
swap(lhs.parser, rhs.parser);
}
~Game();
};
// Commands