[Orxonox-commit 5495] r10158 - in code/branches/towerdefenseHS14: data/levels/includes data/levels/templates src/modules/towerdefense

maxima at orxonox.net maxima at orxonox.net
Fri Dec 5 15:43:28 CET 2014


Author: maxima
Date: 2014-12-05 15:43:28 +0100 (Fri, 05 Dec 2014)
New Revision: 10158

Added:
   code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi
Modified:
   code/branches/towerdefenseHS14/data/levels/templates/tower.oxt
   code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc
   code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h
   code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc
   code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h
   code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc
   code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h
Log:
Changes of Nico. Upgrading the towers included.

Added: code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi
===================================================================
--- code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi	                        (rev 0)
+++ code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi	2014-12-05 14:43:28 UTC (rev 10158)
@@ -0,0 +1,22 @@
+    <weaponslots>
+      <WeaponSlot position="0,0,0" />
+    </weaponslots>
+    <weaponsets>
+      <WeaponSet firemode=0 />
+    </weaponsets>
+    <weapons>
+      <WeaponPack>
+        <links>
+          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+        </links>
+        <Weapon>
+          <!-- <attached>
+            <Model mesh="sphere.mesh" position="1.7,1.7,-24.5" scale=0.6 />
+          </attached> -->
+          <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="1.7, 1.7,-30" />
+          <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="1.7, -1.7,-30" />
+          <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="-1.7, 1.7,-30" />
+          <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="-1.7, -1.7,-30" />
+        </Weapon>
+      </WeaponPack>
+    </weapons>

Modified: code/branches/towerdefenseHS14/data/levels/templates/tower.oxt
===================================================================
--- code/branches/towerdefenseHS14/data/levels/templates/tower.oxt	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/data/levels/templates/tower.oxt	2014-12-05 14:43:28 UTC (rev 10158)
@@ -46,8 +46,8 @@
 
    explosionchunks        = 6
 
-   reloadrate          = 3
-   reloadwaittime      = 1
+   reloadrate          = 10
+   reloadwaittime      = 5
 
    collisionType     = "dynamic"
    team = 1
@@ -58,7 +58,7 @@
 
     <Model position="0,0,0" scale=45 mesh="Tower.mesh" />
 
-    <Turret collisionType="dynamic" position="0,0,10" direction="0,0,1" pitch="0" yaw="0" roll="0" angularDamping=0.999999 mass=100 maxPitch=90 maxYaw=90 maxAttackRadius=1000 minAttackRadius=30>
+    <Turret reloadrate=10 reloadwaittime=5 collisionType="dynamic" position="0,0,10" direction="0,0,1" pitch="0" yaw="0" roll="0" angularDamping=0.999999 mass=100 maxPitch=90 maxYaw=90 maxAttackRadius=1000 minAttackRadius=30>
 
       <controller>
         <TurretController/>
@@ -81,4 +81,48 @@
   include("../includes/towerWeaponSettings.oxi")
 ?>
   </TowerDefenseTower>
+</Template>
+
+
+
+<Template name=towerturret1>
+  <TowerDefenseTower
+
+
+   explosionchunks        = 6
+
+   reloadrate          = 10
+   reloadwaittime      = 5
+
+   collisionType     = "dynamic"
+   team = 1
+
+
+  >
+  <attached>
+
+
+    <Turret reloadrate=10 reloadwaittime=5 collisionType="dynamic" position="0,0,10" direction="0,0,1" pitch="0" yaw="0" roll="0" angularDamping=0.999999 mass=100 maxPitch=90 maxYaw=90 maxAttackRadius=1000 minAttackRadius=30>
+
+      <controller>
+        <TurretController/>
+      </controller>
+      <?lua
+        include("../includes/weaponSettingsTurret1.oxi")
+      ?>
+    </Turret>
+    
+  </attached>
+    
+
+
+
+    <!--collisionShapes>
+
+    </collisionShapes-->
+
+<?lua
+  include("../includes/towerWeaponSettings.oxi")
+?>
+  </TowerDefenseTower>
 </Template>
\ No newline at end of file

Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc	2014-12-05 14:43:28 UTC (rev 10158)
@@ -105,6 +105,7 @@
 
         /* Temporary hack to allow the player to add towers */
         this->dedicatedAddTower_ = createConsoleCommand( "addTower", createExecutor( createFunctor(&TowerDefense::addTower, this) ) );
+	this->dedicatedUpgradeTower_ = createConsoleCommand( "upgradeTower", createExecutor( createFunctor(&TowerDefense::upgradeTower, this) ) );
     }
 
     TowerDefense::~TowerDefense()
@@ -129,6 +130,10 @@
     	orxout() << "test0" << endl;
 
         Deathmatch::start();
+        credits = 5000;
+        life = 20;
+        waves = 0;
+        time=0.0;
 
 // Waypoints: [1,3] [10,3] [10,11] [13,11]
         for (int i=0; i < 16 ; i++){
@@ -233,8 +238,29 @@
         ChatManager::message("Match is over");
     }
 
