From c6d3b022bc3059a0a201459b4ad1ce07576738b2 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 2 Jan 2022 18:33:46 +0100 Subject: [PATCH] scores + config --- config.yml | 22 +++++++++++------- headers/configData.h | 3 +++ headers/invaderDef.h | 12 ++++++++++ headers/utils.h | 4 ++-- src/configManagement.cpp | 49 +++++++++++++++++++++++++++------------- src/gameBasics.cpp | 6 ++--- src/gameManagers.cpp | 4 +++- 7 files changed, 70 insertions(+), 30 deletions(-) create mode 100644 headers/invaderDef.h diff --git a/config.yml b/config.yml index 9cacacc..0f89a3d 100644 --- a/config.yml +++ b/config.yml @@ -24,6 +24,17 @@ invaders: speed: 0 distance: 10 # distance in pixels between invaders + typeA: + points: 100 + color: green + typeB: + points: 250 + color: blue + typeC: + points: 600 + color: red + + # Projectiles config projectiles: missiles: @@ -35,12 +46,7 @@ projectiles: speed: 10 width: 10 -points: - invader3: 100 - invader2: 250 - invader1: 600 - grid: - - "AAAAAAAAAA" - - " BBB BBB " - - "CCCCCCCCCC" \ No newline at end of file + - " AAAAAAAA" + - "B BBBBBBBB" + - " CCCCCCCC" \ No newline at end of file diff --git a/headers/configData.h b/headers/configData.h index 3f84374..02dd67c 100644 --- a/headers/configData.h +++ b/headers/configData.h @@ -4,6 +4,7 @@ #include #include "utils.h" #include "playerDef.h" +#include "invaderDef.h" typedef string configKey; @@ -24,6 +25,8 @@ struct ConfigData { unsigned invadersDistance; unsigned invadersFireCooldown; + map invadersDef; + unsigned missilesWidth; unsigned missilesLength; // auto defined from width unsigned missilesSpeed; diff --git a/headers/invaderDef.h b/headers/invaderDef.h new file mode 100644 index 0000000..c616e33 --- /dev/null +++ b/headers/invaderDef.h @@ -0,0 +1,12 @@ +#ifndef GUARD_INVADERDEF_H +#define GUARD_INVADERDEF_H + +#include "mingl/graphics/rgbacolor.h" +#include "utils.h" + +struct InvaderTypeDef { + nsGraphics::RGBAcolor color; + unsigned points; +}; + +#endif diff --git a/headers/utils.h b/headers/utils.h index f71d725..f8a8150 100644 --- a/headers/utils.h +++ b/headers/utils.h @@ -16,13 +16,13 @@ enum class WinValue{ using namespace std; -enum class Invader { +enum class InvaderType { TYPEA, TYPEB, TYPEC, NONE, }; -typedef vector InvadersColumn; +typedef vector InvadersColumn; typedef vector InvadersGrid; typedef nsGraphics::Vec2D Position; typedef unsigned playerID; diff --git a/src/configManagement.cpp b/src/configManagement.cpp index d5f93eb..488e350 100644 --- a/src/configManagement.cpp +++ b/src/configManagement.cpp @@ -14,6 +14,10 @@ private: int getInt(const configKey& key); nsGraphics::RGBAcolor getColor(const configKey& key); void getList(const configKey& key, vector&); + + void readGrid(const configKey& key); + void readPlayer(const configKey& baseKey, PlayerDef&); + void readInvaderType(const configKey& baseKey, InvaderTypeDef&); }; void ConfigBuilder::dumpInternalValues(){ @@ -98,8 +102,7 @@ void ConfigBuilder::parseFile(const string& fname) { file.close(); } -void ConfigBuilder::readConfig() { - +void ConfigBuilder::readGrid(const configKey& key){ vector tmp; getList("grid", tmp); @@ -116,19 +119,19 @@ void ConfigBuilder::readConfig() { for(;iowner].score += 100; + // compute points associated with invaders + InvaderType invType = grid[i][grid[i].size()]; + players[tor_ite->owner].score += confData.invadersDef[invType].points; torpedos.erase(tor_ite); grid[i].pop_back(); }