[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