void notify_collective_option_button ( ui_object *obj, void *arg ) { if ( (number_of_joystick_devices) && (get_global_collective_input () == KEYBOARD_INPUT) ) { set_global_collective_input (THROTTLE_INPUT); set_ui_object_text (collective_option_button, option_throttle_text[1]); } else { set_global_collective_input (KEYBOARD_INPUT); set_ui_object_text (collective_option_button, option_throttle_text[0]); } // don't leave text selected set_toggle_button_off (obj); }
void update_collective_pressure_inputs (void) { current_flight_dynamics->input_data.collective.delta = current_flight_dynamics->input_data.collective.value; switch (get_global_collective_input ()) { case KEYBOARD_INPUT: case MOUSE_INPUT: { if (current_flight_dynamics->input_data.collective_input_pressure & COLLECTIVE_PRESSURE_BACKWARD) { current_flight_dynamics->input_data.collective_pressure.value = min (0.0f, current_flight_dynamics->input_data.collective_pressure.value); current_flight_dynamics->input_data.collective_pressure.value -= 5.0 * get_delta_time (); } else if (current_flight_dynamics->input_data.collective_input_pressure & COLLECTIVE_PRESSURE_FORWARD) { current_flight_dynamics->input_data.collective_pressure.value = max (0.0f, current_flight_dynamics->input_data.collective_pressure.value); current_flight_dynamics->input_data.collective_pressure.value += 5.0 * get_delta_time (); } else { current_flight_dynamics->input_data.collective_pressure.value = 0.0; } current_flight_dynamics->input_data.collective_pressure.value = bound (current_flight_dynamics->input_data.collective_pressure.value, current_flight_dynamics->input_data.collective_pressure.min, current_flight_dynamics->input_data.collective_pressure.max); break; } case THROTTLE_INPUT: { int joyval; float input; // 030418 loke // implemented multiple joystick device selection if (command_line_collective_joystick_index == -1) { joyval = get_joystick_axis (current_flight_dynamics->input_data.cyclic_joystick_device_index, JOYSTICK_DEFAULT_AXIS_THROTTLE); } else { joyval = get_joystick_axis (command_line_collective_joystick_index, command_line_collective_joystick_axis); } if (non_linear_collective) { input = 0.5 + ((float) joyval ) / ((float) JOYSTICK_AXIS_MAXIMUM - (float) JOYSTICK_AXIS_MINIMUM); if (input < command_line_collective_zone_1_limit) { // start variable percentage at zone1 by GCsDriver 08-12-2007 input *= command_line_collective_percentage_at_zone1 * zone_1_scale; input -= command_line_collective_percentage_at_zone1; // 0% -> -60 // original //input *= 60.0 * zone_1_scale; //input -= 60.0; // 0% -> -60 } else if (input < command_line_collective_zone_2_limit) { // find amount over limit input -= command_line_collective_zone_1_limit; input *= (100.0-command_line_collective_percentage_at_zone1) * zone_2_scale; // original //input -= command_line_collective_zone_1_limit; //input *= 40.0 * zone_2_scale; } else { // find amount over limit input -= command_line_collective_zone_2_limit; input *= 20.0 * zone_3_scale; input += (100.0-command_line_collective_percentage_at_zone1); // 100% -> +40 // original //input -= command_line_collective_zone_2_limit; //input *= 20.0 * zone_3_scale; //input += 40.0; // 100% -> +40 // end variable percentage at zone1 by GCsDriver 08-12-2007 } } else input = (float) (120.0 * (float) joyval ) / ((float) JOYSTICK_AXIS_MAXIMUM - (float) JOYSTICK_AXIS_MINIMUM); if ((current_flight_dynamics->auto_hover != HOVER_HOLD_STABLE) && (current_flight_dynamics->auto_hover != HOVER_HOLD_ALTITUDE_LOCK)) { if (get_current_dynamics_options (DYNAMICS_OPTIONS_REVERSE_THROTTLE_INPUT)) { current_flight_dynamics->input_data.collective.value = (float) 60.0 - input; } else { current_flight_dynamics->input_data.collective.value = (float) 60.0 + input; } } break; } } // recalculate collective position if (current_flight_dynamics->input_data.collective_pressure.value) { current_flight_dynamics->input_data.collective.value += 10.0 * current_flight_dynamics->input_data.collective_pressure.value * get_delta_time (); } else { // restore } if (current_flight_dynamics->input_data.collective.damaged) { current_flight_dynamics->input_data.collective.value += (get_model_delta_time ()) * (7.5 * sfrand1 () * current_flight_dynamics->input_data.collective.delta); } current_flight_dynamics->input_data.collective.value = bound (current_flight_dynamics->input_data.collective.value, current_flight_dynamics->input_data.collective.min, current_flight_dynamics->input_data.collective.max); current_flight_dynamics->input_data.collective.delta -= current_flight_dynamics->input_data.collective.value; current_flight_dynamics->input_data.collective.delta *= -1.0; }
void notify_show_controller_page (void) { // initialise button text if ( (get_global_cyclic_input () == JOYSTICK_INPUT) && (number_of_joystick_devices) ) { set_ui_object_text (cyclic_option_button, option_joystick_text[1]); } else { set_ui_object_text (cyclic_option_button, option_joystick_text[0]); } if ( (get_global_collective_input () == THROTTLE_INPUT) && (number_of_joystick_devices) ) { set_ui_object_text (collective_option_button, option_throttle_text[1]); } else { set_ui_object_text (collective_option_button, option_throttle_text[0]); } if ( (get_global_pedal_input () == RUDDER_INPUT) && (number_of_joystick_devices) ) { set_ui_object_text (pedal_option_button, option_pedal_text[1]); } else { set_ui_object_text (pedal_option_button, option_pedal_text[0]); } if (get_global_joystick_device_index () == -1) { set_ui_object_font_type (device_option_button, UI_FONT_THICK_ITALIC_ARIAL_18); set_ui_object_text (device_option_button, no_joystick_text); preprocess_translation_object_size (device_graphic_area, device_option_button, &no_joystick_text, 1, RESIZE_OPTION_CYCLE_BUTTON); } else { char *name[1]; set_ui_object_text (device_option_button, joystick_devices[get_global_joystick_device_index ()].device_name); name[0] = &joystick_devices[get_global_joystick_device_index ()].device_name; preprocess_translation_object_size (device_graphic_area, device_option_button, name, 1, RESIZE_OPTION_CYCLE_BUTTON); } set_ui_object_text (reverse_throttle_button, option_boolean_text [get_global_dynamics_options_reverse_throttle_input ()]); set_ui_object_text (keyboard_assist_option_button, option_boolean_text [get_global_dynamics_options_keyboard_assistance ()]); display_options_page(OPTIONS_PAGE_CONTROLLER); #if DEBUG_MODULE debug_filtered_log("Inside show_controller_page"); #endif }
void set_flight_dynamics_events (void) { if ( current_flight_dynamics ) { // cyclic events switch (get_global_cyclic_input ()) { case KEYBOARD_INPUT: { /* set_event (DIK_LEFT, MODIFIER_NONE, KEY_STATE_EITHER, cyclic_left); set_event (DIK_RIGHT, MODIFIER_NONE, KEY_STATE_EITHER, cyclic_right); set_event (DIK_UP, MODIFIER_NONE, KEY_STATE_EITHER, cyclic_forward); set_event (DIK_DOWN, MODIFIER_NONE, KEY_STATE_EITHER, cyclic_backward); */ break; } case MOUSE_INPUT: { set_event (MOUSE_MOVE, MODIFIER_NONE, BUTTON_STATE_INVALID, cyclic_mouse_input); break; } case JOYSTICK_INPUT: { // 030418 loke // implemented multiple joystick device selection if (command_line_cyclic_joystick_index == -1) { current_flight_dynamics->input_data.cyclic_joystick_device = joystick_devices [0]; } else { current_flight_dynamics->input_data.cyclic_joystick_device = joystick_devices [command_line_cyclic_joystick_index]; } // temporarily disabled /* // arneh 2007-05-28 arrow keys make fine trim adjustments set_event (DIK_LEFT, MODIFIER_NONE, KEY_STATE_DOWN, adjust_roll_trim); set_event (DIK_RIGHT, MODIFIER_NONE, KEY_STATE_DOWN, adjust_roll_trim); set_event (DIK_UP, MODIFIER_NONE, KEY_STATE_DOWN, adjust_pitch_trim); set_event (DIK_DOWN, MODIFIER_NONE, KEY_STATE_DOWN, adjust_pitch_trim); */ break; } } // collective events switch (get_global_collective_input ()) { case KEYBOARD_INPUT: { set_event (DIK_Q, MODIFIER_NONE, KEY_STATE_EITHER, collective_forward); set_event (DIK_A, MODIFIER_NONE, KEY_STATE_EITHER, collective_backward); set_event (DIK_EQUALS, MODIFIER_NONE, KEY_STATE_EITHER, collective_forward); set_event (DIK_MINUS, MODIFIER_NONE, KEY_STATE_EITHER, collective_backward); break; } case MOUSE_INPUT: { set_event (MOUSE_MOVE_UP, MODIFIER_MOUSE_RIGHT_BUTTON, BUTTON_STATE_EITHER, collective_mouse_input); set_event (MOUSE_MOVE_DOWN, MODIFIER_MOUSE_RIGHT_BUTTON, BUTTON_STATE_EITHER, collective_mouse_input); break; } case JOYSTICK_INPUT: { break; } } // pedal events switch (get_global_pedal_input ()) { case KEYBOARD_INPUT: { set_event (DIK_Z, MODIFIER_NONE, KEY_STATE_EITHER, pedal_left); set_event (DIK_X, MODIFIER_NONE, KEY_STATE_EITHER, pedal_right); set_event (DIK_Z, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_X, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, adjust_pedal_trim); break; } case MOUSE_INPUT: { set_event (MOUSE_MOVE_LEFT, MODIFIER_MOUSE_RIGHT_BUTTON, BUTTON_STATE_EITHER, pedal_mouse_input); set_event (MOUSE_MOVE_RIGHT, MODIFIER_MOUSE_RIGHT_BUTTON, BUTTON_STATE_EITHER, pedal_mouse_input); set_event (DIK_Z, MODIFIER_NONE, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_X, MODIFIER_NONE, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_Z, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_X, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, adjust_pedal_trim); break; } case JOYSTICK_INPUT: case RUDDER_INPUT: { set_event (DIK_Z, MODIFIER_NONE, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_X, MODIFIER_NONE, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_Z, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, adjust_pedal_trim); set_event (DIK_X, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, adjust_pedal_trim); break; } } // model keys set_event (DIK_T, MODIFIER_LEFT_SHIFT, KEY_STATE_EITHER, clear_trim_control); set_event (DIK_T, MODIFIER_NONE, KEY_STATE_EITHER, set_trim_control); set_event (DIK_R, MODIFIER_NONE, KEY_STATE_DOWN, flight_dynamics_toggle_rotor_brake); set_event (DIK_B, MODIFIER_NONE, KEY_STATE_DOWN, flight_dynamics_toggle_wheel_brake); set_event (DIK_H, MODIFIER_NONE, KEY_STATE_DOWN, flight_dynamics_toggle_auto_hover); set_event (DIK_H, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, flight_dynamics_toggle_auto_hover); set_event (DIK_H, MODIFIER_LEFT_ALT, KEY_STATE_DOWN, flight_dynamics_toggle_altitude_lock); set_event (DIK_J, MODIFIER_LEFT_ALT, KEY_STATE_DOWN, flight_dynamics_decrease_altitude_lock); set_event (DIK_K, MODIFIER_LEFT_ALT, KEY_STATE_DOWN, flight_dynamics_increase_altitude_lock); set_event (DIK_G, MODIFIER_NONE, KEY_STATE_DOWN, flight_dynamics_toggle_auto_pilot); // set_event (DIK_TAB, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, load_dynamics_model); // set_event (DIK_TAB, MODIFIER_LEFT_CONTROL, KEY_STATE_DOWN, save_dynamics_model); // arneh, july 2006 - engine keys set_event (DIK_COMMA, MODIFIER_LEFT_CONTROL, KEY_STATE_DOWN, flight_dynamics_start_engine_ev); set_event (DIK_COMMA, MODIFIER_NONE, KEY_STATE_DOWN, flight_dynamics_throttle_engine_ev); set_event (DIK_COMMA, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, flight_dynamics_throttle_engine_ev); set_event (DIK_PERIOD, MODIFIER_LEFT_CONTROL, KEY_STATE_DOWN, flight_dynamics_start_engine_ev); set_event (DIK_PERIOD, MODIFIER_NONE, KEY_STATE_DOWN, flight_dynamics_throttle_engine_ev); set_event (DIK_PERIOD, MODIFIER_LEFT_SHIFT, KEY_STATE_DOWN, flight_dynamics_throttle_engine_ev); set_event (DIK_SLASH, MODIFIER_LEFT_CONTROL, KEY_STATE_DOWN, flight_dynamics_start_apu_ev); if (get_global_gunship_type() == GUNSHIP_TYPE_HIND) { set_event (DIK_COMMA, MODIFIER_LEFT_ALT, KEY_STATE_DOWN, flight_dynamics_decrease_governor_rpm); set_event (DIK_PERIOD, MODIFIER_LEFT_ALT, KEY_STATE_DOWN, flight_dynamics_increase_governor_rpm); } #ifdef DEBUG set_event (DIK_1, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_2, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_3, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_4, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_5, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_6, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_7, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_8, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_9, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_0, MODIFIER_RIGHT_SHIFT, KEY_STATE_DOWN, debug_dynamics_damage_model); set_event (DIK_1, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, debug_dynamics_event1); set_event (DIK_2, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, debug_dynamics_event2); set_event (DIK_3, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, debug_dynamics_event3); set_event (DIK_4, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, debug_dynamics_event4); set_event (DIK_LEFT, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, decrease_debug_var_x); set_event (DIK_RIGHT, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, increase_debug_var_x); set_event (DIK_DOWN, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, decrease_debug_var_y); set_event (DIK_UP, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, increase_debug_var_y); set_event (DIK_DELETE, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, decrease_debug_var_z); set_event (DIK_INSERT, MODIFIER_RIGHT_CONTROL, KEY_STATE_DOWN, increase_debug_var_z); #endif } }