// Stop droid driving mode. // void StopDriverMode(void) { DROID *psDroid; if(psDrivenDroid != NULL) { debug( LOG_NEVER, "Drive mode canceled\n" ); addConsoleMessage("Driver mode canceled.", LEFT_JUSTIFY,SYSTEM_MESSAGE); // audio_StopObjTrack(psDrivenDroid,ID_SOUND_SMALL_DROID_RUN); psDrivenDroid = NULL; for(psDroid = apsDroidLists[selectedPlayer]; psDroid; psDroid = psDroid->psNext) { if( (psDroid->sMove.Status == MOVEDRIVE) ) { ASSERT( (psDroid->droidType != DROID_TRANSPORTER),"Tried to control a transporter" ); secondarySetState(psDroid, DSO_HALTTYPE, DSS_HALT_GUARD); psDroid->sMove.Status = MOVEINACTIVE; } } } setDrivingStatus(false); driveInitVars(false); // reset everything again DriveControlEnabled = false; DirectControl = false; }
// Stop droid driving mode. // void StopDriverMode(void) { if (psDrivenDroid != NULL) { debug(LOG_NEVER, "Drive mode canceled"); addConsoleMessage("Driver mode canceled.", LEFT_JUSTIFY, SYSTEM_MESSAGE); psDrivenDroid = NULL; for (DROID *psDroid = apsDroidLists[selectedPlayer]; psDroid; psDroid = psDroid->psNext) { if (psDroid->sMove.Status == MOVEDRIVE) { ASSERT(!isTransporter(psDroid), "Tried to control a transporter"); psDroid->sMove.Status = MOVEINACTIVE; } } } setDrivingStatus(false); driveInitVars(false); // reset everything again DriveControlEnabled = false; DirectControl = false; }
// Start droid driving mode. // bool StartDriverMode(DROID *psOldDroid) { DROID *psDroid; DROID *psLastDriven; IdleTime = gameTime; psLastDriven = psDrivenDroid; psDrivenDroid = NULL; // Find a selected droid and make that the driven one. for(psDroid = apsDroidLists[selectedPlayer]; psDroid; psDroid = psDroid->psNext) { if(psDroid->selected) { if((psDrivenDroid == NULL) && (psDroid != psOldDroid)) { // The first droid found becomes the driven droid. if(!(DroidIsBuilding(psDroid) || DroidGoingToBuild(psDroid))) { // psDroid->sMove.Status = MOVEDRIVE; } psDrivenDroid = psDroid; debug( LOG_NEVER, "New driven droid\n" ); } } } // If that failed then find any droid and make it the driven one. if(psDrivenDroid == NULL) { psLastDriven = NULL; psDrivenDroid = intGotoNextDroidType(NULL,DROID_ANY,true); // If it's the same droid then try again if(psDrivenDroid == psOldDroid) { psDrivenDroid = intGotoNextDroidType(NULL,DROID_ANY,true); } if(psDrivenDroid == psOldDroid) { psDrivenDroid = NULL; } // If it failed then try for a transporter. if(psDrivenDroid == NULL) { psDrivenDroid = intGotoNextDroidType(NULL,DROID_TRANSPORTER,true); } // DBPRINTF(("Selected a new driven droid : %p\n",psDrivenDroid)); } if(psDrivenDroid) { driveDir = UNDEG(psDrivenDroid->rot.direction); driveSpeed = 0; driveBumpTime = gameTime; setDrivingStatus(true); if(DriveInterfaceEnabled) { debug( LOG_NEVER, "Interface enabled1 ! Disabling drive control\n" ); DriveControlEnabled = false; DirectControl = false; } else { DriveControlEnabled = true; DirectControl = true; // we are taking over the unit. } if(psLastDriven != psDrivenDroid) { debug( LOG_NEVER, "camAllignWithTarget\n" ); camAllignWithTarget((BASE_OBJECT*)psDrivenDroid); } return true; } else { } return false; }