/** * @brief Removes a mission from mission global array. * @note also update selectedMission Pointer if needed */ static void CP_MissionRemove (mission_t *mission) { linkedList_t *list = ccs.missions; mission_t *removedMission = NULL; /* Destroy UFO */ if (mission->ufo) UFO_RemoveUfoFromGeoscape(mission->ufo); while (list) { removedMission = (mission_t *)list->data; if (removedMission == mission) { break; } list = list->next; } /* maybe selectedMission used on geoscape to know which ground mission is select has changed */ if (removedMission > selectedMission) selectedMission -= SIZE_OF_MISSION_IN_LINKED_LIST; if (removedMission) LIST_Remove(&ccs.missions, list); }