[Orxonox-commit 6029] r10688 - in code/branches/fabienHS15: data/levels/includes data/overlays src/modules/overlays/hud src/modules/weapons/munitions src/modules/weapons/projectiles src/modules/weapons/weaponmodes src/orxonox/weaponsystem src/orxonox/worldentities/pawns
fvultier at orxonox.net
fvultier at orxonox.net
Sat Oct 24 22:51:19 CEST 2015
Author: fvultier
Date: 2015-10-24 22:51:18 +0200 (Sat, 24 Oct 2015)
New Revision: 10688
Added:
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.h
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.cc
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.h
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.cc
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.h
code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.h
code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.h
Removed:
code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.h
Modified:
code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff.oxi
code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff2.oxi
code/branches/fabienHS15/data/levels/includes/weaponSettingsSwallow.oxi
code/branches/fabienHS15/data/overlays/HUDTemplates3.oxo
code/branches/fabienHS15/src/modules/overlays/hud/CMakeLists.txt
code/branches/fabienHS15/src/modules/weapons/munitions/CMakeLists.txt
code/branches/fabienHS15/src/modules/weapons/munitions/FusionMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/GravityBombMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.h
code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/SplitMunition.cc
code/branches/fabienHS15/src/modules/weapons/projectiles/GravityBombField.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/EnergyDrink.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/FusionFire.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/GravityBombFire.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/HsW01.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/IceGun.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/LaserFire.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/LightningGun.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFire.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFireOld.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
code/branches/fabienHS15/src/modules/weapons/weaponmodes/SplitGun.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/CMakeLists.txt
code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.h
code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.h
code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.h
code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.h
code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.cc
code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.h
code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.cc
code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.h
Log:
There is now a HUD that shows the status of the weapon system: all weapons, weapon modes and their munition. Progress bars show the progress of replenishing munition.
Modified: code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff.oxi
===================================================================
--- code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff.oxi 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff.oxi 2015-10-24 20:51:18 UTC (rev 10688)
@@ -23,8 +23,8 @@
<Model mesh="LightningGun-s.mesh" pitch="78" roll="90" yaw="90" position="0.2,-1.3,0" />
<Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
</attached>
- <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
- <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
+ <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
+ <HsW01 mode=0 munitionpershot=1 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
<LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
</Weapon>
<Weapon>
@@ -33,8 +33,8 @@
<Model mesh="LightningGun-s.mesh" pitch="103" roll="90" yaw="90" position="0.2,-1.35,0" />
<Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-104" yaw="-90" position="0,1.3,0.3" scale=0.6 />
</attached>
- <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
- <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
+ <HsW01 mode=0 munitionpershot=1 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
+ <HsW01 mode=0 munitionpershot=1 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
<LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" damage=23 />
</Weapon>
<Weapon>
Modified: code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff2.oxi
===================================================================
--- code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff2.oxi 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/data/levels/includes/weaponSettingsAssff2.oxi 2015-10-24 20:51:18 UTC (rev 10688)
@@ -22,8 +22,8 @@
<Model mesh="stunweapon.mesh" pitch="180" roll="0" yaw="0" position="-1.9,-.5,1" scale=".5" />
<BlinkingBillboard position="-1.9, -.5, -5.5" material="PE/lensflare" colour="0.128, 0.28, 1" amplitude=0.25 frequency=16 quadratic=0 />
</attached>
- <HsW01 mode=0 munitionpershot=0 delay=0.125 healthamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
- <HsW01 mode=0 munitionpershot=0 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
+ <HsW01 mode=0 munitionpershot=1 delay=0.125 healthamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
+ <HsW01 mode=0 munitionpershot=1 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6,1.3,-2.0" />
<LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" shielddamage=23 />
</Weapon>
<Weapon>
@@ -31,8 +31,8 @@
<Model mesh="stunweapon.mesh" pitch="180" roll="0" yaw="0" position="1.9,-.5,1" scale=".5"/>
<BlinkingBillboard position="1.9, -.5, -5.5" material="PE/lensflare" colour="0.128, 0.28, 1" amplitude=0.25 frequency=16 quadratic=0 />
</attached>
- <HsW01 mode=0 munitionpershot=0 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6,1.3,-2.0" />
- <HsW01 mode=0 munitionpershot=0 delay=0.125 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1,1.6,-2.0" />
+ <HsW01 mode=0 munitionpershot=1 delay=0 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6,1.3,-2.0" />
+ <HsW01 mode=0 munitionpershot=1 delay=0.125 healthdamage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1,1.6,-2.0" />
<LightningGun mode=1 munitionpershot=1 muzzleoffset="0,0,0" shielddamage=23 />
</Weapon>
<Weapon>
Modified: code/branches/fabienHS15/data/levels/includes/weaponSettingsSwallow.oxi
===================================================================
--- code/branches/fabienHS15/data/levels/includes/weaponSettingsSwallow.oxi 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/data/levels/includes/weaponSettingsSwallow.oxi 2015-10-24 20:51:18 UTC (rev 10688)
@@ -1,6 +1,7 @@
<weaponslots>
<WeaponSlot position=" 8,1.66,-17.5" />
<WeaponSlot position="-8,1.66,-17.5" />
+ <WeaponSlot position="0,1.66,-17.5" />
</weaponslots>
<weaponsets>
<WeaponSet firemode=0 />
@@ -13,10 +14,12 @@
<DefaultWeaponmodeLink firemode=1 weaponmode=1 />
</links>
<Weapon>
- <SplitGun mode=0 munitionpershot=0 damage=6.0 muzzleoffset="0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
+ <SplitGun mode=0 munitionpershot=1 damage=6.0 muzzleoffset="0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
+ <LaserFire mode=1 munitionpershot=0 damage=10.0 muzzleoffset="0.5,0.6,1.7" />
</Weapon>
<Weapon>
- <SplitGun mode=0 munitionpershot=0 damage=6.0 muzzleoffset="-0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
- </Weapon>
+ <SplitGun mode=0 munitionpershot=1 damage=6.0 muzzleoffset="-0.5,0.6,1.7" splittime=0.2 numberofsplits=2 numberofchilds=3 spread=0.1 damagereduction=2.0 />
+ <LaserFire mode=1 munitionpershot=0 damage=10.0 muzzleoffset="-0.5,0.6,1.7" />
+ </Weapon>
</WeaponPack>
</weapons>
Modified: code/branches/fabienHS15/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/fabienHS15/data/overlays/HUDTemplates3.oxo 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/data/overlays/HUDTemplates3.oxo 2015-10-24 20:51:18 UTC (rev 10688)
@@ -126,6 +126,15 @@
maximumDotSize3D = 0.06
mapAngle3D = 0.6435011
/>
+
+ <HUDWeaponSystem
+ name = "WeaponSystem"
+ correctaspect = false
+ size = "0.6, 0.1"
+ position = "0.0, 0.0"
+ pickpoint = "0, 0"
+ visible = "true"
+ />
<HUDTimer
name = "Timer"
Modified: code/branches/fabienHS15/src/modules/overlays/hud/CMakeLists.txt
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/CMakeLists.txt 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/overlays/hud/CMakeLists.txt 2015-10-24 20:51:18 UTC (rev 10688)
@@ -7,6 +7,9 @@
HUDHealthBar.cc
HUDTimer.cc
HUDEnemyHealthBar.cc
+ HUDWeaponMode.cc
+ HUDWeapon.cc
+ HUDWeaponSystem.cc
ChatOverlay.cc
AnnounceMessage.cc
KillMessage.cc
Added: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc (rev 0)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,186 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Yuning Chai
+ * Felix Schulthess
+ * Co-authors:
+ * Reto Grieder
+ * Wolfgang Roenninger
+ *
+ */
+
+#include "HUDWeapon.h"
+
+#include <OgreOverlayManager.h>
+#include <OgrePanelOverlayElement.h>
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "tools/TextureGenerator.h"
+#include "util/Convert.h"
+#include "core/class/Super.h"
+
+namespace orxonox
+{
+ RegisterClass(HUDWeapon);
+
+ HUDWeapon::HUDWeapon(Context* context) : OrxonoxOverlay(context)
+ {
+ RegisterObject(HUDWeapon);
+
+ overlayElement_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDWeapon" + getUniqueNumberString()));
+ overlayElement_->setMaterialName("Orxonox/WSHUD_Weapon");
+ overlayElement_->setPosition(0.0f,0.0f);
+ overlayElement_->setDimensions(1.0f,1.0f);
+ this->background_->addChild(overlayElement_);
+ }
+
+ HUDWeapon::~HUDWeapon()
+ {
+ if (this->isInitialized())
+ {
+ destroyHUDChilds();
+ //this->overlayElement_->destroy();
+ }
+ }
+
+ void HUDWeapon::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(HUDWeapon, XMLPort, xmlelement, mode);
+
+ /*XMLPortParam(HUDWeapons, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlelement, mode);
+ XMLPortParam(HUDWeapons, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance, xmlelement, mode);*/
+ }
+
+ void HUDWeapon::tick(float dt)
+ {
+ SUPER(HUDWeapon, tick, dt);
+
+ if (this->owner_)
+ {
+
+ }
+ }
+
+ void HUDWeapon::positionChanged()
+ {
+ OrxonoxOverlay::positionChanged();
+
+ positionHUDChilds();
+ }
+
+ void HUDWeapon::changedOwner()
+ {
+ SUPER(HUDWeapon, changedOwner);
+
+ this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
+
+ updateWeaponModeList();
+ }
+
+ void HUDWeapon::changedOverlayGroup()
+ {
+ SUPER(HUDWeapon, changedOverlayGroup);
+
+ //this->getOverlayGroup()->addElement(this->textOverlay_.get());
+ }
+
+ void HUDWeapon::changedVisibility()
+ {
+ SUPER(HUDWeapon, changedVisibility);
+
+ //this->textOverlay_->setVisible(this->isVisible());
+ }
+
+ void HUDWeapon::changedName()
+ {
+ SUPER(HUDWeapon, changedName);
+
+ //this->textOverlay_->setName(this->getName() + "text");
+ }
+
+ void HUDWeapon::setWeapon(Weapon* weapon)
+ {
+ weapon_ = weapon;
+
+ if (!weapon_)
+ {
+ return;
+ }
+
+ updateWeaponModeList();
+ }
+
+ void HUDWeapon::updateWeaponModeList()
+ {
+ if (owner_ == NULL || weapon_ == NULL)
+ {
+ return;
+ }
+
+ destroyHUDChilds();
+
+ weaponModes_ = weapon_->getAllWeaponmodes();
+
+ createHUDChilds();
+ positionHUDChilds();
+ }
+
+ void HUDWeapon::createHUDChilds()
+ {
+ for (std::multimap<unsigned int, WeaponMode*>::iterator it = weaponModes_->begin(); it != weaponModes_->end(); ++it)
+ {
+ HUDWeaponMode* hudWeaponMode = new HUDWeaponMode(this->getContext());
+ hudWeaponMode->setOwner(owner_);
+ hudWeaponMode->setWeaponMode(it->second);
+ hudWeaponModes_.push_back(hudWeaponMode);
+ }
+ }
+
+ void HUDWeapon::positionHUDChilds()
+ {
+ int positionIndex = 0;
+
+ for (std::vector<WeakPtr<HUDWeaponMode> >::iterator it = hudWeaponModes_.begin(); it != hudWeaponModes_.end(); ++it)
+ {
+ (*it)->setOverlayGroup(this->getOverlayGroup());
+ (*it)->setAspectCorrection(this->getAspectCorrection());
+ (*it)->setPosition(this->getPosition() + Vector2(0.0f,0.025f*positionIndex));
+ (*it)->setSize(Vector2(0.15f,0.025f));
+ (*it)->setPickPoint(Vector2(0.0f,0.0f));
+
+ ++ positionIndex;
+ }
+
+ overlayElement_->setDimensions(1.0f,0.25f*hudWeaponModes_.size());
+ }
+
+ void HUDWeapon::destroyHUDChilds()
+ {
+ for (std::vector<WeakPtr<HUDWeaponMode> >::iterator it = hudWeaponModes_.begin(); it != hudWeaponModes_.end(); ++it)
+ {
+ (*it)->destroy();
+ }
+
+ hudWeaponModes_.clear();
+ }
+}
Added: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.h
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.h (rev 0)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,87 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabien Vultier
+ * Co-authors:
+ * ...
+ *
+ */
+
+#ifndef _HUDWeapon_H__
+#define _HUDWeapon_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include <map>
+#include <vector>
+#include <string>
+
+#include <OgreOverlayManager.h>
+#include <OgreMaterialManager.h>
+#include <OgreTechnique.h>
+#include <OgrePass.h>
+#include <OgrePanelOverlayElement.h>
+
+#include "overlays/OrxonoxOverlay.h"
+#include "overlays/OverlayText.h"
+#include "tools/interfaces/Tickable.h"
+#include "worldentities/pawns/Pawn.h"
+#include "overlays/OverlayGroup.h"
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponMode.h"
+#include "HUDWeaponMode.h"
+
+namespace orxonox
+{
+ class _OverlaysExport HUDWeapon : public OrxonoxOverlay, public Tickable
+ {
+ public:
+ HUDWeapon(Context* context);
+ virtual ~HUDWeapon();
+
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+ virtual void tick(float dt);
+ virtual void changedOwner();
+ virtual void changedOverlayGroup();
+ virtual void changedVisibility();
+ virtual void changedName();
+ virtual void positionChanged();
+
+ virtual void setWeapon(Weapon* weapon);
+
+ private:
+ virtual void createHUDChilds();
+ virtual void positionHUDChilds();
+ virtual void destroyHUDChilds();
+ virtual void updateWeaponModeList();
+
+ WeakPtr<Pawn> owner_;
+ WeakPtr<Weapon> weapon_;
+
+ std::multimap<unsigned int, WeaponMode*>* weaponModes_;
+ std::vector<WeakPtr<HUDWeaponMode> > hudWeaponModes_;
+
+ Ogre::PanelOverlayElement* overlayElement_;
+ };
+}
+
+#endif /* _HUDWeapon_H__ */
Added: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.cc
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.cc (rev 0)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,258 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Yuning Chai
+ * Felix Schulthess
+ * Co-authors:
+ * Reto Grieder
+ * Wolfgang Roenninger
+ *
+ */
+
+#include "HUDWeaponMode.h"
+
+#include <OgreOverlayManager.h>
+#include <OgrePanelOverlayElement.h>
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "tools/TextureGenerator.h"
+#include "weaponsystem/WeaponMode.h"
+#include "weaponsystem/Munition.h"
+#include "util/Convert.h"
+
+namespace orxonox
+{
+ RegisterClass(HUDWeaponMode);
+
+ HUDWeaponMode::HUDWeaponMode(Context* context) : OrxonoxOverlay(context)
+ {
+ RegisterObject(HUDWeaponMode);
+
+ overlayElementIcon_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDWeaponMode" + getUniqueNumberString()));
+ overlayElementIcon_->setPosition(0.0f,0.0f);
+ overlayElementIcon_->setDimensions(1.0f,1.0f);
+ this->background_->addChild(overlayElementIcon_);
+
+ overlayElementReplenish_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDWeaponMode" + getUniqueNumberString()));
+ overlayElementReplenish_->setPosition(0.0f,0.0f);
+ overlayElementReplenish_->setDimensions(1.0f,1.0f);
+ this->background_->addChild(overlayElementReplenish_);
+
+ overlayElementMunition_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDWeaponMode" + getUniqueNumberString()));
+ overlayElementMunition_->setPosition(0.0f,0.0f);
+ overlayElementMunition_->setDimensions(1.0f,1.0f);
+ this->background_->addChild(overlayElementMunition_);
+
+ overlayElementState_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "HUDWeaponMode" + getUniqueNumberString()));
+ overlayElementState_->setPosition(0.0f,0.0f);
+ overlayElementState_->setDimensions(1.0f,1.0f);
+ this->background_->addChild(overlayElementState_);
+
+ overlayElementIcon_->show();
+ overlayElementReplenish_->show();
+ overlayElementMunition_->show();
+ overlayElementState_->show();
+
+ // Create two text overlays
+ this->textOverlayLeft_ = new OverlayText(this->getContext());
+ assert(this->textOverlayLeft_.get());
+ this->textOverlayLeft_->setCaption("???");
+ textOverlayLeft_->setPickPoint(Vector2(0.0f,0.0f));
+ textOverlayLeft_->setVisible(true);
+ textOverlayLeft_->setAlignment(OverlayText::Left);
+ textOverlayLeft_->setTextSize(0.02f);
+ textOverlayLeft_->setColour(ColourValue(0.21,0.70,0.21,1.0));
+ textOverlayLeft_->setPosition(getPosition());
+ textOverlayLeft_->setAspectCorrection(this->getAspectCorrection());
+
+ this->textOverlayRight_ = new OverlayText(this->getContext());
+ assert(this->textOverlayLeft_.get());
+ this->textOverlayRight_->setCaption("???");
+ textOverlayRight_->setPickPoint(Vector2(0.0f,0.0f));
+ textOverlayRight_->setVisible(true);
+ textOverlayRight_->setAlignment(OverlayText::Left);
+ textOverlayRight_->setTextSize(0.02f);
+ textOverlayRight_->setColour(ColourValue(0.21,0.70,0.21,1.0));
+ textOverlayRight_->setPosition(getPosition());
+ textOverlayRight_->setAspectCorrection(this->getAspectCorrection());
+
+ materialNameState_ = "Orxonox/WSHUD_Reloading";
+
+ overlayElementReplenish_->setMaterialName("Orxonox/WSHUD_Replenish");
+ }
+
+ HUDWeaponMode::~HUDWeaponMode()
+ {
+ if (this->isInitialized())
+ {
+ //this->textOverlay_->destroy();
+ }
+ }
+
+ void HUDWeaponMode::tick(float dt)
+ {
+ SUPER(HUDWeaponMode, tick, dt);
+
+ if (this->owner_ && this->weaponMode_)
+ {
+ std::string lastMaterialNameState = materialNameState_;
+
+ if (weaponMode_->getReloading())
+ {
+ materialNameState_ = "Orxonox/WSHUD_Reloading";
+ }
+ else
+ {
+ materialNameState_ = "Orxonox/WSHUD_Ready";
+ }
+
+ Munition* munition = this->weaponMode_->getMunition();
+
+ if (munition != NULL)
+ {
+ bool useSeparateMagazines = munition->getUseSeparateMagazines();
+ bool stackMunition = munition->getStackMunition();
+
+ if (!useSeparateMagazines && !stackMunition)
+ {
+ this->textOverlayLeft_->setCaption(multi_cast<std::string>(munition->getNumMunitionInCurrentMagazine(weaponMode_)));
+ this->textOverlayRight_->setCaption(multi_cast<std::string>(munition->getNumMagazines()));
+ }
+ else if (!useSeparateMagazines && stackMunition)
+ {
+ this->textOverlayLeft_->setCaption(multi_cast<std::string>(munition->getNumMunition(weaponMode_)));
+ this->textOverlayRight_->setCaption("");
+ }
+ else if (useSeparateMagazines && !stackMunition)
+ {
+ this->textOverlayLeft_->setCaption(multi_cast<std::string>(munition->getNumMunitionInCurrentMagazine(weaponMode_)));
+ this->textOverlayRight_->setCaption(multi_cast<std::string>(munition->getNumMagazines()));
+ }
+
+ if (munition->getNumMunition(weaponMode_) == 0)
+ {
+ materialNameState_ = "Orxonox/WSHUD_Empty";
+ }
+ }
+
+ if (munition->isA(Class(ReplenishingMunition)))
+ {
+ ReplenishingMunition* replenishingMunition = dynamic_cast<ReplenishingMunition*>(munition);
+
+ if (replenishingMunition->canAddMunition(1))
+ {
+ float progress = 1.0f - replenishingMunition->getProgress();
+ overlayElementReplenish_->setDimensions(1.0f,progress);
+ }
+ else
+ {
+ overlayElementReplenish_->setDimensions(1.0f,1.0f);
+ }
+ }
+
+ if (materialNameState_ != lastMaterialNameState)
+ {
+ overlayElementState_->setMaterialName(materialNameState_);
+ }
+ }
+ }
+
+ void HUDWeaponMode::positionChanged()
+ {
+ OrxonoxOverlay::positionChanged();
+
+ positionHUDChilds();
+ }
+
+ void HUDWeaponMode::changedOwner()
+ {
+ SUPER(HUDWeaponMode, changedOwner);
+
+ this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
+
+ //updateWeaponsList();
+ }
+
+ void HUDWeaponMode::changedOverlayGroup()
+ {
+ SUPER(HUDWeaponMode, changedOverlayGroup);
+
+ this->getOverlayGroup()->addElement(this->textOverlayLeft_.get());
+ this->getOverlayGroup()->addElement(this->textOverlayRight_.get());
+ }
+
+ void HUDWeaponMode::changedVisibility()
+ {
+ SUPER(HUDWeaponMode, changedVisibility);
+
+ //this->textOverlay_->setVisible(this->isVisible());
+ }
+
+ void HUDWeaponMode::changedName()
+ {
+ SUPER(HUDWeaponMode, changedName);
+
+ //this->textOverlay_->setName(this->getName() + "text");
+ }
+
+ void HUDWeaponMode::setWeaponMode(WeaponMode* weaponMode)
+ {
+ weaponMode_ = weaponMode;
+
+ if (!weaponMode_)
+ {
+ return;
+ }
+
+ std::string materialName = weaponMode_->getHUDImageString();
+
+ overlayElementIcon_->setMaterialName(materialName);
+
+ Munition* munition = this->weaponMode_->getMunition();
+
+ if (munition != NULL)
+ {
+ bool useSeparateMagazines = munition->getUseSeparateMagazines();
+ bool stackMunition = munition->getStackMunition();
+
+ if (!useSeparateMagazines && !stackMunition)
+ {
+ overlayElementMunition_->setMaterialName("Orxonox/WSHUD_MunitionShare");
+ }
+ else if (!useSeparateMagazines && stackMunition)
+ {
+ overlayElementMunition_->setMaterialName("Orxonox/WSHUD_MunitionStack");
+ }
+ else if (useSeparateMagazines && !stackMunition)
+ {
+ overlayElementMunition_->setMaterialName("Orxonox/WSHUD_MunitionSeparate");
+ }
+ }
+ }
+
+ void HUDWeaponMode::positionHUDChilds()
+ {
+ textOverlayLeft_->setPosition(getPosition() + Vector2(0.06f,0.0f));
+ textOverlayRight_->setPosition(getPosition() + Vector2(0.105f,0.0f));
+ }
+}
Added: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.h
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.h (rev 0)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponMode.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,86 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabien Vultier
+ * Co-authors:
+ * ...
+ *
+ */
+
+#ifndef _HUDWeaponMode_H__
+#define _HUDWeaponMode_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include <map>
+#include <vector>
+#include <string>
+
+#include <OgreOverlayManager.h>
+#include <OgreMaterialManager.h>
+#include <OgreTechnique.h>
+#include <OgrePass.h>
+#include <OgrePanelOverlayElement.h>
+
+#include "overlays/OrxonoxOverlay.h"
+#include "overlays/OverlayText.h"
+#include "tools/interfaces/Tickable.h"
+#include "worldentities/pawns/Pawn.h"
+#include "overlays/OverlayGroup.h"
+#include "weaponsystem/ReplenishingMunition.h"
+
+namespace orxonox
+{
+ class _OverlaysExport HUDWeaponMode : public OrxonoxOverlay, public Tickable
+ {
+ public:
+ HUDWeaponMode(Context* context);
+ virtual ~HUDWeaponMode();
+
+ virtual void tick(float dt);
+ virtual void changedOwner();
+ virtual void changedOverlayGroup();
+ virtual void changedVisibility();
+ virtual void changedName();
+ virtual void positionChanged();
+
+ virtual void setWeaponMode(WeaponMode* weaponMode);
+
+ private:
+ virtual void positionHUDChilds();
+
+ WeakPtr<Pawn> owner_;
+ WeakPtr<WeaponMode> weaponMode_;
+
+ Ogre::PanelOverlayElement* overlayElementIcon_;
+ Ogre::PanelOverlayElement* overlayElementReplenish_;
+ Ogre::PanelOverlayElement* overlayElementMunition_;
+ Ogre::PanelOverlayElement* overlayElementState_;
+
+ std::string materialNameState_;
+
+ StrongPtr<OverlayText> textOverlayLeft_;
+ StrongPtr<OverlayText> textOverlayRight_;
+ };
+}
+
+#endif /* _HUDWeaponMode_H__ */
Added: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.cc
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.cc (rev 0)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,183 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Yuning Chai
+ * Felix Schulthess
+ * Co-authors:
+ * Reto Grieder
+ * Wolfgang Roenninger
+ *
+ */
+
+#include "HUDWeaponSystem.h"
+
+#include <OgreOverlayManager.h>
+#include <OgrePanelOverlayElement.h>
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "tools/TextureGenerator.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/Weapon.h"
+#include "util/Convert.h"
+#include "core/class/Super.h"
+
+namespace orxonox
+{
+ RegisterClass(HUDWeaponSystem);
+
+ HUDWeaponSystem::HUDWeaponSystem(Context* context) : OrxonoxOverlay(context)
+ {
+ RegisterObject(HUDWeaponSystem);
+
+ weapons_.clear();
+ hudWeapons_.clear();
+ }
+
+ HUDWeaponSystem::~HUDWeaponSystem()
+ {
+ if (this->isInitialized())
+ {
+ destroyHUDChilds();
+ }
+ }
+
+ void HUDWeaponSystem::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(HUDWeaponSystem, XMLPort, xmlelement, mode);
+
+ /*XMLPortParam(HUDWeaponSystem, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlelement, mode);
+ XMLPortParam(HUDWeaponSystem, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance, xmlelement, mode);*/
+ }
+
+ void HUDWeaponSystem::tick(float dt)
+ {
+ SUPER(HUDWeaponSystem, tick, dt);
+
+ if (this->owner_)
+ {
+
+ }
+ }
+
+ void HUDWeaponSystem::positionChanged()
+ {
+ OrxonoxOverlay::positionChanged();
+
+ positionHUDChilds();
+ }
+
+ void HUDWeaponSystem::changedOwner()
+ {
+ SUPER(HUDWeaponSystem, changedOwner);
+
+ this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
+
+ updateWeaponList();
+ }
+
+ void HUDWeaponSystem::changedOverlayGroup()
+ {
+ SUPER(HUDWeaponSystem, changedOverlayGroup);
+
+ //this->getOverlayGroup()->addElement(this->textOverlay_.get());
+ }
+
+ void HUDWeaponSystem::changedVisibility()
+ {
+ SUPER(HUDWeaponSystem, changedVisibility);
+
+ //this->textOverlay_->setVisible(this->isVisible());
+ }
+
+ void HUDWeaponSystem::changedName()
+ {
+ SUPER(HUDWeaponSystem, changedName);
+
+ //this->textOverlay_->setName(this->getName() + "text");
+ }
+
+ void HUDWeaponSystem::updateWeaponList()
+ {
+ if (owner_ == NULL)
+ {
+ return;
+ }
+
+ weapons_.clear();
+
+ destroyHUDChilds();
+
+ std::vector<WeaponPack*>* weaponPacks = owner_->getAllWeaponPacks();
+
+ for (std::vector<WeaponPack*>::const_iterator itPacks = weaponPacks->begin(); itPacks != weaponPacks->end(); ++itPacks)
+ {
+ std::vector<Weapon*>* weapons = (*itPacks)->getAllWeapons();
+
+ for (std::vector<Weapon*>::const_iterator itWeapons = weapons->begin(); itWeapons != weapons->end(); ++itWeapons)
+ {
+ this->weapons_.push_back(*itWeapons);
+ }
+ }
+
+ createHUDChilds();
+ positionHUDChilds();
+ }
+
+ void HUDWeaponSystem::createHUDChilds()
+ {
+ for (std::vector<WeakPtr<Weapon> >::iterator it = weapons_.begin(); it != weapons_.end(); ++it)
+ {
+ HUDWeapon* hudWeapon = new HUDWeapon(this->getContext());
+ hudWeapon->setOwner(owner_);
+ hudWeapon->setWeapon(*it);
+ hudWeapons_.push_back(hudWeapon);
+ }
+ }
+
+ void HUDWeaponSystem::positionHUDChilds()
+ {
+ int positionIndex = 0;
+
+ for (std::vector<WeakPtr<HUDWeapon> >::iterator it = hudWeapons_.begin(); it != hudWeapons_.end(); ++it)
+ {
+ (*it)->setOverlayGroup(this->getOverlayGroup());
+ (*it)->setAspectCorrection(this->getAspectCorrection());
+ (*it)->setPosition(this->getPosition() + Vector2(0.15f*positionIndex,0.0f));
+ (*it)->setSize(Vector2(0.15f,0.10f));
+ (*it)->setPickPoint(Vector2(0.0f,0.0f));
+
+ ++ positionIndex;
+ }
+ }
+
+ void HUDWeaponSystem::destroyHUDChilds()
+ {
+ for (std::vector<WeakPtr<HUDWeapon> >::iterator it = hudWeapons_.begin(); it != hudWeapons_.end(); ++it)
+ {
+ (*it)->destroy();
+ }
+
+ hudWeapons_.clear();
+ }
+}
Added: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.h
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.h (rev 0)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeaponSystem.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,80 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabien Vultier
+ * Co-authors:
+ * ...
+ *
+ */
+
+#ifndef _HUDWeaponSystem_H__
+#define _HUDWeaponSystem_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include <map>
+#include <vector>
+#include <string>
+
+#include <OgreOverlayManager.h>
+#include <OgreMaterialManager.h>
+#include <OgreTechnique.h>
+#include <OgrePass.h>
+#include <OgrePanelOverlayElement.h>
+
+#include "overlays/OrxonoxOverlay.h"
+#include "overlays/OverlayText.h"
+#include "tools/interfaces/Tickable.h"
+#include "worldentities/pawns/Pawn.h"
+#include "overlays/OverlayGroup.h"
+#include "HUDWeapon.h"
+
+namespace orxonox
+{
+ class _OverlaysExport HUDWeaponSystem : public OrxonoxOverlay, public Tickable
+ {
+ public:
+ HUDWeaponSystem(Context* context);
+ virtual ~HUDWeaponSystem();
+
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+ virtual void tick(float dt);
+ virtual void changedOwner();
+ virtual void changedOverlayGroup();
+ virtual void changedVisibility();
+ virtual void changedName();
+ virtual void positionChanged();
+
+ private:
+ virtual void updateWeaponList();
+ virtual void createHUDChilds();
+ virtual void positionHUDChilds();
+ virtual void destroyHUDChilds();
+
+ WeakPtr<Pawn> owner_;
+
+ std::vector<WeakPtr<Weapon> > weapons_;
+ std::vector<WeakPtr<HUDWeapon> > hudWeapons_;
+ };
+}
+
+#endif /* _HUDWeaponSystem_H__ */
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/CMakeLists.txt
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/CMakeLists.txt 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/CMakeLists.txt 2015-10-24 20:51:18 UTC (rev 10688)
@@ -1,6 +1,6 @@
ADD_SOURCE_FILES(WEAPONS_SRC_FILES
- ReplenishingMunition.cc
LaserMunition.cc
+ LightningMunition.cc
FusionMunition.cc
RocketMunition.cc
GravityBombMunition.cc
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/FusionMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/FusionMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/FusionMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -27,7 +27,7 @@
*/
/**
- @file FusionMunition.h
+ @file FusionMunition.cc
@brief Implementation of the FusionMunition class.
*/
@@ -46,11 +46,13 @@
this->maxMagazines_ = 10;
this->magazines_ = 10;
- this->bUseSeparateMagazines_ = true;
- this->bStackMunition_ = false;
+ this->deployment_ = DEPLOYMENT_SEPARATE;
+
this->reloadTime_ = 1.0f;
this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = true;
+
+ this->reloadTime_ = 0.5f;
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/GravityBombMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/GravityBombMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/GravityBombMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -18,11 +18,12 @@
this->maxMagazines_ = 30;
this->magazines_ = 15;
- this->bUseSeparateMagazines_ = false;
- this->bStackMunition_ = true;
+ this->deployment_ = DEPLOYMENT_STACK;
this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+ this->reloadTime_ = 0.0f;
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -27,7 +27,7 @@
*/
/**
- @file IceMunition.h
+ @file IceMunition.cc
@brief Implementation of the IceMunition class.
*/
@@ -46,10 +46,11 @@
this->maxMagazines_ = 50;
this->magazines_ = 25;
- this->bUseSeparateMagazines_ = false;
- this->bStackMunition_ = true;
+ this->deployment_ = DEPLOYMENT_STACK;
this->bAllowMunitionRefilling_ = false;
this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+ this->reloadTime_ = 0.5f;
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -27,7 +27,7 @@
*/
/**
- @file LaserMunition.h
+ @file LaserMunition.cc
@brief Implementation of the LaserMunition class.
*/
@@ -42,17 +42,18 @@
{
RegisterObject(LaserMunition);
- this->maxMunitionPerMagazine_ = 20;
- this->maxMagazines_ = 1;
- this->magazines_ = 1;
+ this->maxMunitionPerMagazine_ = 10;
+ this->maxMagazines_ = 10;
+ this->magazines_ = 10;
- this->bUseSeparateMagazines_ = false;
- this->bStackMunition_ = true;
+ this->deployment_ = DEPLOYMENT_SEPARATE;
this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = true;
this->replenishInterval_ = 0.5f;
this->replenishMunitionAmount_ = 1;
+
+ this->reloadTime_ = 0.8f;
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.h
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/LaserMunition.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -35,7 +35,7 @@
#define _LaserMunition_H__
#include "weapons/WeaponsPrereqs.h"
-#include "ReplenishingMunition.h"
+#include "weaponsystem/ReplenishingMunition.h"
namespace orxonox
{
Added: code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.cc (rev 0)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,56 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabien Vultier
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file LightningMunition.cc
+ @brief Implementation of the LightningMunition class.
+*/
+
+#include "LightningMunition.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+ RegisterClass(LightningMunition);
+
+ LightningMunition::LightningMunition(Context* context) : Munition(context)
+ {
+ RegisterObject(LightningMunition);
+
+ this->maxMunitionPerMagazine_ = 20;
+ this->maxMagazines_ = 1;
+ this->magazines_ = 1;
+
+ this->deployment_ = DEPLOYMENT_SHARE;
+
+ this->bAllowMunitionRefilling_ = true;
+ this->bAllowMultiMunitionRemovementUnderflow_ = true;
+
+ this->reloadTime_ = 0.5f;
+ }
+}
Added: code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.h
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.h (rev 0)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/LightningMunition.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,58 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabien Vultier
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file LightningMunition.h
+ @brief Definition of the LightningMunition class.
+*/
+
+#ifndef _LightningMunition_H__
+#define _LightningMunition_H__
+
+#include "weapons/WeaponsPrereqs.h"
+#include "weaponsystem/Munition.h"
+
+namespace orxonox
+{
+
+ /**
+ @brief
+ LightningMunition.
+ @author
+ Fabien Vultier
+ @ingroup WeaponsMunitions
+ */
+ class _WeaponsExport LightningMunition : public Munition
+ {
+ public:
+ LightningMunition(Context* context);
+ virtual ~LightningMunition() {}
+ };
+}
+
+#endif /* _LightningMunition_H__ */
Deleted: code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -1,75 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Fabian 'x3n' Landau
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file ReplenishingMunition.h
- @brief Implementation of the ReplenishingMunition class.
-*/
-
-#include "ReplenishingMunition.h"
-
-#include "core/CoreIncludes.h"
-#include "core/command/Executor.h"
-
-namespace orxonox
-{
- RegisterClass(ReplenishingMunition);
-
- ReplenishingMunition::ReplenishingMunition(Context* context) : Munition(context)
- {
- RegisterObject(ReplenishingMunition);
-
- this->replenishInterval_ = 1.0f;
- this->replenishMunitionAmount_ = 1;
-
- // Use the timer to initialize itself after the first tick (because the real values for
- // replenishIntervall_ and replenishMunitionAmount_ will be set in the constructor of the
- // inheriting class, which comes after this constructor)
- this->replenishingTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&ReplenishingMunition::initializeTimer, this)));
- }
-
- void ReplenishingMunition::initializeTimer()
- {
- // Initialize the timer
- this->replenishingTimer_.setTimer(this->replenishInterval_, true, createExecutor(createFunctor(&ReplenishingMunition::replenish, this)));
- }
-
- void ReplenishingMunition::replenish()
- {
- // Make a temporary copy of bAllowMunitionRefilling_, because this might be disallowed in every
- // case except the internal munition replenishing
- bool temp = this->bAllowMunitionRefilling_;
- this->bAllowMunitionRefilling_ = true;
-
- // Replenish munition
- this->addMunition(this->replenishMunitionAmount_);
-
- // Write back the temporary value
- this->bAllowMunitionRefilling_ = temp;
- }
-}
Deleted: code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.h
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/ReplenishingMunition.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -1,70 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Fabian 'x3n' Landau
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file ReplenishingMunition.h
- @brief Definition of the ReplenishingMunition class.
-*/
-
-#ifndef _ReplenishingMunition_H__
-#define _ReplenishingMunition_H__
-
-#include "weapons/WeaponsPrereqs.h"
-
-#include "tools/Timer.h"
-#include "weaponsystem/Munition.h"
-
-namespace orxonox
-{
-
- /**
- @brief
- Munition that is replenished by a certain amount each time interval.
- @author
- Fabian 'x3n' Landau
- @ingroup WeaponsMunitions
- */
- class _WeaponsExport ReplenishingMunition : public Munition
- {
- public:
- ReplenishingMunition(Context* context);
- virtual ~ReplenishingMunition() {}
-
- protected:
- float replenishInterval_; //!< The interval in which the munition is replenished.
- unsigned int replenishMunitionAmount_; //!< The amount by which it is replenished.
-
- private:
- void replenish();
- void initializeTimer();
-
- Timer replenishingTimer_; //!< Timer to do the replenishing.
- };
-}
-
-#endif /* _ReplenishingMunition_H__ */
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -27,7 +27,7 @@
*/
/**
- @file RocketMunition.h
+ @file RocketMunition.cc
@brief Implementation of the RocketMunition class.
*/
@@ -46,10 +46,11 @@
this->maxMagazines_ = 30;
this->magazines_ = 10;
- this->bUseSeparateMagazines_ = false;
- this->bStackMunition_ = true;
+ this->deployment_ = DEPLOYMENT_STACK;
this->bAllowMunitionRefilling_ = false;
this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+ this->reloadTime_ = 0.5f;
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/SplitMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/SplitMunition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/SplitMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -27,7 +27,7 @@
*/
/**
- @file SplitMunition.h
+ @file SplitMunition.cc
@brief Implementation of the SplitMunition class.
*/
@@ -46,10 +46,11 @@
this->maxMagazines_ = 100;
this->magazines_ = 25;
- this->bUseSeparateMagazines_ = false;
- this->bStackMunition_ = true;
+ this->deployment_ = DEPLOYMENT_STACK;
this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = false;
+
+ this->reloadTime_ = 0.5f;
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/projectiles/GravityBombField.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/projectiles/GravityBombField.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/projectiles/GravityBombField.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -163,7 +163,6 @@
if (lifetime_ <= -4)
{
- orxout(debug_output) << "Timeout. Destroying field." << endl;
this->destroy();
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/EnergyDrink.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/EnergyDrink.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/EnergyDrink.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -62,6 +62,8 @@
this->delayTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&EnergyDrink::shot, this)));
this->delayTimer_.stopTimer();
+
+ hudImageString_ = "Orxonox/WSHUD_WM_EnergyDrink";
}
void EnergyDrink::XMLPort(Element& xmlelement, XMLPort::Mode mode)
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/FusionFire.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/FusionFire.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/FusionFire.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -57,6 +57,8 @@
this->speed_ = 750.0f;
this->setMunitionName("FusionMunition");
+
+ hudImageString_ = "Orxonox/WSHUD_WM_FusionFire";
}
/**
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/GravityBombFire.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/GravityBombFire.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/GravityBombFire.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -30,6 +30,8 @@
this->setMunitionName("GravityBombMunition");
this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.8); ///< sets sound of the bomb as it is fired.
+
+ hudImageString_ = "Orxonox/WSHUD_WM_GravityBombFire";
}
GravityBombFire::~GravityBombFire(){};
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/HsW01.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/HsW01.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/HsW01.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -68,6 +68,8 @@
this->delayTimer_.stopTimer();
this->setDefaultSound(this->sound_);
+
+ hudImageString_ = "Orxonox/WSHUD_WM_HsW01";
}
HsW01::~HsW01()
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/IceGun.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/IceGun.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/IceGun.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -58,8 +58,10 @@
this->setFreezeTime(3.0);
this->setFreezeFactor(0.5);
- this->setMunitionName("LaserMunition");
+ this->setMunitionName("IceMunition");
this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+
+ hudImageString_ = "Orxonox/WSHUD_WM_IceGun";
}
IceGun::~IceGun()
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/LaserFire.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/LaserFire.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/LaserFire.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -55,6 +55,8 @@
this->speed_ = 750.0f;
this->setMunitionName("LaserMunition");
+
+ hudImageString_ = "Orxonox/WSHUD_WM_LaserFire";
}
/**
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/LightningGun.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/LightningGun.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/LightningGun.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -53,8 +53,10 @@
this->damage_ = 0.0f;
this->speed_ = 750.0f;
- this->setMunitionName("LaserMunition");
+ this->setMunitionName("LightningMunition");
this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+
+ hudImageString_ = "Orxonox/WSHUD_WM_LightningGun";
}
LightningGun::~LightningGun()
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFire.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFire.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -58,6 +58,8 @@
this->setMunitionName("RocketMunition");
// The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+
+ hudImageString_ = "Orxonox/WSHUD_WM_RocketFire";
}
RocketFire::~RocketFire()
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFireOld.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFireOld.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/RocketFireOld.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -58,6 +58,8 @@
this->setMunitionName("RocketMunition");
// The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+
+ hudImageString_ = "Orxonox/WSHUD_WM_SimpleRocketFire";
}
RocketFireOld::~RocketFireOld()
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/SimpleRocketFire.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/SimpleRocketFire.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -63,6 +63,8 @@
this->setMunitionName("RocketMunition");
this->setDefaultSoundWithVolume("sounds/Rocket_launch.ogg",0.4f);
// The firing sound of the Rocket is played in Rocket.cc (because of OpenAl sound positioning)
+
+ hudImageString_ = "Orxonox/WSHUD_WM_SimpleRocketFire";
}
SimpleRocketFire::~SimpleRocketFire()
@@ -88,6 +90,7 @@
rocket->setHealthDamage(this->getHealthDamage());
WorldEntity* pawn = static_cast<ControllableEntity*>(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn())->getTarget();
- if (pawn) controller->setTarget(pawn);
+ if (pawn)
+ controller->setTarget(pawn);
}
}
Modified: code/branches/fabienHS15/src/modules/weapons/weaponmodes/SplitGun.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/weaponmodes/SplitGun.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/modules/weapons/weaponmodes/SplitGun.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -61,6 +61,8 @@
this->setMunitionName("SplitMunition");
this->setDefaultSound("sounds/Weapon_LightningGun.ogg");
+
+ hudImageString_ = "Orxonox/WSHUD_WM_SplitGun";
}
SplitGun::~SplitGun()
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/CMakeLists.txt
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/CMakeLists.txt 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/CMakeLists.txt 2015-10-24 20:51:18 UTC (rev 10688)
@@ -1,5 +1,6 @@
ADD_SOURCE_FILES(ORXONOX_SRC_FILES
Munition.cc
+ ReplenishingMunition.cc
Weapon.cc
WeaponMode.cc
WeaponPack.cc
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -44,12 +44,11 @@
this->maxMagazines_ = 10;
this->magazines_ = 10;
- this->bUseSeparateMagazines_ = false;
- this->bStackMunition_ = true;
+ this->deployment_ = DEPLOYMENT_STACK;
this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = true;
- this->reloadTime_ = 0;
+ this->reloadTime_ = 0.5f;
}
Munition::~Munition()
@@ -60,7 +59,7 @@
Munition::Magazine* Munition::getMagazine(WeaponMode* user) const
{
- if (this->bUseSeparateMagazines_)
+ if (deployment_ == DEPLOYMENT_SEPARATE)
{
// For separated magazines we definitively need a given user
if (!user)
@@ -86,7 +85,7 @@
Magazine* magazine = this->getMagazine(user);
if (magazine)
{
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
// With stacked munition every magazine contributes to the total amount
return this->maxMunitionPerMagazine_ * this->magazines_ + magazine->munition_;
else
@@ -108,7 +107,7 @@
unsigned int Munition::getNumMagazines() const
{
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
{
// If we stack munition and the current magazine is still full, it counts too
Magazine* magazine = this->getMagazine(0);
@@ -121,7 +120,7 @@
unsigned int Munition::getMaxMunition() const
{
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
return this->maxMunitionPerMagazine_ * this->maxMagazines_;
else
return this->maxMunitionPerMagazine_;
@@ -134,8 +133,8 @@
{
unsigned int munition = magazine->munition_;
- // If we stack munition, we con't care about the current magazine - we just need enough munition in total
- if (this->bStackMunition_)
+ // If we stack munition, we don't care about the current magazine - we just need enough munition in total
+ if (deployment_ == DEPLOYMENT_STACK)
munition += this->maxMunitionPerMagazine_ * this->magazines_;
if (munition == 0)
@@ -168,7 +167,7 @@
else
{
// Not enough munition
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
{
// We stack munition, so just take what we can and then load the next magazine
amount -= magazine->munition_;
@@ -198,7 +197,7 @@
bool Munition::canReload() const
{
// As long as we have enough magazines (and don't stack munition) we can reload
- return (this->magazines_ > 0 && !this->bStackMunition_);
+ return (this->magazines_ > 0 && !deployment_ == DEPLOYMENT_STACK);
}
bool Munition::needReload(WeaponMode* user) const
@@ -206,7 +205,7 @@
Magazine* magazine = this->getMagazine(user);
if (magazine)
{
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
// With stacked munition, we never have to reload
return false;
else
@@ -230,11 +229,11 @@
return false;
// If we use separate magazines for each user, we definitively need a user given
- if (this->bUseSeparateMagazines_ && !user)
+ if (deployment_ == DEPLOYMENT_SEPARATE && !user)
return false;
// If we don't use separate magazines, set user to 0
- if (!this->bUseSeparateMagazines_)
+ if (!deployment_ == DEPLOYMENT_SEPARATE)
user = 0;
// Remove the current magazine for the given user
@@ -259,7 +258,7 @@
if (!this->bAllowMunitionRefilling_)
return false;
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
{
// If we stack munition, we can always add munition until we reach the limit
return (this->getNumMunition(0) < this->getMaxMunition());
@@ -280,7 +279,7 @@
if (!this->canAddMunition(amount))
return false;
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
{
// Stacking munition means, if a magazine gets full, the munition adds to a new magazine
Magazine* magazine = this->getMagazine(0);
@@ -339,7 +338,7 @@
{
// TODO: 'amount' is not used
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
// If we stack munition, we can always add new magazines because they contribute directly to the munition
return (this->getNumMunition(0) < this->getMaxMunition());
else
@@ -356,7 +355,7 @@
int needed_magazines = this->maxMagazines_ - this->magazines_ - this->currentMagazines_.size();
// If zero or less magazines are needed, we definitively don't need more magazines (unless we stack munition - then a magazine contributes directly to the munition)
- if (needed_magazines <= 0 && !this->bStackMunition_)
+ if (needed_magazines <= 0 && !deployment_ == DEPLOYMENT_STACK)
return false;
if (amount <= static_cast<unsigned int>(needed_magazines))
@@ -368,7 +367,7 @@
{
// We get more magazines than we need, so just add the needed amount
this->magazines_ += needed_magazines;
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
{
// We stack munition, so the additional amount contributes directly to the munition of the current magazine
Magazine* magazine = this->getMagazine(0);
@@ -382,7 +381,7 @@
bool Munition::canRemoveMagazines(unsigned int amount) const
{
- if (this->bStackMunition_)
+ if (deployment_ == DEPLOYMENT_STACK)
{
if (this->magazines_ >= amount)
{
@@ -421,7 +420,7 @@
// We have enough magazines, just remove the amount
this->magazines_ -= amount;
}
- else if (this->bStackMunition_)
+ else if (deployment_ == DEPLOYMENT_STACK)
{
// We don't have enough magazines, but we're stacking munition, so additionally remove the bullets from the current magazine
this->magazines_ = 0;
@@ -436,11 +435,11 @@
bool Munition::dropMagazine(WeaponMode* user)
{
// If we use separate magazines, we need a user
- if (this->bUseSeparateMagazines_ && !user)
+ if (deployment_ == DEPLOYMENT_SEPARATE && !user)
return false;
// If we don't use separate magazines, set user to 0
- if (!this->bUseSeparateMagazines_)
+ if (!deployment_ == DEPLOYMENT_SEPARATE)
user = 0;
// Remove the current magazine for the given user
@@ -464,7 +463,7 @@
this->munition_ = 0;
this->bLoaded_ = false;
- if (bUseReloadTime && munition->reloadTime_ > 0 && !munition->bStackMunition_)
+ if (bUseReloadTime && munition->reloadTime_ > 0 && !munition->deployment_ == DEPLOYMENT_STACK)
{
const ExecutorPtr& executor = createExecutor(createFunctor(&Magazine::loaded, this));
executor->setDefaultValues(munition);
@@ -480,4 +479,4 @@
this->bLoaded_ = true;
this->munition_ = munition->maxMunitionPerMagazine_;
}
-}
+}
\ No newline at end of file
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/Munition.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -38,8 +38,16 @@
namespace orxonox
{
+ enum Deployment
+ {
+ DEPLOYMENT_SHARE,
+ DEPLOYMENT_STACK,
+ DEPLOYMENT_SEPARATE
+ };
+
+
class _OrxonoxExport Munition : public BaseObject
- {
+ {
struct Magazine
{
public:
@@ -67,6 +75,10 @@
{ return this->maxMagazines_; }
inline unsigned int getMaxMunitionPerMagazine() const
{ return this->maxMunitionPerMagazine_; }
+ inline bool getUseSeparateMagazines() const
+ { return deployment_ == DEPLOYMENT_SEPARATE; }
+ inline bool getStackMunition() const
+ { return deployment_ == DEPLOYMENT_STACK; }
bool canTakeMunition(unsigned int amount, WeaponMode* user) const;
bool takeMunition(unsigned int amount, WeaponMode* user);
@@ -94,8 +106,8 @@
unsigned int magazines_;
std::map<WeaponMode*, Magazine*> currentMagazines_;
- bool bUseSeparateMagazines_;
- bool bStackMunition_;
+ Deployment deployment_;
+
bool bAllowMunitionRefilling_;
bool bAllowMultiMunitionRemovementUnderflow_;
Added: code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.cc (rev 0)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,83 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabian 'x3n' Landau
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file ReplenishingMunition.h
+ @brief Implementation of the ReplenishingMunition class.
+*/
+
+#include "ReplenishingMunition.h"
+
+#include "core/CoreIncludes.h"
+#include "core/command/Executor.h"
+
+namespace orxonox
+{
+ RegisterClass(ReplenishingMunition);
+
+ ReplenishingMunition::ReplenishingMunition(Context* context) : Munition(context)
+ {
+ RegisterObject(ReplenishingMunition);
+
+ this->replenishInterval_ = 1.0f;
+ this->replenishMunitionAmount_ = 1;
+
+ // Use the timer to initialize itself after the first tick (because the real values for
+ // replenishIntervall_ and replenishMunitionAmount_ will be set in the constructor of the
+ // inheriting class, which comes after this constructor)
+ this->replenishingTimer_.setTimer(0.0f, false, createExecutor(createFunctor(&ReplenishingMunition::initializeTimer, this)));
+ }
+
+ float ReplenishingMunition::getProgress()
+ {
+ return replenishingTimer_.getRemainingTime()/this->replenishInterval_;
+ }
+
+ void ReplenishingMunition::initializeTimer()
+ {
+ // Initialize the timer
+ this->replenishingTimer_.setTimer(this->replenishInterval_, true, createExecutor(createFunctor(&ReplenishingMunition::replenish, this)));
+ }
+
+ void ReplenishingMunition::replenish()
+ {
+ if (this->canAddMunition(this->replenishMunitionAmount_))
+ {
+ // Make a temporary copy of bAllowMunitionRefilling_, because this might be disallowed in every
+ // case except the internal munition replenishing
+ bool temp = this->bAllowMunitionRefilling_;
+ this->bAllowMunitionRefilling_ = true;
+
+ // Replenish munition
+ this->addMunition(this->replenishMunitionAmount_);
+
+ // Write back the temporary value
+ this->bAllowMunitionRefilling_ = temp;
+ }
+ }
+}
Added: code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.h (rev 0)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/ReplenishingMunition.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -0,0 +1,71 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Fabian 'x3n' Landau
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file ReplenishingMunition.h
+ @brief Definition of the ReplenishingMunition class.
+*/
+
+#ifndef _ReplenishingMunition_H__
+#define _ReplenishingMunition_H__
+
+#include "tools/Timer.h"
+#include "Munition.h"
+
+namespace orxonox
+{
+
+ /**
+ @brief
+ Munition that is replenished by a certain amount each time interval.
+ @author
+ Fabian 'x3n' Landau
+ @ingroup WeaponsMunitions
+ */
+ class _OrxonoxExport ReplenishingMunition : public Munition
+ {
+ public:
+ ReplenishingMunition(Context* context);
+ virtual ~ReplenishingMunition() {}
+ virtual float getProgress();
+ inline float getReplenishingMunitionAmount() const
+ { return replenishMunitionAmount_; }
+
+ protected:
+ float replenishInterval_; //!< The interval in which the munition is replenished.
+ unsigned int replenishMunitionAmount_; //!< The amount by which it is replenished.
+
+ private:
+ void replenish();
+ void initializeTimer();
+
+ Timer replenishingTimer_; //!< Timer to do the replenishing.
+ };
+}
+
+#endif /* _ReplenishingMunition_H__ */
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -133,6 +133,10 @@
}
}
+ /**
+ @brief
+ Reload all @ref orxonox::WeaponMode weapon modes of this weapon.
+ */
void Weapon::reload()
{
for (std::multimap<unsigned int, WeaponMode*>::iterator it = this->weaponmodes_.begin(); it != this->weaponmodes_.end(); ++it)
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/Weapon.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -56,6 +56,10 @@
void addWeaponmode(WeaponMode* weaponmode);
WeaponMode* getWeaponmode(unsigned int index) const;
+ inline std::multimap<unsigned int, WeaponMode*>* getAllWeaponmodes()
+ { return &weaponmodes_; }
+ inline int getNumWeaponModes() const
+ { return weaponmodes_.size(); }
/**
@brief
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -74,6 +74,8 @@
this->muzzlePosition_ = Vector3::ZERO;
this->muzzleOrientation_ = Quaternion::IDENTITY;
+ hudImageString_ = "WSHUD_WM_Unknown";
+
if( GameMode::isMaster() )
{
this->defSndWpnFire_ = new WorldSound(this->getContext());
@@ -124,7 +126,8 @@
this->getWeapon()->attach(this->defSndWpnFire_);
this->bSoundAttached_ = true;
}
-
+
+ // Fireing is only possible if this weapon mode is not reloading and there is enough munition
if (!this->bReloading_ && this->munition_ && this->munition_->takeMunition(this->munitionPerShot_, this))
{
float tempReloadtime = this->reloadTime_;
@@ -133,13 +136,21 @@
{
if (this->munition_->reload(this))
{
+ // If true, the weapon reloads in parallel to the magazine reloading
if (this->bParallelReload_)
+ {
+ // The time needed to reload is the maximum of the reload time of the weapon mode and the magazine.
tempReloadtime = std::max(this->reloadTime_, this->munition_->getReloadTime());
+ }
else
+ {
+ // The time needed to reload is the sum of the reload time of the weapon mode and the magazine.
tempReloadtime = this->reloadTime_ + this->munition_->getReloadTime();
+ }
}
}
+ // Mark this weapon mode as reloading and start the reload timer
this->bReloading_ = true;
this->reloadTimer_.setInterval(tempReloadtime);
this->reloadTimer_.startTimer();
@@ -282,8 +293,10 @@
return BLANKSTRING;
}
- void WeaponMode::setDefaultSoundWithVolume(const std::string& soundPath, const float soundVolume){
- if (this->defSndWpnFire_) {
+ void WeaponMode::setDefaultSoundWithVolume(const std::string& soundPath, const float soundVolume)
+ {
+ if (this->defSndWpnFire_)
+ {
this->defSndWpnFire_->setSource(soundPath);
this->defSndWpnFire_->setVolume(soundVolume);
}
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponMode.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -37,6 +37,7 @@
#include "core/BaseObject.h"
#include "core/class/SubclassIdentifier.h"
#include "tools/Timer.h"
+#include "Munition.h"
namespace orxonox
{
@@ -103,6 +104,8 @@
{ this->bParallelReload_ = parallelreload; }
inline bool getParallelReload() const
{ return this->bParallelReload_; }
+ inline bool getReloading() const
+ { return this->bReloading_; }
// Fire
@@ -146,6 +149,9 @@
Vector3 getTarget();
+ inline const std::string& getHUDImageString() const
+ { return this->hudImageString_; }
+
protected:
virtual void fire() = 0;
@@ -154,14 +160,16 @@
unsigned int munitionPerShot_;
float reloadTime_;
- bool bAutoReload_;
- bool bParallelReload_;
+ bool bAutoReload_; // If true, the weapon reloads the magazine automatically.
+ bool bParallelReload_; // If true, the weapon reloads in parallel to the magazine reloading.
float damage_;
float healthdamage_;
float shielddamage_;
Vector3 muzzleOffset_;
+ std::string hudImageString_;
+
private:
void updateMunition();
void reloaded();
@@ -174,7 +182,7 @@
std::string munitionname_;
Timer reloadTimer_;
- bool bReloading_;
+ bool bReloading_; // If true, this weapon mode is marked as reloading.
Vector3 muzzlePosition_;
Quaternion muzzleOrientation_;
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -123,6 +123,11 @@
return 0;
}
+ std::vector<Weapon*>* WeaponPack::getAllWeapons()
+ {
+ return &weapons_;
+ }
+
void WeaponPack::addDefaultWeaponmodeLink(DefaultWeaponmodeLink* link)
{
this->links_.insert(link);
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponPack.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -51,6 +51,7 @@
void addWeapon(Weapon * weapon);
void removeWeapon(Weapon * weapon);
Weapon * getWeapon(unsigned int index) const;
+ std::vector<Weapon*>* getAllWeapons();
inline size_t getNumWeapons() const
{ return this->weapons_.size(); }
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -239,6 +239,11 @@
return 0;
}
+ std::vector<WeaponPack *> * WeaponSystem::getAllWeaponPacks()
+ {
+ return &weaponPacks_;
+ }
+
bool WeaponSystem::swapWeaponSlots(WeaponSlot * wSlot1, WeaponSlot * wSlot2)
{
if (!wSlot1 || !wSlot2)
Modified: code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/weaponsystem/WeaponSystem.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -66,6 +66,7 @@
bool addWeaponPack(WeaponPack * wPack);
void removeWeaponPack(WeaponPack * wPack);
WeaponPack * getWeaponPack(unsigned int index) const;
+ std::vector<WeaponPack *> * getAllWeaponPacks();
// configure slots and firemodes
bool swapWeaponSlots(WeaponSlot * wSlot1, WeaponSlot * wSlot2);
Modified: code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.cc 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.cc 2015-10-24 20:51:18 UTC (rev 10688)
@@ -553,6 +553,14 @@
return 0;
}
+ std::vector<WeaponPack *> * Pawn::getAllWeaponPacks()
+ {
+ if (this->weaponSystem_)
+ return this->weaponSystem_->getAllWeaponPacks();
+ else
+ return 0;
+ }
+
//Tell the Map (RadarViewable), if this is a playership
void Pawn::startLocalHumanControl()
{
Modified: code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.h 2015-10-24 20:12:07 UTC (rev 10687)
+++ code/branches/fabienHS15/src/orxonox/worldentities/pawns/Pawn.h 2015-10-24 20:51:18 UTC (rev 10688)
@@ -153,6 +153,7 @@
void addWeaponPack(WeaponPack * wPack);
void addWeaponPackXML(WeaponPack * wPack);
WeaponPack * getWeaponPack(unsigned int index) const;
+ std::vector<WeaponPack *> * getAllWeaponPacks();
virtual void addedWeaponPack(WeaponPack* wPack) {}
More information about the Orxonox-commit
mailing list