Changeset 9939 for code/trunk/src/modules/docking
- Timestamp:
- Dec 21, 2013, 11:16:54 PM (11 years ago)
- Location:
- code/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
-
code/trunk/src/modules/docking/Dock.cc
r9667 r9939 69 69 XMLPortObject(Dock, DockingAnimation, "animations", addAnimation, getAnimation, xmlelement, mode); 70 70 XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode); 71 XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode); 72 71 73 } 72 74 … … 76 78 77 79 XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode); 78 } 80 81 XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode); 82 } 83 84 85 bool Dock::undocking(bool bTriggered, BaseObject* trigger) 86 { 87 88 PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger); 89 PlayerInfo* player = NULL; 90 91 // Check whether it is a player trigger and extract pawn from it 92 if(pTrigger != NULL) 93 { 94 if(!pTrigger->isForPlayer()) { // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one. 95 orxout(verbose, context::docking) << "Docking:execute PlayerTrigger was not triggered by a player.." << endl; 96 return false; 97 } 98 player = pTrigger->getTriggeringPlayer(); 99 } 100 else 101 { 102 orxout(verbose, context::docking) << "Docking::execute Not a player trigger, can't extract pawn from it.." << endl; 103 return false; 104 } 105 if(player == NULL) 106 { 107 orxout(verbose, context::docking) << "Docking::execute Can't retrieve PlayerInfo from Trigger. (" << trigger->getIdentifier()->getName() << ")" << endl; 108 return false; 109 } 110 111 if(bTriggered) 112 { 113 // Add player to this Docks candidates 114 candidates_.insert(player); 115 116 // Show docking dialog 117 this->showUndockingDialogHelper(player); 118 } 119 else 120 { 121 // Remove player from candidates list 122 candidates_.erase(player); 123 } 124 125 return true; 126 } 127 128 79 129 80 130 bool Dock::execute(bool bTriggered, BaseObject* trigger) … … 119 169 return true; 120 170 } 171 172 173 void Dock::showUndockingDialogHelper(PlayerInfo* player) 174 { 175 assert(player); 176 177 if(!player->isHumanPlayer()) 178 return; 179 180 if(GameMode::isMaster()) 181 { 182 if(GameMode::showsGraphics()) 183 GUIManager::showGUI("UndockingDialog"); 184 } 185 else 186 callStaticNetworkFunction(Dock::showDockingDialog, player->getClientID()); 187 188 } 121 189 122 190 void Dock::showDockingDialogHelper(PlayerInfo* player) … … 177 245 if (animations_.empty()) 178 246 return dockingAnimationFinished(player); 247 179 248 else 180 249 DockingAnimation::invokeAnimation(true, player, animations_); -
code/trunk/src/modules/docking/Dock.h
r9667 r9939 62 62 // Trigger interface 63 63 bool execute(bool bTriggered, BaseObject* trigger); 64 bool undocking(bool bTriggered, BaseObject* trigger); 64 65 65 66 // XML interface … … 85 86 void dock() 86 87 { this->dock(HumanController::getLocalControllerSingleton()->getPlayer()); } 88 void undock() 89 { this->undock(HumanController::getLocalControllerSingleton()->getPlayer()); } 87 90 static unsigned int getNumberOfActiveDocks(); 88 91 static Dock* getActiveDockAtIndex(unsigned int index); … … 95 98 // Network functions 96 99 void showDockingDialogHelper(PlayerInfo* player); 100 void showUndockingDialogHelper(PlayerInfo* player); 97 101 static void showDockingDialog(); 98 102 -
code/trunk/src/modules/docking/MoveToDockingTarget.cc
r9667 r9939 66 66 { 67 67 //TODO: Investigate strange things... 68 68 //this->parent_->detach((WorldEntity*)player->getControllableEntity()); 69 69 70 //TODO: Check the issue with this detach call. 71 //I have removed the line because the detach call only caused a warning and terminated. And because I didn't find a attach call either. 72 //Didn't find the need for the line. 70 73 this->parent_->undockingAnimationFinished(player); 71 74 return true;
Note: See TracChangeset
for help on using the changeset viewer.