int get_weapon_loading_hardpoint_weapon_count (entity *en, weapon_loading_hardpoint_types hardpoint, entity_sub_types weapon_type) { int count, number, sub_type, damaged; weapon_loading_gunship_type *gunship_data; weapon_loading_hardpoint_type *hardpoint_data; gunship_types gunship_type; ASSERT (en); gunship_type = get_local_entity_int_value (en, INT_TYPE_GUNSHIP_TYPE); ASSERT (gunship_type < NUM_GUNSHIP_TYPES); gunship_data = &weapon_loading_gunship_database [gunship_type]; ASSERT (hardpoint < NUM_WEAPON_LOADING_HARDPOINT_TYPES); hardpoint_data = &(gunship_data->hardpoint_list [hardpoint]); ASSERT (hardpoint_data->valid); count = 0; if (hardpoint_data->sub_object_depth1 != -1) { if (get_local_entity_weapon_hardpoint_info (en, hardpoint_data->sub_object_depth1, weapon_type, &sub_type, &number, &damaged)) { count += number; } } if (hardpoint_data->sub_object_depth2 != -1) { if (get_local_entity_weapon_hardpoint_info (en, hardpoint_data->sub_object_depth2, weapon_type, &sub_type, &number, &damaged)) { count += number; } } return count; }
static void update_weapon_status_lamps (void) { entity *en; entity_sub_types selected_weapon, weapon_sub_type; int number, damaged; hind_lamps.weapons_management_lh_outer_pylon_green = 0; hind_lamps.weapons_management_lh_inner_pylon_green = 0; hind_lamps.weapons_management_rh_inner_pylon_green = 0; hind_lamps.weapons_management_rh_outer_pylon_green = 0; hind_lamps.weapons_management_armour_piercing_cannon_green = 0; hind_lamps.weapons_management_high_explosive_cannon_green = 0; hind_lamps.weapons_management_lh_outer_pylon_red = 0; hind_lamps.weapons_management_lh_inner_pylon_red = 0; hind_lamps.weapons_management_rh_inner_pylon_red = 0; hind_lamps.weapons_management_rh_outer_pylon_red = 0; hind_lamps.weapons_management_armour_piercing_cannon_red = 0; hind_lamps.weapons_management_high_explosive_cannon_red = 0; hind_lamps.weapons_management_chaff_green = 0; hind_lamps.weapons_management_flare_green = 0; hind_lamps.weapons_management_chaff_red = 0; hind_lamps.weapons_management_flare_red = 0; //////////////////////////////////////// en = get_gunship_entity (); selected_weapon = get_local_entity_int_value (en, INT_TYPE_SELECTED_WEAPON); //////////////////////////////////////// weapon_armed_flash_timer -= get_delta_time (); if (weapon_armed_flash_timer <= 0.0) { weapon_armed_flash_timer = WEAPON_ARMED_FLASH_RATE; weapon_armed_flash_state ^= 1; } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_LHS_OUTER_PYLON, ENTITY_SUB_TYPE_WEAPON_NO_WEAPON, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_lh_outer_pylon_red = 1; } else { if (number > 0) { if (weapon_sub_type == selected_weapon) { hind_lamps.weapons_management_lh_outer_pylon_green = weapon_armed_flash_state; } else { hind_lamps.weapons_management_lh_outer_pylon_green = 1; } } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_LHS_INNER_PYLON, ENTITY_SUB_TYPE_WEAPON_NO_WEAPON, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_lh_inner_pylon_red = 1; } else { if (number > 0) { if (weapon_sub_type == selected_weapon) { hind_lamps.weapons_management_lh_inner_pylon_green = weapon_armed_flash_state; } else { hind_lamps.weapons_management_lh_inner_pylon_green = 1; } } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_RHS_INNER_PYLON, ENTITY_SUB_TYPE_WEAPON_NO_WEAPON, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_rh_inner_pylon_red = 1; } else { if (number > 0) { if (weapon_sub_type == selected_weapon) { hind_lamps.weapons_management_rh_inner_pylon_green = weapon_armed_flash_state; } else { hind_lamps.weapons_management_rh_inner_pylon_green = 1; } } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_RHS_OUTER_PYLON, ENTITY_SUB_TYPE_WEAPON_NO_WEAPON, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_rh_outer_pylon_red = 1; } else { if (number > 0) { if (weapon_sub_type == selected_weapon) { hind_lamps.weapons_management_rh_outer_pylon_green = weapon_armed_flash_state; } else { hind_lamps.weapons_management_rh_outer_pylon_green = 1; } } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_CANNON_TURRET, ENTITY_SUB_TYPE_WEAPON_2A42_30MM_AP_ROUND, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_armour_piercing_cannon_red = 1; } else { if (number > 0) { if (weapon_sub_type == selected_weapon) { hind_lamps.weapons_management_armour_piercing_cannon_green = weapon_armed_flash_state; } else { hind_lamps.weapons_management_armour_piercing_cannon_green = 1; } } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_CANNON_TURRET, ENTITY_SUB_TYPE_WEAPON_2A42_30MM_HE_ROUND, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_high_explosive_cannon_red = 1; } else { if (number > 0) { if (weapon_sub_type == selected_weapon) { hind_lamps.weapons_management_high_explosive_cannon_green = weapon_armed_flash_state; } else { hind_lamps.weapons_management_high_explosive_cannon_green = 1; } } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_LHS_CHAFF_DISPENSER, ENTITY_SUB_TYPE_WEAPON_CHAFF, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_chaff_red = 1; } else { if (number > 0) { hind_lamps.weapons_management_chaff_green = 1; } } } //////////////////////////////////////// if (get_local_entity_weapon_hardpoint_info (en, HIND_LHS_FLARE_DISPENSER, ENTITY_SUB_TYPE_WEAPON_FLARE, &weapon_sub_type, &number, &damaged)) { if (damaged) { hind_lamps.weapons_management_flare_red = 1; } else { if (number > 0) { hind_lamps.weapons_management_flare_green = 1; } } } }