void FindNextLockedDoor() { DOOR *pDoor; INT32 i; for( i = iDoorMapIndex + 1; i < WORLD_MAX; i++ ) { pDoor = FindDoorInfoAtGridNo( i ); if( pDoor ) { CenterScreenAtMapIndex( i ); iDoorMapIndex = i; return; } } for( i = 0; i <= iDoorMapIndex; i++ ) { pDoor = FindDoorInfoAtGridNo( i ); if( pDoor ) { CenterScreenAtMapIndex( i ); iDoorMapIndex = i; return; } } }
void MapInfoEntryPointsCallback( GUI_BUTTON *btn, INT32 reason ) { if( reason & (MSYS_CALLBACK_REASON_LBUTTON_UP | MSYS_CALLBACK_REASON_RBUTTON_UP) ) { INT16 x, sGridNo; for( x = MAPINFO_NORTH_POINT; x <= MAPINFO_ISOLATED_POINT; x++ ) { if( btn == ButtonList[ iEditorButton[ x ] ] ) { SetEditorMapInfoTaskbarMode( x ); if( reason & MSYS_CALLBACK_REASON_RBUTTON_UP ) { switch( x ) { case MAPINFO_NORTH_POINT: sGridNo = gMapInformation.sNorthGridNo; break; case MAPINFO_WEST_POINT: sGridNo = gMapInformation.sWestGridNo; break; case MAPINFO_EAST_POINT: sGridNo = gMapInformation.sEastGridNo; break; case MAPINFO_SOUTH_POINT: sGridNo = gMapInformation.sSouthGridNo; break; case MAPINFO_CENTER_POINT: sGridNo = gMapInformation.sCenterGridNo; break; case MAPINFO_ISOLATED_POINT: sGridNo = gMapInformation.sIsolatedGridNo; break; } if( sGridNo != -1 ) { CenterScreenAtMapIndex( sGridNo ); } } break; } } } }
void MercsFindSelectedMercCallback( GUI_BUTTON *btn, INT32 reason ) { SOLDIERTYPE *pSoldier; if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { if( gsSelectedMercID == -1 ) return; GetSoldier( &pSoldier, gsSelectedMercID ); if( !pSoldier ) return; CenterScreenAtMapIndex( pSoldier->sGridNo ); } }
void LocateNextExitGrid() { EXITGRID ExitGrid; UINT16 i; for( i = usCurrentExitGridNo + 1; i < WORLD_MAX; i++ ) { if( GetExitGrid( i, &ExitGrid ) ) { usCurrentExitGridNo = i; CenterScreenAtMapIndex( i ); return; } } for( i = 0; i < usCurrentExitGridNo; i++ ) { if( GetExitGrid( i, &ExitGrid ) ) { usCurrentExitGridNo = i; CenterScreenAtMapIndex( i ); return; } } }
void SelectNextItemPool() { if( !gpCurrItemPoolNode ) return; //remove the current hilight. if( gpItemPool ) { MarkMapIndexDirty( gpItemPool->sGridNo ); } //go to the next node. If at end of list, choose pIPHead if( gpCurrItemPoolNode->next ) gpCurrItemPoolNode = gpCurrItemPoolNode->next; else gpCurrItemPoolNode = pIPHead; //get the item pool at this node's gridno. GetItemPoolFromGround( gpCurrItemPoolNode->sGridNo, &gpItemPool ); MarkMapIndexDirty( gpItemPool->sGridNo ); SpecifyItemToEdit( &gWorldItems[ gpItemPool->iItemIndex ].object, gpItemPool->sGridNo ); if( gsItemGridNo != -1 ) { CenterScreenAtMapIndex( gsItemGridNo ); } }
void SelectNextPressureAction() { IPListNode *curr; OBJECTTYPE *pObject; if( gpItemPool ) { curr = pIPHead; while( curr ) { //skip quickly to the same gridno as the item pool if( curr->sGridNo == gWorldItems[ gpItemPool->iItemIndex ].sGridNo ) { gpItemPool = gpItemPool->pNext; while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( pObject->usItem == ACTION_ITEM && (*pObject)[0]->data.misc.bDetonatorType == BOMB_PRESSURE ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (another item in same itempool) } gpItemPool = gpItemPool->pNext; } curr = curr->next; break; } curr = curr->next; } while( curr ) { //search to the end of the list GetItemPoolFromGround( curr->sGridNo, &gpItemPool ); while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( pObject->usItem == ACTION_ITEM && (*pObject)[0]->data.misc.bDetonatorType == BOMB_PRESSURE ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (found another item before reaching the end of the list) } gpItemPool = gpItemPool->pNext; } curr = curr->next; } } curr = pIPHead; while( curr ) { //search to the end of the list GetItemPoolFromGround( curr->sGridNo, &gpItemPool ); while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( pObject->usItem == ACTION_ITEM && (*pObject)[0]->data.misc.bDetonatorType == BOMB_PRESSURE ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (found first item in the list) } gpItemPool = gpItemPool->pNext; } curr = curr->next; } }
void SelectNextTriggerWithFrequency( UINT16 usItem, INT8 bFrequency ) { IPListNode *curr; OBJECTTYPE *pObject; if( gpItemPool ) { curr = pIPHead; while( curr ) { //skip quickly to the same gridno as the item pool if( curr->sGridNo == gWorldItems[ gpItemPool->iItemIndex ].sGridNo ) { gpItemPool = gpItemPool->pNext; while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( pObject->usItem == usItem && (*pObject)[0]->data.misc.bFrequency == bFrequency ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (another item in same itempool) } gpItemPool = gpItemPool->pNext; } curr = curr->next; break; } curr = curr->next; } while( curr ) { //search to the end of the list GetItemPoolFromGround( curr->sGridNo, &gpItemPool ); while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( pObject->usItem == usItem && (*pObject)[0]->data.misc.bFrequency == bFrequency ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (found another item before reaching the end of the list) } gpItemPool = gpItemPool->pNext; } curr = curr->next; } } curr = pIPHead; while( curr ) { //search to the end of the list GetItemPoolFromGround( curr->sGridNo, &gpItemPool ); while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( pObject->usItem == usItem && (*pObject)[0]->data.misc.bFrequency == bFrequency ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (found first item in the list) } gpItemPool = gpItemPool->pNext; } curr = curr->next; } }
void SelectNextKeyOfType( UINT8 ubKeyID ) { IPListNode *curr; OBJECTTYPE *pObject; if( gpItemPool ) { curr = pIPHead; while( curr ) { //skip quickly to the same gridno as the item pool if( curr->sGridNo == gWorldItems[ gpItemPool->iItemIndex ].sGridNo ) { gpItemPool = gpItemPool->pNext; while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( Item[ pObject->usItem ].usItemClass == IC_KEY && (*pObject)[0]->data.key.ubKeyID == ubKeyID ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (another item in same itempool) } gpItemPool = gpItemPool->pNext; } curr = curr->next; break; } curr = curr->next; } while( curr ) { //search to the end of the list GetItemPoolFromGround( curr->sGridNo, &gpItemPool ); while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( Item[ pObject->usItem ].usItemClass == IC_KEY && (*pObject)[0]->data.key.ubKeyID == ubKeyID ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (found another item before reaching the end of the list) } gpItemPool = gpItemPool->pNext; } curr = curr->next; } } curr = pIPHead; while( curr ) { //search to the end of the list GetItemPoolFromGround( curr->sGridNo, &gpItemPool ); while( gpItemPool ) { pObject = &gWorldItems[ gpItemPool->iItemIndex ].object; if( Item[ pObject->usItem ].usItemClass == IC_KEY && (*pObject)[0]->data.key.ubKeyID == ubKeyID ) { SpecifyItemToEdit( pObject, gWorldItems[ gpItemPool->iItemIndex ].sGridNo ); CenterScreenAtMapIndex( gsItemGridNo ); return; //success! (found first item in the list) } gpItemPool = gpItemPool->pNext; } curr = curr->next; } }