[Orxonox-commit 4539] r9211 - code/branches/newlevel2012/src/modules/towerdefense
mentzerf at orxonox.net
mentzerf at orxonox.net
Fri May 18 16:00:21 CEST 2012
Author: mentzerf
Date: 2012-05-18 16:00:21 +0200 (Fri, 18 May 2012)
New Revision: 9211
Modified:
code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc
code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h
code/branches/newlevel2012/src/modules/towerdefense/TowerDefensePlayerStats.h
Log:
+ Now only adding tower if there is enough credit
Modified: code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc 2012-05-18 13:53:54 UTC (rev 9210)
+++ code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc 2012-05-18 14:00:21 UTC (rev 9211)
@@ -76,7 +76,6 @@
#include "TowerDefense.h"
#include "Tower.h"
#include "TowerDefenseCenterpoint.h"
-#include "TowerDefensePlayerStats.h"
#include "worldentities/SpawnPoint.h"
#include "worldentities/pawns/Pawn.h"
@@ -155,35 +154,28 @@
ChatManager::message("Match is over");
}
- bool TowerDefense::hasTower(int x, int y)
+ void TowerDefense::addTower(int x, int y)
{
- for(std::vector<coordinate>::iterator it = addedTowersCoordinates_.begin(); it != addedTowersCoordinates_.end(); ++it)
+ const TowerCost towerCost = TDDefaultTowerCost;
+
+ if (!this->hasEnoughCreditForTower(towerCost))
{
- coordinate currentCoordinates = (coordinate) (*it);
- if (currentCoordinates.x == x && currentCoordinates.y == y)
- return true;
+ orxout() << "not enough credit: " << (this->stats_->getCredit()) << " available, " << TDDefaultTowerCost << " needed.";
+ return;
}
- return false;
- }
-
- void TowerDefense::addTower(int x, int y)
- {
- if (this->hasTower(x,y))
+ if (this->towerExists(x,y))
{
orxout() << "tower exists!!" << endl;
return;
- }
+ }
- coordinate newTowerCoordinates;
- newTowerCoordinates.x = x; newTowerCoordinates.y = y;
- addedTowersCoordinates_.push_back(newTowerCoordinates);
-
+ /*
unsigned int width = this->center_->getWidth();
unsigned int height = this->center_->getHeight();
+ */
+
int tileScale = (int) this->center_->getTileScale();
-
- orxout() << "tile scale = " << tileScale << endl;
if (x > 15 || y > 15 || x < 0 || y < 0)
{
@@ -194,6 +186,14 @@
orxout() << "Will add tower at (" << (x-8) * tileScale << "," << (y-8) * tileScale << ")" << endl;
+ // Add tower to coordinatesStack
+ Coordinate newTowerCoordinates = {x, y};
+ addedTowersCoordinates_.push_back(newTowerCoordinates);
+
+ // Reduce credit
+ this->stats_->buyTower(towerCost);
+
+ // Create tower
Tower* newTower = new Tower(this->center_);
newTower->addTemplate(this->center_->getTowerTemplate());
@@ -207,6 +207,24 @@
// TODO: load Tower mesh
}
+ bool TowerDefense::hasEnoughCreditForTower(TowerCost towerCost)
+ {
+ return ((this->stats_->getCredit()) >= towerCost);
+ }
+
+ bool TowerDefense::towerExists(int x, int y)
+ {
+ for(std::vector<Coordinate>::iterator it = addedTowersCoordinates_.begin(); it != addedTowersCoordinates_.end(); ++it)
+ {
+ Coordinate currentCoordinates = (Coordinate) (*it);
+ if (currentCoordinates.x == x && currentCoordinates.y == y)
+ return true;
+ }
+
+ return false;
+ }
+
+
void TowerDefense::tick(float dt)
{
SUPER(TowerDefense, tick, dt);
Modified: code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h 2012-05-18 13:53:54 UTC (rev 9210)
+++ code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h 2012-05-18 14:00:21 UTC (rev 9211)
@@ -40,6 +40,8 @@
#include "towerdefense/TowerDefensePrereqs.h"
#include "gametypes/Deathmatch.h"
+ #include "TowerDefensePlayerStats.h"
+
namespace orxonox
{
class _OrxonoxExport TowerDefense : public Deathmatch
@@ -80,17 +82,18 @@
/* handles stats */
TowerDefensePlayerStats *stats_;
+ bool hasEnoughCreditForTower(TowerCost towerCost);
- bool hasTower(int x, int y);
+ bool towerExists(int x, int y);
typedef struct {
int x;
int y;
- } coordinate;
+ } Coordinate;
- std::vector<coordinate> addedTowersCoordinates_;
+ std::vector<Coordinate> addedTowersCoordinates_;
std::vector<Tower*> towers_;
void addWaypointsAndFirstEnemy();
Modified: code/branches/newlevel2012/src/modules/towerdefense/TowerDefensePlayerStats.h
===================================================================
--- code/branches/newlevel2012/src/modules/towerdefense/TowerDefensePlayerStats.h 2012-05-18 13:53:54 UTC (rev 9210)
+++ code/branches/newlevel2012/src/modules/towerdefense/TowerDefensePlayerStats.h 2012-05-18 14:00:21 UTC (rev 9211)
@@ -41,6 +41,10 @@
namespace orxonox
{
+ typedef enum _TowerCosts {
+ TDDefaultTowerCost = 200
+ } TowerCost;
+
class _TowerDefenseExport TowerDefensePlayerStats
{
public:
@@ -52,6 +56,9 @@
inline void setCredit(int credit)
{ credit_ = credit; }
+ inline void buyTower(TowerCost cost)
+ { credit_ -= cost;}
+
inline int getWaveNumber()
{ return waveNumber_; }
More information about the Orxonox-commit
mailing list