[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