[Orxonox-commit 4489] r9160 - code/branches/newlevel2012/src/modules/towerdefense

mentzerf at orxonox.net mentzerf at orxonox.net
Fri May 4 16:12:48 CEST 2012


Author: mentzerf
Date: 2012-05-04 16:12:47 +0200 (Fri, 04 May 2012)
New Revision: 9160

Modified:
   code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc
   code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h
Log:
* Fixed height of towers
+ not adding towers when they were added already

Modified: code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc	2012-05-04 14:09:25 UTC (rev 9159)
+++ code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.cc	2012-05-04 14:12:47 UTC (rev 9160)
@@ -149,15 +149,38 @@
 		ChatManager::message("Match is over");
 	}
 	
+	bool TowerDefense::hasTower(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::addTower(int x, int y)
 	{
+		if (this->hasTower(x,y))
+		{
+			orxout() << "tower exists!!" << endl;
+			return;
+		}
+		
+		coordinate newTowerCooridnates;
+		newTowerCooridnates.x = x; newTowerCooridnates.y = y;
+		addedTowersCoordinates_.push_back(newTowerCooridnates);
+		
 		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)
 		{
 			//Hard coded: TODO: let this depend on the centerpoint's height, width and fieldsize (fieldsize doesn't exist yet)
@@ -172,8 +195,9 @@
 		
 		this->center_->attach(newTower);
 		
-		newTower->setPosition((x-8) * tileScale, (y-8) * tileScale, 0);
+		newTower->setPosition((x-8) * tileScale, (y-8) * tileScale, 100);
 		newTower->setGame(this);
+		
 		//TODO: Save the Tower in a Vector. I would suggest std::vector< std::vector<Tower*> > towers_ as a protected member variable;
 		
 		// TODO: create Tower mesh

Modified: code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h	2012-05-04 14:09:25 UTC (rev 9159)
+++ code/branches/newlevel2012/src/modules/towerdefense/TowerDefense.h	2012-05-04 14:12:47 UTC (rev 9160)
@@ -77,7 +77,20 @@
 	private:
 //		WeakPtr<TowerDefenseCenterpoint> center_;
 		TowerDefenseCenterpoint *center_;
+	
+	
+		bool hasTower(int x, int y);
 		
+		typedef struct {
+			int x;
+			int y;
+		} coordinate; 
+		
+	
+		
+		std::vector<coordinate> addedTowersCoordinates_;
+		std::vector<Tower*> towers_;
+		
 		void addWaypointsAndFirstEnemy();
     };
 }




More information about the Orxonox-commit mailing list