[Orxonox-commit 6056] r10715 - in code/branches/fabienHS15: data/levels/templates src/modules/overlays/hud src/modules/pickup src/modules/pickup/items src/modules/weapons/munitions
fvultier at orxonox.net
fvultier at orxonox.net
Tue Oct 27 21:08:41 CET 2015
Author: fvultier
Date: 2015-10-27 21:08:40 +0100 (Tue, 27 Oct 2015)
New Revision: 10715
Modified:
code/branches/fabienHS15/data/levels/templates/pickupRepresentationTemplates.oxt
code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc
code/branches/fabienHS15/src/modules/pickup/PickupPrereqs.h
code/branches/fabienHS15/src/modules/pickup/items/CMakeLists.txt
code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.cc
code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.h
code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc
code/branches/fabienHS15/src/modules/weapons/munitions/SplitMunition.cc
Log:
Modified: code/branches/fabienHS15/data/levels/templates/pickupRepresentationTemplates.oxt
===================================================================
--- code/branches/fabienHS15/data/levels/templates/pickupRepresentationTemplates.oxt 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/data/levels/templates/pickupRepresentationTemplates.oxt 2015-10-27 20:08:40 UTC (rev 10715)
@@ -211,9 +211,13 @@
representation = "smallmunitionpickup"
activationType = "immediate"
durationType = "once"
- amount = 10
- munitiontype = "LightningMunition"
- />
+ >
+ <munitioncontainers>
+ <MunitionContainer munitiontype="LaserMunition" munitionamount=16 magazinesamount=0 />
+ <MunitionContainer munitiontype="FusionMunition" munitionamount=8 magazinesamount=0 />
+ <MunitionContainer munitiontype="LightningMunition" munitionamount=8 magazinesamount=0 />
+ </munitioncontainers>
+ </MunitionPickup>
</Template>
<Template name=mediummunitionpickupRepresentation>
@@ -237,10 +241,15 @@
representation = "mediummunitionpickup"
activationType = "immediate"
durationType = "once"
- amount = 20
- munitiontype = "LightningMunition"
- />
-</Template>
+ >
+ <munitioncontainers>
+ <MunitionContainer munitiontype="LaserMunition" munitionamount=32 magazinesamount=0 />
+ <MunitionContainer munitiontype="FusionMunition" munitionamount=16 magazinesamount=0 />
+ <MunitionContainer munitiontype="LightningMunition" munitionamount=16 magazinesamount=0 />
+ <MunitionContainer munitiontype="SplitMunition" munitionamount=8 magazinesamount=0 />
+ <MunitionContainer munitiontype="RocketMunition" munitionamount=0 magazinesamount=2 />
+ </munitioncontainers>
+ </MunitionPickup></Template>
<Template name=hugemunitionpickupRepresentation>
<PickupRepresentation>
@@ -263,9 +272,17 @@
representation = "hugemunitionpickup"
activationType = "immediate"
durationType = "once"
- amount = 30
- munitiontype = "LightningMunition"
- />
+ >
+ <munitioncontainers>
+ <MunitionContainer munitiontype="LaserMunition" munitionamount=64 magazinesamount=0 />
+ <MunitionContainer munitiontype="FusionMunition" munitionamount=32 magazinesamount=0 />
+ <MunitionContainer munitiontype="LightningMunition" munitionamount=32 magazinesamount=0 />
+ <MunitionContainer munitiontype="SplitMunition" munitionamount=16 magazinesamount=0 />
+ <MunitionContainer munitiontype="RocketMunition" munitionamount=0 magazinesamount=10 />
+ <MunitionContainer munitiontype="IceMunition" munitionamount=0 magazinesamount=10 />
+ <MunitionContainer munitiontype="GravityBombMunition" munitionamount=0 magazinesamount=10 />
+ </munitioncontainers>
+ </MunitionPickup>
</Template>
<!-- Meta pickups: -->
Modified: code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc
===================================================================
--- code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/overlays/hud/HUDWeapon.cc 2015-10-27 20:08:40 UTC (rev 10715)
@@ -74,11 +74,6 @@
void HUDWeapon::tick(float dt)
{
SUPER(HUDWeapon, tick, dt);
-
- if (this->owner_)
- {
-
- }
}
void HUDWeapon::positionChanged()
@@ -100,22 +95,16 @@
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)
Modified: code/branches/fabienHS15/src/modules/pickup/PickupPrereqs.h
===================================================================
--- code/branches/fabienHS15/src/modules/pickup/PickupPrereqs.h 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/pickup/PickupPrereqs.h 2015-10-27 20:08:40 UTC (rev 10715)
@@ -84,6 +84,8 @@
class ShieldPickup;
class ShrinkPickup;
class DamageBoostPickup;
+ class MunitionPickup;
+ class MunitionContainer;
}
#endif /* _PickupPrereqs_H__ */
Modified: code/branches/fabienHS15/src/modules/pickup/items/CMakeLists.txt
===================================================================
--- code/branches/fabienHS15/src/modules/pickup/items/CMakeLists.txt 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/pickup/items/CMakeLists.txt 2015-10-27 20:08:40 UTC (rev 10715)
@@ -8,4 +8,5 @@
ShrinkPickup.cc
DamageBoostPickup.cc
MunitionPickup.cc
+ MunitionContainer.cc
)
Modified: code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.cc
===================================================================
--- code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.cc 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.cc 2015-10-27 20:08:40 UTC (rev 10715)
@@ -37,7 +37,7 @@
#include "core/CoreIncludes.h"
#include "core/XMLPort.h"
-#include "worldentities/pawns/SpaceShip.h"
+#include "worldentities/pawns/Pawn.h"
namespace orxonox
{
@@ -70,8 +70,6 @@
{
//Defines who is allowed to pick up the pickup.
this->addTarget(ClassIdentifier<Pawn>::getIdentifier());
- munitionAmount_ = 1;
- setMunitionName("LaserMunition");
}
/**
@@ -82,10 +80,23 @@
{
SUPER(MunitionPickup, XMLPort, xmlelement, mode);
- XMLPortParam(MunitionPickup, "amount", setMunitionAmount, getMunitionAmount, xmlelement, mode);
- XMLPortParam(MunitionPickup, "munitiontype", setMunitionName, getMunitionName, xmlelement, mode);
+ XMLPortObject(MunitionPickup, MunitionContainer, "munitioncontainers", addMunitionContainer, getMunitionContainer, xmlelement, mode);
}
+ void MunitionPickup::addMunitionContainer(MunitionContainer* munitionContainer)
+ {
+ OrxAssert(munitionContainer != NULL, "The munitionContainer cannot be NULL.");
+ this->munitionContainers_.push_back(munitionContainer);
+ }
+
+ MunitionContainer* MunitionPickup::getMunitionContainer(unsigned int index)
+ {
+ if(this->munitionContainers_.size() >= index)
+ return NULL;
+ else
+ return this->munitionContainers_[index];
+ }
+
/**
@brief
Is called when the pickup has transisted from used to unused or the other way around.
@@ -103,21 +114,27 @@
// If the pickup has transited to used.
if(this->isUsed())
{
- //Get pointer to the appropriate munition
- Munition* munition = pawn->getMunition(&munitionType_);
- if (munition)
+ for(std::vector<MunitionContainer*>::iterator it = this->munitionContainers_.begin(); it != this->munitionContainers_.end(); ++it)
{
- // Add munition
- munition->addMunition(munitionAmount_);
- // This will destroy the pickp
- this->setUsed(false);
- }
+ //Get pointer to the appropriate munition
+ SubclassIdentifier<Munition> identifier = (*it)->getMunitionType();
+ Munition* munition = pawn->getMunition(&identifier);
+ if (munition)
+ {
+ // Add munition and magzines
+ munition->addMunition((*it)->getMunitionAmount());
+ munition->addMagazines((*it)->getMagazinesAmount());
+ }
+ (*it)->destroy();
+ }
+ // This will destroy the pickp
+ this->setUsed(false);
}
else
{
this->Pickupable::destroy();
}
- }
+ }
/**
@brief
@@ -135,31 +152,6 @@
orxout(internal_error, context::pickups) << "Invalid PickupCarrier in MunitionPickup." << endl;
}
return pawn;
- }
-
- void MunitionPickup::setMunitionName(const std::string& munitionname)
- {
- Identifier* identifier = ClassByString(munitionname);
- if (identifier)
- {
- this->munitionType_ = identifier;
- }
- else
- {
- orxout(internal_warning) << "No munition class defined in MunitionPickup." << endl;
- }
- }
-
- void MunitionPickup::setMunitionAmount(int munitionAmount)
- {
- if (munitionAmount > 0)
- {
- munitionAmount_ = munitionAmount;
- }
- else
- {
- munitionAmount = 0;
- }
- }
+ }
}
Modified: code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.h
===================================================================
--- code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.h 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/pickup/items/MunitionPickup.h 2015-10-27 20:08:40 UTC (rev 10715)
@@ -38,8 +38,10 @@
#include "pickup/PickupPrereqs.h"
#include <string>
+#include <vector>
#include "pickup/Pickup.h"
+#include "pickup/items/MunitionContainer.h"
#include "core/class/SubclassIdentifier.h"
#include "weaponsystem/Munition.h"
@@ -57,22 +59,15 @@
virtual void changedUsed(void); //!< Is called when the pickup has transited from used to unused or the other way around.
- protected:
- void setMunitionName(const std::string& munitionname);
- inline const std::string& getMunitionName() const
- { return this->munitionname_; }
- void setMunitionAmount(int munitionAmount);
- inline int getMunitionAmount() const
- { return this->munitionAmount_; }
+ virtual void addMunitionContainer(MunitionContainer* munitionContainer);
+ MunitionContainer* getMunitionContainer(unsigned int index);
private:
void initialize(void); //!< Initializes the member variables.
Pawn* carrierToPawnHelper(void); //!< Helper to transform the PickupCarrier to a Pawn, and throw an error message if the conversion fails.
+
+ std::vector<MunitionContainer*> munitionContainers_;
- SubclassIdentifier<Munition> munitionType_; //!< Indentifier of the munition type.
- std::string munitionname_; //!< String containing the class name of the munition type (e.g. "LaserMunition")
- int munitionAmount_; //!< The amount of munition added if the pickup is used
-
};
}
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/IceMunition.cc 2015-10-27 20:08:40 UTC (rev 10715)
@@ -48,7 +48,7 @@
this->deployment_ = MunitionDeployment::Stack;
- this->bAllowMunitionRefilling_ = false;
+ this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = false;
this->reloadTime_ = 0.5f;
Modified: code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc
===================================================================
--- code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc 2015-10-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/RocketMunition.cc 2015-10-27 20:08:40 UTC (rev 10715)
@@ -48,7 +48,7 @@
this->deployment_ = MunitionDeployment::Stack;
- this->bAllowMunitionRefilling_ = false;
+ this->bAllowMunitionRefilling_ = true;
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-26 22:36:27 UTC (rev 10714)
+++ code/branches/fabienHS15/src/modules/weapons/munitions/SplitMunition.cc 2015-10-27 20:08:40 UTC (rev 10715)
@@ -42,11 +42,11 @@
{
RegisterObject(SplitMunition);
- this->maxMunitionPerMagazine_ = 1;
- this->maxMagazines_ = 100;
- this->magazines_ = 25;
+ this->maxMunitionPerMagazine_ = 5;
+ this->maxMagazines_ = 10;
+ this->magazines_ = 5;
- this->deployment_ = MunitionDeployment::Stack;
+ this->deployment_ = MunitionDeployment::Share;
this->bAllowMunitionRefilling_ = true;
this->bAllowMultiMunitionRemovementUnderflow_ = false;
More information about the Orxonox-commit
mailing list