[Orxonox-commit 3500] r8186 - code/branches/dockingsystem/src/modules/docking

sven at orxonox.net sven at orxonox.net
Mon Apr 4 15:21:48 CEST 2011


Author: sven
Date: 2011-04-04 15:21:48 +0200 (Mon, 04 Apr 2011)
New Revision: 8186

Modified:
   code/branches/dockingsystem/src/modules/docking/Dock.cc
Log:
DockToShip and some fixes

Modified: code/branches/dockingsystem/src/modules/docking/Dock.cc
===================================================================
--- code/branches/dockingsystem/src/modules/docking/Dock.cc	2011-04-04 13:12:49 UTC (rev 8185)
+++ code/branches/dockingsystem/src/modules/docking/Dock.cc	2011-04-04 13:21:48 UTC (rev 8186)
@@ -32,6 +32,8 @@
 */
 
 #include "Dock.h"
+#include "worldentities/pawns/Pawn.h"
+#include "interfaces/PlayerTrigger.h"
 
 
 namespace orxonox
@@ -73,15 +75,43 @@
 
         //TODO: Handle MultiDistanceTrigger
 
-        //TODO: This way too oversimplified
+        PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger);
+        Pawn* pawn = NULL;
+
+        // If the trigger is a PlayerTrigger.
+        if(pTrigger != NULL)
+        {
+            if(!pTrigger->isForPlayer())  // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one.
+                return false;
+            else
+                pawn = pTrigger->getTriggeringPlayer();
+        }
+        else
+            return false;
+
+        if(pawn == NULL)
+        {
+            COUT(4) << "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;
+            return false;
+        }
+
+        //TODO: This is way too oversimplified
         if(bTriggered) {
-            DockingEffect::invokeEffect(docking::DOCKING, NULL, effects_);
-            DockingEffect::invokeEffect(docking::ATTACH, NULL, effects_);
+            DockingEffect::invokeEffect(docking::DOCKING, player, effects_);
+            DockingEffect::invokeEffect(docking::ATTACH, player, effects_);
         } else {
-            DockingEffect::invokeEffect(docking::RELEASE, NULL, effects_);
+            DockingEffect::invokeEffect(docking::RELEASE, player, effects_);
         }
 
-
         return true;
     }
 




More information about the Orxonox-commit mailing list