Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 2, 2013, 4:05:10 PM (10 years ago)
Author:
agermann
Message:

Docking funktioniert nun mit einem eingebauten Trigger ueber undocking XMLPort. Jedoch immer noch mit cmdUndock(). Forcefield wurde um eine homogenes Kraftfeld erweitert, dass Kugelfoermig und mit einer bestimmten Richtung gemacht werden kann.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/spacestationentry/src/modules/docking/Dock.cc

    r9820 r9857  
    6969        XMLPortObject(Dock, DockingAnimation, "animations", addAnimation, getAnimation, xmlelement, mode);
    7070        XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode);
    71         //XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
     71        XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
    7272
    7373    }
     
    7979        XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode);
    8080
    81         //XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
    82     }
    83 
    84     /*
     81        XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
     82    }
     83
     84
    8585    bool Dock::undocking(bool bTriggered, BaseObject* trigger)
    8686    {
    87         orxout(user_warning)<<"undocking"<<endl;
    88 
    89         return true;
    90     }
    91 
    92     */
     87        // Noch lange nicht fertig (leich veraenderte Kopie von execute())
     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                    cmdUndock();
     114                }
     115                else
     116                {
     117                    // Remove player from candidates list
     118                    candidates_.erase(player);
     119                }
     120
     121                return true;
     122    }
     123
     124
    93125
    94126    bool Dock::execute(bool bTriggered, BaseObject* trigger)
Note: See TracChangeset for help on using the changeset viewer.