static void destroy_local (entity *en) { regen *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = (regen *) get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// ASSERT (!raw->member_root.first_child); //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// delete_local_entity_from_parents_child_list (en, LIST_TYPE_CURRENT_WAYPOINT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_REGEN); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { sprite *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = (sprite *) get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SPECIAL_EFFECT); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { division *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = (division *) get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// unlink_local_entity_children (en, LIST_TYPE_DIVISION); delete_local_entity_from_parents_child_list (en, LIST_TYPE_DIVISION); delete_local_entity_from_parents_child_list (en, LIST_TYPE_DIVISION_HEADQUARTERS); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { bridge *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); debug_log ("BR_DSTRY: destroying bridge %d", get_local_entity_index (en)); #endif raw = get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// destroy_local_entity_children (en, LIST_TYPE_SEGMENT); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { site *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// // // fixed // unlink_local_entity_children (en, LIST_TYPE_TASK_DEPENDENT); unlink_local_entity_children (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_GUNSHIP_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); // // site // delete_local_entity_from_parents_child_list (en, LIST_TYPE_MEMBER); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { force *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// ASSERT (!raw->keysite_force_root.first_child); ASSERT (!raw->pilot_root.first_child); //////////////////////////////////////// // // DEBUG // //////////////////////////////////////// #ifdef DEBUG display_task_generation_stats (en); #endif //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// if (raw->campaign_criteria) { campaign_criteria_type *destroy_campaign_criteria; while (raw->campaign_criteria) { destroy_campaign_criteria = raw->campaign_criteria; raw->campaign_criteria = raw->campaign_criteria->next; free_mem (destroy_campaign_criteria); } } //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// unlink_local_entity_children (en, LIST_TYPE_DIVISION); unlink_local_entity_children (en, LIST_TYPE_INDEPENDENT_GROUP); delete_local_entity_from_parents_child_list (en, LIST_TYPE_FORCE); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { ship_vehicle *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE >= 2 debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = (ship_vehicle *) get_local_entity_data (en); set_local_entity_int_value (en, INT_TYPE_ALIVE, FALSE); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// destruct_3d_object (raw->vh.inst3d); free_mem (raw->vh.weapon_package_status_array); if (raw->vh.sound_effect_data) { destroy_system_sound_effect (raw->vh.sound_effect_data); } //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// // // ship_vehicle // // // vehicle // unlink_local_entity_children (en, LIST_TYPE_TASK_DEPENDENT); unlink_local_entity_children (en, LIST_TYPE_LAUNCHED_WEAPON); unlink_local_entity_children (en, LIST_TYPE_MOVEMENT_DEPENDENT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_MOVEMENT_DEPENDENT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_FOLLOWER); delete_local_entity_from_parents_child_list (en, LIST_TYPE_DESIGNATED_TARGET); // Jabberwock 031107 Designated targets delete_local_entity_from_parents_child_list (en, LIST_TYPE_GUNSHIP_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_MEMBER); delete_local_entity_from_parents_child_list (en, LIST_TYPE_VIEW); delete_local_entity_from_parents_child_list (en, LIST_TYPE_TAKEOFF_QUEUE); // // mobile // unlink_local_entity_children (en, LIST_TYPE_SPECIAL_EFFECT); unlink_local_entity_children (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_PADLOCK); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); delete_local_entity_from_parents_child_list (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); #if LANDING_ROUTE_CHECK destroy_debug_entity_landing_route_check (en); #endif //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { segment *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); debug_log ("SG_DSTRY: destroying segment %d", get_local_entity_index (en)); #endif raw = (segment *) get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// // // fixed // unlink_local_entity_children (en, LIST_TYPE_TASK_DEPENDENT); unlink_local_entity_children (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_DESIGNATED_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_GUNSHIP_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); // // segment // delete_local_entity_from_parents_child_list (en, LIST_TYPE_SEGMENT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { particle *raw; int loop; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// free_mem (raw->position); free_mem (raw->motion_vector); free_mem (raw->valid); for (loop = 0; loop < raw->particle_count; loop ++) { if (raw->inst3d [loop]) { destruct_3d_object (raw->inst3d [loop]); } } free_mem (raw->inst3d); //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// unlink_local_entity_children (en, LIST_TYPE_SPECIAL_EFFECT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { cargo *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE >= 2 debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = (cargo *) get_local_entity_data (en); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// // // cargo // unlink_local_entity_children (en, LIST_TYPE_TASK_DEPENDENT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_CARGO); delete_local_entity_from_parents_child_list (en, LIST_TYPE_MOVEMENT_DEPENDENT); // // mobile // unlink_local_entity_children (en, LIST_TYPE_SPECIAL_EFFECT); unlink_local_entity_children (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_PADLOCK); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }
static void destroy_local (entity *en) { helicopter *raw; //////////////////////////////////////// // // PRE-AMBLE // //////////////////////////////////////// #if DEBUG_MODULE >= 2 debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en); #endif raw = get_local_entity_data (en); set_local_entity_int_value (en, INT_TYPE_ALIVE, FALSE); //////////////////////////////////////// // // VALIDATE // //////////////////////////////////////// //////////////////////////////////////// // // DESTROY COMPONENTS // //////////////////////////////////////// destruct_3d_object (raw->ac.inst3d); free_mem (raw->ac.weapon_package_status_array); if (raw->ac.sound_effect_data) { destroy_system_sound_effect (raw->ac.sound_effect_data); } //////////////////////////////////////// // // UNLINK FROM SYSTEM // //////////////////////////////////////// // // helicopter // unlink_local_entity_children (en, LIST_TYPE_GUNSHIP_TARGET); unlink_local_entity_children (en, LIST_TYPE_PADLOCK); // // aircraft // unlink_local_entity_children (en, LIST_TYPE_AIRCREW); unlink_local_entity_children (en, LIST_TYPE_TASK_DEPENDENT); unlink_local_entity_children (en, LIST_TYPE_LAUNCHED_WEAPON); delete_local_entity_from_parents_child_list (en, LIST_TYPE_FOLLOWER); delete_local_entity_from_parents_child_list (en, LIST_TYPE_GUNSHIP_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_MEMBER); delete_local_entity_from_parents_child_list (en, LIST_TYPE_MOVEMENT_DEPENDENT); delete_local_entity_from_parents_child_list (en, LIST_TYPE_VIEW); delete_local_entity_from_parents_child_list (en, LIST_TYPE_TAKEOFF_QUEUE); // // mobile // unlink_local_entity_children (en, LIST_TYPE_SPECIAL_EFFECT); unlink_local_entity_children (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_PADLOCK); delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR); delete_local_entity_from_parents_child_list (en, LIST_TYPE_TARGET); delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE); // // // if (en == get_gunship_entity ()) { set_raw_gunship_entity (NULL); } #if LANDING_ROUTE_CHECK destroy_debug_entity_landing_route_check (en); #endif //////////////////////////////////////// // // FREE ENTITY DATA // //////////////////////////////////////// free_mem (raw); set_free_entity (en); }