[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