-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGameState.ixx
54 lines (43 loc) · 1.51 KB
/
GameState.ixx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
* Game state object holds abstract information.
* Singleton.
*/
module;
export module GameState;
import <vector>;
import <iostream>;
import TypeStorage;
using namespace std;
export class GameState {
public:
/* Deleted copy constructor and assignment operator to prevent copies */
GameState(const GameState&) = delete;
GameState& operator=(const GameState&) = delete;
/* static method to get instance of the singleton */
static GameState& getInstance() {
static GameState instance; /* will be destroyed when program exits */
return instance;
}
/* getters */
ScreenStruct getScreenStruct() { return screenStruct; }
ScreenType getScreenType() { return screenStruct.screenType; }
int getScreenId() { return screenStruct.id; }
int getPlayerID() { return playerID; }
/* setters */
void setScreenStruct(ScreenStruct incomingStruct) { screenStruct = incomingStruct; }
void setScreenId(int incomingId) { screenStruct.id = incomingId; }
void setScreenType(ScreenType incomingScreenType) { screenStruct.screenType = incomingScreenType; }
void setPlayerID(int id) { playerID = id; }
private:
/* Constructor is private to prevent outside instantiation */
GameState() {
cout << "GameState created\n";
screenStruct.screenType = ScreenType::Menu;
screenStruct.id = -1;
}
/* private destructor prevents deletion through a pointer to the base class */
~GameState() = default;
/* current screen data (main.cpp reads this for the screen to load) */
ScreenStruct screenStruct;
int playerID;
};