[Orxonox-commit 6695] r11325 - in code/branches/HUD_HS16/src: modules/overlays/hud modules/pickup orxonox

patricwi at orxonox.net patricwi at orxonox.net
Thu Dec 8 18:34:27 CET 2016


Author: patricwi
Date: 2016-12-08 18:34:27 +0100 (Thu, 08 Dec 2016)
New Revision: 11325

Modified:
   code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc
   code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h
   code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc
   code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h
   code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc
   code/branches/HUD_HS16/src/orxonox/CMakeLists.txt
Log:
visualization finished, bug when ending or reloading the level

Modified: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc	2016-12-08 14:21:55 UTC (rev 11324)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.cc	2016-12-08 17:34:27 UTC (rev 11325)
@@ -51,9 +51,8 @@
         std::string name = "HUDPickupItem" + getUniqueNumberString();
 
         overlayElement_ = static_cast<Ogre::PanelOverlayElement* >(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", name ));
-        // overlayElement_->setName(name);
 
-        overlayElement_->setDimensions(0.1f,0.1f);
+        overlayElement_->setDimensions(0.075f,0.1f);
         
     }
 
@@ -74,8 +73,9 @@
         this->background_->addChild(overlayElement_);
     }
 
-    void HUDPickupItem::hideMe(Pickupable* p)
+    void HUDPickupItem::hideMe(Pickupable* p, bool repaint)
     {
+        if(!repaint) return;                     //dont do anything, if we are not allowed to repaint because the level is terminating
         assert(overlayElement_);
         assert(this->background_);
         // if(p->isBeingDestroyed()) //if the pickup is being destroyed, we do nothing
@@ -90,162 +90,4 @@
         // this->background_->_update();
         // orxout() << "after the call the element is visible: " << overlayElement_->isVisible() << endl;
     }
-
-    // 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 (!weapon_)
-    //     {
-    //         // TODO: destroy this HUD id the Weapon does no more exist. (Wehen the weak pointer is null)
-    //     }
-    // }    
-
-    // void HUDWeapon::positionChanged()
-    // {
-    //     OrxonoxOverlay::positionChanged();
-
-    //     positionHUDChilds();
-    // }
-
-    // void HUDWeapon::sizeChanged()
-    // {
-    //     OrxonoxOverlay::sizeChanged();
-
-    //     positionHUDChilds();
-    // }
-
-    // void HUDWeapon::changedOwner()
-    // {
-    //     SUPER(HUDWeapon, changedOwner);
-
-    //     this->owner_ = orxonox_cast<Pawn*>(this->getOwner());
-
-    //     updateWeaponModeList();
-    // }
-
-    // void HUDWeapon::changedOverlayGroup()
-    // {
-    //     SUPER(HUDWeapon, changedOverlayGroup);
-    // }   
-
-    // void HUDWeapon::changedVisibility()
-    // {
-    //     SUPER(HUDWeapon, changedVisibility);
-
-    //     bool visible = this->isVisible();
-
-    //     for (HUDWeaponMode* hudWeaponMode : hudWeaponModes_)
-    //     {
-    //         hudWeaponMode->changedVisibility(); //inform all Child Overlays that our visibility has changed
-    //         hudWeaponMode->setVisible(visible);
-    //     }
-    // }
-
-    // void HUDWeapon::changedName()
-    // {
-    //     SUPER(HUDWeapon, changedName);
-    // }
-
-    // void HUDWeapon::setWeapon(Weapon* weapon)
-    // {
-    //     weapon_ = weapon;
-
-    //     if (!weapon_)
-    //     {
-    //         return;
-    //     }
-
-    //     updateWeaponModeList();
-    // }
-
-    // void HUDWeapon::updateWeaponModeList()
-    // {
-    //     if (owner_ == nullptr || weapon_ == nullptr)
-    //     {
-    //         return;
-    //     }
-            
-    //     destroyHUDChilds();
-
-    //     updateSize();
-    //     createHUDChilds();
-    //     positionHUDChilds();
-    // }  
-
-    // void HUDWeapon::createHUDChilds()
-    // {
-    //     if (weapon_ == nullptr)
-    //     {
-    //         return;
-    //     }
-
-    //     int positionIndex = 0;
-
-    //     for (const auto& mapEntry : weapon_->getAllWeaponmodes())
-    //     {
-    //         HUDWeaponMode* hudWeaponMode = new HUDWeaponMode(this->getContext());
-    //         hudWeaponMode->setOwner(owner_);
-    //         hudWeaponMode->setOverlayGroup(this->getOverlayGroup());
-    //         hudWeaponMode->setVisible(this->isVisible());
-    //         hudWeaponMode->setWeaponMode(mapEntry.second);
-    //         hudWeaponMode->setWeaponIndex(this->weaponIndex_);                    
-    //         hudWeaponMode->setAspectCorrection(false);
-    //         hudWeaponMode->setPickPoint(Vector2(0.0f,0.0f));
-
-    //         hudWeaponModes_.push_back(hudWeaponMode);
-
-    //         ++ positionIndex;
-    //     }
-    // }      
-
-    // void HUDWeapon::positionHUDChilds()
-    // {
-    //     int positionIndex = 0;
-
-    //     for (HUDWeaponMode* hudWeaponMode : hudWeaponModes_)
-    //     {
-    //         hudWeaponMode->setPositionOffset(this->positionOffset_);
-    //         hudWeaponMode->setWeaponModeIndex(positionIndex);
-    //         hudWeaponMode->setWeaponIndex(this->weaponIndex_);
-    //         hudWeaponMode->setWeaponModeHUDActualSize(this->weaponModeHUDActualSize_);
-
-    //         ++ positionIndex;
-    //     }
-    // }  
-
-    // void HUDWeapon::destroyHUDChilds()
-    // {
-    //     for (HUDWeaponMode* hudWeaponMode : hudWeaponModes_)
-    //     {
-    //         hudWeaponMode->destroy();
-    //     } 
-
-    //     hudWeaponModes_.clear();
-    // }
-
-    // void HUDWeapon::updateSize()
-    // {
-    //     if (weapon_ != nullptr)
-    //     {
-    //         this->setSize(Vector2(weaponModeHUDActualSize_.x,weaponModeHUDActualSize_.y*weapon_->getAllWeaponmodes().size()));
-    //         updatePosition();
-    //     }        
-    // }
-
-    // void HUDWeapon::updatePosition()
-    // {
-    //     if (weapon_ != nullptr)
-    //     {
-    //         this->setPosition(Vector2(weaponModeHUDActualSize_.x*weaponIndex_,0.0f) + this->positionOffset_);
-    //     }        
-    // }       
 }

