Posted to tcl by hypnotoad at Mon Dec 08 22:41:47 GMT 2014view raw
- /*
- ** The step counter has just changed. Initialize the Crew structure
- ** accordingly.
- **
- ** pCrew has finished with its current path step. Advance it to the
- ** next step. Or if it has reached its final destination, halt it.
- */
- static inline void gotoNextStep(Crew *pCrew){
- Waypoint *pW, *pWPrev=NULL;
- int i;
- pCrew->iStep++;
- if( pCrew->iStep>=pCrew->nStep ){
- Crew_Halt(pCrew,CREW_OPERATION_ARRIVED);
- return;
- }
- /* Waypoint we are approaching */
- pW = &pCrew->aStep[pCrew->iStep];
- if( pCrew->iStep>0 ){
- /* Waypoint we are leaving */
- pWPrev = &pCrew->aStep[pCrew->iStep-1];
- pCrew->public_compartment = pWPrev->cid;
- }
- if(pW->cid != pCrew->public_compartment) {
- pCrew->public_compartment_entering = pW->cid;
- } else {
- pCrew->public_compartment_entering = 0;
- }
- insertIntoCidList(pCrew);
- pCrew->nextPid = 0;
- pCrew->public_operation = CREW_OPERATION_MOVE;
- pCrew->fx = pCrew->tx;
- pCrew->tx = pW->x;
- pCrew->fy = pCrew->ty;
- pCrew->ty = pW->y;
- /* Calculate our next portal */
- for(i=pCrew->iStep;i<pCrew->nStep;i++) {
- Waypoint *pWNext=&pCrew->aStep[i];
- if(pWNext->pid) {
- pCrew->nextPid=pWNext->pid;
- }
- }
- }