[Orxonox-commit 4086] r8757 - in code/branches/ai2: data/levels/includes src/modules/weapons/weaponmodes src/orxonox/controllers

jo at orxonox.net jo at orxonox.net
Wed Jul 13 21:42:03 CEST 2011


Author: jo
Date: 2011-07-13 21:42:03 +0200 (Wed, 13 Jul 2011)
New Revision: 8757

Modified:
   code/branches/ai2/data/levels/includes/weaponSettingsSwallow.oxi
   code/branches/ai2/src/modules/weapons/weaponmodes/EnergyDrink.cc
   code/branches/ai2/src/modules/weapons/weaponmodes/FusionFire.cc
   code/branches/ai2/src/modules/weapons/weaponmodes/HsW01.cc
   code/branches/ai2/src/modules/weapons/weaponmodes/LaserFire.cc
   code/branches/ai2/src/modules/weapons/weaponmodes/LightningGun.cc
   code/branches/ai2/src/modules/weapons/weaponmodes/RocketFire.cc
   code/branches/ai2/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
   code/branches/ai2/src/orxonox/controllers/ArtificialController.cc
   code/branches/ai2/src/orxonox/controllers/ArtificialController.h
Log:
ai && weapons. Trying to identify each weapon installed on a spaceship.

Modified: code/branches/ai2/data/levels/includes/weaponSettingsSwallow.oxi
===================================================================
--- code/branches/ai2/data/levels/includes/weaponSettingsSwallow.oxi	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/data/levels/includes/weaponSettingsSwallow.oxi	2011-07-13 19:42:03 UTC (rev 8757)
@@ -13,14 +13,15 @@
           <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
         </links>
         <Weapon>
-          <HsW01 mode=0 munitionpershot=0 delay=0 material="Flares/point_lensflare" />
-          <HsW01 mode=0 munitionpershot=0 delay=0.125 material="Flares/point_lensflare" muzzleoffset=" 0.5,0.6,1.7" />
-          <LightningGun mode=1 muzzleoffset="0,0,0" />
+          <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" />
+          <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.5,0.6,1.7" />
+
+          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20/>
         </Weapon>
         <Weapon>
-          <HsW01 mode=0 munitionpershot=0 delay=0  material="Flares/point_lensflare" />
-          <HsW01 mode=0 munitionpershot=0 delay=0.125 material="Flares/point_lensflare" muzzleoffset="-0.5,0.6,1.7" />
-          <LightningGun mode=1 muzzleoffset="0,0,0" />
+          <HsW01 mode=0 munitionpershot=0 delay=0  damage=3.14159 material="Flares/point_lensflare" />
+          <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.5,0.6,1.7" />
+          <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20/>
         </Weapon>
       </WeaponPack>
-    </weapons>
\ No newline at end of file
+    </weapons>

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/EnergyDrink.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/EnergyDrink.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/EnergyDrink.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -56,6 +56,7 @@
 
         this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&EnergyDrink::shot, this)));
         this->delayTimer_.stopTimer();
+        this->setName("ENERGY_DRINK");
     }
 
     void EnergyDrink::XMLPort(Element& xmlelement, XMLPort::Mode mode)

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/FusionFire.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/FusionFire.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/FusionFire.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -51,6 +51,7 @@
         this->speed_ = 1250;
 
         this->setMunitionName("FusionMunition");
