config def + true config file warning : cant lunch game
This commit is contained in:
parent
3dcdcadff3
commit
98358bba05
178
config.yml
178
config.yml
@ -1,13 +1,67 @@
|
|||||||
# General configuration
|
#############################
|
||||||
|
# #
|
||||||
|
# General configuration #
|
||||||
|
# #
|
||||||
|
#############################
|
||||||
|
#
|
||||||
|
# The setting maxFPS deffines the maximum refresh rate at which the game will
|
||||||
|
# run for a pleasant experience it should be above 30
|
||||||
|
# maxFPS: 30
|
||||||
|
#
|
||||||
general:
|
general:
|
||||||
maxFPS: 90
|
maxFPS: 30
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# #
|
||||||
|
# Player configuration #
|
||||||
|
# #
|
||||||
|
#############################
|
||||||
|
#
|
||||||
|
# # General player configuration
|
||||||
|
# Thoses settings will affect all players
|
||||||
|
#
|
||||||
|
# The width setting sets how wide will the players be during the gameplay
|
||||||
|
# session
|
||||||
|
# width: 70
|
||||||
|
#
|
||||||
|
# The startXPostion setting sets where will the players spawn at the beginning
|
||||||
|
# of the gameplay session, its in pixel relative to the left side of the screen
|
||||||
|
# for the first player, and to the right side of the screen for the second
|
||||||
|
# player
|
||||||
|
# startXPosition: 600
|
||||||
|
#
|
||||||
|
# The fireCooldown setting sets how many frames the players will have to wait
|
||||||
|
# before they can shoot again
|
||||||
|
# fireCooldown: 10
|
||||||
|
#
|
||||||
|
# The speed setting sets how many pixel will the players move when they hit
|
||||||
|
# their movement keys
|
||||||
|
# speed: 10
|
||||||
|
#
|
||||||
|
# The lives settings sets how many life points will have all players durring
|
||||||
|
# gameplay session
|
||||||
|
# lives: 3
|
||||||
|
#
|
||||||
|
# Player specific configuration
|
||||||
|
# Those are the personal setting of each player
|
||||||
|
#
|
||||||
|
# The color setting will set the color of the player durring gameplay session
|
||||||
|
# the supported values are "black","white","red","lime","blue","yellow","cyan"
|
||||||
|
# "magenta","silver","gray","maroon","olive","green","purple","teal","navy"
|
||||||
|
# color : red
|
||||||
|
#
|
||||||
|
# The keys settings will define the key configuration of the player
|
||||||
|
# the keys must be non function keys (F1 -> F12)
|
||||||
|
# keys:
|
||||||
|
# left: q
|
||||||
|
# right: d
|
||||||
|
# shoot: s
|
||||||
|
|
||||||
# Players config
|
|
||||||
players:
|
players:
|
||||||
width: 200
|
width: 70
|
||||||
startXPosition: 50
|
startXPosition: 600
|
||||||
fireCooldown: 40
|
fireCooldown: 10
|
||||||
speed: 6
|
speed: 10
|
||||||
lives: 3
|
lives: 3
|
||||||
user1:
|
user1:
|
||||||
color: red
|
color: red
|
||||||
@ -22,12 +76,53 @@ players:
|
|||||||
right: 6
|
right: 6
|
||||||
shoot: 5
|
shoot: 5
|
||||||
|
|
||||||
# Enemies config
|
|
||||||
|
#############################
|
||||||
|
# #
|
||||||
|
# Invader configuration #
|
||||||
|
# #
|
||||||
|
#############################
|
||||||
|
#
|
||||||
|
# # Invader general configuration
|
||||||
|
# Thoses settings will affect all invaders
|
||||||
|
#
|
||||||
|
# The fireCooldown setting sets how many frames the invaders will have to wait
|
||||||
|
# before they can shoot again, be aware that this setting is not representative
|
||||||
|
# of how often the invaders will shoot as there is a part of random
|
||||||
|
# fireCooldown: 0
|
||||||
|
#
|
||||||
|
# The size setting sets the size of the radius of the invaders in pixel
|
||||||
|
# size: 30
|
||||||
|
#
|
||||||
|
# The speed setting sets how many pixel will the invaders move each frame
|
||||||
|
# speed : 7
|
||||||
|
#
|
||||||
|
# The distance settings sets the distance in pixel between invaders
|
||||||
|
# distance: 15
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# # Invader specific configuration
|
||||||
|
# Those setting will affect a specific type of invader
|
||||||
|
#
|
||||||
|
# The point setting sets how many points will a player get by defeating this invader
|
||||||
|
# points: 100
|
||||||
|
#
|
||||||
|
# The color setting set what color this type of invader will be the supported
|
||||||
|
# colors are "black","white","red","lime","blue","yellow","cyan" "magenta",
|
||||||
|
# "silver","gray","maroon","olive","green","purple","teal","navy"
|
||||||
|
# color : green
|
||||||
|
#
|
||||||
|
# exemple:
|
||||||
|
# typeA:
|
||||||
|
# points: 100
|
||||||
|
# color: green
|
||||||
|
|
||||||
invaders:
|
invaders:
|
||||||
fireCooldown: 20
|
fireCooldown: 0
|
||||||
size: 30
|
size: 30
|
||||||
speed: 2
|
speed: 7
|
||||||
distance: 15 # distance in pixels between invaders
|
distance: 15
|
||||||
|
|
||||||
typeA:
|
typeA:
|
||||||
points: 100
|
points: 100
|
||||||
@ -40,22 +135,65 @@ invaders:
|
|||||||
color: red
|
color: red
|
||||||
|
|
||||||
|
|
||||||
# Projectiles config
|
#############################
|
||||||
|
# #
|
||||||
|
# Projectiles configuration #
|
||||||
|
# #
|
||||||
|
#############################
|
||||||
|
#
|
||||||
|
# # Projectiles cofiguration
|
||||||
|
# The settings are the same between torpedoes and missiles
|
||||||
|
#
|
||||||
|
# The color setting sets which color the projectile will be the supported
|
||||||
|
# colors are "black","white","red","lime","blue","yellow","cyan" "magenta",
|
||||||
|
# "silver","gray","maroon","olive","green","purple","teal","navy"
|
||||||
|
# color: yellow
|
||||||
|
#
|
||||||
|
# The speed settings set how many pixel will the projectile will move in a
|
||||||
|
# frame
|
||||||
|
# speed: 10
|
||||||
|
#
|
||||||
|
# The width setting set how wide in pixel will the projectile be
|
||||||
|
# witdth : 10
|
||||||
|
#
|
||||||
projectiles:
|
projectiles:
|
||||||
missiles:
|
missiles:
|
||||||
color: yellow
|
color: yellow
|
||||||
speed: 5
|
speed: 10
|
||||||
width: 10
|
width: 10
|
||||||
torpedos:
|
torpedos:
|
||||||
color: green
|
color: green
|
||||||
speed: 5
|
speed: 10
|
||||||
width: 10
|
width: 10
|
||||||
|
|
||||||
# God is not in configuration because you can't control a god
|
|
||||||
|
|
||||||
# Grid definition
|
#############################
|
||||||
# You can add more rows, make rows longer and add spaces
|
# #
|
||||||
|
# Grid configuration #
|
||||||
|
# #
|
||||||
|
#############################
|
||||||
|
#
|
||||||
|
# # Grid configuration
|
||||||
|
# The grid configuration deffines how and where the invaders will be placed
|
||||||
|
# during the gameplay session. Its a list of string where a charcarter in the
|
||||||
|
# string can be one of theses values :
|
||||||
|
# - ' ' : the space character for empty
|
||||||
|
# - 'A' : the 'A' character for a type A invader
|
||||||
|
# - 'B' : the 'B' character for a type B invader
|
||||||
|
# - 'C' : the 'C' character for a type C invader
|
||||||
|
#
|
||||||
|
# The grid can have an unlimited number of rows and each row can have an
|
||||||
|
# unlimited number of invaders
|
||||||
|
#
|
||||||
|
# Exemple
|
||||||
|
# - "CAAA AAAAAA AAAC"
|
||||||
|
# - "CBBBBB BBBBBC"
|
||||||
|
# - "CCCCCCCCCCCCCCCC"
|
||||||
|
#
|
||||||
grid:
|
grid:
|
||||||
- "CA AAAAAA AC"
|
- "CAAA AAAAAA AAAC"
|
||||||
- "CBBB BBBC"
|
- "CBBBBB BBBBBC"
|
||||||
- "CCCCCCCCCCCC"
|
- "CCCCCCCCCCCCCCCC"
|
||||||
|
|
||||||
|
|
||||||
|
# God is not in configuration because you can't control a god
|
@ -133,9 +133,10 @@ private:
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief main display function, clear the window and calls sub display functions
|
* @brief main display function, clear the window and calls sub display functions
|
||||||
|
* @param[in] fps : current screen refresh rate
|
||||||
* @fn void displayAll() const;
|
* @fn void displayAll() const;
|
||||||
*/
|
*/
|
||||||
void displayAll() const;
|
void displayAll(unsigned fps) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief display God related objets
|
* @brief display God related objets
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
// Syntax : DEBUG(cout << "hey" << endl)
|
// Syntax : DEBUG(cout << "hey" << endl)
|
||||||
// The debug flag defintion has been set here, but normally we would add it to the MakeFile
|
// The debug flag defintion has been set here, but normally we would add it to the MakeFile
|
||||||
//#define DEBUG_FLAG
|
#define DEBUG_FLAG
|
||||||
|
|
||||||
#ifdef DEBUG_FLAG
|
#ifdef DEBUG_FLAG
|
||||||
#define DEBUG_MSG(X) cerr << "DEBUG: " << X << endl;
|
#define DEBUG_MSG(X) cerr << "DEBUG: " << X << endl;
|
||||||
|
@ -158,11 +158,11 @@ void ConfigBuilder::readConfig() {
|
|||||||
readGrid("grid");
|
readGrid("grid");
|
||||||
|
|
||||||
// players
|
// players
|
||||||
collectedData.playersWidth = getInt("players.width", 200, 100, 500);
|
collectedData.playersWidth = getInt("players.width", 100, 0, 500);
|
||||||
collectedData.startXPosition = getInt("players.startXPosition");
|
collectedData.startXPosition = getInt("players.startXPosition",600 ,0 ,1200);
|
||||||
collectedData.playersSpeed = getInt("players.speed");
|
collectedData.playersSpeed = getInt("players.speed",1,0,100);
|
||||||
collectedData.playersFireCooldown = getInt("players.fireCooldown");
|
collectedData.playersFireCooldown = getInt("players.fireCooldown",10,1,10000);
|
||||||
collectedData.playersLives = getInt("players.lives");
|
collectedData.playersLives = getInt("players.lives",3,1,1000);
|
||||||
|
|
||||||
// the scalability behind the vector of players is only an illusion, because we force player count to be 1 or 2
|
// 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
|
// It was done so the 2+ players implementation could be easier in the future, if wanted
|
||||||
@ -171,24 +171,24 @@ void ConfigBuilder::readConfig() {
|
|||||||
readPlayer("players.user2", collectedData.playerDefs[1]);
|
readPlayer("players.user2", collectedData.playerDefs[1]);
|
||||||
|
|
||||||
// invaders
|
// invaders
|
||||||
collectedData.invadersSize = getInt("invaders.size");
|
collectedData.invadersSize = getInt("invaders.size",30,10,1000);
|
||||||
collectedData.invadersSpeed = getInt("invaders.speed");
|
collectedData.invadersSpeed = getInt("invaders.speed",7,1,1000);
|
||||||
collectedData.invadersDistance = getInt("invaders.distance");
|
collectedData.invadersDistance = getInt("invaders.distance",15,5,1000);
|
||||||
collectedData.invadersFireCooldown = getInt("invaders.fireCooldown");
|
collectedData.invadersFireCooldown = getInt("invaders.fireCooldown",0,0,1000);
|
||||||
|
|
||||||
readInvaderType("invaders.typeA", collectedData.invadersDef[InvaderType::TYPEA]);
|
readInvaderType("invaders.typeA", collectedData.invadersDef[InvaderType::TYPEA]);
|
||||||
readInvaderType("invaders.typeB", collectedData.invadersDef[InvaderType::TYPEB]);
|
readInvaderType("invaders.typeB", collectedData.invadersDef[InvaderType::TYPEB]);
|
||||||
readInvaderType("invaders.typeC", collectedData.invadersDef[InvaderType::TYPEC]);
|
readInvaderType("invaders.typeC", collectedData.invadersDef[InvaderType::TYPEC]);
|
||||||
|
|
||||||
// projectiles
|
// projectiles
|
||||||
collectedData.missilesWidth = getInt("projectiles.missiles.width");
|
collectedData.missilesWidth = getInt("projectiles.missiles.width",10,5,1000);
|
||||||
collectedData.missilesLength = collectedData.missilesWidth*PROJ_LENGTH_FACTOR;
|
collectedData.missilesLength = collectedData.missilesWidth*PROJ_LENGTH_FACTOR;
|
||||||
collectedData.missilesSpeed = getInt("projectiles.missiles.speed");
|
collectedData.missilesSpeed = getInt("projectiles.missiles.speed",10,5,1000);
|
||||||
getColor("projectiles.missiles.color", collectedData.missilesColor);
|
getColor("projectiles.missiles.color", collectedData.missilesColor);
|
||||||
|
|
||||||
collectedData.torpedosWidth = getInt("projectiles.torpedos.width");
|
collectedData.torpedosWidth = getInt("projectiles.torpedos.width",10,1,1000);
|
||||||
collectedData.torpedosLength = collectedData.torpedosWidth*PROJ_LENGTH_FACTOR;
|
collectedData.torpedosLength = collectedData.torpedosWidth*PROJ_LENGTH_FACTOR;
|
||||||
collectedData.torpedosSpeed = getInt("projectiles.torpedos.speed");
|
collectedData.torpedosSpeed = getInt("projectiles.torpedos.speed",10,1,1000);
|
||||||
getColor("projectiles.torpedos.color", collectedData.torpedosColor);
|
getColor("projectiles.torpedos.color", collectedData.torpedosColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
/** Displays the screen once, and returns
|
/** Displays the screen once, and returns
|
||||||
* The more important stuff must be drawn last
|
* The more important stuff must be drawn last
|
||||||
*/
|
*/
|
||||||
void Game::displayAll() const {
|
void Game::displayAll(unsigned fps) const {
|
||||||
pm.drawSprite(pm.gameBackground);
|
pm.drawSprite(pm.gameBackground);
|
||||||
for (unsigned i = 0; i < this->grid.size(); ++i){
|
for (unsigned i = 0; i < this->grid.size(); ++i){
|
||||||
for (unsigned j = 0; j < this->grid[i].size(); ++j){
|
for (unsigned j = 0; j < this->grid[i].size(); ++j){
|
||||||
|
@ -124,7 +124,7 @@ WinValue Game::enterGameLoop(){ // returns when game is finished
|
|||||||
|
|
||||||
if(arePlayersDead())return WinValue::INVADERS;
|
if(arePlayersDead())return WinValue::INVADERS;
|
||||||
|
|
||||||
displayAll();
|
displayAll(fps);
|
||||||
|
|
||||||
pm.endFrame();
|
pm.endFrame();
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ bool Game::manageInvaders(){
|
|||||||
|
|
||||||
// shoot
|
// shoot
|
||||||
if(fireCooldown==0) {
|
if(fireCooldown==0) {
|
||||||
fireCooldown = confData.invadersFireCooldown + rand() % 60;
|
fireCooldown = confData.invadersFireCooldown + rand() % 25;
|
||||||
|
|
||||||
unsigned rdCol = grid.randomValidCol();
|
unsigned rdCol = grid.randomValidCol();
|
||||||
// fire !
|
// fire !
|
||||||
|
Loading…
Reference in New Issue
Block a user