merge
This commit is contained in:
commit
fdaa535b29
@ -68,7 +68,7 @@ players:
|
||||
startXPosition: 600
|
||||
fireCooldown: 10
|
||||
speed: 10
|
||||
lives: 3
|
||||
lives: 100
|
||||
user1:
|
||||
color: red
|
||||
keys:
|
||||
|
@ -155,17 +155,17 @@ void ConfigBuilder::readInvaderType(const configKey& baseKey, InvaderTypeDef& in
|
||||
|
||||
void ConfigBuilder::readConfig() {
|
||||
|
||||
collectedData.theme = getString("general.theme");
|
||||
collectedData.maxFPS = getInt("general.maxFPS");
|
||||
collectedData.theme = getString("general.theme", "bad");
|
||||
collectedData.maxFPS = getInt("general.maxFPS", 30, 1, 60);
|
||||
|
||||
readGrid("grid");
|
||||
|
||||
// players
|
||||
collectedData.playersWidth = getInt("players.width", 100, 0, 500);
|
||||
collectedData.playersWidth = getInt("players.width", 100, 50, 500);
|
||||
collectedData.startXPosition = getInt("players.startXPosition",600 ,0 ,1200);
|
||||
collectedData.playersSpeed = getInt("players.speed",1,0,100);
|
||||
collectedData.playersFireCooldown = getInt("players.fireCooldown",10,1,10000);
|
||||
collectedData.playersLives = getInt("players.lives",3,1,1000);
|
||||
collectedData.playersSpeed = getInt("players.speed",1,1,100);
|
||||
collectedData.playersFireCooldown = getInt("players.fireCooldown",10,1,100);
|
||||
collectedData.playersLives = getInt("players.lives",3,1,100);
|
||||
|
||||
// the scalability behind the vector of players is only an illusion, because we force player count to be 1 or 2
|
||||
// It was done so the 2+ players implementation could be easier in the future, if wanted
|
||||
@ -174,24 +174,24 @@ void ConfigBuilder::readConfig() {
|
||||
readPlayer("players.user2", collectedData.playerDefs[1]);
|
||||
|
||||
// invaders
|
||||
collectedData.invadersSize = getInt("invaders.size",30,10,1000);
|
||||
collectedData.invadersSpeed = getInt("invaders.speed",7,1,1000);
|
||||
collectedData.invadersDistance = getInt("invaders.distance",15,5,1000);
|
||||
collectedData.invadersFireCooldown = getInt("invaders.fireCooldown",0,0,1000);
|
||||
collectedData.invadersSize = getInt("invaders.size",30,10,100);
|
||||
collectedData.invadersSpeed = getInt("invaders.speed",7,1,100);
|
||||
collectedData.invadersDistance = getInt("invaders.distance",15,5,100);
|
||||
collectedData.invadersFireCooldown = getInt("invaders.fireCooldown",0,0,100);
|
||||
|
||||
readInvaderType("invaders.typeA", collectedData.invadersDef[InvaderType::TYPEA]);
|
||||
readInvaderType("invaders.typeB", collectedData.invadersDef[InvaderType::TYPEB]);
|
||||
readInvaderType("invaders.typeC", collectedData.invadersDef[InvaderType::TYPEC]);
|
||||
|
||||
// projectiles
|
||||
collectedData.missilesWidth = getInt("projectiles.missiles.width",10,5,1000);
|
||||
collectedData.missilesWidth = getInt("projectiles.missiles.width",10,5,100);
|
||||
collectedData.missilesLength = collectedData.missilesWidth*PROJ_LENGTH_FACTOR;
|
||||
collectedData.missilesSpeed = getInt("projectiles.missiles.speed",10,5,1000);
|
||||
collectedData.missilesSpeed = getInt("projectiles.missiles.speed",10,5,100);
|
||||
getColor("projectiles.missiles.color", collectedData.missilesColor);
|
||||
|
||||
collectedData.torpedosWidth = getInt("projectiles.torpedos.width",10,1,1000);
|
||||
collectedData.torpedosWidth = getInt("projectiles.torpedos.width",10,1,100);
|
||||
collectedData.torpedosLength = collectedData.torpedosWidth*PROJ_LENGTH_FACTOR;
|
||||
collectedData.torpedosSpeed = getInt("projectiles.torpedos.speed",10,1,1000);
|
||||
collectedData.torpedosSpeed = getInt("projectiles.torpedos.speed",10,1,100);
|
||||
getColor("projectiles.torpedos.color", collectedData.torpedosColor);
|
||||
}
|
||||
|
||||
|
@ -69,10 +69,11 @@ void Game::managedGames() {
|
||||
if(playMode==PlayMode::NONE){
|
||||
playMode = pm->showInitialMenu();
|
||||
}else{
|
||||
DEBUG_MSG("Starting game")
|
||||
initGame();
|
||||
enterGameLoop(); // will read the playMode
|
||||
DEBUG_MSG("END End of game")
|
||||
handleScoreSaving();
|
||||
cout << "END OF GAME" << endl;
|
||||
if(!pm->showDeathMenu(sm.scores))playMode = PlayMode::NONE;
|
||||
}
|
||||
}
|
||||
@ -113,6 +114,10 @@ void Game::initGame(){
|
||||
*
|
||||
* @return @WinValue::PLAYERS if the players won, @WinValue::INVADERS is the invaders won, WinValue::NOBODY else (also in case of error)
|
||||
*/
|
||||
|
||||
#define START_TIMER() DEBUG_INSTR(debugTime = chrono::high_resolution_clock::now())
|
||||
#define PRINT_TIMER(X) DEBUG_MSG((X) << " :" << chrono::duration_cast<chrono::nanoseconds>(chrono::high_resolution_clock::now()-debugTime).count())
|
||||
|
||||
WinValue Game::enterGameLoop(){ // returns when game is finished
|
||||
// computed in advance for performance reasons
|
||||
chrono::milliseconds maxFrameTime = chrono::milliseconds(1000/confData.maxFPS);
|
||||
@ -121,7 +126,11 @@ WinValue Game::enterGameLoop(){ // returns when game is finished
|
||||
unsigned fps = 0;
|
||||
typedef chrono::high_resolution_clock::time_point MyTimePoint;
|
||||
MyTimePoint fpsStartTime = {};
|
||||
|
||||
DEBUG_INSTR(MyTimePoint debugTime);
|
||||
while(window.isOpen()){
|
||||
DEBUG_INSTR(fflush(stdout));
|
||||
DEBUG_MSG("------------")
|
||||
|
||||
MyTimePoint startTime = chrono::high_resolution_clock::now();
|
||||
if(fpsStartTime.time_since_epoch()==chrono::seconds(0)){
|
||||
@ -130,26 +139,38 @@ WinValue Game::enterGameLoop(){ // returns when game is finished
|
||||
|
||||
pm->startFrame();
|
||||
|
||||
START_TIMER()
|
||||
managePlayers();
|
||||
PRINT_TIMER("manage players")
|
||||
START_TIMER()
|
||||
if(manageInvaders()) { // if they went down
|
||||
if (invadersTouchPlayer())return WinValue::INVADERS;
|
||||
tryAwakeGod();
|
||||
}
|
||||
PRINT_TIMER("manage invaders")
|
||||
|
||||
START_TIMER()
|
||||
if(manageGod())return WinValue::PLAYERS;
|
||||
if(arePlayersDead())return WinValue::GOD;
|
||||
PRINT_TIMER("god")
|
||||
|
||||
START_TIMER()
|
||||
moveMissiles();
|
||||
remCollidingProjectiles();
|
||||
moveTorpedos();
|
||||
remCollidingProjectiles();
|
||||
PRINT_TIMER("self collisions")
|
||||
|
||||
START_TIMER()
|
||||
checkMissilesAndPlayers();
|
||||
if(checkTorpedosAndInvaders())return WinValue::PLAYERS;
|
||||
PRINT_TIMER("collisions between entities")
|
||||
|
||||
if(arePlayersDead())return WinValue::INVADERS;
|
||||
|
||||
START_TIMER()
|
||||
displayAll(fps);
|
||||
PRINT_TIMER("display")
|
||||
|
||||
pm->endFrame();
|
||||
|
||||
|
@ -62,6 +62,7 @@ bool Game::manageInvaders(){
|
||||
}else --fireCooldown;
|
||||
|
||||
// moving
|
||||
// TODO fix this lol
|
||||
if(direction){ // go to the right
|
||||
int end = basePos.getX(); // start Position
|
||||
end+= grid.size() * confData.invadersSize; // add the invaders
|
||||
|
Loading…
Reference in New Issue
Block a user