[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