+        this->setName("FUSION_FIRE");
     }
 
     /* Creates the projectile (BillboardProjectile) object, sets its properties to the FusionFire properties

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/HsW01.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/HsW01.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -59,6 +59,7 @@
         this->delayTimer_.stopTimer();
 
         this->setDefaultSound("sounds/Weapon_HsW01.ogg");
+        this->setName("HSW01");
     }
 
     HsW01::~HsW01()

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/LaserFire.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/LaserFire.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/LaserFire.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -48,6 +48,7 @@
         this->speed_ = 1250;
 
         this->setMunitionName("LaserMunition");
+        this->setName("LASER_FIRE");
     }
 
     /* Creates the projectile object, sets its properties to the LaserFire properties

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/LightningGun.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/LightningGun.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/LightningGun.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -49,6 +49,7 @@
 
         this->setMunitionName("LaserMunition");
         this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+        this->setName("LIGHTNING_GUN");
     }
 
     LightningGun::~LightningGun()

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/RocketFire.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/RocketFire.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -51,6 +51,7 @@
         this->speed_ = 500;
 
         this->setMunitionName("RocketMunition");
+        this->setName("RocketFire");
         // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
     }
 

Modified: code/branches/ai2/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- code/branches/ai2/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -54,6 +54,7 @@
 
         this->setMunitionName("RocketMunition");
         this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.4f);
+        this->setName("SimpleRocketFire");
         // The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
     }
 

Modified: code/branches/ai2/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/branches/ai2/src/orxonox/controllers/ArtificialController.cc	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/orxonox/controllers/ArtificialController.cc	2011-07-13 19:42:03 UTC (rev 8757)
@@ -32,6 +32,7 @@
 #include <climits>
 
 #include "util/Math.h"
+#include "util/Convert.h"
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 #include "core/command/ConsoleCommand.h"
@@ -1046,7 +1047,7 @@
         {
             float random = rnd(1);//
             if (this->isCloseAtTarget(130) && weapons[1] )
-            {//LENSFLARE: short range weapon     
+            {//LENSFLARE: short range weapon
                 this->getControllableEntity()->fire(1); //ai uses lens flare if they're close enough to the target
             }
             else if(weapons[3] && this->isCloseAtTarget(400) && (projectiles[3] > 0) && (random < this->botlevel_) )
@@ -1079,9 +1080,10 @@
             Pawn* pawn = orxonox_cast<Pawn*>(this->getControllableEntity());
             if(pawn)
             {
+                this->analyseWeapons(pawn);
                 for(unsigned int i=0; i < WeaponSystem::MAX_WEAPON_MODES; i++)
                 {
-                    const std::string wpn = getWeaponname(i, pawn); COUT(0)<<wpn<< std::endl;//Temporary debug info.
+                    //const std::string wpn = getWeaponname(i, 0, pawn); COUT(0)<<wpn<< std::endl;//Temporary debug info.
                     /*if(wpn=="") //future, more generic implementation; until now, only LaserMunition works. Is this a bug??
                         weapons[i]=false;
                     else if(wpn=="LaserMunition")//other munitiontypes are not defined yet :-(
@@ -1109,29 +1111,62 @@
         }
     }
 
-    const std::string& ArtificialController::getWeaponname(int i, Pawn* pawn)
+    const std::string ArtificialController::getWeaponname(int i, int u, Pawn* pawn)//Search through all wPacks,
     {//is there a way to minimize this long if-return structure, without triggering nullpointer exceptions?
-        if(!pawn) return "";
-        WeaponPack* wPack = pawn->getWeaponPack(i);
-        if(!wPack) return "";
+        if(!pawn) return "a";
+        WeaponPack* wPack = pawn->getWeaponPack(u);
+        if(!wPack) return "b";
         Weapon* wpn = wPack->getWeapon(i);
-        if(!wpn) return "";
-        WeaponMode* wMode = wpn->getWeaponmode(i);
-        if(!wMode) return "";
-        return wMode->getMunitionName();
+        if(!wpn && u<10 && i>0)
+        {
+            return this->getWeaponname(i, u+1, pawn);
+        }
+        else if(!wpn)
+            return "c";
+        //return wpn->getName();
+        WeaponMode* wMode = wpn->getWeaponmode(0);
+        if(!wMode) return "d";
+        return wMode->getMunitionName();//getName();
     }//pawn->getWeaponpack(i)->getWeapon(i)->getWeaponmode(i)->getMunitionName()
+    /**
+        @brief Display how a spaceship is equiped with weapons. TODO: why are only 3 out of 8 weapons displayed??
+    */
+    void ArtificialController::analyseWeapons(Pawn* pawn)
+    {
+        int max=10, i=0, j=0, k=0;
+        if(!pawn) {COUT(0)<<"NO PAWN"<<std::endl; return;}
+        while(i<max)
+        {
+            WeaponPack* wPack = pawn->getWeaponPack(i); //WeaponSet* wSet = pawn->getWeaponSet(i);
+            i++;
+            if(wPack==NULL) continue;
+            while(j<max)
+            {
+                Weapon* wpn = wPack->getWeapon(j);
+                j++;
+                if(wpn==NULL) continue;
+                while(k<max)
+                {
+                    WeaponMode* wMode = wpn->getWeaponmode(k);
+                    k++;
+                    if(wMode==NULL) continue;
+                    COUT(0)<<wMode->getName()<<": weaponpack "+multi_cast<std::string>(i-1)<<", weapon "<<multi_cast<std::string>(j-1)<<", weaponmode "<<multi_cast<std::string>(k-1)<<std::endl;
+                }
+            }
+        }
+    }
 
-    
+
     void ArtificialController::setBotLevel(float level)
     {
         if (level < 0.0f)
-            this->botlevel_ = 0.0f; 
+            this->botlevel_ = 0.0f;
         else if (level > 1.0f)
             this->botlevel_ = 1.0f;
         else
             this->botlevel_ = level;
     }
-    
+
     void ArtificialController::setAllBotLevel(float level)
     {
         for (ObjectList<ArtificialController>::iterator it = ObjectList<ArtificialController>::begin(); it != ObjectList<ArtificialController>::end(); ++it)
@@ -1142,7 +1177,7 @@
     {
         this->mode_ = DEFAULT; //Vector-implementation: mode_.pop_back();
     }
-    
+
     void ArtificialController::boostControl()
     {
         SpaceShip* ship = orxonox_cast<SpaceShip*>(this->getControllableEntity());

Modified: code/branches/ai2/src/orxonox/controllers/ArtificialController.h
===================================================================
--- code/branches/ai2/src/orxonox/controllers/ArtificialController.h	2011-07-13 17:53:31 UTC (rev 8756)
+++ code/branches/ai2/src/orxonox/controllers/ArtificialController.h	2011-07-13 19:42:03 UTC (rev 8757)
@@ -79,8 +79,8 @@
             static void formationsize(const int size);
 
             virtual void doFire();
-	    void setBotLevel(float level=1.0f);
-	    inline float getBotLevel() const
+            void setBotLevel(float level=1.0f);
+            inline float getBotLevel() const
                 { return this->botlevel_; }
             static void setAllBotLevel(float level);
 
@@ -156,9 +156,10 @@
 
             enum Mode {DEFAULT, ROCKET, DEFENCE, MOVING};//TODO; implement DEFENCE, MOVING modes
             Mode mode_; //TODO: replace single value with stack-like implementation: std::vector<Mode> mode_;
-            void setPreviousMode(); 
+            void setPreviousMode();
             void setupWeapons(); //<! Defines which weapons are available for a bot. Is recalled whenever a bot was killed.
-            const std::string& getWeaponname(int i, Pawn* pawn); //<! Function that links a weapon's firemode to its name.
+            const std::string getWeaponname(int i, int u, Pawn* pawn); //<! Function that links a weapon's firemode to its name.
+            void analyseWeapons(Pawn* pawn);
             bool bSetupWorked; //<! If false, setupWeapons() is called.
     };
 }




More information about the Orxonox-commit mailing list