69 static int Player_all_alone_msg_inited=0;
94 if ((ap->
p == bp->
p) && (ap->
h == bp->
h))
101 delta.
p = ap->
p - bp->
p;
102 delta.
h = ap->
h - bp->
h;
104 ap->
p = ap->
p - delta.
p * (1.0f - sk);
105 ap->
h = ap->
h - delta.
h * (1.0f - sk);
164 da->
h -=
f2fl( axis[0] );
165 da->
p -=
f2fl( axis[1] );
170 else if (da->
h < -1.0f)
175 else if (da->
p < -1.0f)
195 else if (ma->
p < -max_p)
200 else if (ma->
h < -max_h)
207 vec3d targetpos_rotated;
208 vec3d playerpos_rotated;
209 vec3d forwardvec_rotated;
218 chase_slew_angles.
p = 0.0f;
219 chase_slew_angles.
h = 0.0f;
230 chase_slew_angles.
p = 0.0f;
231 chase_slew_angles.
h = 0.0f;
240 target_pos = targetp->
pos;
250 chase_slew_angles.
h = forward_angles.
h - view_angles.
h;
251 chase_slew_angles.
p = -(forward_angles.
p - view_angles.
p);
256 if (chase_slew_angles.
p >
PI_2)
257 chase_slew_angles.
p =
PI_2;
258 else if (chase_slew_angles.
p < -
PI_2)
259 chase_slew_angles.
p = -
PI_2;
262 if (chase_slew_angles.
h >
PI2/3)
263 chase_slew_angles.
h =
PI2/3;
264 else if (chase_slew_angles.
h < -
PI2/3)
265 chase_slew_angles.
h = -
PI2/3;
294 DCF(camera_speed,
"Sets the camera zoom scale")
297 dc_printf(
"Camera zoom scale is %f\n", camera_zoom_scale);
303 dc_printf(
"Camera zoom scale set to %f\n", camera_zoom_scale);
353 float t1,
t2, oldspeed;
376 factor = factor * factor / frame_time / 0.6f;
379 int x_axis, y_axis, z_axis;
380 x_axis = y_axis = z_axis = -1;
401 axis[x_axis] += (
int) ((
float) dx *
factor);
408 axis[y_axis] += (
int) ((
float) dy *
factor);
415 axis[z_axis] += (
int) ((
float) dz *
factor);
422 float kh=0.0f, scaled, newspeed,
delta, oldspeed;
424 static int afterburner_last = 0;
425 static float analog_throttle_last = 9e9f;
426 static int override_analog_throttle = 0;
428 int ok_to_read_ci_pitch_yaw=1;
429 int centering_speed = 7;
437 ok_to_read_ci_pitch_yaw=0;
471 if ( ok_to_read_ci_pitch_yaw ) {
482 }
else if (kh > 0.0
f) {
499 }
else if (kh > 0.0
f) {
500 if (ci->
pitch < 0.0f)
504 if (ci->
pitch > 0.0f)
511 if ( !slew_active ) {
513 chase_slew_angles.
h = 0.0f;
514 chase_slew_angles.
p = 0.0f;
531 override_analog_throttle = 1;
545 override_analog_throttle = 1;
570 override_analog_throttle = 1;
581 override_analog_throttle = 1;
595 float tspeed, pmax_speed;
615 tspeed = tspeed * (0.5f + dist/200.0f);
621 if (pmax_speed > 0.0
f) {
626 override_analog_throttle = 1;
638 axis[0] = axis[1] = axis[2] = axis[3] = axis[4] = 0;
645 if ( (delta > 0.05
f) || (delta < -0.05
f) ) {
667 newspeed = (1.0f - scaled) * 100.0
f;
669 delta = analog_throttle_last - newspeed;
670 if (!override_analog_throttle || (delta < -1.5
f) || (delta > 1.5f)) {
672 analog_throttle_last = newspeed;
673 override_analog_throttle = 0;
720 if (!afterburner_last) {
729 afterburner_last = 1;
732 if (afterburner_last)
735 afterburner_last = 0;
781 override_analog_throttle = 1;
825 if (src_ci == NULL) {
826 dest_ci->
pitch = 0.0f;
830 dest_ci->
bank = 0.0f;
850 int can_warp = 0, warp_failed = 0;
851 float target_warpout_speed;
943 if(target_warpout_speed != 0.0
f) {
981 static int initted = 0;
990 Viewer_slew_angles_delta.
p = 0.0f;
991 Viewer_slew_angles_delta.
b = 0.0f;
992 Viewer_slew_angles_delta.
h = 0.0f;
1024 if ( no_target_text ) {
1025 if ( no_target_text[0] ) {
1042 if ( match_off_text ) {
1043 if ( match_off_text[0] ) {
1067 if ( match_on_text ) {
1068 if ( match_on_text[0] ) {
1086 if ( use_descent ) {
1276 Player_all_alone_msg_inited=0;
1376 if ( ship_index >= 0 ) {
1433 scan_subsys = !scan_subsys;
1457 if ( cargo_name[0] ==
'#' ) {
1458 sprintf(outstr,
XSTR(
"passengers: %s", 83), cargo_name+1 );
1460 sprintf(outstr,
XSTR(
"cargo: %s", 84), cargo_name );
1463 strcpy(outstr,
XSTR(
"Scanned", 85) );
1481 strcpy(outstr,
XSTR(
"cargo: <unknown>", 86));
1483 strcpy(outstr,
XSTR(
"not scanned", 87));
1495 strcpy(outstr,
XSTR(
"cargo: inspecting", 88));
1497 strcpy(outstr,
XSTR(
"scanning", 89));
1506 strcpy(outstr,
XSTR(
"cargo: <unknown>", 86));
1508 strcpy(outstr,
XSTR(
"not scanned", 87));
1529 if ( subsys == NULL ) {
1554 if ( cargo_name[0] ==
'#' ) {
1555 sprintf(outstr,
XSTR(
"passengers: %s", 83), cargo_name+1 );
1557 sprintf(outstr,
XSTR(
"cargo: %s", 84), cargo_name );
1560 strcpy(outstr,
XSTR(
"Scanned", 85) );
1573 int subsys_in_view,
x,
y;
1596 strcpy(outstr,
XSTR(
"cargo: <unknown>", 86));
1598 strcpy(outstr,
XSTR(
"not scanned", 87));
1610 strcpy(outstr,
XSTR(
"cargo: inspecting", 88));
1612 strcpy(outstr,
XSTR(
"scanning", 89));
1621 strcpy(outstr,
XSTR(
"cargo: <unknown>", 86));
1623 strcpy(outstr,
XSTR(
"not scanned", 87));
1636 float prange,srange;
1641 return MAX(prange,srange);
1653 if ( weapon_info_index < 0 ) {
1665 strcpy(weapon_name,
XSTR(
"missile", 90));
1667 strcpy(weapon_name,
XSTR(
"laser fire", 91));
1732 sprintf(msg,
XSTR(
"%s was killed by a collision with an asteroid", 98), player_p->
callsign);
1739 sprintf(msg,
XSTR(
"%s was killed by a beam from an unknown source", 1081), player_p->
callsign);
1778 msg =
XSTR(
"You have killed yourself with a shockwave from your own weapon", 1421);
1782 msg =
XSTR(
"You have killed yourself with your own missiles", 1422);
1786 msg =
XSTR(
"You have killed yourself", 100);
1816 if ( !Player_all_alone_msg_inited ) {
1818 Player_all_alone_msg_inited=1;
1874 chase_slew_angles.
h = 0.0f;
1875 chase_slew_angles.
p = -
PI_2;
1880 chase_slew_angles.
h = -
PI;
1881 chase_slew_angles.
p = 0.0f;
1887 chase_slew_angles.
h =
PI_2;
1888 chase_slew_angles.
p = 0.0f;
1894 chase_slew_angles.
h = -
PI_2;
1895 chase_slew_angles.
p = 0.0f;
1904 chase_slew_angles.
h = 0.0f;
1905 chase_slew_angles.
p = 0.0f;
1917 eye_orient->
vec.fvec = old_eye_orient.
vec.uvec;
1924 eye_orient->
vec.rvec = old_eye_orient.
vec.fvec;
1926 eye_orient->
vec.fvec = old_eye_orient.
vec.rvec;
1935 int padlock_view_index=0;
1938 padlock_view_index = 0;
1940 padlock_view_index = 1;
1942 padlock_view_index = 2;
1944 padlock_view_index = 3;
1953 switch (padlock_view_index) {
1972 #define MIN_DIST_TO_DEAD_CAMERA 50.0f
1978 static camid player_camera;
1984 object *viewer_obj = NULL;
2008 int view_from_player = 1;
2015 view_from_player = 0;
2019 if ( view_from_player ) {
2071 Assert(viewer_obj != NULL);
2129 switch(viewer_obj->
type)
2148 return player_camera;
#define SF2_TOGGLE_SUBSYSTEM_SCANNING
int fire_countermeasure_count
void observer_get_eye(vec3d *eye_pos, matrix *eye_orient, object *obj)
#define SHIP_GET_UNSILENCED
int timestamp(int delta_ms)
#define PLAYER_FLAGS_MATCH_TARGET
#define MULTIPLAYER_CLIENT
int player_process_pending_praise()
See if there is a praise message to deliver to the player. We want to delay the praise messages a bit...
void do_view_chase(float frame_time)
camid cam_create(char *n_name, vec3d *n_pos, vec3d *n_norm, object *n_object, int n_object_host_submodel)
model_subsystem * system_info
void hud_gauge_popup_start(int gauge_index, int time)
Start a gauge to pop-up.
void control_get_axes_readings(int *h, int *p, int *b, int *ta, int *tr)
void player_get_padlock_orient(matrix *eye_orient)
void player_restore_target_and_weapon_link_prefs()
bool object_glide_forced(object *objp)
matrix * vm_matrix_x_matrix(matrix *dest, const matrix *src0, const matrix *src1)
#define PCM_WARPOUT_STAGE1
float player_farthest_weapon_range()
float dock_calc_docked_fspeed(object *objp)
void vm_vec_scale_add(vec3d *dest, const vec3d *src1, const vec3d *src2, float k)
void view_modify(angles *ma, angles *da, float max_p, float max_h, float frame_time)
polymodel * model_get(int model_num)
#define PLAYER_FLAGS_KILLED_SELF_MISSILES
weapon_info Weapon_info[MAX_WEAPON_TYPES]
SCP_vector< game_snd > Snds
#define MIN_DIST_TO_DEAD_CAMERA
#define MESSAGE_ALL_ALONE
void player_display_padlock_view()
int hud_get_best_primary_bank(float *range)
float ship_get_warpout_speed(object *objp)
void read_player_controls(object *objp, float frametime)
matrix * vm_angles_2_matrix(matrix *m, const angles *a)
vec3d Dead_player_last_vel
#define CAPITAL_CARGO_RADIUS_DELTA
int check_for_all_alone_msg
#define STI_MSG_COUNTS_FOR_ALONE
void object_set_gliding(object *objp, bool enable, bool force)
#define MINIMUM_PLAYER_WARPOUT_TIME
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
#define NETINFO_FLAG_OBSERVER
void set_position(vec3d *in_position=NULL, float in_translation_time=0.0f, float in_translation_acceleration_time=0.0f, float in_translation_deceleration_time=0.0f, float in_end_velocity=0.0f)
#define PLAYER_FLAGS_LINK_PRIMARY
#define PLAYER_FLAGS_KILLED_BY_ENGINE_WASH
struct vec3d::@225::@227 xyz
void hud_targetbox_end_flash(int index)
int distance_warning_count
int button_info_query(button_info *bi, int n)
void ship_do_cargo_revealed(ship *shipp, int from_network)
void player_match_target_speed(char *no_target_text, char *match_off_text, char *match_on_text)
vec3d * vm_vec_rotate(vec3d *dest, const vec3d *src, const matrix *m)
#define END_OF_LIST(head)
void player_stop_repair_sound()
#define MESSAGE_HIGH_PRAISE
DCF(camera_speed,"Sets the camera zoom scale")
ship_subsys * targeted_subsys
float ship_get_secondary_weapon_range(ship *shipp)
int hud_sensors_ok(ship *sp, int show_msg)
Check if targeting is possible based on sensors strength.
angles Viewer_slew_angles
void vm_vec_scale_add2(vec3d *dest, const vec3d *src, float k)
#define PLAYER_FLAGS_AUTO_TARGETING
void player_show_death_message()
void ship_do_cap_subsys_cargo_revealed(ship *shipp, ship_subsys *subsys, int from_network)
float dock_calc_docked_speed(object *objp)
void do_view_external(float frame_time)
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
#define VM_EXTERNAL_CAMERA_LOCKED
GLenum GLenum GLenum GLenum GLenum scale
void HUD_sourced_printf(int source, const char *format,...)
#define CARGO_MIN_DOT_TO_REVEAL
void playercontrol_read_stick(int *axis, float frame_time)
Reads and combines the axes from the player's joystick and mouse.
float current_target_distance
void player_maybe_start_repair_sound()
int mission_goals_incomplete(int desired_type, int team)
void get_info(vec3d *position, matrix *orientation)
char callsign[CALLSIGN_LEN+1]
#define CARGO_REVEAL_MIN_DIST
void ship_get_eye(vec3d *eye_pos, matrix *eye_orient, object *obj, bool do_slew, bool from_origin)
#define PLAYER_FLAGS_AUTO_MATCH_SPEED
#define CLAMP(x, min, max)
int valid_cap_subsys_cargo_list(char *subsys)
int object_is_docked(object *objp)
int low_ammo_complaint_count
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
fix friendly_last_hit_time
matrix * vm_vector_2_matrix(matrix *m, const vec3d *fvec, const vec3d *uvec, const vec3d *rvec)
WarpEffect * warpout_effect
void player_maybe_start_cargo_scan_sound()
struct matrix::@228::@230 vec
virtual int getWarpPosition(vec3d *output)
void player_stop_cargo_scan_sound()
void vm_vec_scale(vec3d *dest, float s)
#define PLAYER_FLAGS_KILLED_BY_EXPLOSION
#define TARGET_WARPOUT_MATCH_PERCENT
float get_hull_pct(object *objp)
bool object_get_gliding(object *objp)
int ship_get_sound(object *objp, GameSoundsIndex id)
Returns a ship-specific sound index.
void player_generate_death_message(player *player_p)
int allow_praise_timestamp
float check_control_timef(int id)
void player_controls_init()
int praise_delay_timestamp
int ship_get_random_player_wing_ship(int flags, float max_dist, int persona_index, int get_first, int multi_team)
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
#define PLAYER_KILLED_SELF
int player_inspect_cap_subsys_cargo(float frametime, char *outstr)
void do_thrust_keys(control_info *ci)
#define SSF_CARGO_REVEALED
void physics_init(physics_info *pi)
#define HUD_SOURCE_HIDDEN
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
#define SF_PRIMARY_LINKED
net_player_server_info s_info
float vm_vec_normalized_dir(vec3d *dest, const vec3d *end, const vec3d *start)
float vm_vec_dist(const vec3d *v0, const vec3d *v1)
int failures_this_session
#define PCM_WARPOUT_STAGE2
bool dc_optional_string_either(const char *str1, const char *str2)
Searches for an optional string and it's alias.
set 1/3 or 2/3 throttle (up)
void control_used(int id)
void player_set_padlock_state()
float vm_vec_normalize_safe(vec3d *v)
#define CAP_CARGO_REVEAL_MIN_DIST
builtin_message Builtin_messages[]
vec3d * vm_vec_unrotate(vec3d *dest, const vec3d *src, const matrix *m)
void mouse_get_delta(int *dx, int *dy, int *dz)
LOCAL physics_info phys_save
set 1/3 or 2/3 throttle (down)
GLint GLint GLint GLint GLint x
object Objects[MAX_OBJECTS]
char killer_parent_name[NAME_LENGTH]
const char * XSTR(const char *str, int index)
void player_set_next_all_alone_msg_timestamp()
#define SIF2_NO_PRIMARY_LINKING
void vm_vec_copy_scale(vec3d *dest, const vec3d *src, float s)
physics_info Descent_physics
#define GM_STANDALONE_SERVER
void player_save_target_and_weapon_link_prefs()
#define PLAYER_FLAGS_NO_CHECK_ALL_ALONE_MSG
void dc_stuff_float(float *f)
Stuffs a float to the given variable.
float forward_cruise_percent
#define OOC_FIRE_SECONDARY
void set_rotation(matrix *in_orientation=NULL, float in_rotation_time=0.0f, float in_rotation_acceleration_time=0.0f, float in_rotation_deceleration_time=0.0f)
GLuint const GLchar * name
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
void physics_read_flying_controls(matrix *orient, physics_info *pi, control_info *ci, float sim_time, vec3d *wash_rot)
#define MISSION_TYPE_TRAINING
angles * vm_extract_angles_vector(angles *a, const vec3d *v)
TrackIRDLL gTirDll_TrackIR
int allow_scream_timestamp
#define MESSAGE_PRIORITY_HIGH
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
int allow_ask_help_timestamp
#define DCF_BOOL(function_name, bool_variable)
#define CARGO_RADIUS_DELTA
#define SF_SECONDARY_DUAL_FIRE
int request_repair_timestamp
void chase_angles_to_value(angles *ap, angles *bp, int scale)
Slew angles chase towards a value like they're on a spring.
int distance_warning_time
#define MESSAGE_TIME_ANYTIME
void message_send_builtin_to_player(int type, ship *shipp, int priority, int timing, int group, int delay, int multi_target, int multi_team_filter)
class camera * getCamera()
int snd_play_looping(game_snd *gs, float pan, int start_loop, int stop_loop, float vol_scale, int scriptingUpdateVolume)
ship is being repaired (during rearm/repair)
char subobj_name[MAX_NAME_LEN]
ship_subsys * locking_subsys
#define PLAYER_FLAGS_KILLED_SELF_SHOCKWAVE
long Game_time_compression
#define PLAYER_FLAGS_STRUCTURE_IN_USE
An overhauled/updated debug console to allow monitoring, testing, and general debugging of new featur...
ubyte keyd_pressed[NUM_KEYS]
SCP_vector< ship_info > Ship_info
void gamesnd_play_error_beep()
fix last_warning_message_time
void player_set_pilot_defaults(player *p)
int player_inspect_cargo(float frametime, char *outstr)
#define timestamp_elapsed(stamp)
void player_maybe_play_all_alone_msg()
MINUS_5_PERCENT_THROTTLE.
vec3d * get_subsystem_world_pos(object *parent_obj, ship_subsys *subsys, vec3d *world_pos)
#define MATCH_SPEED_THRESHOLD
void do_view_track_target(float frame_time)
int check_control(int id, int key)
angles Viewer_slew_angles_delta
float vm_vec_dot(const vec3d *v0, const vec3d *v1)
void player_control_reset_ci(control_info *ci)
void player_init_all_alone_msg()
void HUD_fixed_printf(float duration, color col, const char *format,...)
#define SF_CARGO_REVEALED
void dc_printf(const char *format,...)
Prints the given char string to the debug console.
angles Viewer_external_angles_delta
#define PCM_WARPOUT_STAGE3
void copy_control_info(control_info *dest_ci, control_info *src_ci)
player Players[MAX_PLAYERS]
void toggle_player_object()
int ship_name_lookup(const char *name, int inc_players)
void joy_ff_adjust_handling(int speed)
void player_stop_looped_sounds()
void do_view_slew(float frame_time)
#define HUD_CMEASURE_GAUGE
void compute_slew_matrix(matrix *orient, angles *a)
void gameseq_post_event(int event)
The total number of actions an axis may map to.
void vm_vec_add(vec3d *dest, const vec3d *src0, const vec3d *src1)
int hud_targetbox_subsystem_in_view(object *target_objp, int *sx, int *sy)
void gr_init_color(color *c, int r, int g, int b)
matrix vmd_identity_matrix
int locking_subsys_parent
void player_clear_speed_matching()
int praise_self_timestamp
SCP_vector< ship_type_info > Ship_types
int hud_squadmsg_reinforcements_available(int team)
#define PLAYER_FLAGS_LINK_SECONDARY
void player_generate_killer_weapon_name(int weapon_info_index, int killer_species, char *weapon_name)
#define MESSAGE_TIME_SOON
float vm_vec_normalize(vec3d *v)
void read_keyboard_controls(control_info *ci, float frame_time, physics_info *pi)