+    void TowerDefense::upgradeTower(int x,int y)
+    {
+    	const TowerCost upgraeCost = TDDefaultUpgradeCost;
 
+        if (!this->hasEnoughCreditForTower(upgraeCost))
+        {
+            orxout() << "not enough credit: " << (this->stats_->getCredit()) << " available, " << TDDefaultTowerCost << " needed.";
+            return;
+        }
 
+        if (towermatrix [x][y] == NULL)
+        {
+            orxout() << "no tower on this position" << endl;
+            return;
+        }
+
+        else
+        {
+        	(towermatrix [x][y])->upgradeTower();
+        }
+    }
+
+
     void TowerDefense::addTower(int x, int y)
     {
         const TowerCost towerCost = TDDefaultTowerCost;
@@ -288,6 +314,11 @@
         return ((this->stats_->getCredit()) >= towerCost);
     }
 
+    bool TowerDefense::hasEnoughCreditForUpgrade()
+    {
+    	return true;
+    }
+
  
     void TowerDefense::tick(float dt)
     {

Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h	2014-12-05 14:43:28 UTC (rev 10158)
@@ -77,8 +77,10 @@
         /* Adds a tower at x, y in the playfield */
         void addTower(int x, int y);
 
+        void upgradeTower(int x, int y);
         /* Part of a temporary hack to allow the player to add towers */
         ConsoleCommand* dedicatedAddTower_;
+        ConsoleCommand* dedicatedUpgradeTower_;
 
         //TODO: void spawnNewWave()
         //TODO: create a timer which regularly calls the spawnNewWave function  (time driven)
@@ -93,6 +95,7 @@
         /* handles stats */
         TowerDefensePlayerStats *stats_;
         bool hasEnoughCreditForTower(TowerCost towerCost);
+        bool hasEnoughCreditForUpgrade();
 
         std::vector<TowerTurret*> towers_;
     };

Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc	2014-12-05 14:43:28 UTC (rev 10158)
@@ -41,6 +41,16 @@
     {
         SUPER(TowerDefenseEnemy, tick, dt);
 
+        //ArtificialController* controller = (ArtificialController*)this->getController();
+        Vector3 ship = this->getRVWorldPosition();
+        Vector3* endpoint = new Vector3(500, 700, 150);
+
+        float distance = ship.distance(*endpoint);
+
+        //orxout() << "distance" << distance << endl;
+        if(distance <50){
+        	orxout() << "ENEMY KILLED!!!!" << endl;
+        	this->destroy(); }
     }
 
 /*

Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h	2014-12-05 14:43:28 UTC (rev 10158)
@@ -43,7 +43,8 @@
 {
     typedef enum _TowerCosts {
         // Set to 0 for debug...
-        TDDefaultTowerCost = 20
+        TDDefaultTowerCost = 20 ,
+        TDDefaultUpgradeCost = 15
     } TowerCost;
 
     class _TowerDefenseExport TowerDefensePlayerStats
@@ -66,9 +67,15 @@
         inline void didLoadNextWave()
             { waveNumber_++; }
 
+        inline void upgradeTower(int upgradecost)
+        	{ credit_ -= upgradecost;}
+
+
+
     private:
         int credit_;
         int waveNumber_;
+        int upgradecost;
         //int baseHealth_;
     };
 }

Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc	2014-12-05 14:43:28 UTC (rev 10158)
@@ -26,6 +26,7 @@
         RegisterObject(TowerDefenseTower);
 
         this->setCollisionType(WorldEntity::Dynamic);
+        upgrade = 0;
 
         //this->removeAllEngines();
 
@@ -60,6 +61,29 @@
         //orxout() << "rotateRoll" << ++roll << endl;
     }
 
+    bool TowerDefenseTower::upgradeTower()
+       {
+       	if(upgrade < 3)
+       	{
+       		upgrade++;
+       		float reloadrate = getReloadRate();
+       		float reloadwaittime = getReloadWaitTime();
+       		this->setDamageMultiplier(5000);
+
+       		reloadrate = 0.5*reloadrate;
+       		reloadwaittime = 0.5*reloadwaittime;
+       		setReloadRate(reloadrate);
+       		setReloadWaitTime(reloadwaittime);
+       		this->addTemplate("towerturret1");
+       	}
+       	else
+       	{
+       		orxout() << "Tower fully upgraded" << endl;
+       		return false;
+       	}
+       	return true;
+       }
+
     // This function is called whenever a player presses the up or the down key.
     // You have to implement what happens when the up or the down key is pressed.
     // value.x < 0 means: down key is pressed.

Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h	2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h	2014-12-05 14:43:28 UTC (rev 10158)
@@ -40,11 +40,14 @@
         virtual void rotateYaw(const Vector2& value);
         virtual void rotatePitch(const Vector2& value);
         virtual void rotateRoll(const Vector2& value);
+        virtual bool upgradeTower();
 
+
         void setGame(TowerDefense* Towerdefense)
         { assert(Towerdefense); game_ = Towerdefense; }
     private:
         TowerDefense* game_;
+        int upgrade;
     };
 }
 




More information about the Orxonox-commit mailing list