[Orxonox-commit 5680] r10340 - in code/branches/towerdefenseFS15: data/levels/templates src/modules/objects src/modules/towerdefense

erbj at orxonox.net erbj at orxonox.net
Thu Apr 2 15:57:34 CEST 2015


Author: erbj
Date: 2015-04-02 15:57:34 +0200 (Thu, 02 Apr 2015)
New Revision: 10340

Modified:
   code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt
   code/branches/towerdefenseFS15/src/modules/objects/Turret.cc
   code/branches/towerdefenseFS15/src/modules/objects/Turret.h
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc
Log:
Tower upgrade now implemented and towers are now saved in the towerTurretMatrix and the Models in the towerModelMatrix

Modified: code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt
===================================================================
--- code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt	2015-04-02 13:57:34 UTC (rev 10340)
@@ -22,30 +22,7 @@
      <TurretController team = 1/>
   </controller>
   
-  
-  <attached>
-	
-    <!--Turret
     
-    explosionchunks        = 6
-	reloadrate=10 
-	reloadwaittime=5 
-	collisionType="none" 
-	maxPitch=90 
-	maxYaw=90 
-	maxAttackRadius=1000 
-	minAttackRadius=30
-   	team = 1
-    >
-    
-         <controller>
-     		<TurretController/>
-  		</controller>
-  		
-  		
-  	</Turret-->
-  </attached>
-    
 
 
 

Modified: code/branches/towerdefenseFS15/src/modules/objects/Turret.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/objects/Turret.cc	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/objects/Turret.cc	2015-04-02 13:57:34 UTC (rev 10340)
@@ -222,6 +222,7 @@
         XMLPortParam(Turret, "minAttackRadius", setMinAttackRadius, getMinAttackRadius, xmlelement, mode);
         XMLPortParam(Turret, "maxYaw", setMaxYaw, getMaxYaw, xmlelement, mode);
         XMLPortParam(Turret, "maxPitch", setMaxPitch, getMaxPitch, xmlelement, mode);
+        XMLPortParam(Turret, "rotationThrust", setRotationThrust, getRotationThrust, xmlelement, mode);
     }
 
     /**
@@ -281,4 +282,4 @@
         }
 
     }
-}
\ No newline at end of file
+}

Modified: code/branches/towerdefenseFS15/src/modules/objects/Turret.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/objects/Turret.h	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/objects/Turret.h	2015-04-02 13:57:34 UTC (rev 10340)
@@ -101,6 +101,12 @@
             inline float getMaxYaw() const
                 { return this->maxYaw_; }
 
+            inline void setRotationThrust(float rotationthrust)
+            	{ this->rotationThrust_ = rotationthrust; }
+
+            inline float getRotationThrust()
+            	{ return this->rotationThrust_; }
+
         protected:
             Vector3 startDir_; //!< The initial facing direction, in local coordinates.
             Vector3 localZ_; //!< The local z-axis, includes for the parent's rotation and rotations done in xml.

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc	2015-04-02 13:57:34 UTC (rev 10340)
@@ -101,6 +101,8 @@
             }
         }*/
 
+
+
         this->setHUDTemplate("TowerDefenseHUD");
 
         //this->stats_ = new TowerDefensePlayerStats();
@@ -135,34 +137,38 @@
 // Waypoints: [1,3] [10,3] [10,11] [13,11] -> add the points to a matrix so the player cant place towers on the path
         for (int i=0; i < 16 ; i++){
             for (int j = 0; j< 16 ; j++){
-                towermatrix[i][j] = false;
+                towerModelMatrix[i][j] = NULL;
+                towerTurretMatrix[i][j] = NULL;
             }
         }
 
+        Model* dummyModel = new Model(this->center_->getContext());
+
         //the path of the spacehips has to be blocked, so that no towers can be build there
         for (int k=0; k<3; k++)
-            towermatrix[1][k]=true;
+            towerModelMatrix[1][k]=dummyModel;
         for (int l=1; l<11; l++)
-            towermatrix[l][3]=true;
+        	towerModelMatrix[l][3]=dummyModel;
         for (int m=3; m<12; m++)
-            towermatrix[10][m]=true;
+        	towerModelMatrix[10][m]=dummyModel;
         for (int n=10; n<14; n++)
-            towermatrix[n][11]=true;
+        	towerModelMatrix[n][11]=dummyModel;
         for (int o=13; o<16; o++)
-            towermatrix[13][o]=true;
+        	towerModelMatrix[13][o]=dummyModel;
 
+
         //set initial credits, lifes and WaveNumber
         this->setCredit(1000);
         this->setLifes(100);
         this->setWaveNumber(0);
         time=0.0;
 
+        /*
         //adds initial towers
-        /*
         for (int i=0; i <7; i++){
             addTower(i+3,4);
         }
-        */
+		*/
     }
 
     // Generates a TowerDefenseEnemy. Uses Template "enemytowerdefense". Sets position at first waypoint of path.