Modified: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h	2016-12-08 14:21:55 UTC (rev 11324)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupItem.h	2016-12-08 17:34:27 UTC (rev 11325)
@@ -37,7 +37,7 @@
 
         // void setPickup(Pickup* pickup);  
         void initializeMaterial(const std::string& s, float x, float y);  
-        void hideMe(Pickupable* p); 
+        void hideMe(Pickupable* p, bool repaint); 
 
     private:
         // void createHUDChilds();

Modified: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc	2016-12-08 14:21:55 UTC (rev 11324)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.cc	2016-12-08 17:34:27 UTC (rev 11325)
@@ -50,7 +50,6 @@
         overlayElement_->setMaterialName("PickupBar");
         overlayElement_->setPosition(0.0f,0.0f);
         overlayElement_->setDimensions(0.70f,0.15f);
-        orxout() << "hello here is the HUDPickupSystem" << endl;
         this->background_->addChild(overlayElement_);
     }
 
@@ -62,12 +61,10 @@
         }
     }
 
-   //TODO: XMLPort
-
     void HUDPickupSystem::updatePickupList(std::vector<Pickupable*> picks)
     {
         int i=0;
-        const float offsetX = 0.32f;
+        const float offsetX = 0.335f;
         float offsetY = 0.77f;
         const float x = 0.1f;
 
@@ -87,13 +84,11 @@
                 if(this->picks.count(p)==0)
                 {
                     HUDPickupItem* item = new HUDPickupItem(this->getContext());
-                    // item->initializeMaterial(((Pickup*)p)->getRepresentationName(), offsetX+i*x, offsetY);
-                if(i%2==0)
-                    item->initializeMaterial("Shield", offsetX+i*x, offsetY);
-                else
-                    item->initializeMaterial("ArrowUp", offsetX+i*x, offsetY);
-                item->setOverlayGroup(this->getOverlayGroup());
-                this->picks[p] = item;
+                    item->initializeMaterial(this->getIcon(((Pickup*)p)->getRepresentationName()), offsetX+i*x, offsetY);
+                    orxout() << ((Pickup*)p)->getRepresentationName() << endl;
+                
+                    item->setOverlayGroup(this->getOverlayGroup());
+                    this->picks[p] = item;
                 }
                 
                 ++i;
@@ -112,7 +107,7 @@
         orxout() << "removePickup: pickup= " << pickup << " item= " << item << endl;
         assert(item);
         // item->setOverlayGroup(nullptr);
-        item->hideMe(pickup);
+        item->hideMe(pickup, repaint);
         assert(overlayElement_);
         // overlayElement_->_update();
         assert(this->background_);
@@ -124,4 +119,19 @@
     {
         this->background_->removeChild(overlayElement_->getName());
     }
+
+    std::string HUDPickupSystem::getIcon(std::string repName)
+    {
+        if(repName.find("invisible", 0)!=std::string::npos) return "Eye";
+        else if(repName.find("tri", 0)!=std::string::npos) return "Asterix";
+        else if(repName.find("health", 0)!=std::string::npos || repName.find("Health", 0)!=std::string::npos) return "Cross";
+        else if(repName.find("shield", 0)!=std::string::npos) return "Shield";
+        else if(repName.find("munition", 0)!=std::string::npos) return "Munition";
+        else if(repName.find("shrink", 0)!=std::string::npos) return "Shrink";
+        else if(repName.find("boost", 0)!=std::string::npos) return "Flash";
+        else if(repName.find("speed", 0)!=std::string::npos) return "3arrowsup";
+        else if(repName.find("drone", 0)!=std::string::npos) return "Damage";
+        //        else if(repName.find("xxxxxxx", 0)!=std::string::npos) return "Splash";
+        else return "Unknown";
+    }
 }

