forked from AmrSamy59/7rb-imbaba
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGame.h
More file actions
81 lines (78 loc) · 2.28 KB
/
Game.h
File metadata and controls
81 lines (78 loc) · 2.28 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#pragma once
#include "Units/Unit.h"
#include "DS/Queues/LinkedQueue.h"
#include"DS/PriorityQueue/priQueue.h"
#include "Armies/EarthArmy.h"
#include "Armies/AlienArmy.h"
#include"Armies/AllyArmy.h"
#include "Armies/AlienArmyConfig.h"
#include "Armies/EarthArmyConfig.h"
#include"Armies/AllyArmyConfig.h"
#include "Utils/randGen.h"
#include "Utils/OutputLogger.h"
#include <string>
#include <fstream>
class randGen;
class OutputLogger;
class Game
{
private:
LinkedQueue<Unit*> Killed;
priQueue<Unit*> UML;
EarthArmy* earthArmy;
AlienArmy* alienArmy;
AllyArmy* allyArmy;
randGen* randGenerator;
OutputLogger* logger;
char mode; // 's' silence, 'i' interactive
int game_status; // 0 ongoing, 1 earth won, -1 aliens won, 2 tie
string file;
int timeStep;
bool ETapproval = false;
int HealedUnitCount = 0;
int DestructedUnitsCount[Unit::LastType];
public:
Game(char _mode ='i');
void PlayGame();
void LogGameResult();
char GetGameMode();
int checkGameStatus();
void NextTimeStep();
int GetCurrentTimeStep()const;
//These getters for telling randgen which Id and Tj to generate Unit with
int getNextUnitId(char army);
int getTj();
Game* GetGamePtr();
/////////////////////////////////////////////////////////////
bool canArmiesAttack();
bool CanEtAttackAs();
double GetRatio();
void addUnit(Unit* unit, bool newUnit=false);
void AddToKilledList(Unit* unit);
int GetDestructedUnitCount(Unit::UnitType type);
////////////////////////////////////////////////////////////////
Unit* pickAlienunit(Unit::UnitType type, bool fromBack = false);
void ReturnAlienUnit(Unit* r);
double GetInfectionProb();
void AddInfectedCountTotal();
double GetInfectedRatio();
///////////////////////////////////////////
Unit* PickEarthUnit(Unit::UnitType type);
void ReturnEarthUnit(Unit* r);
//////////////////////////////////
Unit* PickAllyUnit();
void ReturnAllyUnit(Unit* r);
/////////////////////////////////
Unit* GetFromUML();
void AddToUML(Unit* unit);
void CheckingUML();
void ReturnToUML(Unit* unit);
void IncrementHealedUnitCount();
int GetHealedUnitCount()const;
bool canAddUnit(char army);
///////////////////////////////////
void PrintKilledList();
void PrintUML();
void loadFile(int& N, int& Prob,EarthArmyConfig* eParams, AlienArmyConfig* aParams, AllyArmyConfig* allyParams);
~Game();
};