[Orxonox-commit 3502] r8188 - in code/branches/dockingsystem: data/levels src/modules/docking
sven at orxonox.net
sven at orxonox.net
Mon Apr 4 15:48:18 CEST 2011
Author: sven
Date: 2011-04-04 15:48:17 +0200 (Mon, 04 Apr 2011)
New Revision: 8188
Modified:
code/branches/dockingsystem/data/levels/docking.oxw
code/branches/dockingsystem/src/modules/docking/Dock.cc
Log:
More verbose error handling in Dock
Modified: code/branches/dockingsystem/data/levels/docking.oxw
===================================================================
--- code/branches/dockingsystem/data/levels/docking.oxw 2011-04-04 13:45:09 UTC (rev 8187)
+++ code/branches/dockingsystem/data/levels/docking.oxw 2011-04-04 13:48:17 UTC (rev 8188)
@@ -41,7 +41,7 @@
</execute>
</events>
<attached>
- <DistanceTrigger position="0,0,0" distance="20" target="ControllableEntity" name="dockMe" />
+ <DistanceTrigger position="0,0,0" distance="20" target="Pawn" name="dockMe" />
<Billboard material="Examples/Flare" colour="1.0, 0, 0" />
</attached>
</Dock>
Modified: code/branches/dockingsystem/src/modules/docking/Dock.cc
===================================================================
--- code/branches/dockingsystem/src/modules/docking/Dock.cc 2011-04-04 13:45:09 UTC (rev 8187)
+++ code/branches/dockingsystem/src/modules/docking/Dock.cc 2011-04-04 13:48:17 UTC (rev 8188)
@@ -78,33 +78,44 @@
PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger);
Pawn* pawn = NULL;
- // If the trigger is a PlayerTrigger.
+ // Check whether it is a player trigger and extract pawn from it
if(pTrigger != NULL)
{
- if(!pTrigger->isForPlayer()) // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one.
+ if(!pTrigger->isForPlayer()) { // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one.
+ COUT(0) << "Docking:execute PlayerTrigger is not triggered for player.." << std::endl;
return false;
- else
- pawn = pTrigger->getTriggeringPlayer();
+ }
+ pawn = pTrigger->getTriggeringPlayer();
+ } else {
+ COUT(0) << "Docking::execute Not a player trigger, can't extract pawn from it.." << std::endl;
+ return false;
}
- else
- return false;
-
if(pawn == NULL)
{
- COUT(4) << "Docking: Can't retrieve Pawn from Trigger. (" << trigger->getIdentifier()->getName() << ")" << std::endl;
+ COUT(0) << "Docking: Can't retrieve Pawn from Trigger. (" << trigger->getIdentifier()->getName() << ")" << std::endl;
return false;
}
// Extract the PlayerInfo from the Pawn.
PlayerInfo* player = pawn->getPlayer();
-
if(player == NULL)
{
- COUT(3) << "The PlayerInfo* is NULL." << std::endl;
+ COUT(0) << "The PlayerInfo* is NULL." << std::endl;
return false;
}
- //TODO: This is way too oversimplified
+ // Try to get HumanPlayer
+ HumanPlayer* human;
+ if(!player->isHuman()) {
+ COUT(0) << "Docking::execute Not triggered by a human." << std::endl;
+ return false;
+ }
+ human = orxonox_cast<HumanPlayer*>(player);
+ assert(human);
+
+
+
+ //TODO: This is waaay too oversimplified
if(bTriggered) {
DockingEffect::invokeEffect(docking::DOCKING, player, effects_);
DockingEffect::invokeEffect(docking::ATTACH, player, effects_);
More information about the Orxonox-commit
mailing list