Modified: code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h
===================================================================
--- code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h	2016-12-08 14:21:55 UTC (rev 11324)
+++ code/branches/HUD_HS16/src/modules/overlays/hud/HUDPickupSystem.h	2016-12-08 17:34:27 UTC (rev 11325)
@@ -65,9 +65,13 @@
         void updatePickupList(std::vector<Pickupable*> picks);  
         void createPickupList();  
         void removePickup(Pickupable* pickup);
+
+        bool repaint=true;
+
     private:
         
         void destroyAll();
+        std::string getIcon(std::string repName);
 
         std::map<Pickupable*, HUDPickupItem*> picks;
 

Modified: code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc
===================================================================
--- code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc	2016-12-08 14:21:55 UTC (rev 11324)
+++ code/branches/HUD_HS16/src/modules/pickup/PickupManager.cc	2016-12-08 17:34:27 UTC (rev 11325)
@@ -313,7 +313,7 @@
             index = it->second;
 
             this->indexes_.erase(pickup);
-            this->pickups_.find(index)->second=nullptr; //set to null, so that can be identified as free slot by getPickupIndex()
+            this->pickups_.erase(index); //set to null, so that can be identified as free slot by getPickupIndex()
 
 
             this->picks.erase(std::remove(this->picks.begin(), this->picks.end(), pickup), this->picks.end()); //remove pickup from vector
@@ -354,6 +354,8 @@
 
         PickupManager& manager = PickupManager::getInstance();
 
+        if(!manager.pickups_.count(index)) return; //if pickup is no longer here, dont do anything
+
         Pickupable* pickup=manager.pickups_.find(index)->second;
         if(pickup==nullptr)
         {
@@ -363,7 +365,8 @@
 
         orxout() << "The pickup is being used: " << pickup->isUsed() << endl;
 
-        pickup->drop(true);
+        manager.dropPickup(index);
+
         // if(pickup->isUsed())
         //     manager.usePickup(index, false);
         // else
@@ -556,7 +559,7 @@
 
         for(uint32_t i=0; i<10; i++)
         {
-            if(pickups_.find(i)->second==nullptr) return i;
+            if(!pickups_.count(i)) return i;
         }
         //all slots are full and we have to drop sth
         orxout() << "everything was full and we have now dropped the first element" << endl;

Modified: code/branches/HUD_HS16/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/HUD_HS16/src/orxonox/CMakeLists.txt	2016-12-08 14:21:55 UTC (rev 11324)
+++ code/branches/HUD_HS16/src/orxonox/CMakeLists.txt	2016-12-08 17:34:27 UTC (rev 11325)
@@ -19,6 +19,7 @@
 
 INCLUDE_DIRECTORIES(
   ${CMAKE_SOURCE_DIR}/src/libraries
+  ${CMAKE_SOURCE_DIR}/src/modules
   ${CMAKE_CURRENT_SOURCE_DIR}
 )
 




More information about the Orxonox-commit mailing list