@@ -215,7 +221,7 @@
 
     //not working yet
     void TowerDefense::upgradeTower(int x,int y)
-    {/*
+    {
         const int upgradeCost = 20;
 
         if (!this->hasEnoughCreditForTower(upgradeCost))
@@ -224,7 +230,10 @@
             return;
         }
 
-        if (towermatrix [x][y] == NULL)
+
+        Model* dummyModel2 = new Model(this->center_->getContext());
+
+        if (towerModelMatrix [x][y] == NULL || (towerModelMatrix [x][y])->getMeshSource() == dummyModel2->getMeshSource())
         {
             orxout() << "no tower on this position" << endl;
             return;
@@ -232,8 +241,9 @@
 
         else
         {
-            (towermatrix [x][y])->upgradeTower();
-        }*/
+            (towerTurretMatrix [x][y])->upgradeTower();
+            this->buyTower(upgradeCost);
+        }
     }
 
     /*adds Tower at Position (x,y) and reduces credit and adds the point to the towermatrix. template ("towerturret")
@@ -250,7 +260,7 @@
             return;
         }
 
-        if (towermatrix [x][y]==true)
+        if (towerModelMatrix [x][y]!=NULL)
         {
             orxout() << "not possible to put tower here!!" << endl;
             return;
@@ -272,10 +282,8 @@
 
         orxout() << "Will add tower at (" << (x-8) * tileScale << "," << (y-8) * tileScale << ")" << endl;
 
-       //Reduce credit
-        this->buyTower(towerCost);
-        towermatrix [x][y]=true;
 
+
         //Create Model
         Model* newtowermodel = new Model(this->center_->getContext());
         newtowermodel->setMeshSource("Tower.mesh");
@@ -289,6 +297,11 @@
         towernew->setPosition(static_cast<float>((x-8) * tileScale), static_cast<float>((y-8) * tileScale), 275);
         towernew->setGame(this);
         towernew->setTeam(1);
+
+        //Reduce credit
+         this->buyTower(towerCost);
+         towerModelMatrix [x][y]= newtowermodel;
+         towerTurretMatrix [x][y]= towernew;
     }
 
     bool TowerDefense::hasEnoughCreditForTower(int towerCost)
@@ -324,7 +337,7 @@
         {
             if(TowerDefenseEnemyvector.at(i) != NULL && TowerDefenseEnemyvector.at(i)->isAlive())
             {
-                //destroys enemys at the end of teh path and reduces the life by 1. no credits gifted
+                //destroys enemys at the end of the path and reduces the life by 1. no credits gifted
 
                 Vector3 ship = TowerDefenseEnemyvector.at(i)->getRVWorldPosition();
                 float distance = ship.distance(*endpoint);

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h	2015-04-02 13:57:34 UTC (rev 10340)
@@ -52,7 +52,8 @@
         virtual ~TowerDefense();
 
         std::vector<orxonox::WeakPtr<TowerDefenseEnemy> > TowerDefenseEnemyvector;
-        bool towermatrix[16][16];
+        Model* towerModelMatrix[16][16];
+        TowerDefenseTower* towerTurretMatrix[16][16];
         void addTowerDefenseEnemy(std::vector<TDCoordinate*> path, int templatenr);
         virtual void start(); //<! The function is called when the gametype starts
         virtual void end();

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc	2015-04-02 13:57:34 UTC (rev 10340)
@@ -34,7 +34,11 @@
     }
     //add credit if enemy is destroyed
     TowerDefenseEnemy::~TowerDefenseEnemy(){
-        //this->td->addCredit(1);
+
+    	if (this->isInitialized())
+    	{
+    		getGame()->addCredit(1);
+    	}
     }
 
     void TowerDefenseEnemy::addWaypoint(TDCoordinate* coord)
@@ -63,10 +67,14 @@
         Pawn::damage(damage, healthdamage, shielddamage, originator);
         if (getGame() && once_ == false && getHealth() <= 0)
         {
+        	orxout() << "damagefunctionIF" << endl;
             getGame()->addCredit(1);
             once_ = true;
         }
+        orxout() << "damagefunction" << endl;
+
     }
+
 /*
     void TowerDefenseEnemy::popWaypoint()
     {

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc	2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc	2015-04-02 13:57:34 UTC (rev 10340)
@@ -65,8 +65,8 @@
             upgrade++;
             float reloadrate = getReloadRate();
             float reloadwaittime = getReloadWaitTime();
-            this->setDamageMultiplier(5000);
-
+            this->setDamageMultiplier((upgrade+1)*2);
+            this->setRotationThrust(2*this->getRotationThrust());
             reloadrate = 0.5f*reloadrate;
             reloadwaittime = 0.5f*reloadwaittime;
             setReloadRate(reloadrate);




More information about the Orxonox-commit mailing list