Example #1
0
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;
}
Example #2
0
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;
			}
		}
	}
}