Esempio n. 1
0
void update_hokum_lamp_avionics (void)
{
	entity
		*en;

	int
		gear_state;

	en = get_gunship_entity ();

	update_master_caution ();

	////////////////////////////////////////

	gear_state = get_local_entity_undercarriage_state (en);

	gear_transition_timer -= get_delta_time ();

	if (gear_transition_timer <= 0.0)
	{
		gear_transition_state ^= 1;

		gear_transition_timer = GEAR_TRANSITION_FLASH_RATE;
	}

	////////////////////////////////////////

	hokum_lamps.left_engine_fire = get_dynamics_damage_type (DYNAMICS_DAMAGE_LEFT_ENGINE_FIRE);

	hokum_lamps.apu_fire = 0;

	hokum_lamps.right_engine_fire = get_dynamics_damage_type (DYNAMICS_DAMAGE_RIGHT_ENGINE_FIRE);

	hokum_lamps.fire_extinguiser = fire_extinguisher_used;

	hokum_lamps.hydraulic_pressure = get_dynamics_damage_type (DYNAMICS_DAMAGE_LOW_HYDRAULICS);

	hokum_lamps.oil_pressure = get_dynamics_damage_type (DYNAMICS_DAMAGE_LOW_OIL_PRESSURE) || get_dynamics_damage_type (DYNAMICS_DAMAGE_HIGH_OIL_PRESSURE);

	hokum_lamps.oil_temperature = 0;

	hokum_lamps.overtorque = get_current_flight_dynamics_overtorque ();

	hokum_lamps.rotor_rpm = get_current_flight_dynamics_low_rotor_rpm ();

	hokum_lamps.fuel_low = current_flight_dynamics->fuel_weight.value < (current_flight_dynamics->fuel_weight.max * 0.25);

	hokum_lamps.rotor_brake = get_current_flight_dynamics_rotor_brake ();

	hokum_lamps.wheel_brake = get_current_flight_dynamics_wheel_brake ();

	hokum_lamps.navigation_lights = get_local_entity_int_value (en, INT_TYPE_LIGHTS_ON);

	hokum_lamps.hover_hold = get_current_flight_dynamics_auto_hover ();

	hokum_lamps.altitude_hold = get_current_flight_dynamics_altitude_lock ();

	hokum_lamps.auto_pilot = get_current_flight_dynamics_auto_pilot ();

	hokum_lamps.radar = get_local_entity_int_value (en, INT_TYPE_RADAR_ON);

	hokum_lamps.laser = get_local_entity_int_value (en, INT_TYPE_LASER_ON);

	hokum_lamps.radar_jammer = get_local_entity_int_value (en, INT_TYPE_RADAR_JAMMER_ON);

	hokum_lamps.ir_jammer = get_local_entity_int_value (en, INT_TYPE_INFRA_RED_JAMMER_ON);

	hokum_lamps.auto_counter_measures = get_global_auto_counter_measures ();

	hokum_lamps.ase_auto_page = get_global_ase_auto_page ();

	hokum_lamps.gear_damaged = get_dynamics_damage_type (DYNAMICS_DAMAGE_UNDERCARRIAGE);

	switch (gear_state)
	{
		////////////////////////////////////////
		case AIRCRAFT_UNDERCARRIAGE_UP:
		////////////////////////////////////////
		{
			hokum_lamps.gear_status = 1;

			hokum_lamps.gear_red = 1;

			break;
		}
		////////////////////////////////////////
		case AIRCRAFT_UNDERCARRIAGE_LOWERING:
		////////////////////////////////////////
		{
			hokum_lamps.gear_status = gear_transition_state;

			hokum_lamps.gear_red = 0;

			break;
		}
		////////////////////////////////////////
		case AIRCRAFT_UNDERCARRIAGE_DOWN:
		////////////////////////////////////////
		{
			hokum_lamps.gear_status = 1;

			hokum_lamps.gear_red = 0;

			break;
		}
		////////////////////////////////////////
		case AIRCRAFT_UNDERCARRIAGE_RAISING:
		////////////////////////////////////////
		{
			hokum_lamps.gear_status = gear_transition_state;

			hokum_lamps.gear_red = 1;

			break;
		}
	}

	hokum_lamps.pilot_lh_mfd_focus = get_hokum_mfd_has_focus (HOKUM_MFD_LOCATION_PILOT_LHS);

	hokum_lamps.pilot_rh_mfd_focus = get_hokum_mfd_has_focus (HOKUM_MFD_LOCATION_PILOT_RHS);

	hokum_lamps.co_pilot_lh_mfd_focus = get_hokum_mfd_has_focus (HOKUM_MFD_LOCATION_CO_PILOT_LHS);

	hokum_lamps.co_pilot_rh_mfd_focus = get_hokum_mfd_has_focus (HOKUM_MFD_LOCATION_CO_PILOT_RHS);
}
Esempio n. 2
0
static float get_local_float_value (entity *en, float_types type)
{
	helicopter
		*raw;

	float
		value;

	raw = (helicopter *) get_local_entity_data (en);

	switch (type)
	{
		////////////////////////////////////////
		case FLOAT_TYPE_FUEL_SUPPLY_LEVEL:
		////////////////////////////////////////
		{
			value = raw->fuel_supply_level;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_INVULNERABLE_TIMER:
		////////////////////////////////////////
		{
			value = raw->invulnerable_timer;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_MAIN_ROTOR_BLADE_CONING_ANGLE:
		////////////////////////////////////////
		{
			value = raw->main_rotor_blade_coning_angle;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_MAIN_ROTOR_PITCH:
		////////////////////////////////////////
		{
			value = raw->main_rotor_pitch;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_MAIN_ROTOR_ROLL:
		////////////////////////////////////////
		{
			value = raw->main_rotor_roll;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_MAIN_ROTOR_RPM:
		////////////////////////////////////////
		{
			value = raw->main_rotor_rpm;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_MAIN_ROTOR_SPIN_UP_TIMER:
		////////////////////////////////////////
		{
			value = raw->main_rotor_spin_up_timer;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_RADAR_STEALTH_FACTOR:
		////////////////////////////////////////
		{
			value = NO_RADAR_STEALTH_FACTOR;

			if (raw->ac.mob.sub_type == ENTITY_SUB_TYPE_AIRCRAFT_RAH66_COMANCHE)
			{
				if (!get_comanche_stub_wings_attached (en))
				{
					if (get_local_entity_weapon_system_ready_state (en) == WEAPON_SYSTEM_READY_CLOSED)
					{
						value -= NO_RADAR_STEALTH_FACTOR * 0.5;
					}

					if (get_local_entity_undercarriage_state (en) == AIRCRAFT_UNDERCARRIAGE_UP)
					{
						value -= NO_RADAR_STEALTH_FACTOR * 0.35;
					}
				}
			}

			ASSERT (value > 0.0);

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_TAIL_ROTOR_RPM:
		////////////////////////////////////////
		{
			value = raw->tail_rotor_rpm;

			break;
		}
		////////////////////////////////////////
		
		// Jabberwock 050310 MP Cannon bug
		case FLOAT_TYPE_PLAYER_WEAPON_HEADING:
		////////////////////////////////////////
		{
			value = raw->player_weapon_heading;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_PLAYER_WEAPON_PITCH:
		////////////////////////////////////////
		{
			value = raw->player_weapon_pitch;

			break;
		}
		// Jabberwock 050310 ends
		////////////////////////////////////////
		default:
		////////////////////////////////////////
		{
			debug_fatal_invalid_float_type (en, type);

			break;
		}
	}

	return (value);
}