From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- src/parsec/include/aud_bkgn.h | 29 +++ src/parsec/include/aud_comm.h | 16 ++ src/parsec/include/aud_defs.h | 122 ++++++++++ src/parsec/include/aud_game.h | 236 +++++++++++++++++++ src/parsec/include/aud_glob.h | 16 ++ src/parsec/include/aud_subh.h | 160 +++++++++++++ src/parsec/include/aud_supp.h | 129 +++++++++++ src/parsec/include/con_act.h | 239 ++++++++++++++++++++ src/parsec/include/con_aux.h | 331 +++++++++++++++++++++++++++ src/parsec/include/con_cani.h | 16 ++ src/parsec/include/con_com.h | 71 ++++++ src/parsec/include/con_conf.h | 36 +++ src/parsec/include/con_ext.h | 91 ++++++++ src/parsec/include/con_geom.h | 15 ++ src/parsec/include/con_info.h | 63 ++++++ src/parsec/include/con_int.h | 59 +++++ src/parsec/include/con_kmap.h | 49 ++++ src/parsec/include/con_list.h | 34 +++ src/parsec/include/con_load.h | 16 ++ src/parsec/include/con_main.h | 157 +++++++++++++ src/parsec/include/con_path.h | 15 ++ src/parsec/include/con_rc.h | 16 ++ src/parsec/include/con_say.h | 41 ++++ src/parsec/include/con_shad.h | 26 +++ src/parsec/include/con_std.h | 127 +++++++++++ src/parsec/include/con_tani.h | 16 ++ src/parsec/include/d_bmap.h | 26 +++ src/parsec/include/d_font.h | 24 ++ src/parsec/include/d_fontt.h | 435 ++++++++++++++++++++++++++++++++++++ src/parsec/include/d_glob.h | 31 +++ src/parsec/include/d_iter.h | 37 +++ src/parsec/include/d_misc.h | 43 ++++ src/parsec/include/d_patch.h | 17 ++ src/parsec/include/do_bmap.h | 28 +++ src/parsec/include/do_font.h | 29 +++ src/parsec/include/do_iter.h | 34 +++ src/parsec/include/do_misc.h | 21 ++ src/parsec/include/do_patch.h | 15 ++ src/parsec/include/e_callbk.h | 62 +++++ src/parsec/include/e_colani.h | 34 +++ src/parsec/include/e_color.h | 94 ++++++++ src/parsec/include/e_demo.h | 55 +++++ src/parsec/include/e_draw.h | 55 +++++ src/parsec/include/e_events.h | 66 ++++++ src/parsec/include/e_evtdef.h | 48 ++++ src/parsec/include/e_getopt.h | 55 +++++ src/parsec/include/e_global.h | 177 +++++++++++++++ src/parsec/include/e_level.h | 19 ++ src/parsec/include/e_loader.h | 20 ++ src/parsec/include/e_mouse.h | 51 +++++ src/parsec/include/e_record.h | 79 +++++++ src/parsec/include/e_replay.h | 17 ++ src/parsec/include/e_shader.h | 69 ++++++ src/parsec/include/e_supp.h | 32 +++ src/parsec/include/e_texani.h | 34 +++ src/parsec/include/e_vtxani.h | 17 ++ src/parsec/include/g_boot.h | 19 ++ src/parsec/include/g_bot_cl.h | 404 +++++++++++++++++++++++++++++++++ src/parsec/include/g_camera.h | 32 +++ src/parsec/include/g_cloud.h | 20 ++ src/parsec/include/g_explod.h | 16 ++ src/parsec/include/g_gameloop.h | 16 ++ src/parsec/include/g_global.h | 119 ++++++++++ src/parsec/include/g_laser.h | 17 ++ src/parsec/include/g_main_cl.h | 258 +++++++++++++++++++++ src/parsec/include/g_planet.h | 47 ++++ src/parsec/include/g_sfx.h | 35 +++ src/parsec/include/g_shkwav.h | 16 ++ src/parsec/include/g_stars.h | 20 ++ src/parsec/include/g_supp.h | 37 +++ src/parsec/include/g_swarm.h | 20 ++ src/parsec/include/g_telep.h | 79 +++++++ src/parsec/include/g_vapor.h | 16 ++ src/parsec/include/g_wfx.h | 51 +++++ src/parsec/include/h_cockpt.h | 78 +++++++ src/parsec/include/h_drwhud.h | 30 +++ src/parsec/include/h_frmplt.h | 17 ++ src/parsec/include/h_global.h | 47 ++++ src/parsec/include/h_radar.h | 28 +++ src/parsec/include/h_strmap.h | 35 +++ src/parsec/include/h_supp.h | 40 ++++ src/parsec/include/h_text.h | 23 ++ src/parsec/include/il_joy.h | 25 +++ src/parsec/include/il_mouse.h | 19 ++ src/parsec/include/il_supp.h | 18 ++ src/parsec/include/img_3df.h | 28 +++ src/parsec/include/img_api.h | 78 +++++++ src/parsec/include/img_conv.h | 61 +++++ src/parsec/include/img_jpg.h | 16 ++ src/parsec/include/img_load.h | 45 ++++ src/parsec/include/img_supp.h | 20 ++ src/parsec/include/img_tga.h | 16 ++ src/parsec/include/inp_comm.h | 16 ++ src/parsec/include/inp_defs.h | 220 ++++++++++++++++++ src/parsec/include/inp_glob.h | 26 +++ src/parsec/include/inp_init.h | 17 ++ src/parsec/include/inp_keyn.h | 109 +++++++++ src/parsec/include/inp_sdl.h | 26 +++ src/parsec/include/inp_subh.h | 36 +++ src/parsec/include/inp_user.h | 42 ++++ src/parsec/include/isdl_joy.h | 30 +++ src/parsec/include/isdl_keydf.h | 89 ++++++++ src/parsec/include/isdl_keyn.h | 117 ++++++++++ src/parsec/include/isdl_mouse.h | 19 ++ src/parsec/include/isdl_supp.h | 18 ++ src/parsec/include/m_button.h | 92 ++++++++ src/parsec/include/m_list.h | 46 ++++ src/parsec/include/m_logo.h | 21 ++ src/parsec/include/m_main.h | 85 +++++++ src/parsec/include/m_option.h | 67 ++++++ src/parsec/include/m_status.h | 21 ++ src/parsec/include/m_viewer.h | 42 ++++ src/parsec/include/net_conn.h | 34 +++ src/parsec/include/net_game.h | 92 ++++++++ src/parsec/include/net_game_gmsv.h | 30 +++ src/parsec/include/net_game_peer.h | 60 +++++ src/parsec/include/net_glob.h | 144 ++++++++++++ src/parsec/include/net_gmsv.h | 46 ++++ src/parsec/include/net_pckt_peer.h | 23 ++ src/parsec/include/net_peer.h | 40 ++++ src/parsec/include/net_prediction.h | 93 ++++++++ src/parsec/include/net_rmev.h | 95 ++++++++ src/parsec/include/net_rmev_gmsv.h | 20 ++ src/parsec/include/net_rmev_peer.h | 21 ++ src/parsec/include/net_serv.h | 77 +++++++ src/parsec/include/net_subh.h | 167 ++++++++++++++ src/parsec/include/net_udp.h | 33 +++ src/parsec/include/net_udpdf.h | 31 +++ src/parsec/include/net_univ.h | 40 ++++ src/parsec/include/net_util_cl.h | 29 +++ src/parsec/include/nl_udp.h | 19 ++ src/parsec/include/nw_udp.h | 27 +++ src/parsec/include/obj_ani.h | 19 ++ src/parsec/include/obj_coll.h | 16 ++ src/parsec/include/obj_comm.h | 21 ++ src/parsec/include/obj_ctrl.h | 132 +++++++++++ src/parsec/include/obj_expl.h | 24 ++ src/parsec/include/obj_game.h | 53 +++++ src/parsec/include/obj_iter.h | 22 ++ src/parsec/include/obj_part.h | 32 +++ src/parsec/include/obj_vani.h | 20 ++ src/parsec/include/obj_xtra.h | 21 ++ src/parsec/include/part_ani.h | 22 ++ src/parsec/include/part_api.h | 435 ++++++++++++++++++++++++++++++++++++ src/parsec/include/part_def.h | 29 +++ src/parsec/include/part_sys.h | 25 +++ src/parsec/include/r_gl.h | 93 ++++++++ src/parsec/include/r_glob.h | 71 ++++++ src/parsec/include/r_obj.h | 21 ++ src/parsec/include/r_part.h | 20 ++ src/parsec/include/r_patch.h | 20 ++ src/parsec/include/r_perf.h | 22 ++ src/parsec/include/r_sfx.h | 21 ++ src/parsec/include/r_supp.h | 19 ++ src/parsec/include/ro_api.h | 84 +++++++ src/parsec/include/ro_obj.h | 19 ++ src/parsec/include/ro_objmc.h | 156 +++++++++++++ src/parsec/include/ro_part.h | 17 ++ src/parsec/include/ro_patch.h | 17 ++ src/parsec/include/ro_perf.h | 19 ++ src/parsec/include/ro_poly.h | 18 ++ src/parsec/include/ro_sfx.h | 18 ++ src/parsec/include/ro_supp.h | 62 +++++ src/parsec/include/sl_err.h | 21 ++ src/parsec/include/sl_main.h | 18 ++ src/parsec/include/sl_msg.h | 18 ++ src/parsec/include/sl_opt.h | 16 ++ src/parsec/include/snd_api.h | 49 ++++ src/parsec/include/snd_wav.h | 20 ++ src/parsec/include/sys_bind.h | 36 +++ src/parsec/include/sys_conv.h | 16 ++ src/parsec/include/sys_err.h | 40 ++++ src/parsec/include/sys_glob.h | 16 ++ src/parsec/include/sys_msg.h | 41 ++++ src/parsec/include/sys_subh.h | 46 ++++ src/parsec/include/t_pack.h | 14 ++ src/parsec/include/vid_defs.h | 84 +++++++ src/parsec/include/vid_glob.h | 108 +++++++++ src/parsec/include/vid_init.h | 30 +++ src/parsec/include/vid_plug.h | 17 ++ src/parsec/include/vid_subh.h | 42 ++++ src/parsec/include/vid_supp.h | 18 ++ src/parsec/include/vsdl_buffo.h | 18 ++ src/parsec/include/vsdl_inito.h | 18 ++ src/parsec/include/vsdl_ogl.h | 41 ++++ src/parsec/include/vsdl_suppo.h | 23 ++ 186 files changed, 10274 insertions(+) create mode 100644 src/parsec/include/aud_bkgn.h create mode 100644 src/parsec/include/aud_comm.h create mode 100644 src/parsec/include/aud_defs.h create mode 100644 src/parsec/include/aud_game.h create mode 100644 src/parsec/include/aud_glob.h create mode 100644 src/parsec/include/aud_subh.h create mode 100644 src/parsec/include/aud_supp.h create mode 100644 src/parsec/include/con_act.h create mode 100644 src/parsec/include/con_aux.h create mode 100644 src/parsec/include/con_cani.h create mode 100644 src/parsec/include/con_com.h create mode 100644 src/parsec/include/con_conf.h create mode 100644 src/parsec/include/con_ext.h create mode 100644 src/parsec/include/con_geom.h create mode 100644 src/parsec/include/con_info.h create mode 100644 src/parsec/include/con_int.h create mode 100644 src/parsec/include/con_kmap.h create mode 100644 src/parsec/include/con_list.h create mode 100644 src/parsec/include/con_load.h create mode 100644 src/parsec/include/con_main.h create mode 100644 src/parsec/include/con_path.h create mode 100644 src/parsec/include/con_rc.h create mode 100644 src/parsec/include/con_say.h create mode 100644 src/parsec/include/con_shad.h create mode 100644 src/parsec/include/con_std.h create mode 100644 src/parsec/include/con_tani.h create mode 100644 src/parsec/include/d_bmap.h create mode 100644 src/parsec/include/d_font.h create mode 100644 src/parsec/include/d_fontt.h create mode 100644 src/parsec/include/d_glob.h create mode 100644 src/parsec/include/d_iter.h create mode 100644 src/parsec/include/d_misc.h create mode 100644 src/parsec/include/d_patch.h create mode 100644 src/parsec/include/do_bmap.h create mode 100644 src/parsec/include/do_font.h create mode 100644 src/parsec/include/do_iter.h create mode 100644 src/parsec/include/do_misc.h create mode 100644 src/parsec/include/do_patch.h create mode 100644 src/parsec/include/e_callbk.h create mode 100644 src/parsec/include/e_colani.h create mode 100644 src/parsec/include/e_color.h create mode 100644 src/parsec/include/e_demo.h create mode 100644 src/parsec/include/e_draw.h create mode 100644 src/parsec/include/e_events.h create mode 100644 src/parsec/include/e_evtdef.h create mode 100644 src/parsec/include/e_getopt.h create mode 100644 src/parsec/include/e_global.h create mode 100644 src/parsec/include/e_level.h create mode 100644 src/parsec/include/e_loader.h create mode 100644 src/parsec/include/e_mouse.h create mode 100644 src/parsec/include/e_record.h create mode 100644 src/parsec/include/e_replay.h create mode 100644 src/parsec/include/e_shader.h create mode 100644 src/parsec/include/e_supp.h create mode 100644 src/parsec/include/e_texani.h create mode 100644 src/parsec/include/e_vtxani.h create mode 100644 src/parsec/include/g_boot.h create mode 100644 src/parsec/include/g_bot_cl.h create mode 100644 src/parsec/include/g_camera.h create mode 100644 src/parsec/include/g_cloud.h create mode 100644 src/parsec/include/g_explod.h create mode 100644 src/parsec/include/g_gameloop.h create mode 100644 src/parsec/include/g_global.h create mode 100644 src/parsec/include/g_laser.h create mode 100644 src/parsec/include/g_main_cl.h create mode 100644 src/parsec/include/g_planet.h create mode 100644 src/parsec/include/g_sfx.h create mode 100644 src/parsec/include/g_shkwav.h create mode 100644 src/parsec/include/g_stars.h create mode 100644 src/parsec/include/g_supp.h create mode 100644 src/parsec/include/g_swarm.h create mode 100644 src/parsec/include/g_telep.h create mode 100644 src/parsec/include/g_vapor.h create mode 100644 src/parsec/include/g_wfx.h create mode 100644 src/parsec/include/h_cockpt.h create mode 100644 src/parsec/include/h_drwhud.h create mode 100644 src/parsec/include/h_frmplt.h create mode 100644 src/parsec/include/h_global.h create mode 100644 src/parsec/include/h_radar.h create mode 100644 src/parsec/include/h_strmap.h create mode 100644 src/parsec/include/h_supp.h create mode 100644 src/parsec/include/h_text.h create mode 100644 src/parsec/include/il_joy.h create mode 100644 src/parsec/include/il_mouse.h create mode 100644 src/parsec/include/il_supp.h create mode 100644 src/parsec/include/img_3df.h create mode 100644 src/parsec/include/img_api.h create mode 100644 src/parsec/include/img_conv.h create mode 100644 src/parsec/include/img_jpg.h create mode 100644 src/parsec/include/img_load.h create mode 100644 src/parsec/include/img_supp.h create mode 100644 src/parsec/include/img_tga.h create mode 100644 src/parsec/include/inp_comm.h create mode 100644 src/parsec/include/inp_defs.h create mode 100644 src/parsec/include/inp_glob.h create mode 100644 src/parsec/include/inp_init.h create mode 100755 src/parsec/include/inp_keyn.h create mode 100644 src/parsec/include/inp_sdl.h create mode 100644 src/parsec/include/inp_subh.h create mode 100644 src/parsec/include/inp_user.h create mode 100644 src/parsec/include/isdl_joy.h create mode 100644 src/parsec/include/isdl_keydf.h create mode 100644 src/parsec/include/isdl_keyn.h create mode 100644 src/parsec/include/isdl_mouse.h create mode 100644 src/parsec/include/isdl_supp.h create mode 100644 src/parsec/include/m_button.h create mode 100644 src/parsec/include/m_list.h create mode 100644 src/parsec/include/m_logo.h create mode 100644 src/parsec/include/m_main.h create mode 100644 src/parsec/include/m_option.h create mode 100644 src/parsec/include/m_status.h create mode 100644 src/parsec/include/m_viewer.h create mode 100644 src/parsec/include/net_conn.h create mode 100644 src/parsec/include/net_game.h create mode 100644 src/parsec/include/net_game_gmsv.h create mode 100644 src/parsec/include/net_game_peer.h create mode 100644 src/parsec/include/net_glob.h create mode 100644 src/parsec/include/net_gmsv.h create mode 100644 src/parsec/include/net_pckt_peer.h create mode 100644 src/parsec/include/net_peer.h create mode 100644 src/parsec/include/net_prediction.h create mode 100644 src/parsec/include/net_rmev.h create mode 100644 src/parsec/include/net_rmev_gmsv.h create mode 100644 src/parsec/include/net_rmev_peer.h create mode 100644 src/parsec/include/net_serv.h create mode 100644 src/parsec/include/net_subh.h create mode 100644 src/parsec/include/net_udp.h create mode 100644 src/parsec/include/net_udpdf.h create mode 100644 src/parsec/include/net_univ.h create mode 100644 src/parsec/include/net_util_cl.h create mode 100644 src/parsec/include/nl_udp.h create mode 100644 src/parsec/include/nw_udp.h create mode 100644 src/parsec/include/obj_ani.h create mode 100644 src/parsec/include/obj_coll.h create mode 100644 src/parsec/include/obj_comm.h create mode 100644 src/parsec/include/obj_ctrl.h create mode 100644 src/parsec/include/obj_expl.h create mode 100644 src/parsec/include/obj_game.h create mode 100644 src/parsec/include/obj_iter.h create mode 100644 src/parsec/include/obj_part.h create mode 100644 src/parsec/include/obj_vani.h create mode 100644 src/parsec/include/obj_xtra.h create mode 100644 src/parsec/include/part_ani.h create mode 100644 src/parsec/include/part_api.h create mode 100644 src/parsec/include/part_def.h create mode 100644 src/parsec/include/part_sys.h create mode 100644 src/parsec/include/r_gl.h create mode 100644 src/parsec/include/r_glob.h create mode 100644 src/parsec/include/r_obj.h create mode 100644 src/parsec/include/r_part.h create mode 100644 src/parsec/include/r_patch.h create mode 100644 src/parsec/include/r_perf.h create mode 100644 src/parsec/include/r_sfx.h create mode 100644 src/parsec/include/r_supp.h create mode 100644 src/parsec/include/ro_api.h create mode 100644 src/parsec/include/ro_obj.h create mode 100644 src/parsec/include/ro_objmc.h create mode 100644 src/parsec/include/ro_part.h create mode 100644 src/parsec/include/ro_patch.h create mode 100644 src/parsec/include/ro_perf.h create mode 100644 src/parsec/include/ro_poly.h create mode 100644 src/parsec/include/ro_sfx.h create mode 100644 src/parsec/include/ro_supp.h create mode 100644 src/parsec/include/sl_err.h create mode 100644 src/parsec/include/sl_main.h create mode 100644 src/parsec/include/sl_msg.h create mode 100644 src/parsec/include/sl_opt.h create mode 100644 src/parsec/include/snd_api.h create mode 100644 src/parsec/include/snd_wav.h create mode 100644 src/parsec/include/sys_bind.h create mode 100644 src/parsec/include/sys_conv.h create mode 100644 src/parsec/include/sys_err.h create mode 100644 src/parsec/include/sys_glob.h create mode 100644 src/parsec/include/sys_msg.h create mode 100644 src/parsec/include/sys_subh.h create mode 100644 src/parsec/include/t_pack.h create mode 100644 src/parsec/include/vid_defs.h create mode 100644 src/parsec/include/vid_glob.h create mode 100644 src/parsec/include/vid_init.h create mode 100644 src/parsec/include/vid_plug.h create mode 100644 src/parsec/include/vid_subh.h create mode 100644 src/parsec/include/vid_supp.h create mode 100644 src/parsec/include/vsdl_buffo.h create mode 100644 src/parsec/include/vsdl_inito.h create mode 100644 src/parsec/include/vsdl_ogl.h create mode 100644 src/parsec/include/vsdl_suppo.h (limited to 'src/parsec/include') diff --git a/src/parsec/include/aud_bkgn.h b/src/parsec/include/aud_bkgn.h new file mode 100644 index 0000000..a45f917 --- /dev/null +++ b/src/parsec/include/aud_bkgn.h @@ -0,0 +1,29 @@ +/* + * PARSEC HEADER: aud_bkgn.h + */ + +#ifndef _AUD_BKGN_H_ +#define _AUD_BKGN_H_ + + +// external functions + +void AUD_BackGroundPlayer_Init( int voice ); +void AUD_BackGroundPlayer_Kill(); +int AUD_BackGroundPlayer_AddSample( const char *name ); +int AUD_BackGroundPlayer_RemoveSample( char *name ); +int AUD_BackGroundPlayer_AddTrack( int track ); +int AUD_BackGroundPlayer_RemoveTrack( int track ); +int AUD_BackGroundPlayer_AddStream( const char *name ); +int AUD_BackGroundPlayer_AddSilence( int seconds ); +int AUD_BackGroundPlayer_RemoveItem( int item ); +int AUD_BackGroundPlayer_Start( int fromevent ); +int AUD_BackGroundPlayer_Stop(); +int AUD_BackGroundPlayer_IsPlaying(); +int AUD_BackGroundPlayer_Maintain(); +void AUD_BackGroundPlayer_List(); + + +#endif // _AUD_BKGN_H_ + + diff --git a/src/parsec/include/aud_comm.h b/src/parsec/include/aud_comm.h new file mode 100644 index 0000000..5767979 --- /dev/null +++ b/src/parsec/include/aud_comm.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: aud_comm.h + */ + +#ifndef _AUD_COMM_H_ +#define _AUD_COMM_H_ + + +// external functions + +void AUD_RegisterCDCommands(); + + +#endif // _AUD_COMM_H_ + + diff --git a/src/parsec/include/aud_defs.h b/src/parsec/include/aud_defs.h new file mode 100644 index 0000000..c50333d --- /dev/null +++ b/src/parsec/include/aud_defs.h @@ -0,0 +1,122 @@ +/* + * PARSEC HEADER: aud_defs.h + */ + +#ifndef _AUD_DEFS_H_ +#define _AUD_DEFS_H_ + + +// ---------------------------------------------------------------------------- +// AUDIO SUBSYSTEM (AUD) related definitions - +// ---------------------------------------------------------------------------- + + +typedef void *audiowave_t; + + +extern int SELECT_VOICE; +extern int STREAM_VOICE_L; +extern int STREAM_VOICE_R; + +extern char console_audio_stream_path[]; +extern char intro_stream_name[]; +extern char menu_stream_name[]; + +// global volume between 0 and 255 +extern int GlobalVolume; + +extern int aud_sample_quality; + +extern int aud_do_open_menu_sound_on_aud_conf; + + +// audio subsystem constraints ------------------------------------------------ +// +#define AUD_MAX_VOLUME 255 +#define AUD_MIN_VOLUME 0 +#define AUD_RANGE_VOLUME ( AUD_MAX_VOLUME - AUD_MIN_VOLUME + 1 ) + +#define NUMCHANNELS 32 + + +// audio subsystem return codes ----------------------------------------------- +// +#define AUD_RETURN_SUCCESS 0 +#define AUD_RETURN_FAILURE 1 + + +// flags for looping and selection of sound ----------------------------------- +// +enum { + + SOUNDPARAMS_NONE = 0x0000, + SOUNDPARAMS_SELECTION = 0x0001, // play only a selection of the wave + SOUNDPARAMS_LOOP = 0x0002, // loop whole wave, only selection or extended loop + SOUNDPARAMS_LOOP_COUNT = 0x0010, // loop the sound numLoops times + SOUNDPARAMS_VOLUME = 0x0100, // set the specified volume + SOUNDPARAMS_STREAMWAVE = 0x0200 // play streamed wave +}; + + +// parameters when playing a sound -------------------------------------------- +// +struct SoundParams_s { + + long start; // sample to start playing + long end; // sample to end playing + long startLoop; // sample to rewind when looping + long endLoop; // sample to end looping in all but the last loop + long numLoops; // number of loops to play the sound + int volume; // volume this sound has to be played with + dword flags; // indicate which fields are set +}; + + +// struct for handling distance relative volume changes ----------------------- +// +struct DistVolumeInfo_s { + + DistVolumeInfo_s* next; + int nChannel; + int nMaxVolume; + int nMinVolume; + geomv_t fMaxVolumeDist; // distance for max. volume + geomv_t fMinVolumeDist; // distance for min. volume + float fRolloffscale; // scale for the rolloff inside the sound sphere + GenObject* pListener; + GenObject* pOriginator; +}; + + +// ids for different types of jim comments ------------------------------------ +// +enum { + + JIM_COMMENT_ANGRY, // 0 + JIM_COMMENT_WEAPON, // 1 + JIM_COMMENT_KILLED, // 2 + JIM_COMMENT_EATTHIS, // 3 + JIM_COMMENT_ENERGY, // 4 + JIM_COMMENT_BORED, // 5 + + JIM_COMMENT_NUM_COMMENTS +}; + + +// ids for different types of thrust sounds ----------------------------------- +// +enum { + + THRUST_TYPE_NORMAL, // 0 + THRUST_TYPE_SLIDE // 1 +}; + + +// include system-specific subsystem prototypes ------------------------------- +// +#include "aud_subh.h" + + +#endif // _AUD_DEFS_H_ + + diff --git a/src/parsec/include/aud_game.h b/src/parsec/include/aud_game.h new file mode 100644 index 0000000..1347d20 --- /dev/null +++ b/src/parsec/include/aud_game.h @@ -0,0 +1,236 @@ +/* + * PARSEC HEADER: aud_game.h + */ + +#ifndef _AUD_GAME_H_ +#define _AUD_GAME_H_ + + +// aud_game.c implements the following functions +// --------------------------------------------- +// int AUD_DamageRepaired(); +// int AUD_EnergyBoosted(); +// int AUD_ExtraCollected( int type ); +// int AUD_Laser( GenObject *objectpo ); +// int AUD_Missile( GenObject *objectpo ); +// int AUD_Mine( GenObject *objectpo ); +// int AUD_Locked(); +// int AUD_LowEnergy(); +// int AUD_MaxedOut( int type ); +// int AUD_MineCollision(); +// int AUD_PlayerKilled(); +// int AUD_Select1(); +// int AUD_Select2(); +// int AUD_ShipDestroyed( GenObject *objectpo ); +// int AUD_Tracking(); +// int AUD_EnergyExtra(); +// int AUD_Lightning( ShipObject *shippo ); +// int AUD_LightningOff( ShipObject *shippo ); +// int AUD_TrackingBeep(); +// int AUD_ButtonSlided(); +// int AUD_SpaceCraftViewerIn(); +// int AUD_SpaceCraftViewerOut(); +// int AUD_NewPlayerJoined(); +// int AUD_SelectLaser( int sellaser ); +// int AUD_SelectMissile( int selmissile ); +// int AUD_SlideIn( int type ); +// int AUD_SlideOut( int type ); +// int AUD_Countdown( int num ); +// int AUD_StartThrust(); +// int AUD_IncomingMissile( int looptime ); +// int AUD_BootOnBoardComputer(); +// int AUD_StopOnBoardComputer(); +// int AUD_StartLaserBeam(); +// int AUD_StopLaserBeam(); +// int AUD_EnemyShieldHit(); +// int AUD_EnemyHullHit(); +// int AUD_PlayerShieldHit(); +// int AUD_PlayerHullHit(); +// int AUD_MineDetector(); +// int AUD_LowShields(); +// int AUD_ActivateAfterBurner(); +// int AUD_DeactivateAfterBurner(); +// int AUD_SwarmMissiles( Vertex3 *origin, GenObject *dummyobj ); +// int AUD_SwarmMissilesOff( GenObject *dummypo ); +// int AUD_PhotonLoading( ShipObject *objectpo ); +// int AUD_PhotonLoadingOff( ShipObject *objectpo ); +// int AUD_PhotonFiring( GenObject* objectpo ); +// int AUD_KillsLeft( int killsleft ); +// int AUD_EmpBlast( ShipObject *shippo, int level ); +// int AUD_YouDidIt(); +// int AUD_YouHaveLost(); +// int AUD_LiCommenting( int lcid ); +// int AUD_LiBabbling( int lbid ); +// int AUD_JimCommenting( int jcid ); +// int AUD_JimBabbling( int jbid ); +// int AUD_Helix( ShipObject *shippo ); +// int AUD_HelixOff( ShipObject *shippo ); +// int AUD_Teleporter( GenObject* teleporter ); +// int AUD_TeleporterOff( GenObject* teleporter ); +// int AUD_SkillAmazing(); +// int AUD_SkillBrilliant(); + + +// voice enumeration ---------------------------------------------------------- +// +#define STD_VOICE 2 +#define TRACKING_VOICE 3 +#define LOCKED_VOICE 4 +#define LOWENERGY_VOICE 5 +#define EXPLOSION_VOICE 6 +#define DESTROYED_VOICE 7 +#define LASER1_VOICE 8 +#define MISSILE1_VOICE 9 +#define MISSILE2_VOICE 10 +#define LIGHTNING_VOICE 11 +#define TRACKBEEP_VOICE 12 +#define BACKGROUND_VOICE 13 +#define ENERGYBOOSTED_VOICE 14 +#define NEWPLAYERJOINED_VOICE 15 +#define ENEMY_HIT_VOICE 16 +#define GUN_SELECT_VOICE 17 +#define MISS_SELECT_VOICE 18 +#define THRUST_VOICE 19 +#define SLIDETHRUST_VOICE 20 +#define HELIX_VOICE 21 +#define COUNTDOWN_VOICE 22 +#define ANNOUNCE_VOICE 23 +#define AFTERBURNER_VOICE 24 +#define PHOTON_CANNON_VOICE 25 +#define SWARM_MISSILE_VOICE 26 +#define EMP_VOICE 27 + + +// sound effects enumeration -------------------------------------------------- +// +enum { + + SND_SELECT1, + SND_SELECT2, + SND_SHIPDESTROYED, + SND_NEWPLAYER, + SND_PLAYERLEFT, + SND_LOWENERGY, + SND_TRACKING, + SND_TARGETLOCKED, + SND_TRACKINGBEEP, + SND_EXPLOSION, + SND_LASER1, + SND_MISSILE1, + SND_MISSILE2, + SND_ENERGYEXTRA, + SND_DROPMINE, + SND_LASER2, + SND_LIGHTNING, + SND_MINEHIT +}; + + +// sound effects names -------------------------------------------------------- +// +#define SND_NAME_AFTERBURNER_COLLECTED "afterb collected" +#define SND_NAME_BUTTONSLIDED "buttonslided" +#define SND_NAME_DAMAGE_REPAIRED "damage repaired" +#define SND_NAME_DAZZLING_COLLECTED "dazzling collected" +#define SND_NAME_DROPMINE "drop mine" +#define SND_NAME_DUMB_MISSILE_COLLECTED "dmiss collected" +#define SND_NAME_ENERGYEXTRA "get energy" +#define SND_NAME_EXPLOSION "explosion" +#define SND_NAME_GUIDE_MISSILE_COLLECTED "gmiss collected" +#define SND_NAME_INVISIBILITY_COLLECTED "invis collected" +#define SND_NAME_INVUL_COLLECTED "invul collected" +#define SND_NAME_LASER1 "laser level 1" +#define SND_NAME_LASER2 "laser level 2" +#define SND_NAME_LASER3 "laser level 3" +#define SND_NAME_LIGHTNING "lightning beam" +#define SND_NAME_LOWENERGY "low energy" +#define SND_NAME_MAXED_OUT "maxed out" +#define SND_NAME_MINEHIT "mine hit" +#define SND_NAME_MINE_COLLECTED "mine collected" +#define SND_NAME_MISSILE1 "dumb missile" +#define SND_NAME_MISSILE2 "guided missile" +#define SND_NAME_HELIX "helix" +#define SND_NAME_NEWPLAYER "new player" +#define SND_NAME_OPTIONS_SLIDE_IN "options in" +#define SND_NAME_OPTIONS_SLIDE_OUT "options out" +#define SND_NAME_PLAYERLEFT "player leaves" +#define SND_NAME_SCV_SLIDE_IN "scv in" +#define SND_NAME_SCV_SLIDE_OUT "scv out" +#define SND_NAME_SELECT1 "cursor movement" +#define SND_NAME_SELECT2 "option selected" +#define SND_NAME_SELECT_LASER1 "select laser1" +#define SND_NAME_SELECT_LASER2 "select laser2" +#define SND_NAME_SELECT_LASER3 "select laser3" +#define SND_NAME_SELECT_LASER4 "select laser4" +#define SND_NAME_SELECT_LASER5 "select laser5" +#define SND_NAME_SELECT_MISSILE1 "select missile1" +#define SND_NAME_SELECT_MISSILE2 "select missile2" +#define SND_NAME_SELECT_MISSILE3 "select missile3" +#define SND_NAME_SELECT_MISSILE4 "select missile4" +#define SND_NAME_SHIPDESTROYED "Ship destroyed" +#define SND_NAME_TARGETLOCKED "target locked" +#define SND_NAME_THIEF_COLLECTED "thief collected" +#define SND_NAME_TRACKING "tracking" +#define SND_NAME_TRACKINGBEEP "tracker beep" +#define SND_NAME_COUNTDOWN1 "count1" +#define SND_NAME_COUNTDOWN2 "count2" +#define SND_NAME_COUNTDOWN3 "count3" +#define SND_NAME_COUNTDOWN4 "count4" +#define SND_NAME_COUNTDOWN5 "count5" +#define SND_NAME_SWITCH_GUN "switch gun" +#define SND_NAME_SWITCH_MISSILE "switch missile" +#define SND_NAME_THRUST "thrust" +#define SND_NAME_SLIDETHRUST "slidethrust" +#define SND_NAME_INCOMING "incoming" +#define SND_NAME_BOOTING "booting" +#define SND_NAME_LASERBEAM "laserbeam" +#define SND_NAME_ENEMYSHIELD_HIT "enemy hit" +#define SND_NAME_ENEMYHULL_HIT "enemyhull hit" +#define SND_NAME_PLAYERSHIELD_HIT "playershield hit" +#define SND_NAME_PLAYERHULL_HIT "playerhull hit" +#define SND_NAME_LOW_SHIELDS "low shields" +#define SND_NAME_ONE_KILL_LEFT "one kill left" +#define SND_NAME_TWO_KILLS_LEFT "two kills left" +#define SND_NAME_THREE_KILLS_LEFT "two kills left" +#define SND_NAME_JIM_COMMENT_AFRAID_1 "jim afraid 1" +#define SND_NAME_JIM_COMMENT_AFRAID_2 "jim afraid 2" +#define SND_NAME_JIM_COMMENT_ANGRY_1 "jim angry 1" +#define SND_NAME_JIM_COMMENT_ANGRY_2 "jim angry 2" +#define SND_NAME_JIM_COMMENT_WEAPON_1 "jim weapon 1" +#define SND_NAME_JIM_COMMENT_WEAPON_2 "jim weapon 2" +#define SND_NAME_JIM_COMMENT_WEAPON_3 "jim weapon 3" +#define SND_NAME_JIM_COMMENT_WEAPON_4 "jim weapon 4" +#define SND_NAME_JIM_COMMENT_KILLED_1 "jim killed 1" +#define SND_NAME_JIM_COMMENT_KILLED_2 "jim killed 2" +#define SND_NAME_JIM_COMMENT_EAT_THIS_1 "jim eat this 1" +#define SND_NAME_JIM_COMMENT_EAT_THIS_2 "jim eat this 2" +#define SND_NAME_JIM_COMMENT_ENERGY "jim energy" +#define SND_NAME_JIM_COMMENT_BORED_1 "jim bored 1" +#define SND_NAME_JIM_COMMENT_BORED_2 "jim bored 2" +#define SND_NAME_DECOY_COLLECTED "decoy collected" +#define SND_NAME_LASER_UPGRADE_COLLECTED "laser upgrade collected" +#define SND_NAME_PHOTON_CANNON_COLLECTED "photon cannon collected" +#define SND_NAME_SWARM_MISSILES_COLLECTED "swarm missiles collected" +#define SND_NAME_SKILL_AMAZING "skill amazing" +#define SND_NAME_SKILL_BRILLIANT "skill brilliant" +#define SND_NAME_AFTERBURNER_ACTIVATE "afterburner activate" +#define SND_NAME_AFTERBURNER_DEACTIVATE "afterburner deactivate" +#define SND_NAME_PHOTON_LOADING "photon loading" +#define SND_NAME_PHOTON_FIRING "photon firing" +#define SND_NAME_SWARM_MISSILES "swarm missiles" +#define SND_NAME_YOU_DID_IT "you did it" +#define SND_NAME_YOU_HAVE_LOST "you have lost" +#define SND_NAME_MINE_DETECTOR "mine detector" +#define SND_NAME_EMP_1 "emp1" +#define SND_NAME_EMP_2 "emp2" +#define SND_NAME_EMP_3 "emp3" +#define SND_NAME_TELEPORTER "teleporter" + +// distances for max. volume on distance based sound effects ------------------ +// +#define MAX_VOLUME_DISTANCE_VISIBLE 4096 +#define MAX_VOLUME_DISTANCE_TELEPORTER 500 + +#endif // _AUD_GAME_H_ + + diff --git a/src/parsec/include/aud_glob.h b/src/parsec/include/aud_glob.h new file mode 100644 index 0000000..47c9f21 --- /dev/null +++ b/src/parsec/include/aud_glob.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: aud_glob.h + */ + +#ifndef _AUD_GLOB_H_ +#define _AUD_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// AUDIO SUBSYSTEM (AUD) related global declarations and definitions - +// ---------------------------------------------------------------------------- + + +#endif // _AUD_GLOB_H_ + + diff --git a/src/parsec/include/aud_subh.h b/src/parsec/include/aud_subh.h new file mode 100644 index 0000000..d23d9e4 --- /dev/null +++ b/src/parsec/include/aud_subh.h @@ -0,0 +1,160 @@ +/* + * PARSEC HEADER: aud_subh.h + */ + +#ifndef _AUD_SUBH_H_ +#define _AUD_SUBH_H_ + + +// ---------------------------------------------------------------------------- +// AUDIO SUBSYSTEM (AUD) system-dependent function declarations - +// ---------------------------------------------------------------------------- + + +// sound effects playing functions + +int AUD_DamageRepaired(); +int AUD_EnergyBoosted(); +int AUD_ExtraCollected( int type ); +int AUD_Laser( GenObject *objectpo ); +int AUD_Missile( GenObject *objectpo ); +int AUD_Mine( GenObject *objectpo ); +int AUD_MineCollision(); +int AUD_Locked(); +int AUD_LowEnergy(); +int AUD_MaxedOut( int type ); +int AUD_PlayerKilled(); +int AUD_Select1(); +int AUD_Select2(); +int AUD_ShipDestroyed( GenObject *objectpo ); +int AUD_Tracking(); +int AUD_EnergyExtra(); +int AUD_Lightning( ShipObject *shippo ); +int AUD_LightningOff( ShipObject *shippo ); +int AUD_TrackingBeep(); +int AUD_ButtonSlided(); +int AUD_SpaceCraftViewerIn(); +int AUD_SpaceCraftViewerOut(); +int AUD_NewPlayerJoined(); +int AUD_SelectLaser( int sellaser ); +int AUD_SelectMissile( int selmissile ); +int AUD_SlideIn( int type ); +int AUD_SlideOut( int type ); +int AUD_Countdown( int num ); +int AUD_StartThrust( int type ); +int AUD_IncomingMissile( int looptime ); +int AUD_BootOnBoardComputer(); +int AUD_StopOnBoardComputer(); +int AUD_StartLaserBeam(); +int AUD_StopLaserBeam(); +int AUD_EnemyShieldHit(); +int AUD_EnemyHullHit(); +int AUD_PlayerShieldHit(); +int AUD_PlayerHullHit(); +int AUD_MineDetector(); +int AUD_LowShields(); +int AUD_ActivateAfterBurner(); +int AUD_DeactivateAfterBurner(); +int AUD_SwarmMissiles( Vertex3 *origin, GenObject *dummyobj ); +int AUD_SwarmMissilesOff( GenObject *dummypo ); +int AUD_PhotonLoading( ShipObject *objectpo ); +int AUD_PhotonLoadingOff( ShipObject *objectpo ); +int AUD_PhotonFiring( GenObject* objectpo ); +int AUD_KillsLeft( int killsleft ); +int AUD_EmpBlast( ShipObject *shippo, int level ); +int AUD_YouDidIt(); +int AUD_YouHaveLost(); +int AUD_LiCommenting( int lcid ); +int AUD_LiBabbling( int lbid ); +int AUD_JimCommenting( int jcid ); +int AUD_JimBabbling( int jbid ); +int AUD_Helix( ShipObject *shippo ); +int AUD_HelixOff( ShipObject *shippo ); +int AUD_Teleporter( GenObject* teleporter ); +int AUD_TeleporterOff( GenObject* teleporter ); +int AUD_SkillAmazing(); +int AUD_SkillBrilliant(); + + +// audio api abstraction + +int AUDs_PlayVoice( int voice, int sound ); +int AUDs_PlayVoiceBuffer( int voice, audiowave_t wave, SoundParams_s *params ); +int AUDs_SetVoiceVolume( int voice, int volume ); +int AUDs_LoadWaveFile( int num ); +int AUDs_FreeWaveFile( int num ); +int AUDs_CreateAudioVoice( int voice ); +int AUDs_CreateAudioData( audiowave_t wave ); +int AUDs_WriteAudioData( audiowave_t wave, dword offset, dword count ); +int AUDs_DestroyAudioData( audiowave_t wave ); +int AUDs_OpenVoices( int num ); +int AUDs_CloseVoices(); +int AUDs_SetVoicePanning( int voice, int panning ); +int AUDs_SetVoiceFrequency( int voice, int freq ); +int AUDs_GetVoiceStatus( int voice, int *stopped ); +int AUDs_StopVoice( int voice, int finishloop ); +int AUDs_UpdateAudio(); + +// cd audio functions + +void AUDs_CDInit(); +void AUDs_CDKill(); +int AUDs_CDOpen( short sCDDrive ); +void AUDs_CDClose(); +void AUDs_CDPlay( short sTrack, short from, short to ); +int AUDs_CDPause(); +void AUDs_CDStop(); +int AUDs_CDResume(); +int AUDs_CDEject(); +int AUDs_CDReadTrackInfo(); +int AUDs_CDHasMedia(); +int AUDs_CDCanPlay( short sTrack ); +int AUDs_CDSetVolume( int nVolume ); +int AUDs_CDGetVolume(); +int AUDs_CDList(); +int AUDs_CDGetTrackLength( short sTrack ); + +// speech functions + +int AUDs_SpeakString( char *speakstr ); + +// screen music control functions + +int AUDs_OpenIntroSound(); +int AUDs_CloseIntroSound(); +int AUDs_OpenMenuSound(); +int AUDs_CloseMenuSound(); +int AUDs_OpenCreditsSound(); +int AUDs_CloseCreditsSound(); +int AUDs_OpenGameSound(); +int AUDs_CloseGameSound(); + +// streaming functions + +int AUDs_PlayAudioStream( char *fname ); +int AUDs_StopAudioStream(); + +// sound effects memory management + +void AUDs_LoadAllSoundEffects(); +void AUDs_FreeAllSoundEffects(); + +// volume control + +void AUDs_MinMusicVolume(); +void AUDs_MaxMusicVolume(); +void AUDs_FadeMusicVolume(); + +// needs to be called regularly + +void AUDs_MaintainSound(); + +// init functions + +int AUDs_InitSoundSys(); +int AUDs_KillSoundSys(); + + +#endif // _AUD_SUBH_H_ + + diff --git a/src/parsec/include/aud_supp.h b/src/parsec/include/aud_supp.h new file mode 100644 index 0000000..a5819ff --- /dev/null +++ b/src/parsec/include/aud_supp.h @@ -0,0 +1,129 @@ +/* + * PARSEC HEADER: aud_supp.h + */ + +#ifndef _AUD_SUPP_H_ +#define _AUD_SUPP_H_ + + +// sample-channel relation (holds id once sample is fetched by name) ---------- +// +struct sample_channel_info_s { + + const char* samplename; + const char* fallbacksample; + int sampleid; + int channel; + int interruptold; +}; + + +// macro to fetch a wave for sample x ----------------------------------------- +// +#define AUD_FETCHSAMPLE(x) \ +\ + audiowave_t fetch_wave = NULL; \ + sampleinfo_s* fetch_pSampleInfo; \ + SoundParams_s fetch_params; \ + memset( &fetch_params, 0, sizeof( fetch_params ) ); \ + static int sampleid = -1; \ + if ( sampleid == -1 ) { \ + fetch_pSampleInfo = AUD_FetchSampleByName((x),&sampleid); \ + } else { \ + fetch_pSampleInfo = AUD_FetchSampleById(sampleid); \ + } \ + if(fetch_pSampleInfo != NULL) { \ + fetch_wave = (audiowave_t)fetch_pSampleInfo->samplepointer; \ + fetch_params.volume = ( fetch_pSampleInfo->volume == -1 ) ? \ + AUD_MAX_VOLUME : fetch_pSampleInfo->volume; \ + fetch_params.flags = SOUNDPARAMS_VOLUME; \ + } + + +// macro to fetch a wave for sample x store id in y --------------------------- +// +#define AUD_FETCHSAMPLE_EX(x,y) \ +\ + audiowave_t fetch_wave = NULL; \ + sampleinfo_s* fetch_pSampleInfo; \ + SoundParams_s fetch_params; \ + memset( &fetch_params, 0, sizeof( fetch_params ) ); \ + if ( (y) == -1 ) { \ + fetch_pSampleInfo = AUD_FetchSampleByName((x),&(y)); \ + } else { \ + fetch_pSampleInfo = AUD_FetchSampleById(y); \ + } \ + if(fetch_pSampleInfo != NULL) { \ + fetch_wave = (audiowave_t)fetch_pSampleInfo->samplepointer; \ + fetch_params.volume = ( fetch_pSampleInfo->volume == -1 ) ? \ + AUD_MAX_VOLUME : fetch_pSampleInfo->volume; \ + fetch_params.flags = SOUNDPARAMS_VOLUME; \ + } + + +// macro to fetch a wave for sample x, fallback to sample y ------------------- +// +#define AUD_FETCHSAMPLE_FALLBACK(x,y) \ +\ + audiowave_t fetch_wave = NULL; \ + sampleinfo_s* fetch_pSampleInfo; \ + SoundParams_s fetch_params; \ + memset( &fetch_params, 0, sizeof( fetch_params ) ); \ + static int sampleid = -1; \ + if ( sampleid == -1 ) { \ + fetch_pSampleInfo = AUD_FetchSampleByName( (x) ,&sampleid); \ + if(fetch_pSampleInfo == NULL) { \ + fetch_pSampleInfo = AUD_FetchSampleByName( (y) ,&sampleid); \ + } \ + } else { \ + fetch_pSampleInfo = AUD_FetchSampleById(sampleid); \ + } \ + if(fetch_pSampleInfo != NULL) { \ + fetch_wave = (audiowave_t)fetch_pSampleInfo->samplepointer; \ + fetch_params.volume = ( fetch_pSampleInfo->volume == -1 ) ? \ + AUD_MAX_VOLUME : fetch_pSampleInfo->volume; \ + fetch_params.flags = SOUNDPARAMS_VOLUME; \ + } + + +// macro to fetch a wave for sample x, fallback to sample z, store id in y ---- +// +#define AUD_FETCHSAMPLE_FALLBACK_EX(x,y,z) \ +\ + audiowave_t fetch_wave = NULL; \ + sampleinfo_s* fetch_pSampleInfo; \ + SoundParams_s fetch_params; \ + memset( &fetch_params, 0, sizeof( fetch_params ) ); \ + if ( (y) == -1 ) { \ + fetch_pSampleInfo = AUD_FetchSampleByName( (x) ,&(y)); \ + if(fetch_pSampleInfo == NULL) { \ + fetch_pSampleInfo = AUD_FetchSampleByName( (z) ,&(y)); \ + } \ + } else { \ + fetch_pSampleInfo = AUD_FetchSampleById((y)); \ + } \ + if(fetch_pSampleInfo != NULL) { \ + fetch_wave = (audiowave_t)fetch_pSampleInfo->samplepointer; \ + fetch_params.volume = ( fetch_pSampleInfo->volume == -1 ) ? \ + AUD_MAX_VOLUME : fetch_pSampleInfo->volume; \ + fetch_params.flags = SOUNDPARAMS_VOLUME; \ + } + + +// encapsulate global audio disabling ----------------------------------------- +// +#define DISABLE_AUDIO_FUNCTIONS (!Op_SoundEffects) +#define DISABLE_MUSIC_FUNCTIONS (!Op_Music) + + +// external functions --------------------------------------------------------- +// +sampleinfo_s* AUD_FetchSampleByName( const char *name, int *id ); +sampleinfo_s* AUD_FetchSampleById( int id ); +int AUD_SetSampleVolume( int id, int volume ); +int AUD_PlaySampleOnChannel( sample_channel_info_s *info ); + + +#endif // _AUD_SUPP_H_ + + diff --git a/src/parsec/include/con_act.h b/src/parsec/include/con_act.h new file mode 100644 index 0000000..a4f6294 --- /dev/null +++ b/src/parsec/include/con_act.h @@ -0,0 +1,239 @@ +/* + * PARSEC HEADER: con_act.h + */ + +#ifndef _CON_ACT_H_ +#define _CON_ACT_H_ + + +// action commands + +enum { + + ACM_SIGNATURE, + + ACM_IDLEWAIT, + + ACM_PITCH, + ACM_YAW, + ACM_ROLL, + ACM_SLIDEX, + ACM_SLIDEY, + ACM_MOVE, + + ACM_CAMROT1, + ACM_CAMROT2, + ACM_CAMROT3, + ACM_CAMORIGIN, + + ACM_FIXROT1, + ACM_FIXROT2, + ACM_FIXROT3, + + ACM_PACKET, + + ACM_FADEOUT, + ACM_FADEIN, + ACM_WFADEOUT, + ACM_WFADEIN, + ACM_BLACK, + ACM_WHITE, + ACM_STDPALETTE, + + ACM_SAVESCREEN, + ACM_SAVELIST, + ACM_SAVECAMERA, + ACM_SAVEFSTARS, + ACM_SAVEPSTARS, + ACM_SAVEREMOTE, + + ACM_KILLPSTARS, + ACM_ADDPSTAR, + + ACM_PREPRESTORE, + + ACM_CREATEOBJECT, + ACM_CREATEEXTRA, + ACM_DESTROYLIST, + + ACM_REMOTEPLAYER, + ACM_REMOTEMATRIX, + ACM_REMOTENAME, + ACM_REMOTEJOIN, + ACM_REMOTEUNJOIN, + + ACM_CLEARDEMO, + + ACM_OBJMATRXCOL1, + ACM_OBJMATRXCOL2, + ACM_OBJMATRXCOL3, + ACM_OBJMATRXCOL4, + + ACM_LASER_SPEED, + ACM_LASER_DIRVEC, + ACM_LASER_OWNER, + ACM_MISSL_SPEED, + ACM_MISSL_DIRVEC, + ACM_MISSL_OWNER, + ACM_MISSL_TARGET, + ACM_MINE_OWNER, + + ACM_ENERGYFIELD, + ACM_SPREADFIRE, + ACM_LIGHTNINGON, + ACM_LIGHTNINGOFF, + + ACM_SETOBJECTID, + ACM_SETOBJECTHOSTID, + + ACM_SIMULKEYPRESS, + ACM_SIMULKEYRELEASE, + + ACM_MS_CURDAMAGE, + ACM_MS_MAXDAMAGE, + ACM_MS_CURENERGY, + ACM_MS_MAXENERGY, + ACM_MS_CURSPEED, + ACM_MS_MAXSPEED, + ACM_MS_NUMMISSLS, + ACM_MS_MAXNUMMISSLS, + ACM_MS_NUMHOMMISSLS, + ACM_MS_MAXNUMHOMMISSLS, + ACM_MS_NUMMINES, + ACM_MS_MAXNUMMINES, + ACM_MS_WEAPONS, + ACM_MS_SPECIALS, + + ACM_GL_SELECTEDLASER, + ACM_GL_SELECTEDMISSILE, + ACM_GL_CURGUN, + ACM_GL_CURLAUNCHER, + ACM_GL_PANEL3CONTROL, + ACM_GL_PANEL4CONTROL, + ACM_GL_TARGETOBJNUMBER, + + ACM_WRITESMALL, + ACM_WRITEBIG1, + ACM_WRITEBIG2, + ACM_WRITEBIG3, + ACM_CLEARTEXT, + + ACM_PLAYSTREAM, + ACM_STOPSTREAM, + ACM_PLAYSOUND, + + ACM_AUX, + ACM_ENTRYMODE, + + ACM_SERVERMSG, + + ACM_HELIXON, + ACM_HELIXOFF, + + ACM_REMOTEMAXPLAYERS, + + ACM_INCLUDEDEMO, + + ACM_MS_WEAPONSACTIVE, + ACM_REMOTEWEAPONSACTIVE, + + ACM_WRITECONSOLETEXT, + ACM_DISPLAYMESSAGE, + + ACM_CD_OPEN, + ACM_CD_CLOSE, + ACM_CD_PLAY, + ACM_CD_PAUSE, + ACM_CD_RESUME, + ACM_CD_STOP, + ACM_CD_VOLUME, + + ACM_EXECCOMMAND, + + ACM_CLASSMAPID, + ACM_CLASSMAPNAME, + + ACM_AUXDATA, + ACM_SYSREFFRAMES, + + ACM_SCHEDULECOMMAND, + + ACM_LIGHTAMBIENT, + ACM_LIGHTDIFFUSE, + ACM_LIGHTSPECULAR, + + ACM_MS_NUMPARTMISSLS, + ACM_MS_MAXNUMPARTMISSLS, + + ACM_PHOTONON, + ACM_PHOTONOFF, + + ACM_EMPON, + ACM_EMPOFF, + ACM_EMP, + + ACM_NUM_COMMANDS // must be last!! +}; + + +// action commands flags + +#define ACF_NODIRECT 0x0000 // command not directly callable +#define ACF_DIRECT 0x0001 // command directly callable +#define ACF_NOCOMPILE 0x0000 // command not compilable +#define ACF_COMPILE 0x0002 // command is compilable +#define ACF_NOPARAMS 0x0000 // command has no parameters +#define ACF_INTPARAMS 0x0010 // command has int parameters +#define ACF_FLOATPARAMS 0x0020 // command has float parameters +#define ACF_STRINGPARAM 0x0040 // command has a string parameter +#define ACF_PACKETPARAM 0x0080 // command has a packet attached +#define ACF_DEMOPARAM 0x0100 // command has an entire demo attached +#define ACF_SCHEDPARAM 0x0200 // command has a command to schedule + +#define ACF_STRIP_SPACE 0x1000 // strip leading and trailing whitespace +#define ACF_STRINGSTRIP ( ACF_STRINGPARAM | ACF_STRIP_SPACE ) + +#define ACM_EAT_SPACE(c) ( ( action_commands[ c ].flags & ACF_STRIP_SPACE ) != 0 ) +#define ACF_EAT_SPACE(f) ( ( (f) & ACF_STRIP_SPACE ) != 0 ) + + +// action command description + +struct act_command_s { + + const char *command; // command string + void (*func)(void); // function responsible for command execution + dword flags; // flag word + int numparameters; // number of parameters the command takes +}; + +extern act_command_s action_commands[]; + + +// macro to retrieve action command strings +#define ACMSTR(x) (action_commands[x].command) + +// macro to retrieve string length of action commmands +#define ACMLEN(x) strlen(action_commands[x].command) + +// macro to determine if action command is directly callable +#define ACMCALLABLE(x) ((action_commands[x].flags&ACF_DIRECT)!=0) + + +// external functions + +int ExecBinCommands( char* &data, int interactive ); +void ResetClassMapTable(); +void ResetScheduledActions(); +void SaveGameState(); +void ActionCommand( char *cstr ); + + +// external variables + +extern int con_audio_stream_started; + + +#endif // _CON_ACT_H_ + + diff --git a/src/parsec/include/con_aux.h b/src/parsec/include/con_aux.h new file mode 100644 index 0000000..2d73b78 --- /dev/null +++ b/src/parsec/include/con_aux.h @@ -0,0 +1,331 @@ +/* + * PARSEC HEADER: con_aux.h + */ + +#ifndef _CON_AUX_H_ +#define _CON_AUX_H_ + + +// size of aux arrays +#define MAX_AUX_ENABLING 512 +#define MAX_AUX_DATA 128 + +//FIXME_SERVER: seperate aux flags for client and server + + +// auxenabling functionality (AuxEnabling[]) : +// +// 0: Polygons do not fill the z-buffer +// 1: Enable gouraud shading +// 2: BSP: Extended sprod check +// 3: if [2]: draw node itself; otherwise don't +// 4: if [2]: draw back node, then front node (otherwise the other way around) +// 5: if [2]: if ( |sprod| < eps ) skip entire subtree +// 6: Disable ShipObjects +// 7: Disable ExtraObjects +// 8: Disable LaserObjects +// 9: Disable MisslObjects +// 10: Show speed as number after change +// 11: Show energy as number after change +// 12: Don't show player names (panel) +// 13: Don't show missile stats (panel) +// 14: Show missile grafix panel +// 15: Use simple explosion +// 16: Don't show sent text in console +// ...well, the number of flags outpaced my motivation +// to describe them here; see defines below. + +#define AUX_POLYGONS_DONT_FILL_ZBUFFER AuxEnabling[ 0 ] +#define AUX_ENABLE_GOURAUD_SHADING AuxEnabling[ 1 ] +#define AUX_BSP_DO_EXTENDED_SPROD_CHECK AuxEnabling[ 2 ] +#define AUX_BSP_EXTCHECK_DRAW_NODE AuxEnabling[ 3 ] +#define AUX_BSP_EXTCHECK_BACKNODE_FIRST AuxEnabling[ 4 ] +#define AUX_BSP_EXTCHECK_SKIPSUBTREE AuxEnabling[ 5 ] +#define AUX_OBJCTRL_DISABLE_SHIPOBJECTS AuxEnabling[ 6 ] +#define AUX_OBJCTRL_DISABLE_EXTRAOBJECTS AuxEnabling[ 7 ] +#define AUX_OBJCTRL_DISABLE_LASEROBJECTS AuxEnabling[ 8 ] +#define AUX_OBJCTRL_DISABLE_MISSLOBJECTS AuxEnabling[ 9 ] +#define AUX_HUD_SHOW_CHANGED_SPEED_NUMBER AuxEnabling[ 10 ] +#define AUX_HUD_SHOW_CHANGED_ENERGY_NUMBER AuxEnabling[ 11 ] +#define AUX_HUD_PANEL_3_CONTROL AuxEnabling[ 12 ] +#define AUX_HUD_MISSILE_BAR_NUMBERS AuxEnabling[ 13 ] +#define AUX_HUD_PANEL_4_CONTROL AuxEnabling[ 14 ] +#define AUX_USE_SIMPLE_EXPLOSION AuxEnabling[ 15 ] +#define AUX_DISABLE_CONSOLE_SAY_OUTPUT AuxEnabling[ 16 ] +#define AUX_HUD_DISABLE_USER_DISPLAYS AuxEnabling[ 17 ] +#define AUX_DONT_DRAW_BLUEPRINTS AuxEnabling[ 18 ] +#define AUX_CREATE_PROPULSION_FUMES AuxEnabling[ 19 ] +#define AUX_DISABLE_SERVER_SETTINGS_BUTTON AuxEnabling[ 20 ] +#define AUX_DISABLE_SERVER_MENU_BUTTON AuxEnabling[ 21 ] +#define AUX_DISABLE_ZBUFFER_CLEAR AuxEnabling[ 22 ] +#define AUX_DISALLOW_USERCONTROLLED_MOTION AuxEnabling[ 23 ] +#define AUX_DISABLE_SOUNDEFFECTS AuxEnabling[ 24 ] +#define AUX_DISABLE_CLEARDEMO_ON_REPSTOP AuxEnabling[ 25 ] +#define AUX_DISPLAY_RATE_IN_VIEWERS AuxEnabling[ 26 ] +#define AUX_AWAITRETRACE_ON_FRAMEFINISH AuxEnabling[ 27 ] +#define AUX_DISABLE_FIXED_STAR_RENDERING AuxEnabling[ 28 ] +#define AUX_DISABLE_PSEUDO_STAR_RENDERING AuxEnabling[ 29 ] +#define AUX_DISABLE_FLASHWHITE_ON_GAMEENTRY AuxEnabling[ 30 ] +#define AUX_WAIT_FOR_KEYPRESS_AFTER_FADEIN AuxEnabling[ 31 ] +#define AUX_DISABLE_REORTHO_CAMERA_IN_GAME AuxEnabling[ 32 ] +#define AUX_DISABLE_REORTHO_IN_VIEWERS AuxEnabling[ 33 ] +#define AUX_DONT_CULL_PARTICLE_OBJECTS AuxEnabling[ 34 ] +#define AUX_DISABLE_PARTICLE_SYSTEM AuxEnabling[ 35 ] +#define AUX_ENABLE_TEXTURE_OVERLOADING AuxEnabling[ 36 ] +#define AUX_ENABLE_OBJECT_OVERLOADING AuxEnabling[ 37 ] +#define AUX_ENABLE_BITMAP_OVERLOADING AuxEnabling[ 38 ] +#define AUX_DISABLE_POLYGON_MIPMAPPING AuxEnabling[ 39 ] +#define AUX_DISABLE_BITMAP_MIPMAPPING AuxEnabling[ 40 ] +#define AUX_DISABLE_POLYGON_FILTERING AuxEnabling[ 41 ] +#define AUX_DISABLE_BITMAP_FILTERING AuxEnabling[ 42 ] +#define AUX_ENABLE_PANORAMIC_BACKGROUND AuxEnabling[ 43 ] +#define AUX_DISABLE_PANORAMIC_LAYER_1 AuxEnabling[ 44 ] +#define AUX_DISABLE_PANORAMIC_LAYER_2 AuxEnabling[ 45 ] +#define AUX_DISABLE_PANORAMIC_LAYER_3 AuxEnabling[ 46 ] +#define AUX_DISABLE_TEXTURE_WRAPPING AuxEnabling[ 47 ] +#define AUX_DISABLE_BUFFER_CLEAR AuxEnabling[ 48 ] +#define AUX_SPREADFIRE_PARTICLES_EXTINFO AuxEnabling[ 49 ] +#define AUX_LIGHTNING_PARTICLES_EXTINFO AuxEnabling[ 50 ] +#define AUX_EXPLOSION_PARTICLES_EXTINFO AuxEnabling[ 51 ] +#define AUX_ENERGYFIELD_PARTICLES_EXTINFO AuxEnabling[ 52 ] +#define AUX_PROTSHIELD_PARTICLES_EXTINFO AuxEnabling[ 53 ] +#define AUX_MEGASHIELD_PARTICLES_EXTINFO AuxEnabling[ 54 ] +#define AUX_DONT_FLASH_SCREEN_ON_FLARE AuxEnabling[ 55 ] +#define AUX_DONT_DRAW_FLARE_CIRCLES AuxEnabling[ 56 ] +#define AUX_DISABLE_SCREENSHOT_MESSAGE AuxEnabling[ 57 ] +#define AUX_DISABLE_FLOATLOGO_ROTATION AuxEnabling[ 58 ] +#define AUX_VERBOSE_TEXTURE_MEM_MANAGER AuxEnabling[ 59 ] +#define AUX_DISABLE_OBJECT_DEPTH_SORT AuxEnabling[ 60 ] +#define AUX_ENABLE_CONSOLE_DEBUG_MESSAGES AuxEnabling[ 61 ] +#define AUX_ENABLE_CONSOLE_MESSAGE_LOG AuxEnabling[ 62 ] +#define AUX_RECORD_PACKETS_INTO_SESSION AuxEnabling[ 63 ] +#define AUX_CREATE_EXTRAS_DURING_REPLAY AuxEnabling[ 64 ] +#define AUX_DISABLE_ABSOLUTE_RECORDING AuxEnabling[ 65 ] +#define AUX_RECORD_VERBOSE_PACKETS AuxEnabling[ 66 ] +#define AUX_PERFORM_AUTOMATIC_CONNECT AuxEnabling[ 67 ] +#define AUX_DISABLE_REPLAY_NET_SIMULATION AuxEnabling[ 68 ] +#define AUX_DISABLE_LOCAL_STARGATE AuxEnabling[ 69 ] +#define AUX_PARTICLE_BASE_EXPLOSION AuxEnabling[ 70 ] +#define AUX_NO_DELAYED_JOIN_REPLAY AuxEnabling[ 71 ] +#define AUX_HUD_ENABLE_PACKET_LOSS_METER AuxEnabling[ 72 ] +#define AUX_PACKETDROP_TESTING AuxEnabling[ 73 ] +#define AUX_DISABLE_TALK_ESCAPE_ON_TAB AuxEnabling[ 74 ] +#define AUX_USE_BIG_FONT_IN_MESSAGE_AREA AuxEnabling[ 75 ] +#define AUX_HUD_DISABLE_NONBASIC_DISPLAYS AuxEnabling[ 76 ] +#define AUX_HUD_ENABLE_DEBUGINFO AuxEnabling[ 77 ] +#define AUX_HUD_DEBUGINFO_MEMORY AuxEnabling[ 78 ] +#define AUX_HUD_DEBUGINFO_OBJECTS AuxEnabling[ 79 ] +#define AUX_HUD_DEBUGINFO_POSITION AuxEnabling[ 80 ] +#define AUX_HUD_DEBUGINFO_PACKETS AuxEnabling[ 81 ] +#define AUX_HUD_DEBUGINFO_GEOMETRY AuxEnabling[ 82 ] +#define AUX_HUD_DEBUGINFO_RASTERIZATION AuxEnabling[ 83 ] +#define AUX_ADVANCED_PLAYERINTERPOLATION AuxEnabling[ 84 ] +#define AUX_SAVE_PERSISTENT_INTCOMMANDS AuxEnabling[ 85 ] +#define AUX_SAVE_PERSISTENT_USRCOMMANDS AuxEnabling[ 86 ] +#define AUX_SAVE_PERSISTENT_AUX_ARRAY AuxEnabling[ 87 ] +#define AUX_DISABLE_RC_SCRIPT_SAVING AuxEnabling[ 88 ] +#define AUX_FORCE_WORKDIR_TO_CURRENT AuxEnabling[ 89 ] +#define AUX_FORCE_FILEPATH_TO_CURRENT AuxEnabling[ 90 ] +#define AUX_DISABLE_DEAD_RECKONING AuxEnabling[ 91 ] +#define AUX_REDIRECT_TALK_TO_IRC_SERVER AuxEnabling[ 92 ] +#define AUX_HUD_DEBUGINFO_OVER_CONSOLE AuxEnabling[ 93 ] +#define AUX_EXPLOSION_DRAW_SHOCKWAVE AuxEnabling[ 94 ] +#define AUX_CMD_WRITE_ACTIVE_IN_TEXTMODE AuxEnabling[ 95 ] +#define AUX_ENABLE_VOLUMETRIC_CLOUDS AuxEnabling[ 96 ] +#define AUX_SMALL_PARTICLE_TRIANGLES AuxEnabling[ 97 ] +#define AUX_OBJ_SORT_POLYS_ON_TEXTURE AuxEnabling[ 98 ] +#define AUX_NO_DEFAULT_RASTERIZER_STATE AuxEnabling[ 99 ] +#define AUX_ALLOW_ONLY_TEXTURE_LOADING AuxEnabling[ 100 ] +#define AUX_CMD_WRITE_DISABLE_OUTPUT AuxEnabling[ 101 ] +#define AUX_ATTACH_OBJECT_PARTICLES AuxEnabling[ 102 ] +#define AUX_STOP_DEMO_REPLAY_ON_CONNECT AuxEnabling[ 103 ] +#define AUX_DISABLE_DISCONNECT_BUTTON AuxEnabling[ 104 ] +#define AUX_ENABLE_SAMPLE_OVERLOADING AuxEnabling[ 105 ] +#define AUX_ENABLE_SHADER_OVERLOADING AuxEnabling[ 106 ] +#define AUX_ATTACH_THRUST_OBJECTS AuxEnabling[ 107 ] +#define AUX_DISABLE_GENOBJECT_PARTICLES AuxEnabling[ 108 ] +#define AUX_AUTOSTART_BACKGROUNDPLAYER AuxEnabling[ 109 ] +#define AUX_HUD_ADVANCED_KILLSTATS AuxEnabling[ 110 ] +#define AUX_DISABLE_PACKAGE_SCRIPTS AuxEnabling[ 111 ] +#define AUX_ENABLE_KILLED_SHIP_EXTRAS AuxEnabling[ 112 ] +#define AUX_STOP_AT_END_OF_CD_TRACK AuxEnabling[ 113 ] +#define AUX_DIRECT_CLUSTER_RENDERING AuxEnabling[ 114 ] +#define AUX_ENABLE_ELITE_RADAR AuxEnabling[ 115 ] +#define AUX_DRAW_MISSILES_ON_RADAR AuxEnabling[ 116 ] +#define AUX_DRAW_COCKPIT AuxEnabling[ 117 ] +#define AUX_DRAW_COCKPIT_DAMAGE AuxEnabling[ 118 ] +#define AUX_DRAW_COCKPIT_WEAPONS AuxEnabling[ 119 ] +#define AUX_DRAW_COCKPIT_RADAR AuxEnabling[ 120 ] +#define AUX_DRAW_COCKPIT_ICONBAR AuxEnabling[ 121 ] +#define AUX_OBJCTRL_DISABLE_CUSTOMOBJECTS AuxEnabling[ 122 ] +#define AUX_DRAW_COCKPIT_CROSSHAIR AuxEnabling[ 123 ] +#define AUX_ENABLE_CUSTOMOBJECT_HUDDISPLAY AuxEnabling[ 124 ] +#define AUX_DRAW_STARGATES_ON_RADAR AuxEnabling[ 125 ] +#define AUX_ENABLE_COCKPIT_SWAYING AuxEnabling[ 126 ] +#define AUX_ENABLE_COCKPIT_RATTLING AuxEnabling[ 127 ] +#define AUX_ENABLE_SMOOTH_SHIP_CONTROL AuxEnabling[ 128 ] +#define AUX_ENABLE_EXTENDED_TARGET_CARET AuxEnabling[ 129 ] +#define AUX_SHOW_PING_IN_SERVERLIST AuxEnabling[ 130 ] +#define AUX_DRAW_COCKPIT_ICONBAR_BACKGROUND AuxEnabling[ 131 ] +#define AUX_ENABLE_MISSILE_PROPULSION_FUMES AuxEnabling[ 132 ] +#define AUX_LASERBEAM_INSTEAD_OF_LASER AuxEnabling[ 133 ] +#define AUX_ENABLE_FREE_CAMERA AuxEnabling[ 134 ] +#define AUX_FLAGWORD_SCREENSHOT_HELPERS AuxEnabling[ 135 ] +#define AUX_DISPLAY_REMOTE_JOIN_OBJECT_ID AuxEnabling[ 136 ] +#define AUX_ENABLE_REFFRAME_TIMEPLOT AuxEnabling[ 137 ] +#define AUX_DISABLE_NEARPLANE_TOUCH_CULLING AuxEnabling[ 138 ] +#define AUX_DISABLE_MSGAREA_IF_CONSOLE_OPEN AuxEnabling[ 139 ] +#define AUX_ENABLE_MISSILE_POLYGON_TRAILS AuxEnabling[ 140 ] +#define AUX_ENABLE_FUNKY_AUDIO_COMMENTS AuxEnabling[ 141 ] +#define AUX_DISABLE_PACKAGE_SCRIPT_LISTING AuxEnabling[ 142 ] +#define AUX_DISABLE_DEMO_REPLAY_IN_MENU AuxEnabling[ 143 ] +#define AUX_NO_DELAYED_CREATE_OBJECT_REPLAY AuxEnabling[ 144 ] +#define AUX_DISABLE_SORTED_PLAYERLIST AuxEnabling[ 145 ] +#define AUX_DISABLE_OBJECT_FREE_ON_CLEARDEMO AuxEnabling[ 146 ] +#define AUX_ENABLE_DEMO_REPLAY_INFO_DISPLAY AuxEnabling[ 147 ] +#define AUX_DISABLE_JOYSTICK_THROTTLE AuxEnabling[ 148 ] +#define AUX_DISABLE_PACKAGE_DATA_FILES AuxEnabling[ 149 ] +#define AUX_DONT_OVERLOAD_TEXTURE_GEOMETRY AuxEnabling[ 150 ] +#define AUX_ENABLE_GAME_STATUS_WINDOW AuxEnabling[ 151 ] +#define AUX_DISABLE_QUIT_BUTTON AuxEnabling[ 152 ] +#define AUX_DISABLE_MESSAGE_AREA AuxEnabling[ 153 ] +#define AUX_ENABLE_DEMO_REPLAY_USER_INPUT AuxEnabling[ 154 ] +#define AUX_DISABLE_USER_GAMELOOP_EXIT AuxEnabling[ 155 ] +#define AUX_DISABLE_FLOATING_MENU_DRAWING AuxEnabling[ 156 ] +#define AUX_SAVE_AUX_ARRAY_ON_DEMO_REPLAY AuxEnabling[ 157 ] +#define AUX_SAVE_AUX_ARRAY_ON_DEMO_RECORD AuxEnabling[ 158 ] +#define AUX_SAVE_PLAYER_NAME_ON_DEMO_REPLAY AuxEnabling[ 159 ] +#define AUX_KILL_LIMIT_FOR_GAME_END AuxEnabling[ 160 ] +#define AUX_DISABLE_JOIN_GAME_BUTTON AuxEnabling[ 161 ] +#define AUX_KILL_LIMIT_RESET_ON_GAME_END AuxEnabling[ 162 ] +#define AUX_ENABLE_JOYSTICK_BINDING AuxEnabling[ 163 ] +#define AUX_ENABLE_DEPTHCUED_RADAR_DOTS AuxEnabling[ 164 ] +#define AUX_ENABLE_MOUSE_FOR_MENU_SCREENS AuxEnabling[ 165 ] +#define AUX_CHEAT_DISABLE_AMMO_CHECKS AuxEnabling[ 166 ] +#define AUX_CHEAT_DISABLE_ENERGY_CHECKS AuxEnabling[ 167 ] +#define AUX_CHEAT_DISABLE_DEVICE_CHECKS AuxEnabling[ 168 ] +#define AUX_DRAW_WIREFRAME AuxEnabling[ 169 ] +#define AUX_DRAW_NORMALS AuxEnabling[ 170 ] +#define AUX_ENABLE_LIGHTING_TYPES AuxEnabling[ 171 ] +#define AUX_ENABLE_COLANIM_OVERLOADING AuxEnabling[ 172 ] +#define AUX_ENABLE_TRILINEAR_FILTERING AuxEnabling[ 173 ] +#define AUX_ENABLE_MOVIE_WRITING AuxEnabling[ 174 ] +#define AUX_ENABLE_VOLUMETRIC_FOG AuxEnabling[ 175 ] +#define AUX_ENABLE_MAX_DISPLAY_FREQ AuxEnabling[ 176 ] +#define AUX_ENABLE_FOV_CONTROL AuxEnabling[ 177 ] +#define AUX_ALLOW_CACHE_TEXTURE_EVICT AuxEnabling[ 178 ] +#define AUX_DISABLE_CLEAR_TEXT_ON_CLEARDEMO AuxEnabling[ 179 ] +#define AUX_DISABLE_CLASS_MAP_TABLE_RESET AuxEnabling[ 180 ] +#define AUX_SAVE_REFFRAMEFREQ_ON_DEMO_REPLAY AuxEnabling[ 181 ] +#define AUX_SAVE_LIGHTINGCONF_ON_DEMO_REPLAY AuxEnabling[ 182 ] +#define AUX_ENABLE_MULTIPLE_TEXTURE_UNITS AuxEnabling[ 183 ] +#define AUX_DISABLE_CAMFILT_RESET_ON_CLEARDEMO AuxEnabling[ 184 ] +#define AUX_DISABLE_DYING_SHIP_MOVEMENT AuxEnabling[ 185 ] +#define AUX_DISABLE_PANEL_DECORATIONS AuxEnabling[ 186 ] +#define AUX_DISABLE_KILLS_LEFT_ANNOUNCEMENT AuxEnabling[ 187 ] +#define AUX_DISABLE_AUTOMATIC_NEBULA_LIGHTING AuxEnabling[ 188 ] +#define AUX_DISABLE_BACKGROUNDPLAYER_ITEM_FILL AuxEnabling[ 189 ] +#define AUX_DRAW_PLANETS_ON_RADAR AuxEnabling[ 190 ] +#define AUX_DRAW_SERVER_PING AuxEnabling[ 191 ] +#define AUX_DISABLE_POINT_VISIBILITY_DETECTION AuxEnabling[ 192 ] +#define AUX_ENABLE_TEXTURE_PRECACHING AuxEnabling[ 193 ] +#define AUX_DISABLE_LEVEL_SYNC AuxEnabling[ 194 ] +#define AUX_DRAW_TELEPORTERS_ON_RADAR AuxEnabling[ 195 ] +#define AUX_DISABLE_LEVEL_CONSOLE_MESSAGES AuxEnabling[ 196 ] +#define AUX_NEBULA_FLAGS AuxEnabling[ 197 ] +#define AUX_NETCODE_FLAGS AuxEnabling[ 198 ] +#define AUX_ENABLE_BEEP_ON_RECV AuxEnabling[ 199 ] +#define AUX_DEBUG_NETSTREAM_DUMP AuxEnabling[ 200 ] +#define AUX_ANISOTROPIC_FILTERING AuxEnabling[ 201 ] +#define AUX_MSAA AuxEnabling[ 202 ] + +#define AUX_ARRAY_NUM_ENTRIES_USED 203 // UPDATE THIS!! <== + +#if ( AUX_ARRAY_NUM_ENTRIES_USED > MAX_AUX_ENABLING ) + #error "MAX_AUX_ENABLING too small!" +#endif + +// auxdata functionality (AuxData[]) : +// +// 0: Set to least 1/z of all polygons drawn up to now (set by RenderPolygonEx() ) +// 1: Set to greatest 1/z +// 2: Set to 1 if FillZBuffer() was called at least once +// 3: sprod in BSP, if |sprod| < eps +// 4: eps to use for BSP sprod check +// 5: eps to use for BSP backface check +// 6: pixelvalue in center of lens flare object +// +// 8: number of particle clusters +// 9: number of particle clusters currently visible +// 10: particle object creation code (trigger) +// 11: radius of particle sphere to create +// 12: animation type of particle sphere to create +// 13: last return code of a soundsystem call +// 14: next available location in texture memory +// 15: number of downloaded (resident) textures +// 16: number of resident textures that are nondiscardable +// 17: size of current tail bubble in texmem +// 18: size of current bubble in texmem +// 19: number of remote players +// 20: output format for screenshots +// 21: output flags for screenshots (subformat) +// 24: lifetime of messages in message area +// 25: number of lines (height) of message area + +#define AUXDATA_LEAST_VERTEX_1_OVER_Z AuxData[ 0 ] +#define AUXDATA_GREATEST_VERTEX_1_OVER_Z AuxData[ 1 ] +#define AUXDATA_FILLZBUFFER_WAS_CALLED AuxData[ 2 ] +#define AUXDATA_BSP_SCALARPRODUCT_VALUE AuxData[ 3 ] +#define AUXDATA_BSP_ERROR_EPS AuxData[ 4 ] +#define AUXDATA_BSP_BACKFACE_TOLERANCE_EPS AuxData[ 5 ] +#define AUXDATA_LENSFLARE_CENTER_PIXEL AuxData[ 6 ] + +#define AUXDATA_NUM_PARTICLE_CLUSTERS AuxData[ 8 ] +#define AUXDATA_NUM_VISIBLE_PCLUSTERS AuxData[ 9 ] +#define AUXDATA_PSPHERE_CREATION_CODE AuxData[ 10 ] +#define AUXDATA_PSPHERE_RADIUS AuxData[ 11 ] +#define AUXDATA_PSPHERE_TYPE AuxData[ 12 ] + +#define AUXDATA_TMM_NEXT_TEXMEM_LOCATION AuxData[ 13 ] +#define AUXDATA_TMM_NUM_DOWNLOADED AuxData[ 14 ] +#define AUXDATA_TMM_NUM_NONDISCARDABLE AuxData[ 15 ] +#define AUXDATA_TMM_NUM_HASHTABLE_ENTRIES AuxData[ 16 ] +#define AUXDATA_TMM_CUR_TAILBUBBLE_SIZE AuxData[ 17 ] +#define AUXDATA_TMM_CUR_BUBBLE_SIZE AuxData[ 18 ] +#define AUXDATA_TMM_MIPMAP_LOD_BIAS AuxData[ 19 ] // set + +#define AUXDATA_SCREENSHOT_FORMAT AuxData[ 20 ] // set +#define AUXDATA_SCREENSHOT_SUBFORMAT AuxData[ 21 ] // set + +#define AUXDATA_MOVIE_FORMAT AuxData[ 22 ] // set +#define AUXDATA_MOVIE_SUBFORMAT AuxData[ 23 ] // set + +#define AUXDATA_MESSAGE_LIFETIME AuxData[ 24 ] // set +#define AUXDATA_MESSAGE_AREA_SIZE AuxData[ 25 ] // set + +#define AUXDATA_MOUSE_SENSITIVITY AuxData[ 26 ] // set + +#define AUXDATA_PLAYERLERP_TRANSITION_TIME AuxData[ 27 ] // set + +#define AUXDATA_LOD_DISCRETE_GEOMETRY_BIAS AuxData[ 28 ] // set + +#define AUXDATA_SMOOTH_SHIP_CONTROL_FACTOR AuxData[ 29 ] // set + +#define AUXDATA_BACKGROUND_NEBULA_ID AuxData[ 30 ] // set + +#define AUXDATA_SKILL_AMAZING_TIME AuxData[ 31 ] // set +#define AUXDATA_SKILL_BRILLIANT_TIME AuxData[ 32 ] // set + +#define AUXDATA_LAST_SOUNDSYS_RETURNCODE AuxData[ 33 ] +#define AUXDATA_NUMREMPLAYERS_COPY AuxData[ 34 ] + +#define AUXDATA_ARRAY_NUM_ENTRIES_USED 35 // UPDATE THIS!! <== + +#if ( AUXDATA_ARRAY_NUM_ENTRIES_USED > MAX_AUX_DATA ) + #error "MAX_AUX_DATA too small!" +#endif + + +#endif // _CON_AUX_H_ + + diff --git a/src/parsec/include/con_cani.h b/src/parsec/include/con_cani.h new file mode 100644 index 0000000..b124208 --- /dev/null +++ b/src/parsec/include/con_cani.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: con_cani.h + */ + +#ifndef _CON_CANI_H_ +#define _CON_CANI_H_ + + +// external functions + +int Cmd_DefColAnim( char *command ); + + +#endif // _CON_CANI_H_ + + diff --git a/src/parsec/include/con_com.h b/src/parsec/include/con_com.h new file mode 100644 index 0000000..a25afdc --- /dev/null +++ b/src/parsec/include/con_com.h @@ -0,0 +1,71 @@ +/* + * PARSEC HEADER: con_com.h + */ + +#ifndef _CON_COM_H_ +#define _CON_COM_H_ + + +// user commands table entry + +struct user_command_s { + + const char* command; // command string + short commlen; // length of string + short numparams; // num of parameters (used by tab-completion) + int (*execute)(char*); // command function + char* (*statedump)(); // returns statedump string; (NULL==volatile) +}; + + +// handle user commands not taking any parameters + +#define USERCOMMAND_NOPARAM(x) \ +{ \ + char *whsp = (x); \ + for ( ; *whsp; whsp++ ) \ + if ( *whsp != ' ' ) \ + break; \ + if ( *whsp != 0 ) { \ + if ( *(x) == ' ' ) { \ + CON_AddLine( dont_use_params ); \ + return TRUE; \ + } else { \ + return FALSE; \ + } \ + } \ +} \ + + +// macro to retrieve user command strings +#define USRSTR(x) (user_commands[x].command) + +// macro to retrieve string length of user commmands +#define USRLEN(x) (user_commands[x].commlen) + +// macro to determine number of arguments of user commmands +#define USRARG(x) (user_commands[x].numparams) + + +// external variables + +extern user_command_s* user_commands; +extern int num_user_commands; +extern char dont_use_params[]; + + +// external functions + +void CheckPlayerName( const char *name ); + +int CheckCmdsNoParam( const char *command ); +int CheckCmdsCustomString( const char *command ); +int CheckCmdsUserDefined( const char *command ); + +int CON_RegisterUserCommand( user_command_s *regcom ); +int CON_ReplaceUserCommand( user_command_s* repcom ); + + +#endif // _CON_COM_H_ + + diff --git a/src/parsec/include/con_conf.h b/src/parsec/include/con_conf.h new file mode 100644 index 0000000..8d5bcd2 --- /dev/null +++ b/src/parsec/include/con_conf.h @@ -0,0 +1,36 @@ +/* + * PARSEC HEADER: con_conf.h + */ + +#ifndef _CON_CONF_H_ +#define _CON_CONF_H_ + + + +// color command spec + +struct colcomm_s { + + const char *cmd; + colrgba_s *col; + void (*func)(); +}; + + +// external functions + +void DisplayCurrentNetSubsys(); + +int CheckColorConfig( char *scan ); +int CheckConfigCommand( char *scan ); + + +// external variables + +extern colcomm_s col_comms[]; +extern int num_col_commands; + + +#endif // _CON_CONF_H_ + + diff --git a/src/parsec/include/con_ext.h b/src/parsec/include/con_ext.h new file mode 100644 index 0000000..4891078 --- /dev/null +++ b/src/parsec/include/con_ext.h @@ -0,0 +1,91 @@ +/* + * PARSEC HEADER: con_ext.h + */ + +#ifndef _CON_EXT_H_ +#define _CON_EXT_H_ + + +// types of external commands (relating to their directory) +enum { + + COMTYPE_PACKAGE, // 0 + COMTYPE_ROOT, // 1 + COMTYPE_REFERENCE, // 2 + COMTYPE_STANDARD, // 3 + COMTYPE_RECORDING, // 4 + COMTYPE_MODIFICATION // 5 +}; + +// maximum valid length of command (script) name (filesystem dependent) +#define COMMAND_NAME_VALID_LEN 8 + +// allocated memory for command (script) name (excluding zero term.) +#define COMMAND_NAME_ALLOC_LEN 63 + +// maximum number of external scripts that will be recognized +#define MAX_EXTERNAL_COMMANDS 1024 + +// maximum number of registered mods (more than one is useful for data only) +#define MAX_REGISTERED_MODS 64 + + +// external variables + +extern int processing_batch; +extern int idle_reclevel; +extern int rec_depth; + +extern int preempt_action_commands; + +extern FILE * log_fp; +extern int log_commands; +extern char external_commands[][ COMMAND_NAME_ALLOC_LEN + 1 ]; +extern int external_command_types[]; +extern int num_external_commands; + +extern char packet_record_name[]; +extern char packet_replay_name[]; + +extern char* mod_names[]; +extern int mod_numnames; +extern int mod_override; + + +// external functions + +int ProcessExternalLine( char *scan ); +void ExecConsoleFile( char *fname, int echo ); +int AddExternalCommands( char *path, int comtype ); +void BuildExternalCommandList(); +int CheckExternalCommand( char *com ); +int InsertCommandLog( char *command ); +int ExecExternalFile( char *command ); +int CompileDemoCut( FILE *fp, char *script ); +int ScriptReplayActive(); +int RestartExternalCommand( int echo ); +int OpenOutputBatch( char *cstr, int type ); +void CloseOutputBatch(); +int StartRecording( char *cstr, int savestate ); +void CloseRecording(); +void CallExternalCommand( int extcom, int echo ); +void ScriptStopReplay(); + +int Cmd_CatExternalCommands( char *cstr ); +int Cmd_SetGameLoopBatchName( char *cstr ); +void Cmd_CloseOutputBatch(); +void Cmd_StopBatchReplay(); +void Cmd_QueryReplayInfo(); +void Cmd_RescanExternalCommands(); + + +// macro to retrieve external command strings +#define ECMSTR(x) (external_commands[x]) + +// macro to retrieve string length of external commmands +#define ECMLEN(x) strlen(external_commands[x]) + + +#endif // _CON_EXT_H_ + + diff --git a/src/parsec/include/con_geom.h b/src/parsec/include/con_geom.h new file mode 100644 index 0000000..c6d6d3f --- /dev/null +++ b/src/parsec/include/con_geom.h @@ -0,0 +1,15 @@ +/* + * PARSEC HEADER: con_geom.h + */ + +#ifndef _CON_GEOM_H_ +#define _CON_GEOM_H_ + + +// external functions + + + +#endif // _CON_GEOM_H_ + + diff --git a/src/parsec/include/con_info.h b/src/parsec/include/con_info.h new file mode 100644 index 0000000..a06da72 --- /dev/null +++ b/src/parsec/include/con_info.h @@ -0,0 +1,63 @@ +/* + * PARSEC HEADER: con_info.h + */ + +#ifndef _CON_INFO_H_ +#define _CON_INFO_H_ + + +// callback function type +typedef int (*notify_callback_fpt)( GenObject *base ); + + +// access information for single object property (type/class field) + +struct proplist_s { + + const char* propname; // name property can be accessed by + size_t propoffset; // offset of property in obj structure + int bmin; // minimum value of property + int bmax; // maximum value of property + int fieldtype; // field's data type + notify_callback_fpt notify_callback; // callback on field value changes +}; + +//NOTE: +// bmin and bmax (value bounds) for all types other than +// PROPTYPE_INT have to be specified in fixed-point! + +//NOTE: +// for PROPTYPE_STRING and PROPTYPE_CHARPTR bmin and bmax specify +// minimum and maximum number of chars (excluding the '\0'). + +#define PROPTYPE_INT 0 +#define PROPTYPE_FLOAT 1 +#define PROPTYPE_GEOMV 2 +#define PROPTYPE_FIXED 3 +#define PROPTYPE_STRING 4 +#define PROPTYPE_CHARPTR 5 + + +// external functions + +void CON_RegisterCustomType( dword objtypeid, proplist_s *proplist ); + +char* BuildTypeInfo( int typeindex ); +char* BuildClassInfo( int classindex ); + +int CheckSetObjTypeProperty( const char *query, const char *scan ); +int CheckSetObjClassProperty( const char *query, const char *scan ); +int CheckSetObjInstanceProperty( const char *query, const char *scan ); + +int CheckTypeInfo( const char *scan ); +int CheckClassInfo( const char *scan ); +int CheckInstanceInfo( const char *scan ); + +int WritePropList( FILE* fp, dword objid ); + +int Cmd_FaceInfo( char *command ); + + +#endif // _CON_INFO_H_ + + diff --git a/src/parsec/include/con_int.h b/src/parsec/include/con_int.h new file mode 100644 index 0000000..fb070f8 --- /dev/null +++ b/src/parsec/include/con_int.h @@ -0,0 +1,59 @@ +/* + * PARSEC HEADER: con_int.h + */ + +#ifndef _CON_INT_H_ +#define _CON_INT_H_ + + +// integer commands table entry + +struct int_command_s { + + int persistence; // persistent int commands are saved on exit + const char* command; // name of command + int bmin; // lower bound + int bmax; // upper bound + int* intref; // pointer to actual int var + void (*realize)(); // will be called after modification (optional) + int (*fetch)(); // will be called before reading (optional) + int default_val; // default value for int var +}; + + +// integer commands list +extern int_command_s * int_commands; + +// number of integer variable commands +extern int num_int_commands; + +// integer input/output configuration +extern const char * int_print_base; +extern int int_calc_base; + + +// macro to retrieve intvar command strings +#define ICMSTR(x) (int_commands[x].command) + +// macro to retrieve string length of intvar commmands +#define ICMLEN(x) strlen(int_commands[x].command) + + +// position of console geometry variables in table +enum { + + CONINFOINDX_CONWINX = 0, + CONINFOINDX_CONWINY = 1, + CONINFOINDX_CONWIDTH = 2, + CONINFOINDX_CONHEIGHT = 3 +}; + + +// external functions + +void CON_RegisterIntCommand( int_command_s *regcom ); + + +#endif // _CON_INT_H_ + + diff --git a/src/parsec/include/con_kmap.h b/src/parsec/include/con_kmap.h new file mode 100644 index 0000000..e4de560 --- /dev/null +++ b/src/parsec/include/con_kmap.h @@ -0,0 +1,49 @@ +/* + * PARSEC HEADER: con_kmap.h + */ + +#ifndef _CON_KMAP_H_ +#define _CON_KMAP_H_ + + +// command mapped to key ------------------------------------------------------ +// +struct keycom_s { + + char* command; // console command string + int echo; // echo flag (display, add to history) +}; + + +// textual description of key code -------------------------------------------- +// +struct textkeymap_s { + + dword code; // key code + const char* text; // name of corresponding key +}; + + +// external variables + +extern keycom_s key_com_mappings[]; +extern textkeymap_s make_codes[]; +extern textkeymap_s key_com_names[]; +extern const char *const functional_keys[]; + + +// external functions + +char * GetAKCDescription( int num ); +char * GetMKCDescription( int num ); +char * GetGameFuncDescription( int num ); + +int CheckKeyMappingEcho( char *scan ); +int CheckKeyMappingSilent( char *scan ); + +void ExecBoundKeyCommands(); + + +#endif // _CON_KMAP_H_ + + diff --git a/src/parsec/include/con_list.h b/src/parsec/include/con_list.h new file mode 100644 index 0000000..2b5a730 --- /dev/null +++ b/src/parsec/include/con_list.h @@ -0,0 +1,34 @@ +/* + * PARSEC HEADER: con_list.h + */ + +#ifndef _CON_LIST_H_ +#define _CON_LIST_H_ + + +// external functions + +void Cmd_ShipInfo(); +void Cmd_ListTypes(); +void Cmd_ListClasses(); +void Cmd_ListSayMacros(); +void Cmd_ListKeyBindings(); +void Cmd_ListKeyFunctions(); +void Cmd_ListVidModes(); +void Cmd_ListBinaryDemos(); +int Cmd_ListExternalCommands( char *command ); +int Cmd_ListDataTable( char *command ); +int Cmd_ListIntCommands( char *command ); +int Cmd_ListStdCommands( char *command ); + + +// external variables + +extern int await_keypress; +extern void (*com_cont_func)(); +extern int cur_vis_conlines; + + +#endif // _CON_LIST_H_ + + diff --git a/src/parsec/include/con_load.h b/src/parsec/include/con_load.h new file mode 100644 index 0000000..23e98ca --- /dev/null +++ b/src/parsec/include/con_load.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: con_load.h + */ + +#ifndef _CON_LOAD_H_ +#define _CON_LOAD_H_ + + +// external functions + +int Cmd_ExecLoadCommand( char *command ); + + +#endif // _CON_LOAD_H_ + + diff --git a/src/parsec/include/con_main.h b/src/parsec/include/con_main.h new file mode 100644 index 0000000..4d7e651 --- /dev/null +++ b/src/parsec/include/con_main.h @@ -0,0 +1,157 @@ +/* + * PARSEC HEADER: con_main.h + */ + +#ifndef _CON_MAIN_H_ +#define _CON_MAIN_H_ + + +#include "inp_defs.h" + + +// if this is defined command parsing will be a lot slower +//#define NO_UNNECESSARY_COMMAND_DOMAINS + + +// maximum length of single console line +#define MAX_CONSOLE_LINE_LENGTH 255 + +// number of console lines (storage) +#define NUM_CONSOLE_LINES 256 +#define NUM_CONSOLE_LINES_MASK ( NUM_CONSOLE_LINES - 1 ) + +// number of history list lines +#define NUM_HISTORY_LINES 128 +#define NUM_HISTORY_LINES_MASK ( NUM_HISTORY_LINES - 1 ) + +// size of console prompt (in chars) +#define PROMPT_SIZE 2 + + +/* +// additional directories for console scripts +#if defined( SYSTEM_WIN32_UNUSED ) + #define REFCON_COMMANDS_DIR "refs\\" + #define STDCON_COMMANDS_DIR "cons\\" + #define RECORD_COMMANDS_DIR "recs\\" +#elif defined( SYSTEM_LINUX_UNUSED ) || defined( SYSTEM_MACOSX_UNUSED )*/ + #define REFCON_COMMANDS_DIR "refs/" + #define STDCON_COMMANDS_DIR "cons/" + #define RECORD_COMMANDS_DIR "recs/" +/*#else + #error "system not defined!" +#endif + */ +// file extension of console scripts +#define CON_FILE_EXTENSION ".con" + + +// file extension of compiled console scripts +#define CON_FILE_COMPILED_EXTENSION ".dem" + + +// command domain restriction handling + +#ifdef NO_UNNECESSARY_COMMAND_DOMAINS + + #define HANDLE_COMMAND_DOMAIN(x) \ + if ( ( *(x) != ' ' ) && ( *(x) != 0 ) ) { \ + return FALSE; \ + } else { \ + } + + #define HANDLE_COMMAND_DOMAIN_SEP(x) HANDLE_COMMAND_DOMAIN(x) + +#else // NO_UNNECESSARY_COMMAND_DOMAINS + + #define HANDLE_COMMAND_DOMAIN(x) + + #define HANDLE_COMMAND_DOMAIN_SEP(x) \ + if ( ( *(x) != ' ' ) && ( *(x) != 0 ) ) { \ + CON_AddLine( unknown_command ); \ + return TRUE; \ + } else { \ + } + +#endif // NO_UNNECESSARY_COMMAND_DOMAINS + + +// external variables + +extern int compile_script; +extern FILE * compile_fp; + +extern int con_back_view; +extern int con_content; +extern int con_bottom; +extern int cursor_x; +extern int press_space_curs_x; + +extern int con_in_talk_mode; +extern int con_talk_line; +extern char talk_escape_char; + +extern int con_non_interactive; + +extern int con_no_login_check; + +extern char con_prompt[]; +extern char ok_prompt[]; +extern char press_space[]; +extern char too_many_args[]; +extern char arg_missing[]; +extern char invalid_arg[]; +extern char range_error[]; +extern char unknown_command[]; +extern char line_separator[]; + +extern char con_lines[][ MAX_CONSOLE_LINE_LENGTH + 1 ]; + + +// external functions + +void CheckConExtents(); + +void ClearConScreen(); +void EraseConLine( int line ); +void CreateSeparatorLine( int line ); + +char* SubstCurWorkDir( char *path ); + +void WritePersistentCommands(); + +void ExecNonCompilableCommand( char *command ); +void ExecConsoleCommand( char *command, int echo ); + +void FlushConsoleBuffer(); + +void CON_AddMessage( const char *text ); +void CON_AddLine( const char *text ); +void CON_AddLineFeed(); +void CON_EnableLineFeed(); +void CON_DisableLineFeed(); +void CON_DelLine(); +char* CON_GetLine(); +void CON_ListCtdPrompt(); +void CON_ListEndPrompt(); + +void CON_HandleTextInput(const char character); +void CON_HandleKeyPress(dword key); + +int QuicksayConsole(); +void SetQuicksayConsole( int enable ); + +void ConsoleControl(); +void ToggleConsole(); + +void ExecStartupScript( int echo ); + +void InitConsole(); +void KillConsole(); + +void InitConsoleFileHandling(); + + +#endif // _CON_MAIN_H_ + + diff --git a/src/parsec/include/con_path.h b/src/parsec/include/con_path.h new file mode 100644 index 0000000..28d8e0f --- /dev/null +++ b/src/parsec/include/con_path.h @@ -0,0 +1,15 @@ +/* + * PARSEC HEADER: con_path.h + */ + +#ifndef _CON_PATH_H_ +#define _CON_PATH_H_ + + +// external functions + + + +#endif // _CON_PATH_H_ + + diff --git a/src/parsec/include/con_rc.h b/src/parsec/include/con_rc.h new file mode 100644 index 0000000..9c96aeb --- /dev/null +++ b/src/parsec/include/con_rc.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: con_rc.h + */ + +#ifndef _CON_RC_H_ +#define _CON_RC_H_ + + +// external functions + +void WritePersistentCommands(); + + +#endif // _CON_RC_H_ + + diff --git a/src/parsec/include/con_say.h b/src/parsec/include/con_say.h new file mode 100644 index 0000000..baeb3d3 --- /dev/null +++ b/src/parsec/include/con_say.h @@ -0,0 +1,41 @@ +/* + * PARSEC HEADER: con_say.h + */ + +#ifndef _CON_SAY_H_ +#define _CON_SAY_H_ + + +#define NUM_TEXT_MACROS 10 +#define MAX_TEXTMACRO_LEN 127 + + +// modes of talk display + +enum enum_talk_modes { + + TALK_PUBLIC, // name in < > + TALK_PRIVATE, // name in * * + TALK_STATUS, // no name in front of text + + // must be last in list!! + NUM_TALK_MODES +}; + + +// external variables + +extern char text_macros[][ MAX_TEXTMACRO_LEN + 1 ]; + + +// external functions + +int Cmd_SayText( char *cstr ); +int Cmd_SetTextMacro( char *cstr ); + +void ShowSentText( const char *name, const char *text, int mode ); + + +#endif + + diff --git a/src/parsec/include/con_shad.h b/src/parsec/include/con_shad.h new file mode 100644 index 0000000..d47fb9d --- /dev/null +++ b/src/parsec/include/con_shad.h @@ -0,0 +1,26 @@ +/* + * PARSEC HEADER: con_shad.h + */ + +#ifndef _CON_SHAD_H_ +#define _CON_SHAD_H_ + + +// forward declarations +struct shader_s; +struct key_value_s; + + +// external functions + +shader_s* DetermineODTShader( key_value_s *shaderspec ); + +char* GetShaderDescription( dword shaderid ); + +int Cmd_DefShader( char *command ); +int Cmd_SetShader( char *command ); + + +#endif // _CON_SHAD_H_ + + diff --git a/src/parsec/include/con_std.h b/src/parsec/include/con_std.h new file mode 100644 index 0000000..7ae1c0b --- /dev/null +++ b/src/parsec/include/con_std.h @@ -0,0 +1,127 @@ +/* + * PARSEC HEADER: con_std.h + */ + +#ifndef _CON_STD_H_ +#define _CON_STD_H_ + + +// standard commands table entry ---------------------------------------------- +// +struct std_command_s { + + const char* command; // command string + short commlen; // length of string + short numparams; // number of parameters (used by tab-completion) +}; + + +// enumeration of standard commands ------------------------------------------- +// +enum enum_std_commands { + + CM_APPEND, + CM_BASE, + CM_BIND, + CM_BUILD, + CM_CAT, + CM_CLASSINFO, + CM_CLEAR, + CM_CLOSE, + CM_CLS, + CM_COLANIM, + CM_COMPILE, + CM_CONNECT, + CM_CREATE, + CM_DEC, + CM_DISABLE, + CM_NOMACROS, + CM_DISCONNECT, + CM_DISPLAY, + CM_ENABLE, + CM_ENABLEMACROS, + CM_EXIT, + CM_EXITGAME, + CM_FACEINFO, + CM_FLASHBLUE, + CM_FLASHWHITE, + CM_GAMELOOPBATCH, + CM_HEX, + CM_HIDE, + CM_KEY, + CM_LISTBINDINGS, + CM_LISTCLASSES, + CM_LISTSTDCOMMANDS, + CM_LISTDATA, + CM_LISTDEMOS, + CM_LISTGAMEFUNCKEYS, + CM_LISTINTCOMMANDS, + CM_LISTTEXTMACS, + CM_LISTTYPES, + CM_LOAD, + CM_LOGIN, + CM_LOGOUT, + CM_LISTEXTCOMMS, + CM_NAME, + CM_NET_SUBSYS, + CM_OBJECTCLEAR, + CM_OBJECTCOUNT, + CM_OBJECTINFO, + CM_OCT, + CM_OPEN, + CM_PATH_ANIM_INTRO, + CM_PATH_ASTREAM_INTRO, + CM_PATH_ASTREAM_MENU, + CM_PATH_ASTREAM, + CM_PLAYDEMO, + CM_PROP, + CM_PROPC, + CM_PROPO, + CM_QUIT, + CM_RECDEM, + CM_RECORD, + CM_REPINFO, + CM_REPSTOP, + CM_RESCAN, + CM_SAY, + CM_SET_MACRO, + CM_SETORIGIN, + CM_DEFSHADER, + CM_SETSHADER, + CM_SHIPS, + CM_SHOWPOSITION, + CM_TALKMODE, + CM_TYPEINFO, + CM_VID_LISTMODES, + CM_VID_SETMODE, + CM_VID_SUBSYS, + CM_WORKINGDIRECTORY, + CM_WRITESTRING, + CM_AUD_CONF, + CM_INP_CONF, + + // must be last in list!! + NUM_STD_COMMAND_CONSTANTS +}; + + +// command list and length array +extern std_command_s std_commands[]; + +// number of standard commands +extern int num_std_commands; + + +// macro to retrieve standard command strings +#define CMSTR(x) (std_commands[x].command) + +// macro to retrieve string length of standard commmands +#define CMLEN(x) (std_commands[x].commlen) + +// macro to determine number of arguments of standard commmands +#define CMARG(x) (std_commands[x].numparams) + + +#endif // _CON_STD_H_ + + diff --git a/src/parsec/include/con_tani.h b/src/parsec/include/con_tani.h new file mode 100644 index 0000000..854402c --- /dev/null +++ b/src/parsec/include/con_tani.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: con_tani.h + */ + +#ifndef _CON_TANI_H_ +#define _CON_TANI_H_ + + +// external functions + +int Cmd_DefTexAnim( char *command ); + + +#endif // _CON_TANI_H_ + + diff --git a/src/parsec/include/d_bmap.h b/src/parsec/include/d_bmap.h new file mode 100644 index 0000000..905fc76 --- /dev/null +++ b/src/parsec/include/d_bmap.h @@ -0,0 +1,26 @@ +/* + * PARSEC HEADER: d_bmap.h + */ + +#ifndef _D_BMAP_H_ +#define _D_BMAP_H_ + + +// ---------------------------------------------------------------------------- +// DRAWING SUBSYSTEM (D) BMAP group - +// ---------------------------------------------------------------------------- + + +void D_PutTrBitmap( char *bitmap, dword width, dword height, ugrid_t putx, ugrid_t puty ); +void D_PutTrMapBitmap( char *bitmap, char *maps, dword width, dword height, ugrid_t putx, ugrid_t puty, dword color ); +void D_PutClipBitmap( char *bitmap, dword width, dword height, sgrid_t putx, sgrid_t puty ); +void D_PutTrClipBitmap( char *bitmap, dword width, dword height, sgrid_t putx, sgrid_t puty ); +void D_PutSTCBitmap( char *bitmap, dword srcw, dword srch, dword dstw, dword dsth, sgrid_t putx, sgrid_t puty ); +void D_PutSTCBitmapZ( char *bitmap, dword srcw, dword srch, dword dstw, dword dsth, sgrid_t putx, sgrid_t puty, dword zvalue ); +void D_DrawTrRect( ugrid_t putx, ugrid_t puty, dword width, dword height, dword brightx ); + + + +#endif // _D_BMAP_H_ + + diff --git a/src/parsec/include/d_font.h b/src/parsec/include/d_font.h new file mode 100644 index 0000000..410f6c7 --- /dev/null +++ b/src/parsec/include/d_font.h @@ -0,0 +1,24 @@ +/* + * PARSEC HEADER: d_font.h + */ + +#ifndef _D_FONT_H_ +#define _D_FONT_H_ + + +// ---------------------------------------------------------------------------- +// DRAWING SUBSYSTEM (D) FONT group - +// ---------------------------------------------------------------------------- + + +void D_SetWStrContext( char *charset, dword *geometry, char *outseg, dword width, dword height ); +void D_WriteString( const char *string, ugrid_t putx, ugrid_t puty ); +void D_WriteTrString( const char *string, ugrid_t putx, ugrid_t puty, dword brightx ); +int D_GetPStringWidth( char *string ); +void D_TexfontWrite( const char *string, IterTexfont *itexfont ); +int D_TexfontGetWidth( const char *string, IterTexfont *itexfont ); + + +#endif // _D_FONT_H_ + + diff --git a/src/parsec/include/d_fontt.h b/src/parsec/include/d_fontt.h new file mode 100644 index 0000000..74e36bd --- /dev/null +++ b/src/parsec/include/d_fontt.h @@ -0,0 +1,435 @@ +/* + * PARSEC HEADER: dg_fontt.h + */ + +#ifndef _DG_FONTT_H_ +#define _DG_FONTT_H_ + + +// ---------------------------------------------------------------------------- +// +dword Char16x16Geom[ 91 ] = { + + 32*320 + 5*16 , // ' ' + 16*320 + 17*16 , // ! + 16*320 + 18*16 , // " + 32*320 + 3*16 , // # + 32*320 + 4*16 , // $ -> (c) + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 16 , // , + 32*320 + 32 , // - + 32*320 , // . + 16*320 + 19*16 , // / + + 16*320 + 16*16 , // 0 + 16*320 + 7*16 , // 1 + 16*320 + 8*16 , // 2 + 16*320 + 9*16 , // 3 + 16*320 + 10*16 , // 4 + 16*320 + 11*16 , // 5 + 16*320 + 12*16 , // 6 + 16*320 + 13*16 , // 7 + 16*320 + 14*16 , // 8 + 16*320 + 15*16 , // 9 + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 0 , // @ + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 32*320 + 5*16 , + 16 , // a + 32 , // b + 3*16 , // c + 4*16 , // d + 5*16 , // e + 6*16 , // f + 7*16 , // g + 8*16 , // h + 9*16 , // i + 10*16 , // j + 11*16 , // k + 12*16 , // l + 13*16 , // m + 14*16 , // n + 15*16 , // o + 16*16 , // p + 17*16 , // q + 18*16 , // r + 19*16 , // s + 16*320 , // t + 16*320 + 16 , // u + 16*320 + 32 , // v + 16*320 + 3*16 , // w + 16*320 + 4*16 , // x + 16*320 + 5*16 , // y + 16*320 + 6*16 , // z +}; + + +// ---------------------------------------------------------------------------- +// +struct char_dat { + + word location; + byte width; + byte height; +}; + +#define MAKE_CHARDAT(a,b,c) SWAP_32(((dword)(a))|(((dword)(b))<<16)|(((dword)(c))<<24)) + + +// ---------------------------------------------------------------------------- +// +dword CharGoldGeom[ 95 ] = { + + MAKE_CHARDAT( 17429-10881, 9, 16 ), // ' ' + MAKE_CHARDAT( 17424-10881, 6, 16 ), // ! + MAKE_CHARDAT( 0, 0, 0 ), // " + MAKE_CHARDAT( 0, 0, 0 ), // # + MAKE_CHARDAT( 0, 0, 0 ), // $ + MAKE_CHARDAT( 0, 0, 0 ), // % + MAKE_CHARDAT( 0, 0, 0 ), // & + MAKE_CHARDAT( 0, 0, 0 ), // ' + MAKE_CHARDAT( 0, 0, 0 ), // ( + MAKE_CHARDAT( 0, 0, 0 ), // ) + MAKE_CHARDAT( 17409-10881, 14, 16 ), // * + MAKE_CHARDAT( 0, 0, 0 ), // + + MAKE_CHARDAT( 17393-10881, 6, 18 ), // , + MAKE_CHARDAT( 12800, 17, 16 ), // - + MAKE_CHARDAT( 17377-10881, 6, 16 ), // . + MAKE_CHARDAT( 23824-10881, 9, 16 ), // / + MAKE_CHARDAT( 17438-10881, 16, 16 ), // 0 + MAKE_CHARDAT( 17456-10881, 10, 16 ), // 1 + MAKE_CHARDAT( 17471-10881, 14, 16 ), // 2 + MAKE_CHARDAT( 17487-10881, 14, 16 ), // 3 + MAKE_CHARDAT( 17503-10881, 14, 16 ), // 4 + MAKE_CHARDAT( 17519-10881, 14, 16 ), // 5 + MAKE_CHARDAT( 17535-10881, 14, 16 ), // 6 + MAKE_CHARDAT( 17552-10881, 14, 16 ), // 7 + MAKE_CHARDAT( 17568-10881, 14, 16 ), // 8 + MAKE_CHARDAT( 17584-10881, 14, 16 ), // 9 + MAKE_CHARDAT( 17385-10881, 6, 13 ), // : + MAKE_CHARDAT( 17400-10881, 6, 18 ), // ; + MAKE_CHARDAT( 0, 0, 0 ), // < + MAKE_CHARDAT( 0, 0, 0 ), // = + MAKE_CHARDAT( 0, 0, 0 ), // >, + MAKE_CHARDAT( 0, 0, 0 ), // ? + MAKE_CHARDAT( 12820, 20, 16 ), // @ + MAKE_CHARDAT( 10881-10881, 15, 16 ), // A + MAKE_CHARDAT( 10897-10881, 14, 16 ), // B + MAKE_CHARDAT( 10913-10881, 15, 16 ), // C + MAKE_CHARDAT( 10928-10881, 14, 16 ), // D + MAKE_CHARDAT( 10945-10881, 14, 16 ), // E + MAKE_CHARDAT( 10961-10881, 14, 16 ), // F + MAKE_CHARDAT( 10977-10881, 15, 16 ), // G + MAKE_CHARDAT( 10993-10881, 14, 16 ), // H + MAKE_CHARDAT( 11012-10881, 8, 16 ), // I + MAKE_CHARDAT( 11025-10881, 14, 16 ), // J + MAKE_CHARDAT( 11042-10881, 14, 16 ), // K + MAKE_CHARDAT( 11058-10881, 14, 16 ), // L + MAKE_CHARDAT( 11074-10881, 16, 16 ), // M + MAKE_CHARDAT( 11090-10881, 14, 16 ), // N + MAKE_CHARDAT( 11106-10881, 16, 16 ), // O + MAKE_CHARDAT( 11122-10881, 14, 16 ), // P + MAKE_CHARDAT( 11138-10881, 16, 16 ), // Q + MAKE_CHARDAT( 11154-10881, 14, 16 ), // R + MAKE_CHARDAT( 11170-10881, 14, 16 ), // S + MAKE_CHARDAT( 11186-10881, 14, 16 ), // T + MAKE_CHARDAT( 17281-10881, 14, 16 ), // U + MAKE_CHARDAT( 17297-10881, 14, 16 ), // V + MAKE_CHARDAT( 17313-10881, 16, 16 ), // W + MAKE_CHARDAT( 17329-10881, 14, 16 ), // X + MAKE_CHARDAT( 17345-10881, 14, 16 ), // Y + MAKE_CHARDAT( 17361-10881, 14, 16 ), // Z + MAKE_CHARDAT( 0, 0, 0 ), // [ + MAKE_CHARDAT( 0, 0, 0 ), // '\' + MAKE_CHARDAT( 0, 0, 0 ), // ] + MAKE_CHARDAT( 0, 0, 0 ), // ^ + MAKE_CHARDAT( 0, 0, 0 ), // _ + MAKE_CHARDAT( 0, 0, 0 ), // ` + MAKE_CHARDAT( 10881-10881, 15, 16 ), // a + MAKE_CHARDAT( 10897-10881, 14, 16 ), // b + MAKE_CHARDAT( 10913-10881, 15, 16 ), // c + MAKE_CHARDAT( 10928-10881, 14, 16 ), // d + MAKE_CHARDAT( 10945-10881, 14, 16 ), // e + MAKE_CHARDAT( 10961-10881, 14, 16 ), // f + MAKE_CHARDAT( 10977-10881, 15, 16 ), // g + MAKE_CHARDAT( 10993-10881, 14, 16 ), // h + MAKE_CHARDAT( 11012-10881, 8, 16 ), // i + MAKE_CHARDAT( 11025-10881, 14, 16 ), // j + MAKE_CHARDAT( 11042-10881, 14, 16 ), // k + MAKE_CHARDAT( 11058-10881, 14, 16 ), // l + MAKE_CHARDAT( 11074-10881, 16, 16 ), // m + MAKE_CHARDAT( 11090-10881, 14, 16 ), // n + MAKE_CHARDAT( 11106-10881, 16, 16 ), // o + MAKE_CHARDAT( 11122-10881, 14, 16 ), // p + MAKE_CHARDAT( 11138-10881, 16, 16 ), // q + MAKE_CHARDAT( 11154-10881, 14, 16 ), // r + MAKE_CHARDAT( 11170-10881, 14, 16 ), // s + MAKE_CHARDAT( 11186-10881, 14, 16 ), // t + MAKE_CHARDAT( 17281-10881, 14, 16 ), // u + MAKE_CHARDAT( 17297-10881, 14, 16 ), // v + MAKE_CHARDAT( 17313-10881, 16, 16 ), // w + MAKE_CHARDAT( 17329-10881, 14, 16 ), // x + MAKE_CHARDAT( 17345-10881, 14, 16 ), // y + MAKE_CHARDAT( 17361-10881, 14, 16 ), // z + MAKE_CHARDAT( 0, 0, 0 ), // { + MAKE_CHARDAT( 0, 0, 0 ), // | + MAKE_CHARDAT( 0, 0, 0 ), // } + MAKE_CHARDAT( 0, 0, 0 ) // ~ +}; + + +// ---------------------------------------------------------------------------- +// +dword Char04x09Geom[ 96 ] = { + + 3200 + 26*4 , // space (0x20) + 40*4 , // ! + 41*4 , // " + 42*4 , // # + 43*4 , // $ + 44*4 , // % + 3200 + 26*4 , // & + 54*4 , // ' + 46*4 , // ( + 47*4 , // ) + 55*4 , // * + 49*4 , // + + 38*4 , // , + 50*4 , // - + 39*4 , // . + 45*4 , // / + 26*4 , // 0 + 27*4 , // 1 + 28*4 , // 2 + 29*4 , // 3 + 30*4 , // 4 + 31*4 , // 5 + 32*4 , // 6 + 33*4 , // 7 + 34*4 , // 8 + 35*4 , // 9 + 36*4 , // : + 37*4 , // ; + 52*4 , // < + 51*4 , // = + 53*4 , // > + 3200 + 26*4 , // ? + 48*4 , // @ + 3200 , // A + 3200 + 1*4 , // B + 3200 + 2*4 , // C + 3200 + 3*4 , // D + 3200 + 4*4 , // E + 3200 + 5*4 , // F + 3200 + 6*4 , // G + 3200 + 7*4 , // H + 3200 + 8*4 , // I + 3200 + 9*4 , // J + 3200 + 10*4 , // K + 3200 + 11*4 , // L + 3200 + 12*4 , // M + 3200 + 13*4 , // N + 3200 + 14*4 , // O + 3200 + 15*4 , // P + 3200 + 16*4 , // Q + 3200 + 17*4 , // R + 3200 + 18*4 , // S + 3200 + 19*4 , // T + 3200 + 20*4 , // U + 3200 + 21*4 , // V + 3200 + 22*4 , // W + 3200 + 23*4 , // X + 3200 + 24*4 , // Y + 3200 + 25*4 , // Z + 56*4 , // [ + 3200 + 26*4 , + 57*4 , // ] + 3200 + 26*4 , + 58*4 , // _ + 3200 + 26*4 , + 0 , // a + 1*4 , // b + 2*4 , // c + 3*4 , // d + 4*4 , // e + 5*4 , // f + 6*4 , // g + 7*4 , // h + 8*4 , // i + 9*4 , // j + 10*4 , // k + 11*4 , // l + 12*4 , // m + 13*4 , // n + 14*4 , // o + 15*4 , // p + 16*4 , // q + 17*4 , // r + 18*4 , // s + 19*4 , // t + 20*4 , // u + 21*4 , // v + 22*4 , // w + 23*4 , // x + 24*4 , // y + 25*4 , // z + 3200 + 26*4 , // { + 59*4 , // | + 3200 + 26*4 , // } + 3200 + 26*4 , // ~ + 3200 + 26*4 , // (0x7f) +}; + + +// geometry of small 8x8 font used mainly for console ------------------------- +// +dword Char08x08Geom[ 96 ] = { + + 8*320 + 23*8, // space (0x20) + 8*320 + 10*8, // ! + 8*320 + 11*8, // " + 8*320 + 12*8, // # + 8*320 + 13*8, // $ + 8*320 + 14*8, // % + 0, // & + 8*320 + 16*8, // ' + 8*320 + 4*8, // ( + 8*320 + 5*8, // ) + 8*320 + 22*8, // * + 8*320 + 3*8, // + + 36*8, // , + 39*8, // - + 37*8, // . + 38*8, // / + + 26*8, // 0 (0x30) + 27*8, // 1 + 28*8, // 2 + 29*8, // 3 + 30*8, // 4 + 31*8, // 5 + 32*8, // 6 + 33*8, // 7 + 34*8, // 8 + 35*8, // 9 + 8*320 + 1*8, // : + 8*320 + 0*8, // ; + 8*320 + 17*8, // < + 8*320 + 15*8, // = + 8*320 + 18*8, // > + 8*320 + 19*8, // ? + + 8*320 + 9*8, // @ (0x40) + 0*8, // A + 1*8, // B + 2*8, // C + 3*8, // D + 4*8, // E + 5*8, // F + 6*8, // G + 7*8, // H + 8*8, // I + 9*8, // J + 10*8, // K + 11*8, // L + 12*8, // M + 13*8, // N + 14*8, // O + + 15*8, // P (0x50) + 16*8, // Q + 17*8, // R + 18*8, // S + 19*8, // T + 20*8, // U + 21*8, // V + 22*8, // W + 23*8, // X + 24*8, // Y + 25*8, // Z + 8*320 + 6*8, // [ + 38*8, // backslash + 8*320 + 7*8, // ] + 8*320 + 8*8, // ^ (0x5e) == block cursor + 8*320 + 2*8, // _ + + 0, // ` (0x60) + 0*8, // a + 1*8, // b + 2*8, // c + 3*8, // d + 4*8, // e + 5*8, // f + 6*8, // g + 7*8, // h + 8*8, // i + 9*8, // j + 10*8, // k + 11*8, // l + 12*8, // m + 13*8, // n + 14*8, // o + + 15*8, // p (0x70) + 16*8, // q + 17*8, // r + 18*8, // s + 19*8, // t + 20*8, // u + 21*8, // v + 22*8, // w + 23*8, // x + 24*8, // y + 25*8, // z + 0, // { + 8*320 + 20*8, // | + 0, // } + 0, // ~ + 0, // (0x7f) +}; + + +#endif // _DG_FONTT_H_ + + diff --git a/src/parsec/include/d_glob.h b/src/parsec/include/d_glob.h new file mode 100644 index 0000000..07d9aa9 --- /dev/null +++ b/src/parsec/include/d_glob.h @@ -0,0 +1,31 @@ +/* + * PARSEC HEADER: d_glob.h + */ + +#ifndef _D_GLOB_H_ +#define _D_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// DRAWING SUBSYSTEM (D) related global declarations and definitions - +// ---------------------------------------------------------------------------- + + +// BMAP group + +//char * GlobalColXlat; +//char * BrightxMap; + + +// FONT group + +extern dword Char16x16Geom[]; +extern dword Char08x08Geom[]; +extern dword Char04x09Geom[]; +extern dword CharGoldGeom[]; +extern char* CharsetDataBase; + + +#endif // _D_GLOB_H_ + + diff --git a/src/parsec/include/d_iter.h b/src/parsec/include/d_iter.h new file mode 100644 index 0000000..59756b7 --- /dev/null +++ b/src/parsec/include/d_iter.h @@ -0,0 +1,37 @@ +/* + * PARSEC HEADER: d_iter.h + */ + +#ifndef _D_ITER_H_ +#define _D_ITER_H_ + + +// ---------------------------------------------------------------------------- +// DRAWING SUBSYSTEM (D) ITER group - +// ---------------------------------------------------------------------------- + + +void D_BiasIterDepth( int bias ); +void D_LoadIterMatrix( Xmatrx matrix ); +void D_DrawIterPoint2( IterPoint2 *itpoint ); +void D_DrawIterPoint3( IterPoint3 *itpoint, dword cullmask ); +void D_DrawIterLine2( IterLine2 *itline ); +void D_DrawIterLine3( IterLine3 *itline, dword cullmask ); +void D_DrawIterTriangle2( IterTriangle2 *ittri ); +void D_DrawIterTriangle3( IterTriangle3 *ittri, dword cullmask ); +void D_DrawIterRectangle2( IterRectangle2 *itrect ); +void D_DrawIterRectangle3( IterRectangle3 *itrect, dword cullmask ); +void D_DrawIterPolygon2( IterPolygon2 *itpoly ); +void D_DrawIterPolygon3( IterPolygon3 *itpoly, dword cullmask ); +void D_DrawIterTriStrip2( IterTriStrip2 *itstrip ); +void D_DrawIterTriStrip3( IterTriStrip3 *itstrip, dword cullmask ); +void D_LockIterArray2( IterArray2 *itarray, dword first, dword count ); +void D_LockIterArray3( IterArray3 *itarray, dword first, dword count ); +void D_UnlockIterArray(); +void D_DrawIterArray( dword mode, dword first, dword count, dword cullmask ); +void D_DrawIterArrayIndexed( dword mode, dword count, dword *indexes, dword cullmask ); + + +#endif // _D_ITER_H_ + + diff --git a/src/parsec/include/d_misc.h b/src/parsec/include/d_misc.h new file mode 100644 index 0000000..74001d8 --- /dev/null +++ b/src/parsec/include/d_misc.h @@ -0,0 +1,43 @@ +/* + * PARSEC HEADER: d_misc.h + */ + +#ifndef _D_MISC_H_ +#define _D_MISC_H_ + + +// ---------------------------------------------------------------------------- +// DRAWING SUBSYSTEM (D) MISC group - +// ---------------------------------------------------------------------------- + + +// line drawing styles + +#define D_DRAWLINE_STYLE_DEFAULT 0x0000 +#define D_DRAWLINE_STYLE_ANTIALIASED 0x0001 +#define D_DRAWLINE_STYLE_THICK 0x0002 +#define D_DRAWLINE_STYLE_STIPPLED 0x0004 +#define D_DRAWLINE_STYLE_CLOSE_STRIP 0x0008 + + +// external functions + +int D_DrawSquare( ugrid_t xko, ugrid_t yko, visual_t col, dword siz ); +int D_DrawSquareZ( ugrid_t xko, ugrid_t yko, visual_t col, dword siz, dword zvalue ); +void D_DrawRadarObj( ugrid_t xko, ugrid_t yko, visual_t col ); +void D_DrawHorzBar( ugrid_t xko, ugrid_t yko, visual_t col, dword leng ); +void D_DrawVertBar( ugrid_t xko, ugrid_t yko, visual_t col, dword leng ); +void D_DrawLine( ugrid_t xko1, ugrid_t yko1, ugrid_t xko2, ugrid_t yko2, visual_t col1, visual_t col2, dword mode ); +void D_DrawLineStrip( ugrid_t *vtxs, dword numvtxs, visual_t col, dword mode ); + + +// subsystem independet external functions ------------------------------------ +// +void D_LineWorld( const Vector3* start, const Vector3* end, const colrgba_s* color ); +void D_FrameOfReference( const Xmatrx frame, const Vector3* transl ); + + + +#endif // D_MISC.H + + diff --git a/src/parsec/include/d_patch.h b/src/parsec/include/d_patch.h new file mode 100644 index 0000000..379ca8a --- /dev/null +++ b/src/parsec/include/d_patch.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: d_patch.h + */ + +#ifndef _D_PATCH_H_ +#define _D_PATCH_H_ + + +// ---------------------------------------------------------------------------- +// DRAWING SUBSYSTEM (D) patching function - +// ---------------------------------------------------------------------------- + + + +#endif // _D_PATCH_H_ + + diff --git a/src/parsec/include/do_bmap.h b/src/parsec/include/do_bmap.h new file mode 100644 index 0000000..ff385b9 --- /dev/null +++ b/src/parsec/include/do_bmap.h @@ -0,0 +1,28 @@ +/* + * PARSEC HEADER: do_bmap.h + */ + +#ifndef _DO_BMAP_H_ +#define _DO_BMAP_H_ + + +// do_bmap.c implements the following functions +// -------------------------------------------- +// void D_PutTrBitmap( char *bitmap, dword width, dword height, ugrid_t putx, ugrid_t puty ); +// void D_PutTrMapBitmap( char *bitmap, char *maps, dword width, dword height, ugrid_t putx, ugrid_t puty, dword color ); +// void D_PutClipBitmap( char *bitmap, dword width, dword height, sgrid_t putx, sgrid_t puty ); +// void D_PutTrClipBitmap( char *bitmap, dword width, dword height, sgrid_t putx, sgrid_t puty ); +// void D_PutSTCBitmap( char *bitmap, dword srcw, dword srch, dword dstw, dword dsth, sgrid_t putx, sgrid_t puty ); +// void D_PutSTCBitmapZ( char *bitmap, dword srcw, dword srch, dword dstw, dword dsth, sgrid_t putx, sgrid_t puty, dword zvalue ); +// void D_DrawTrRect( ugrid_t putx, ugrid_t puty, dword width, dword height, dword brightx ); + +// do_bmap.c implements the following variables +// -------------------------------------------- +// char * GlobalColXlat; +// char * BrightxMap; + + + +#endif // _DO_BMAP_H_ + + diff --git a/src/parsec/include/do_font.h b/src/parsec/include/do_font.h new file mode 100644 index 0000000..ef26a4e --- /dev/null +++ b/src/parsec/include/do_font.h @@ -0,0 +1,29 @@ +/* + * PARSEC HEADER: do_font.h + */ + +#ifndef _DO_FONT_H_ +#define _DO_FONT_H_ + + +// do_font.c implements the following functions +// -------------------------------------------- +// void D_SetWStrContext( char *charset, dword *geometry, char *outseg, dword width, dword height ); +// void D_WriteString( const char *string, ugrid_t putx, ugrid_t puty ); +// void D_WriteTrString( const char *string, ugrid_t putx, ugrid_t puty, dword brightx ); +// int D_GetPStringWidth( char *string ); +// void D_TexfontWrite( const char *string, IterTexfont *itexfont ); +// int D_TexfontGetWidth( const char *string, IterTexfont *itexfont ); + +// do_font.c implements the following variables +// -------------------------------------------- +// dword Char16x16Geom[]; +// dword Char08x08Geom[]; +// dword Char04x09Geom[]; +// dword CharGoldGeom[]; +// char * CharsetDataBase; + + +#endif // _DO_FONT_H_ + + diff --git a/src/parsec/include/do_iter.h b/src/parsec/include/do_iter.h new file mode 100644 index 0000000..97b8bbb --- /dev/null +++ b/src/parsec/include/do_iter.h @@ -0,0 +1,34 @@ +/* + * PARSEC HEADER: do_iter.h + */ + +#ifndef _DO_ITER_H_ +#define _DO_ITER_H_ + + +// do_iter.c implements the following functions +// -------------------------------------------- +// void D_BiasIterDepth( int bias ); +// void D_LoadIterMatrix( Xmatrx matrix ); +// void D_DrawIterPoint2( IterPoint2 *itpoint ); +// void D_DrawIterPoint3( IterPoint3 *itpoint, dword cullmask ); +// void D_DrawIterLine2( IterLine2 *itline ); +// void D_DrawIterLine3( IterLine3 *itline, dword cullmask ); +// void D_DrawIterTriangle2( IterTriangle2 *ittri ); +// void D_DrawIterTriangle3( IterTriangle3 *ittri, dword cullmask ); +// void D_DrawIterRectangle2( IterRectangle2 *itrect ); +// void D_DrawIterRectangle3( IterRectangle3 *itrect, dword cullmask ); +// void D_DrawIterPolygon2( IterPolygon2 *itpoly ); +// void D_DrawIterPolygon3( IterPolygon3 *itpoly, dword cullmask ); +// void D_DrawIterTriStrip2( IterTriStrip2 *itstrip ); +// void D_DrawIterTriStrip3( IterTriStrip3 *itstrip, dword cullmask ); +// void D_LockIterArray2( IterArray2 *itarray, dword first, dword count ); +// void D_LockIterArray3( IterArray3 *itarray, dword first, dword count ); +// void D_UnlockIterArray(); +// void D_DrawIterArray( dword mode, dword first, dword count, dword cullmask ); +// void D_DrawIterArrayIndexed( dword mode, dword count, dword *indexes, dword cullmask ); + + +#endif // _DO_ITER_H_ + + diff --git a/src/parsec/include/do_misc.h b/src/parsec/include/do_misc.h new file mode 100644 index 0000000..b9b5233 --- /dev/null +++ b/src/parsec/include/do_misc.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: do_misc.h + */ + +#ifndef _DO_MISC_H_ +#define _DO_MISC_H_ + + +// do_misc.c implements the following functions +// -------------------------------------------- +// int D_DrawSquare( ugrid_t xko, ugrid_t yko, visual_t col, dword siz ); +// int D_DrawSquareZ( ugrid_t xko, ugrid_t yko, visual_t col, dword siz, dword zvalue ); +// void D_DrawRadarObj( ugrid_t xko, ugrid_t yko, visual_t col ); +// void D_DrawHorzBar( ugrid_t xko, ugrid_t yko, visual_t col, dword leng ); +// void D_DrawVertBar( ugrid_t xko, ugrid_t yko, visual_t col, dword leng ); +// void D_DrawLine( ugrid_t xko1, ugrid_t yko1, ugrid_t xko2, ugrid_t yko2, visual_t col1, visual_t col2, dword mode ); +// void D_DrawLineStrip( ugrid_t *vtxs, dword numvtxs, visual_t col, dword mode ); + +#endif // _DO_MISC_H_ + + diff --git a/src/parsec/include/do_patch.h b/src/parsec/include/do_patch.h new file mode 100644 index 0000000..51d525d --- /dev/null +++ b/src/parsec/include/do_patch.h @@ -0,0 +1,15 @@ +/* + * PARSEC HEADER: do_patch.h + */ + +#ifndef _DO_PATCH_H_ +#define _DO_PATCH_H_ + + +// do_patch.c implements the following functions +// --------------------------------------------- + + +#endif + + diff --git a/src/parsec/include/e_callbk.h b/src/parsec/include/e_callbk.h new file mode 100644 index 0000000..a557bd0 --- /dev/null +++ b/src/parsec/include/e_callbk.h @@ -0,0 +1,62 @@ +/* + * PARSEC HEADER: e_callbk.h + */ + +#ifndef _E_CALLBK_H_ +#define _E_CALLBK_H_ + + +// type for specification of callback type/attributes ------------------------- +// +enum callbacktype_t { + + CBTYPE_DRAW_OBJECTS = 0x0000, // called before R_DrawWorld() + CBTYPE_DRAW_PARTICLES = 0x0001, // called before R_DrawParticles() + CBTYPE_DRAW_EFFECTS = 0x0002, // called before R_DrawLensFlare() + + CBTYPE_DRAW_PRE_WORLD = 0x0003, // called by R_DrawWorld() (begin) + CBTYPE_DRAW_POST_WORLD = 0x0004, // called by R_DrawWorld() (end) + CBTYPE_DRAW_PRE_PARTICLES = 0x0005, // called by R_DrawParticles() (begin) + CBTYPE_DRAW_POST_PARTICLES = 0x0006, // called by R_DrawParticles() (end) + + CBTYPE_DRAW_CUSTOM_ITER = 0x0007, // drawing of custom iter objects + + CBTYPE_DRAW_OVERLAYS = 0x0008, // called at overlay drawing time + + CBTYPE_VIDMODE_CHANGED = 0x0009, // notify of video mode change + + CBTYPE_STREAM_ENDED = 0x000A, // notify of audiostream end + + CBTYPE_USER_INPUT = 0x000B, // called before GameLoop calls INP_UserProcessInput() + + CBTYPE_NUM_TYPES = 12, // ==> UPDATE THIS!! <== + + CBTYPE_MASK = 0x00ff, // mask for callback type (256 types possible) + + CBFLAG_REMOVE = 0x0000, // flag to remove the callback info from the list after calling + CBFLAG_PERSISTENT = 0x0100, // callback info stays in list until removed + CBFLAG_MASK = 0x0f00 // +}; + + +// callback function type ----------------------------------------------------- +// +typedef int (*global_callback_fpt)( void *param ); + + +// special callback id indicating registration failed ------------------------- +// +#define CBID_FAILED -1 + + +// external functions --------------------------------------------------------- +// +int CALLBACK_RegisterCallback( int callbacktype, global_callback_fpt callback, void* param ); +int CALLBACK_DeleteCallback( int callbacktype, int callbackid ); +int CALLBACK_DestroyCallback( int callbacktype, void *param ); +int CALLBACK_WalkCallbacks( int callbacktype ); + + +#endif // _E_CALLBK_H_ + + diff --git a/src/parsec/include/e_colani.h b/src/parsec/include/e_colani.h new file mode 100644 index 0000000..d7b23a8 --- /dev/null +++ b/src/parsec/include/e_colani.h @@ -0,0 +1,34 @@ +/* + * PARSEC HEADER: e_colani.h + */ + +#ifndef _E_COLANI_H_ +#define _E_COLANI_H_ + + +// colanim spec + +struct colanimreg_s { + + char* name; + dword _pad32[ 3 ]; + colanim_s colanim; +}; + + +// external functions + +colanimreg_s* FetchColAnim( char *name, dword *colanimid ); +void InitAnimStateColAnim( FaceAnimState *animstate, colanim_s *colanim, dword colflags ); +int RegisterColAnim( colanimreg_s *colanimref ); + + +// external variables + +extern int num_registered_colanims; +extern colanimreg_s registered_colanims[]; + + +#endif // _E_COLANI_H_ + + diff --git a/src/parsec/include/e_color.h b/src/parsec/include/e_color.h new file mode 100644 index 0000000..6cb8968 --- /dev/null +++ b/src/parsec/include/e_color.h @@ -0,0 +1,94 @@ +/* + * PARSEC HEADER: e_color.h + */ + +#ifndef _E_COLOR_H_ +#define _E_COLOR_H_ + + +// external functions + +visual_t ColorIndexToVisual( int colindx ); +void ColorIndexToRGBA( colrgba_s *colrgba, int colindx ); +void VisualToRGBA( colrgba_s *colrgba, visual_t visual ); +visual_t RGBAToVisual( colrgba_s *colrgba ); + +void SetupTranslationPalette( char *palette ); +void SetupSingleBitmapColors( int bmid ); +void SetupSingleCharsetColors( int ftid ); +void SetupBitmapColors(); + +void InitColorMaps(); +void KillColorMaps(); + + +// color index translation + +#define COLINDX_TO_VISUAL(x) IndexToVisualTab[ (x) & 0xff ] +//#define COLINDX_TO_VISUAL(x) ColorIndexToVisual( x ) + +#define COLINDX_TO_RGBA(c,x) { *(c) = IndexToRGBATab[ (x) & 0xff ]; } +//#define COLINDX_TO_RGBA(c,x) ColorIndexToRGBA( (c), (x) ) + + +// translucency table ids + +enum { + + TRTAB_PANELBACK, + TRTAB_PANELTEXT, + TRTAB_FLAREBASE, + + TRTAB_NUMTABLES // has to be last!! +}; + + +// color bit-resolution translation tables + +extern byte colbits_1_to_8[]; +extern byte colbits_2_to_8[]; +extern byte colbits_3_to_8[]; +extern byte colbits_4_to_8[]; +extern byte colbits_5_to_8[]; +extern byte colbits_6_to_8[]; + + +// color setup (conversion) flags + +#define COLORSETUP_DEFAULT 0x00000000 +#define COLORSETUP_32BPP_PAL_SWAP_RGB 0x00000001 +#define COLORSETUP_32BPP_PAL_ALPHA_IN_LSB 0x00000002 +#define COLORSETUP_32BPP_PAL_SET_ALPHA 0x00000004 +#define COLORSETUP_32BPP_BITMAP_YINVERSE 0x00000008 +#define COLORSETUP_32BPP_FONT_YINVERSE 0x00000010 +#define COLORSETUP_32BPP_ENABLE_TRANSPARENCY 0x00000020 +#define COLORSETUP_32BPP_CONVERT_SCALE_BITMAPS 0x00000040 +#define COLORSETUP_STANDARD_TO_RGB_565 0x00000100 +#define COLORSETUP_STANDARD_TO_RGBA_1555 0x00000200 +#define COLORSETUP_STANDARD_TO_RGB_888 0x00000400 +#define COLORSETUP_STANDARD_TO_RGBA_8888 0x00000800 +#define COLORSETUP_STANDARD_DO_CONVERSION 0x00000f00 +#define COLORSETUP_GLIDE3DF_TO_RGB_565 0x00001000 +#define COLORSETUP_GLIDE3DF_TO_RGBA_1555 0x00002000 +#define COLORSETUP_GLIDE3DF_TO_RGB_888 0x00004000 +#define COLORSETUP_GLIDE3DF_TO_RGBA_8888 0x00008000 +#define COLORSETUP_GLIDE3DF_DO_CONVERSION 0x0000f000 +#define COLORSETUP_FONT_TO_TEXTURE_ALPHA 0x00010000 +#define COLORSETUP_FONT_TO_TEXTURE_INTENSITY 0x00020000 +#define COLORSETUP_FONT_TO_TEXTURE_LUMINANCE 0x00040000 +#define COLORSETUP_FONT_TO_TEXTURE_RGBA 0x00080000 +#define COLORSETUP_FONT_DO_CONVERSION 0x000f0000 +#define COLORSETUP_ALPHA_8_TO_RGBA_8888 0x00100000 +#define COLORSETUP_INTENSITY_8_TO_RGBA_8888 0x00200000 +//#define COLORSETUP_GENERAL_TO_GLIDE3DF 0x00400000 +#define COLORSETUP_SWAP_BITMAPS_16BPP 0x01000000 +#define COLORSETUP_SWAP_BITMAPS_32BPP 0x02000000 +#define COLORSETUP_SWAP_FONTS_16BPP 0x04000000 +#define COLORSETUP_SWAP_FONTS_32BPP 0x08000000 + +extern dword ColorSetupFlags; + + +#endif // _E_COLOR_H_ + + diff --git a/src/parsec/include/e_demo.h b/src/parsec/include/e_demo.h new file mode 100644 index 0000000..4e48860 --- /dev/null +++ b/src/parsec/include/e_demo.h @@ -0,0 +1,55 @@ +/* + * PARSEC HEADER: e_demo.h + */ + +#ifndef _E_DEMO_H_ +#define _E_DEMO_H_ + + +// external functions + +size_t DEMO_ParseDemoHeader( FILE *fp, int demoid, int verbose ); +void DEMO_RegisterInitialDemos(); + +void DEMO_UserInputDisabling(); + +int DEMO_ReplayActive(); +void DEMO_StopReplay(); +void DEMO_ClearDemo( int stopreplay ); +void DEMO_InitInfo(); +void DEMO_CountDemoFrame(); + +int DEMO_TimedemoActive(); +refframe_t DEMO_GetTimedemoBase(); + +int DEMO_BinaryReplayActive(); +void DEMO_BinaryStopReplay(); +FILE* DEMO_BinaryOpenDemo( const char *demoname ); +void DEMO_BinaryExecCommands( int interactive ); + +int DEMO_PlayBehindMenu( const char *demoname ); +int DEMO_PlayFromMenu( const char *demoname ); + +int Cmd_PlayBinaryDemoFile( char *command ); + + +// external variables + +extern int num_registered_demos; +extern int max_registered_demos; +extern char* registered_demo_names[]; +extern char* registered_demo_titles[]; + +extern refframe_t demoinfo_curtime; +extern int demoinfo_curline; +extern int demoinfo_curframe; +extern dword demoinfo_curofs; +extern refframe_t demoinfo_lastwait; + +struct keyfunc_s; +extern keyfunc_s* key_replay_map; + + +#endif // _E_DEMO_H_ + + diff --git a/src/parsec/include/e_draw.h b/src/parsec/include/e_draw.h new file mode 100644 index 0000000..6fdd324 --- /dev/null +++ b/src/parsec/include/e_draw.h @@ -0,0 +1,55 @@ +/* + * PARSEC HEADER: e_draw.h + */ + +#ifndef _E_DRAW_H_ +#define _E_DRAW_H_ + + +// colored screen rectangle info + +struct colscreenrect_s { + + int x; + int y; + int w; + int h; + + dword itertype; + colrgba_s color; +}; + + +// textured screen rectangle info + +struct texscreenrect_s { + + int x; + int y; + int w; + int h; + + int scaled_w; + int scaled_h; + + int texofsx; + int texofsy; + + int alpha; + + dword itertype; + TextureMap* texmap; +}; + + +// external functions + +void DRAW_PanelDecorations( sgrid_t putx, sgrid_t puty, int width, int height ); +void DRAW_ClippedTrRect( sgrid_t putx, sgrid_t puty, int width, int height, dword brightx ); +void DRAW_ColoredScreenRect( colscreenrect_s *rect ); +void DRAW_TexturedScreenRect( texscreenrect_s *rect, Rectangle2 *cliprect ); + + +#endif // _E_DRAW_H_ + + diff --git a/src/parsec/include/e_events.h b/src/parsec/include/e_events.h new file mode 100644 index 0000000..08f2554 --- /dev/null +++ b/src/parsec/include/e_events.h @@ -0,0 +1,66 @@ +/* + * PARSEC HEADER: e_events.h + */ + +#ifndef _E_EVENTS_H_ +#define _E_EVENTS_H_ + + + +// event parameter flags ------------------------------------------------------ +// +#define EVENT_PARAM_LOOP_MASK 0x000f // mask for loop parameter +#define EVENT_PARAM_ONESHOT 0x0000 // execute event once +#define EVENT_PARAM_LOOP_COUNT 0x0001 // execute event loopinfo times +#define EVENT_PARAM_LOOP_INDEFINITE 0x0002 // execute event until removed + +#define EVENT_PARAM_ONE_PER_TYPE 0x0010 // remove any other event of same type +#define EVENT_PARAM_DEPENDENT 0x0020 // trigger of event depends on other event's trigger +#define EVENT_PARAM_AUTOFREE 0x0040 // event is automatically freed after it's last fired +#define EVENT_PARAM_AUTOFREE_CALLBACK 0x0080 // callback data is automatically freed after it's last fired +#define EVENT_PARAM_AUTOTRIGGER 0x0100 // event is automatically triggered when added to the list + +#define EVENT_UNTRIGGERED -1 // event is not triggered yet + + +// generic event information -------------------------------------------------- +// +struct event_s { + + event_s* next; + event_s* prec; + dword type; // type information of event + int (*callback)(void *); // callback function to be called, when event is fired + void* callback_params; // parameters passed to the callback function + refframe_t refframe_delay; // delay in refframes for event from trigger to fire + dword flags; // flags describing the event + dword loopcount; // loop count for looping events + dword dependent_on; // id of event this event depends on + refframe_t refframe_trigger; // refframe when event is to trigger + int _mksiz64[6]; +}; + + +// for easy casting of event callback function pointers ----------------------- +// +typedef int (*event_callback_t)(void*); + + +// external functions --------------------------------------------------------- +// +int EVT_InitManager(); +int EVT_KillManager(); +size_t EVT_AddEvent( event_s *event ); +void EVT_RemoveEvent( size_t id ); +void EVT_RemoveEventType( dword type ); +void EVT_Maintain(); + + +// include event definitions -------------------------------------------------- +// +#include "e_evtdef.h" + + +#endif // _E_EVENTS_H_ + + diff --git a/src/parsec/include/e_evtdef.h b/src/parsec/include/e_evtdef.h new file mode 100644 index 0000000..2fb3304 --- /dev/null +++ b/src/parsec/include/e_evtdef.h @@ -0,0 +1,48 @@ +/* + * PARSEC HEADER (ENGINE CORE) + * Eventmanager Definitions V1.02 + * + * Copyright (c) Clemens Beer 1999 + * All Rights Reserved. + */ + +#ifndef _EVTDEFS_H_ +#define _EVTDEFS_H_ + + +// general event types --------------------------------------------------------- +// +#define EVT_TYPE_GENERAL 0x0000 + + +// sound event types ---------------------------------------------------------- +// +#define EVT_TYPE_SND_GENERAL 0x1000 +#define EVT_TYPE_SND_GUN_SELECT 0x1001 +#define EVT_TYPE_SND_MISSILE_SELECT 0x1002 +#define EVT_TYPE_SND_COUNTDOWN 0x1003 +#define EVT_TYPE_SND_SHIPDESTROYED 0x1004 +#define EVT_TYPE_SND_THRUST_FADEOUT 0x1005 +#define EVT_TYPE_SND_SLIDETHRUST_FADEOUT 0x1006 +#define EVT_TYPE_SND_INCOMING_STOP 0x1007 +#define EVT_TYPE_SND_LASERBEAM_STOP 0x1008 +#define EVT_TYPE_SND_LIGHTNING_VOLUME 0x1009 +#define EVT_TYPE_SND_HELIX_VOLUME 0x100A +#define EVT_TYPE_SND_EXPLOSION_DELAY 0x100B +#define EVT_TYPE_SND_KILLSLEFT 0x100C +#define EVT_TYPE_SND_SWARM_VOLUME 0x100D +#define EVT_TYPE_SND_PHOTON_VOLUME 0x100E +#define EVT_TYPE_SND_TELEPORTER_VOLUME 0x100F + + +// background event types ----------------------------------------------------- +// +#define EVT_TYPE_BKGN_GENERAL 0x1100 +#define EVT_TYPE_BKGN_CDTRACK_END 0x1101 +#define EVT_TYPE_BKGN_SAMPLE_END 0x1102 +#define EVT_TYPE_BKGN_SILENCE_END 0x1104 + + +#endif //_EVTDEFS_H_ + + diff --git a/src/parsec/include/e_getopt.h b/src/parsec/include/e_getopt.h new file mode 100644 index 0000000..48b5121 --- /dev/null +++ b/src/parsec/include/e_getopt.h @@ -0,0 +1,55 @@ +/* + * PARSEC HEADER: e_getopt.h + */ + +#ifndef _E_GETOPT_H_ +#define _E_GETOPT_H_ + + +// command line options table entry + +struct cli_option_s { + + const char* opt_short; + const char* opt_long; + + dword _mksiz32; + + byte _dummy; + byte num_int; + byte num_float; + byte num_string; + + int (*exec_set)(); + int (*exec_int)(int*); + int (*exec_float)(float*); + int (*exec_string)(char**); +}; + + +// application name option table entry + +struct app_option_s { + + const char* appname; + void (*appmain)(int,char**); +}; + + +// external functions + +int OPT_RegisterSetOption( const char *optshort, const char *optlong, int (*func)() ); +int OPT_RegisterIntOption( const char *optshort, const char *optlong, int (*func)(int*) ); +int OPT_RegisterFloatOption( const char *optshort, const char *optlong, int (*func)(float*) ); +int OPT_RegisterStringOption( const char *optshort, const char *optlong, int (*func)(char**) ); +int OPT_RegisterOption( cli_option_s *regopt ); +int OPT_RegisterApplication( const char *appname, void (*appmain)(int,char**) ); + +void OPT_ClearOptions(); + +int OPT_ExecRegisteredOptions( int argc, char **argv ); + + +#endif // _E_GETOPT_H_ + + diff --git a/src/parsec/include/e_global.h b/src/parsec/include/e_global.h new file mode 100644 index 0000000..ebb3d32 --- /dev/null +++ b/src/parsec/include/e_global.h @@ -0,0 +1,177 @@ +/* + * PARSEC HEADER: e_global.h + */ + +#ifndef _E_GLOBAL_H_ +#define _E_GLOBAL_H_ + + +// include data info tables ------------------------------- + +#include "gd_tabs.h" + + +// global externals (ENGINE CORE) ------------------------- + +extern int NumLoadedObjects; +extern int NumLoadedTextures; +extern int NumLoadedTexfonts; +extern int NumLoadedBitmaps; +extern int NumLoadedCharsets; +extern int NumLoadedSamples; +extern int NumLoadedSongs; +extern int NumLoadedPalettes; + +extern objectinfo_s ObjectInfo[]; +extern textureinfo_s TextureInfo[]; +extern texfontinfo_s TexfontInfo[]; +extern bitmapinfo_s BitmapInfo[]; +extern charsetinfo_s CharsetInfo[]; +extern sampleinfo_s SampleInfo[]; +extern songinfo_s SongInfo[]; + +extern char CurWorkDir[]; + +extern char ForcedPlayerName[]; + +extern int ParticleSysEnabled; +extern int ZBufferEnabled; +extern int ParticlesTranslucent; + +extern char* sys_ProgramName; +extern char* TextureMem; +extern char* BitmapMem; +extern char* SampleMem; +extern char* PaletteMem; +extern visual_t IndexToVisualTab[]; +extern colrgba_s IndexToRGBATab[]; + +extern colrgba_s PanelBackColor; +extern colrgba_s PanelTextColor; +extern colrgba_s FlareBaseColor; + +extern colrgba_s LightColorAmbient; +extern colrgba_s LightColorDiffuse; +extern colrgba_s LightColorSpecular; + +extern Vector3 GlobalDirLight; + +extern int NumRenderedPolygons; + +extern refframe_t CurScreenRefFrames; +extern refframe_t ScreenFrameBase; +extern refframe_t CurPacketRefFrames; +extern refframe_t PacketFrameBase; +extern refframe_t RefFrameFrequency; + +#define VISFRAME_NEVER 0xFFFFFFFF +#define VISFRAME_START 1 +extern dword CurVisibleFrame; + +extern int ShowFrameRate; + +extern int FixedFrameRate; +extern refframe_t FixedFrameRateVal; + +extern refframe_t MaxRefFrameVal; + +extern int RecordingActive; +extern FILE* RecordingFp; +extern int RecordRemotePackets; +extern int RemoteRecSessionId; +extern int RemoteRecPacketId; + +extern int SoundAvailable; +extern int SoundDisabled; + +extern int SkipCalibrationCode; +extern int JoystickDisabled; +extern int DirectNetPlay; +extern int PrintVidModeList; +extern int PlayDemo; +extern int FloatingMenu; +extern int EnableLogWindow; + +extern int QueryJoystick; +extern int UserInputDisabled; + +extern int DoLensFlare; +extern int FlareIntensity; + +extern int ConsoleSliding; +extern int ConsoleHeight; + +extern bams_t CurYaw; +extern bams_t CurPitch; +extern bams_t CurRoll; +extern geomv_t CurSlideHorz; +extern geomv_t CurSlideVert; + +extern bams_t RecYaw; +extern bams_t RecPitch; +extern bams_t RecRoll; +extern geomv_t RecSlideHorz; +extern geomv_t RecSlideVert; + +extern bams_t LastPitch; +extern bams_t LastYaw; +extern bams_t LastRoll; +extern geomv_t LastSlideHorz; +extern geomv_t LastSlideVert; +extern fixed_t LastSpeed; +extern int IdleDuration; + +extern int CurActionWait; +extern bams_t AutomaticPitch; +extern bams_t AutomaticYaw; +extern bams_t AutomaticRoll; +extern geomv_t AutomaticSlideHorz; +extern geomv_t AutomaticSlideVert; +extern fixed_t AutomaticMovement; + +extern int ReplayObjCamActive; + +extern bams_t AbsYaw; +extern bams_t AbsPitch; +extern bams_t AbsRoll; + +extern Camera ViewCamera; +extern Camera ObjectCamera; +extern Camera ShipViewCamera; + +extern int ObjCameraActive; + +extern int LocalShipClass; +extern ShipObject* MyShip; +extern size_t MyShipMaxInstanceSize; + +extern ShipObject* PShipObjects; +extern LaserObject* LaserObjects; +extern MissileObject* MisslObjects; +extern ExtraObject* ExtraObjects; +extern CustomObject* CustmObjects; +extern GenObject* VObjList; +extern GenObject* ObjClasses[]; +extern int NumObjClasses; + +extern dword NextObjNumber; + +extern int CurrentNumExtras; +extern int CurrentNumPrtExtras; +extern int MaxNumExtras; + +extern int CameraMoved; + +extern float SetScreenBlue; +extern float SetScreenWhite; +extern int SetScreenFade; +extern int SetScreenFadeSpeed; +extern colrgba_s SetScreenFadeColor; + +extern int AuxEnabling[]; +extern int AuxData[]; + + +#endif // _E_GLOBAL_H_ + + diff --git a/src/parsec/include/e_level.h b/src/parsec/include/e_level.h new file mode 100644 index 0000000..9d9b4d6 --- /dev/null +++ b/src/parsec/include/e_level.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: e_level.h + */ + +#ifndef _E_LEVEL_H_ +#define _E_LEVEL_H_ + + +// external functions --------------------------------------------------------- +// +int LVL_LoadLevel ( const char* levelname ); +int LVL_LoadIntLevel( int level ); +int LVL_SaveLevel ( const char* levelname ); + + + +#endif // _E_LEVEL_H_ + + diff --git a/src/parsec/include/e_loader.h b/src/parsec/include/e_loader.h new file mode 100644 index 0000000..6fc0e6d --- /dev/null +++ b/src/parsec/include/e_loader.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: e_loader.h + */ + +#ifndef _E_LOADER_H_ +#define _E_LOADER_H_ + + +// external functions + +void LoadData( char *cfn, int dispinfo ); +void ReloadResData( char *cfn ); +void ReloadDetailData( char *cfn ); +void FreeLoaderDataBuffers(); +void ShowFilesLoaded( int flag ); + + +#endif // _E_LOADER_H_ + + diff --git a/src/parsec/include/e_mouse.h b/src/parsec/include/e_mouse.h new file mode 100644 index 0000000..b9985d1 --- /dev/null +++ b/src/parsec/include/e_mouse.h @@ -0,0 +1,51 @@ +/* + * PARSEC HEADER: e_mouse.h + */ + +#ifndef _E_MOUSE_H_ +#define _E_MOUSE_H_ + + +// mouse area definition in reference size + +struct mouse_area_s { + + int xpos; + int ypos; + int width; + int height; +}; + + +// mouse area definition for scaled coordinates + +struct mouse_area_scaled_s { + + int xleft; + int xright; + int ytop; + int ybottom; +}; + + +// external functions + +void MouseCalcScaledAreas( mouse_area_s *src, mouse_area_scaled_s *dst, int numareas ); +int DrawMouseCursor(); + + +// determine whether a position is within the supplied area ------------------- +// +inline +int MouseOverArea( mouse_area_scaled_s *area, int mousex, int mousey ) +{ + ASSERT( area != NULL ); + + return ( ( mousex >= area->xleft ) && ( mousex < area->xright ) && + ( mousey >= area->ytop ) && ( mousey < area->ybottom ) ); +} + + +#endif // _E_MOUSE_H_ + + diff --git a/src/parsec/include/e_record.h b/src/parsec/include/e_record.h new file mode 100644 index 0000000..60c9064 --- /dev/null +++ b/src/parsec/include/e_record.h @@ -0,0 +1,79 @@ +/* + * PARSEC HEADER: e_record.h + */ + +#ifndef _E_RECORD_H_ +#define _E_RECORD_H_ + + +// external functions + + +void REC_InitMatrices(); + +void REC_RecordActions(); +void REC_RecordFiring(); +void REC_RecordKeys(); + +int REC_IsRecordingPackets(); +void REC_RecordRemotePacket( NetPacketExternal* ext_gamepacket ); +void REC_PlayRemotePacket( int session, int packetno ); +size_t REC_PlayRemotePacketBin( NetPacketExternal* ext_gamepacket ); +size_t REC_FetchRemotePacket( NetPacketExternal* ext_gamepacket, int session, int packetno ); +void REC_RecordServerMessage( char *message ); + +void Save_StateInfo( FILE *fp ); +void Save_PrepRestore( FILE *fp ); +void Save_MyShipState( FILE *fp ); +void Save_RemoteState( FILE *fp ); +void Save_ObjListShips( FILE *fp ); +void Save_ObjListLasers( FILE *fp ); +void Save_ObjListMissls( FILE *fp ); +void Save_ObjListExtras( FILE *fp ); +void Save_ObjListCustom( FILE *fp ); +void Save_Camera( FILE *fp ); +void Save_PseudoStars( FILE *fp ); + +void Record_LaserCreation( LaserObject *laserpo ); +void Record_MissileCreation( MissileObject *missilepo ); +void Record_TargetMissileCreation( TargetMissileObject *missilepo ); +void Record_MineCreation( MineObject *minepo ); +void Record_ExtraCreation( ExtraObject *extrapo ); +void Record_CustomCreation( CustomObject *custompo ); +void Record_EnergyFieldCreation( Vertex3& origin ); +void Record_SpreadFireFiring(); +void Record_LightningActivation(); +void Record_LightningDeactivation(); +void Record_HelixActivation(); +void Record_HelixDeactivation(); +void Record_PhotonActivation(); +void Record_PhotonDeactivation(); +void Record_EmpActivation(); +void Record_EmpDeactivation(); +void Record_EmpCreation(); + +void Record_LocalPlayerState(); +void Record_Join(); +void Record_Unjoin( byte flag ); + +void Record_MyShipStateWeapons(); +void Record_MyShipStateSpecials(); +void Record_MyShipStateCurDamage(); +void Record_MyShipStateCurEnergy(); +void Record_MyShipStateCurSpeed(); +void Record_MyShipStateNumMissls(); +void Record_MyShipStateNumHomMissls(); +void Record_MyShipStateNumPartMissls(); +void Record_MyShipStateNumMines(); +void Record_MyShipStateMaxDamage(); +void Record_MyShipStateMaxEnergy(); +void Record_MyShipStateMaxSpeed(); +void Record_MyShipStateMaxNumMissls(); +void Record_MyShipStateMaxNumHomMissls(); +void Record_MyShipStateMaxNumPartMissls(); +void Record_MyShipStateMaxNumMines(); + + +#endif // _E_RECORD_H_ + + diff --git a/src/parsec/include/e_replay.h b/src/parsec/include/e_replay.h new file mode 100644 index 0000000..62c40c3 --- /dev/null +++ b/src/parsec/include/e_replay.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: e_replay.h + */ + +#ifndef _E_REPLAY_H_ +#define _E_REPLAY_H_ + + +// external functions + +void REPLAY_StopAutomaticActions(); +void REPLAY_PerformAutomaticActions(); + + +#endif // _E_REPLAY_H_ + + diff --git a/src/parsec/include/e_shader.h b/src/parsec/include/e_shader.h new file mode 100644 index 0000000..4ca6b8f --- /dev/null +++ b/src/parsec/include/e_shader.h @@ -0,0 +1,69 @@ +/* + * PARSEC HEADER: e_shader.h + */ + +#ifndef _E_SHADER_H_ +#define _E_SHADER_H_ + + +// shader spec + +struct shader_s { + + char* name; + word iter; + word flags; + texanim_s* texanim; + colrgba_s facecolor; + colanim_s* colanim; + dword colflags; + dword _pad32[ 2 ]; +}; + + +// special lod argument for SetFaceShader() + +#define ACTIVE_LOD (~0) + + +// argument specification for face shader overriding + +enum { + + OVERRIDE_ARG_IDLIST, + OVERRIDE_ARG_TEXTURE, + OVERRIDE_ARG_GLOBAL, + + OVERRIDE_ARG_NUM_ARGS +}; + + +// external functions + +int SetFaceShader( GenObject *obj, dword lod, dword faceid, shader_s *shader ); + +shader_s* FetchShaderByName( const char *name, dword *shaderid ); +shader_s* FetchShaderById( dword shaderid ); +int RegisterShader( shader_s *shader ); + +void OverrideShaderFaceByIdList( dword objclass, shader_s *shader, dword *faceids, int count ); +void OverrideShaderFaceByTexture( dword objclass, shader_s *shader, char *texname ); +void OverrideShaderFaceGlobal( dword objclass, shader_s *shader ); +void OverrideShaderFaceGlobalInstanced( GenObject *gobj, shader_s *shader ); +void OverrideShaderFaces( dword objclass, shader_s *shader, int arg ); +void OverrideShaderLodFaces( dword objclass, shader_s *shader, int lod, int arg ); + + +// external variables + +extern int num_registered_shaders; +extern shader_s registered_shaders[]; + +extern dword* override_arg_faceids; +extern int override_arg_count; +extern char* override_arg_texname; + + +#endif // _E_SHADER_H_ + + diff --git a/src/parsec/include/e_supp.h b/src/parsec/include/e_supp.h new file mode 100644 index 0000000..fe48f0a --- /dev/null +++ b/src/parsec/include/e_supp.h @@ -0,0 +1,32 @@ +/* + * PARSEC HEADER: e_supp.h + */ + +#ifndef _E_SUPP_H_ +#define _E_SUPP_H_ + + +// external functions + +void InitRefFrameVars(); +void DoFrameTimeCalculations(); +void SaveScreenShot(); + +int CeilPow2Exp( int number ); + +TextureMap* FetchTextureMap( const char *texname ); +texfont_s* FetchTexfont( const char *fontname ); + +int FetchBitmapId( const char *bmname ); + +int EvictUnsupportedTextureFormatData(); +int ReloadFreedTextureBitmaps(); + +#ifdef PARSEC_SERVER + #undef KillAllObjects +#endif // PARSEC_SERVER +void KillAllObjects(); + +#endif // _E_SUPP_H_ + + diff --git a/src/parsec/include/e_texani.h b/src/parsec/include/e_texani.h new file mode 100644 index 0000000..b5da632 --- /dev/null +++ b/src/parsec/include/e_texani.h @@ -0,0 +1,34 @@ +/* + * PARSEC HEADER: e_texani.h + */ + +#ifndef _E_TEXANI_H_ +#define _E_TEXANI_H_ + + +// texanim spec + +struct texanimreg_s { + + char* name; +// dword _pad32[ 3 ]; +// colanim_s colanim; +}; + + +// external functions + +texanimreg_s* FetchTexAnim( char *name, dword *texanimid ); +void InitAnimStateTexAnim( FaceAnimState *animstate, texanim_s *texanim ); +int RegisterTexAnim( texanimreg_s *texanimref ); + + +// external variables + +extern int num_registered_texanims; +extern texanimreg_s registered_texanims[]; + + +#endif // _E_TEXANI_H_ + + diff --git a/src/parsec/include/e_vtxani.h b/src/parsec/include/e_vtxani.h new file mode 100644 index 0000000..c667300 --- /dev/null +++ b/src/parsec/include/e_vtxani.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: e_vtxani.h + */ + +#ifndef _E_VTXANI_H_ +#define _E_VTXANI_H_ + + +// external functions + +int VtxAnimMakeCurrent( GenObject *gobj, dword animid ); +VtxAnimState* VtxAnimCreateFromFaceList( GenObject *gobj, dword lod, int numfaces, dword *faceids ); + + +#endif // _E_VTXANI_H_ + + diff --git a/src/parsec/include/g_boot.h b/src/parsec/include/g_boot.h new file mode 100644 index 0000000..41a549b --- /dev/null +++ b/src/parsec/include/g_boot.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: g_boot.h + */ + +#ifndef _G_BOOT_H_ +#define _G_BOOT_H_ + + +// external functions + +void StartupMessages(); + +int GameBoot(); +int GameInit( int use_net ); + + +#endif // _G_BOOT_H_ + + diff --git a/src/parsec/include/g_bot_cl.h b/src/parsec/include/g_bot_cl.h new file mode 100644 index 0000000..66e3871 --- /dev/null +++ b/src/parsec/include/g_bot_cl.h @@ -0,0 +1,404 @@ +#ifndef G_BOT_CL_H_ +#define G_BOT_CL_H_ + +// simple timeout handling ---------------------------------------------------- +// +class UTL_RefFrameTimeout +{ +protected: + refframe_t m_RefFrames; + refframe_t m_Base; + refframe_t m_Timeout; + +public: + // ctors + UTL_RefFrameTimeout() + { + m_Timeout = 0; + Reset(); + } + UTL_RefFrameTimeout( refframe_t _Timeout ) + { + Set( _Timeout ); + } + + // set the timeout value + void Set( refframe_t _Timeout ) + { + m_Timeout = _Timeout; + Reset(); + } + + // reset timeout + void Reset() + { + m_RefFrames = m_Timeout; + m_Base = SYSs_GetRefFrameCount(); + } + + // check for timeout + bool_t IsTimeout() + { + refframe_t diff = SYSs_GetRefFrameCount() - m_Base; + m_RefFrames -= diff; + if ( m_RefFrames < 0 ) { + m_RefFrames += m_Timeout; + return true; + } else { + return false; + } + } +}; + + +// **************************************************************************** +// **************************************************************************** +// **************************************************************************** +//FIXME: +// this belongs into seperate OCT module +// **************************************************************************** +// **************************************************************************** +// **************************************************************************** + +// object control orientations ------------------------------------------------ +// +#define OCT_PITCH_UP -1 +#define OCT_PITCH_DOWN +1 +#define OCT_YAW_LEFT +1 +#define OCT_YAW_RIGHT -1 +#define OCT_ROLL_LEFT +1 +#define OCT_ROLL_RIGHT -1 +#define OCT_ACCELERATE +1 +#define OCT_DECELERATE -1 + +// object control structure --------------------------------------------------- +// +struct object_control_s +{ + ShipObject* pShip; + + float rot_x; // do a rotation around the x axis - PITCH - ( -1 = divedown, +1 = pullup ) + float rot_y; // do a rotation around the y axis - YAW - ( -1 = left, +1 = right ) + float rot_z; // do a rotation around the z axis - ROLL - ( -1 = right, +1 = left ) + float accel; // accel control ( +1 accelerate, -1 decelerate ) + + //FIXME: slide horiz/vert + + //FIXME: numerically sane versions + bool_t IsPitch() const { return rot_x != 0.0f; } + bool_t IsYaw() const { return rot_y != 0.0f; } + bool_t IsRoll() const { return rot_z != 0.0f; } + bool_t IsMove() const { return accel != 0.0f; } +}; + +// do the desired object control +int OCT_DoControl( object_control_s* objctl ); + +// dump an object control to the console +void OCT_Dump(object_control_s* objctl ); + +// **************************************************************************** +// **************************************************************************** +// **************************************************************************** + + + + +// ---------------------------------------------------------------------------- +// +class UTL_LocomotionController +{ +protected: + + int m_nRelaxedHeadingAngle; + int m_nFullSpeedHeading; + float m_fMinSpeedTurn; // min. speed to keep when doing a sharp turn + +public: + // standard ctor + UTL_LocomotionController() + { + m_nRelaxedHeadingAngle = 5; + m_nFullSpeedHeading = 30; + m_fMinSpeedTurn = FIXED_TO_FLOAT( 500 ); + } + + // set the max. degrees the heading and the desired heading can differ + void SetRelaxedHeadingAngle( int nRelaxedHeadingAngle ) + { + m_nRelaxedHeadingAngle = nRelaxedHeadingAngle; + } + + // set the heading at which we should go full speed again after a turn + void SetFullSpeedHeading( int nFullSpeedHeading ) + { + m_nFullSpeedHeading = nFullSpeedHeading; + } + + // set the min. speed to keep during a turn + void SetMinSpeedTurn( fixed_t _MinSpeedTurn ) + { + m_fMinSpeedTurn = FIXED_TO_FLOAT( _MinSpeedTurn ); + } + + void ControlOjbect( object_control_s* pObjctl, Vector3* pDesiredVelocity, fixed_t _DesiredSpeed ); +}; + + +// bot character properties --------------------------------------------------- +// +class BOT_Character +{ +protected: + float m_fPlanInterval; // planning interval in secs + float m_fGoalCheckInterval; // goal checking interval in secs + float m_fInputChangeInterval; // input change interval in secs + +public: + + //ctor + BOT_Character(); + + // reset to defaults + void Reset(); + + // select the attack target + ShipObject* SelectAttackTarget( ShipObject* pAttacker ); + ExtraObject* SelectEnergyObject(); + ExtraObject* SelectRepairObject(); + + // getters + float GetPlanInterval_sec() const { return m_fPlanInterval; } + float GetGoalCheckInterval_sec() const { return m_fGoalCheckInterval; } + float GetInputChangeInterval_sec() const { return m_fInputChangeInterval; } + + // friend functions + friend void RealizeBotChar(); +}; + +// bot goal ------------------------------------------------------------------- +// +class BOT_Goal +{ +protected: + Vector3 m_Pos; + GenObject* m_pObject; + +public: + BOT_Goal() + { + Reset(); + } + + void Reset() + { + memset( &m_Pos, 0, sizeof( Vector3 ) ); + m_pObject = NULL; + } + + // get the position the goal is at + Vector3* GetGoalPosition() + { + return &m_Pos; + } + + // set/get target object + void SetTargetObject( GenObject* pObject ) { m_pObject = pObject; } + GenObject* GetTargetObject() const { return m_pObject; } +}; + + +// current state of the bot --------------------------------------------------- +// +class BOT_State +{ +protected: + BOT_Goal m_CurGoal; + object_control_s m_oc; +public: + + BOT_State() + { + } + + // reset the dynamic state of the bot + void Reset( ShipObject* pShip ) + { + m_CurGoal.Reset(); + memset( &m_oc, 0, sizeof( object_control_s ) ); + m_oc.pShip = pShip; + } + + BOT_Goal* GetCurGoal() { return &m_CurGoal; } + object_control_s* GetObjectControl() { return &m_oc; } +}; + + +// type specifying the agent modes -------------------------------------------- +// +enum agentmode_t { + AGENTMODE_IDLE = 1, + AGENTMODE_POWERUP = 2, + AGENTMODE_ATTACK = 3, + AGENTMODE_RETREAT = 4, + + AGENTMODE_MAX = AGENTMODE_RETREAT +}; + +// main class for handling the bot AI ----------------------------------------- +// +class BOT_AI +{ +protected: + agentmode_t m_nAgentMode; + BOT_State m_State; + BOT_Character m_Character; + ShipObject* m_pShip; + + UTL_RefFrameTimeout m_PlanTimeout; + UTL_RefFrameTimeout m_GoalCheckTimeout; + UTL_RefFrameTimeout m_InputTimeout; + + Vector3 m_AgentPos; + +public: + + BOT_AI() + { + Reset(); + } + + // reset the bot AI + void Reset() + { + //m_nAgentMode = AGENTMODE_IDLE; + m_nAgentMode = AGENTMODE_ATTACK; + m_pShip = NULL; + m_State.Reset( m_pShip ); + + m_PlanTimeout.Set ( (refframe_t)m_Character.GetPlanInterval_sec() * FRAME_MEASURE_TIMEBASE ); + m_GoalCheckTimeout.Set ( (refframe_t)m_Character.GetGoalCheckInterval_sec() * FRAME_MEASURE_TIMEBASE ); + m_InputTimeout.Set ( (refframe_t)m_Character.GetInputChangeInterval_sec() * FRAME_MEASURE_TIMEBASE ); + } + + // set the ship object we want to control + void SetShipObject( ShipObject* pShip ) + { + m_pShip = pShip; + m_State.Reset( pShip ); + } + + + + // main think function, called every render or sim frame ( client or server ) + void DoThink(); + + // get the character of the bot + BOT_Character* GetCharacter() { return &m_Character; } + +protected: + + void _DoPlan(); + + void _GoalCheck_AgentMode_Idle(); + void _GoalCheck_AgentMode_Powerup(); + void _GoalCheck_AgentMode_Attack(); + void _GoalCheck_AgentMode_Retreat(); + + void _SteerToPosition( Vector3* targetPos, object_control_s* pObjctl ); +}; + + + +// easy access to the singleton ----------------------------------------------- +// +#define TheBot ( BOT_ClientSide::GetClientSideBot() ) + + +// forward decls -------------------------------------------------------------- +// +PRIVATE int BOT_CallThink( void* param ); + +// the timeout in refframes to wait between status checks --------------------- +// +#define BOT_STATUS_CHECK_TIMEOUT DEFAULT_REFFRAME_FREQUENCY + +// class for the client-side bot ---------------------------------------------- +// +class BOT_ClientSide : public BOT_AI +{ +protected: + + // standard ctor + BOT_ClientSide() : + m_Started( FALSE ), + m_bWantToBeConnected( TRUE ), + m_bWantToBeJoined( TRUE ), + m_NextStatusCheckRefFrame( 0 ) + { + memset( m_szServer, 0, MAX_SERVER_NAME * sizeof( char ) ); + } + + // standard dtor + ~BOT_ClientSide() + { + } + + // check whether current status (connected/joined etc. ) matches the desired one + void _CheckStatus(); + +protected: + int m_Started; + char m_szServer[ MAX_SERVER_NAME ]; + + int m_bWantToBeConnected; + int m_bWantToBeJoined; + + // next refframe, we check for connect/disconnect/joined/unjoined + refframe_t m_NextStatusCheckRefFrame; + +public: + // SINGLETON pattern + static BOT_ClientSide* GetClientSideBot() + { + static BOT_ClientSide _TheClientSideBot; + return &_TheClientSideBot; + } + + // set/get of status flags + int GetDesiredConnStatus() const { return m_bWantToBeConnected; } + int GetDesiredJoinStatus() const { return m_bWantToBeJoined; } + void SetDesiredConnStatus( int bWantToBeConnected ) { m_bWantToBeConnected = bWantToBeConnected; } + void SetDesiredJoinStatus( int bWantToBeJoined ) { m_bWantToBeJoined = bWantToBeJoined; } + + // overwritten think method to allow special client-side things + void DoThink(); + + // start the bot + void Start(); + + // stop the bot + void Stop(); + + // get the servername the client bot should connect to + char* GetConnectServer() + { + return m_szServer; + } + + // set the server we want to connect to + void SetConnectServer( char* pszServer ) + { + // trim left + char *p = NULL; + for( p = pszServer; *p == ' '; p++ ); + + if ( strncmp( p, "\"\"", 2 ) == 0 ) { + m_szServer[ 0 ] = '\0'; + } else { + strncpy( m_szServer, p, MAX_SERVER_NAME ); + } + } +}; + +#endif // G_BOT_CL_H_ diff --git a/src/parsec/include/g_camera.h b/src/parsec/include/g_camera.h new file mode 100644 index 0000000..4cd2126 --- /dev/null +++ b/src/parsec/include/g_camera.h @@ -0,0 +1,32 @@ +/* + * PARSEC HEADER: g_camera.h + */ + +#ifndef _G_CAMERA_H_ +#define _G_CAMERA_H_ + + +// external functions + +void CAMERA_InitShipOrigin(); +void CAMERA_MakeFixedStarCam( Camera dstcam ); + +void CAMERA_GetViewCamera(); + +void CAMERA_ResetFilter(); +void CAMERA_BeginModify(); +void CAMERA_EndModify(); + +void CAMERA_BeginFrameView(); +void CAMERA_EndFrameView(); + + +// external variables + +extern int pseudo_framecam_is_id; +extern Xmatrx pseudo_framecam; + + +#endif // _G_CAMERA_H_ + + diff --git a/src/parsec/include/g_cloud.h b/src/parsec/include/g_cloud.h new file mode 100644 index 0000000..4ca8361 --- /dev/null +++ b/src/parsec/include/g_cloud.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: s_cloud.h + */ + +#ifndef _S_CLOUD_H_ +#define _S_CLOUD_H_ + + +// external functions + +void DrawSmokeCloud(); +int DrawCloudLayers(); +void ModulateDistance(); +void ModulateColor(); +void ModulateAlpha(); + + +#endif // _S_CLOUD_H_ + + diff --git a/src/parsec/include/g_explod.h b/src/parsec/include/g_explod.h new file mode 100644 index 0000000..4273178 --- /dev/null +++ b/src/parsec/include/g_explod.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: s_explod.h + */ + +#ifndef _S_EXPLOD_H_ +#define _S_EXPLOD_H_ + + +// external functions + +void DrawExpAnim( const ShipObject *shippo ); + + +#endif // _S_EXPLOD_H_ + + diff --git a/src/parsec/include/g_gameloop.h b/src/parsec/include/g_gameloop.h new file mode 100644 index 0000000..834b02b --- /dev/null +++ b/src/parsec/include/g_gameloop.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: g_main.h + */ + +#ifndef _G_MAIN_H_ +#define _G_MAIN_H_ + + +// external functions + +void GameLoop(); + + +#endif // _G_MAIN_H_ + + diff --git a/src/parsec/include/g_global.h b/src/parsec/include/g_global.h new file mode 100644 index 0000000..8088f03 --- /dev/null +++ b/src/parsec/include/g_global.h @@ -0,0 +1,119 @@ +/* + * PARSEC HEADER: g_global.h + */ + +#ifndef _G_GLOBAL_H_ +#define _G_GLOBAL_H_ + + +// global externals (GAME CODE) --------------------------- + +extern int FireDisable; +extern int FireRepeat; +extern int CurGun; +extern int MissileDisable; +extern int CurLauncher; + +extern int InFloatingMenu; +extern int InStarMap; +extern int InGameLoop; +extern int ExitGameLoop; + +extern dword CurStreamReplayPos; + +extern int Op_DetailLevel; +extern int Op_PacketSendFreq; +extern int Op_FixFrameRate; +extern int Op_SoundEffects; +extern int Op_Music; +extern int Op_Joystick; +extern int Op_Mouse; + +extern int HelpActive; + +extern dword TargetObjNumber; +extern int TargetVisible; +extern int TargetLocked; +extern int TargetRemId; +extern dword TargetScreenX; +extern dword TargetScreenY; + +extern int MaxNumShots; +extern int NumShots; +extern int MaxNumMissiles; +extern int NumMissiles; + +extern int SelectedLaser; +extern int SelectedMissile; + +extern int HitCurTarget; +extern int IncomingMissile; + + +// game control data + +extern int EnergyExtraBoost; +extern int RepairExtraBoost; + +extern int DumbPackNumMissls; +extern int HomPackNumMissls; +extern int SwarmPackNumMissls; +extern int ProxPackNumMines; + +extern int ExtraProbability; +extern int MaxExtraArea; +extern int MinExtraDist; + +extern int ProbHelixCannon; +extern int ProbLightningDevice; +extern int ProbPhotonCannon; + +extern int ProbProximityMine; + +extern int ProbMissilePack; +extern int ProbDumbMissPack; +extern int ProbHomMissPack; +extern int ProbSwarmMissPack; + +extern int ProbRepairExtra; +extern int ProbAfterburner; +extern int ProbHoloDecoy; +extern int ProbInvisibility; +extern int ProbInvulnerability; +extern int ProbEnergyField; + +extern int ProbLaserUpgrade; +extern int ProbLaserUpgrade1; +extern int ProbLaserUpgrade2; + +extern int ProbEmpUpgrade1; +extern int ProbEmpUpgrade2; + +extern int MegaShieldStrength; + + +// fixed/pseudo star structures + +// star number of sun +#define SUN_STAR_NO 52 + +struct fixedstar_s { + + Vertex3 location; + dword type; +}; + +typedef Vertex3 pseudostar_s; + +extern pXmatrx PseudoStarMovement; +extern pseudostar_s PseudoStars[]; +extern int NumPseudoStars; +extern int MaxPseudoStars; + +extern fixedstar_s FixedStars[]; +extern int NumFixedStars; + + +#endif // _G_GLOBAL_H_ + + diff --git a/src/parsec/include/g_laser.h b/src/parsec/include/g_laser.h new file mode 100644 index 0000000..cab0f7d --- /dev/null +++ b/src/parsec/include/g_laser.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: s_laser.h + */ + +#ifndef _S_LASER_H_ +#define _S_LASER_H_ + + +// external functions + +int CreateLaserBeam( GenObject *ownerpo, dword targetobjno, dword *laserbeamobjno ); +int KillLaserBeam( dword laserbeamobjno ); + + +#endif // _S_LASER_H_ + + diff --git a/src/parsec/include/g_main_cl.h b/src/parsec/include/g_main_cl.h new file mode 100644 index 0000000..5731048 --- /dev/null +++ b/src/parsec/include/g_main_cl.h @@ -0,0 +1,258 @@ +#ifndef _G_MAIN_CL_H_ +#define _G_MAIN_CL_H_ + +// ---------------------------------------------------------------------------- +// +class G_Extracted +{ +protected: + + // remember time last kill was achieved, needed for medals + refframe_t last_kill_time; + +protected: + + // check kill announcements and medals ---------------------------------------- + // + void _CheckKillAnnouncements( int nKiller ) + { + if ( !AUX_DISABLE_KILLS_LEFT_ANNOUNCEMENT ) { + + // check if somebody is approaching the kill limit + int leaderkills = 0; + + for ( int pid = 0; pid < MAX_NET_PROTO_PLAYERS; pid++ ) { + if ( Player_Status[ pid ] == PLAYER_INACTIVE ) + continue; + if ( Player_KillStat[ pid ] > leaderkills ) + leaderkills = Player_KillStat[ pid ]; + } + + if ( AUX_KILL_LIMIT_FOR_GAME_END > 0 ) { + if ( AUX_KILL_LIMIT_FOR_GAME_END >= leaderkills ) { + int killsleft = AUX_KILL_LIMIT_FOR_GAME_END - leaderkills; + AUD_KillsLeft( killsleft ); + } + } + } + + // check if we downed that ship ourselves + if ( nKiller == LocalPlayerId ) { + + refframe_t timesincekill = SYSs_GetRefFrameCount() - last_kill_time; + + if ( timesincekill < AUXDATA_SKILL_AMAZING_TIME ) { + + AUD_SkillAmazing(); + + } else if ( timesincekill < AUXDATA_SKILL_BRILLIANT_TIME ) { + + AUD_SkillBrilliant(); + + } else { + + AUD_JimCommenting( JIM_COMMENT_EATTHIS ); + } + + last_kill_time = SYSs_GetRefFrameCount(); + } + } + +public: + + G_Extracted() + { + last_kill_time = 0; + } + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // UI Code + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + + // UI feedback for player has joined -------------------------------------- + // + bool_t UI_PlayerJoinedFeedback( RE_PlayerStatus* playerstatus ) + { + ASSERT( playerstatus != NULL ); + + // nothing todo for local client + if ( playerstatus->senderid == LocalPlayerId ) { + return false; + } + + // show join message + if ( !EntryMode ) { + CopyRemoteName( paste_str, Player_Name[ playerstatus->senderid ] ); + strcat( paste_str, " has joined" ); + ShowMessage( paste_str ); + + // play sound "player has joined" + AUD_NewPlayerJoined(); + } + + return true; + } + + // UI feedback when player has unjoined ----------------------------------- + // + bool_t UI_PlayerUnjoinedFeedback( RE_PlayerStatus* playerstatus ) + { + ASSERT( playerstatus != NULL ); + + // nothing todo for local client + if ( playerstatus->senderid == LocalPlayerId ) { + return false; + } + + // show appropriate message + if ( !EntryMode ) { + CopyRemoteName( paste_str, Player_Name[ playerstatus->senderid ] ); + if ( playerstatus->params[ 0 ] == USER_EXIT ) { + + strcat( paste_str, " has left" ); + + } else if ( playerstatus->params[ 0 ] == SHIP_DOWNED ) { + + strcat( paste_str, " was killed by " ); + strcat( paste_str, Player_Name[ playerstatus->params[ 2 ] - KILLERID_BIAS ] ); + } + ShowMessage( paste_str ); + } + + return true; + } + + // UI feedback when player connects --------------------------------------- + // + bool_t UI_PlayerConnectedFeedback( int playerid ) + { + return true; + } + + // UI feedback when player disconnects ------------------------------------ + // + bool_t UI_PlayerDisconnectedFeedback( int playerid ) + { + return true; + } + + // UI feedback when player is removed ( timeout ) ------------------------- + // + bool_t UI_PlayerWasRemovedFeedback( int playerid ) + { + // show appropriate message + if ( !EntryMode ) { + CopyRemoteName( paste_str, Player_Name[ playerid ] ); + strcat( paste_str, " has been removed" ); + ShowMessage( paste_str ); + } + + return true; + } + + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + // GAMECODE + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + // the local player is killed ------------------------------------------------- + // + void GC_LocalPlayerKill( int nClientID_Killer, int weapon ) + { + // remember the last killer + CurKiller = nClientID_Killer; + + ShipDowned = TRUE; + // this causes the correct case to be taken in G_MAIN::Gm_CancelGameLoop() + ExitGameLoop = 2; + + KillDurationWeapons( MyShip ); + OBJ_CreateShipExtras( MyShip ); + + //FIXME: different texts for different ways the local player can get killed + switch ( weapon ) { + case 0: + default: + strcpy( paste_str, "killed by " ); + strcat( paste_str, NET_FetchPlayerName( nClientID_Killer ) ); + break; + } + ShowMessage( paste_str ); + + // play sample + AUD_PlayerKilled(); + } + + + // GameCode called when player unjoins due to ship downed ----------------- + // + bool_t GC_UnjoinPlayer_ShipDowned( int nClientID_Downed, int nClientID_Killer, int nWeapon ) + { + ASSERT( ( nClientID_Downed >= 0 ) && ( nClientID_Downed < MAX_NET_PROTO_PLAYERS ) ); + ASSERT( ( nClientID_Killer >= 0 ) && ( nClientID_Killer < MAX_NET_PROTO_PLAYERS ) ); + ASSERT( nClientID_Downed != LocalPlayerId ); + + // local player downing MUST be handled differently + ASSERT( nClientID_Downed != LocalPlayerId ); + + ShipObject *shippo = (ShipObject *) Player_Ship[ nClientID_Downed ]; + ASSERT( shippo != NULL ); + + if ( shippo != NULL ) { + + //NOTE: + // the ship will be deleted automatically by the + // explosion (in a certain animation frame). + + // start explosion by setting count greater than zero + if ( shippo->ExplosionCount == 0 ) { + shippo->ExplosionCount = MAX_EXPLOSION_COUNT; + + AUD_ShipDestroyed( shippo ); + } + } + + _CheckKillAnnouncements( nClientID_Killer ); + + return true; + } + + // GameCode called when player unjoins due to user exit ------------------- + // + bool_t GC_UnjoinPlayer_UserExit( RE_PlayerStatus* playerstatus ) + { + ASSERT( playerstatus != NULL ); + ASSERT( playerstatus->params[ 0 ] == USER_EXIT ); + + ShipObject *shippo = (ShipObject *) Player_Ship[ playerstatus->senderid ]; + ASSERT( shippo != NULL ); + + // open stargate + SFX_CreateStargate( shippo ); + + //FIXME: [1/27/2002] shouldn't we move this to the engine core + // kill ship object + KillSpecificObject( Player_ShipId[ playerstatus->senderid ], PShipObjects ); + + return true; + } + +}; + +// UI/GameCode ---------------------------------------------------------------- +// +extern G_Extracted TheGameExtraction; +#define GAMECODE( x ) ( TheGameExtraction.x ) + +#endif // _G_MAIN_CL_H_ + + + + + + diff --git a/src/parsec/include/g_planet.h b/src/parsec/include/g_planet.h new file mode 100644 index 0000000..54633f1 --- /dev/null +++ b/src/parsec/include/g_planet.h @@ -0,0 +1,47 @@ +/* + * PARSEC HEADER: s_planet.h + */ + +#ifndef _S_PLANET_H_ +#define _S_PLANET_H_ + + +// planet limits and constants ------------------------------------------------ +// +#define MAX_PLANET_NAME 255 +#define MAX_RING_TEXNAME 63 + +#define PLANET_RING_SEGMENTS 128 + +#define PLANET_RING_TEXTURE "ringtex1" +#define PLANET_RING_TEX_WIDTH 16 +#define PLANET_RING_TEX_HEIGHT 64 + + +// planet custom type structure ----------------------------------------------- +// +struct Planet : PlanetObject { + + bams_t RotSpeed; + bams_t CurOrbitPos; + bams_t OrbitSpeed; + geomv_t OrbitRadius; + GenObject* OrbitParent; + int HasRing; + geomv_t RingInnerRadius; + geomv_t RingOuterRadius; + char RingTexName[ MAX_RING_TEXNAME + 1 ]; + TextureMap* RingTexture; + + char Name[ MAX_PLANET_NAME + 1 ]; + int NumOrbitShips; +}; + + +// external functions + +// ... + +#endif // _S_PLANET_H_ + + diff --git a/src/parsec/include/g_sfx.h b/src/parsec/include/g_sfx.h new file mode 100644 index 0000000..26efbe4 --- /dev/null +++ b/src/parsec/include/g_sfx.h @@ -0,0 +1,35 @@ +/* + * PARSEC HEADER: g_sfx.h + */ + +#ifndef _G_SFX_H_ +#define _G_SFX_H_ + + +// external functions + +void SFX_InitParticleSizes( float resoscale ); + +void SFX_CreateEnergyField( Vertex3& origin ); +void SFX_ParticleExplosion( ShipObject *shippo ); +void SFX_FlashProtectiveShield( ShipObject *shippo ); +int SFX_EnableInvulnerabilityShield( ShipObject *shippo ); +void SFX_HullImpact( ShipObject *shippo, Vertex3 *impact, Plane3 *plane ); + +struct basesphere_pcluster_s; +basesphere_pcluster_s * + SFX_FetchInvulnerabilityShield( ShipObject *shippo, float *strength ); + +void SFX_RemoteEnableInvulnerabilityShield( int owner ); + +void SFX_CreatePropulsionParticles( ShipObject *shippo ); +void SFX_MissilePropulsion( MissileObject *missile ); + +void SFX_CreateStargate( ShipObject *shippo ); +void SFX_CreateExtra( ExtraObject *extra ); +void SFX_VanishExtra( ExtraObject *extra ); + + +#endif //_G_SFX_H_ + + diff --git a/src/parsec/include/g_shkwav.h b/src/parsec/include/g_shkwav.h new file mode 100644 index 0000000..f104ea4 --- /dev/null +++ b/src/parsec/include/g_shkwav.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: s_shkwav.h + */ + +#ifndef _S_SHKWAV_H_ +#define _S_SHKWAV_H_ + + +// external functions + +void ExplosionShockWave( const ShipObject *shippo ); + + +#endif // _S_SHKWAV_H_ + + diff --git a/src/parsec/include/g_stars.h b/src/parsec/include/g_stars.h new file mode 100644 index 0000000..3a7a418 --- /dev/null +++ b/src/parsec/include/g_stars.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: g_stars.h + */ + +#ifndef _G_STARS_H_ +#define _G_STARS_H_ + + +// external functions + +void InitFixedStars(); +void DrawFixedStars(); + +void InitPseudoStars(); +void DrawPseudoStars(); + + +#endif // _G_STARS_H_ + + diff --git a/src/parsec/include/g_supp.h b/src/parsec/include/g_supp.h new file mode 100644 index 0000000..b5b3ae9 --- /dev/null +++ b/src/parsec/include/g_supp.h @@ -0,0 +1,37 @@ +/* + * PARSEC HEADER: g_supp.h + */ + +#ifndef _G_SUPP_H_ +#define _G_SUPP_H_ + + +// external functions + +void PrepInfoScreenKeys(); +int CheckInfoScreenExit(); +void InitLocalShipStatus( dword myclassid ); +void MoveLocalShip(); +void ObjCamOn(); +void ObjCamOff(); +void ObjectCameraControl(); +void InitFloatingMyShip(); +void InitJoinPosition(); +void InitJoinReplay(); +void Cmd_SetShipOrigin(); +void SelectCrosshairTarget(); +void SelectNextTarget(); +void ShipIntelligence(); +void MaintainDurationWeapons( int playerid ); +void KillDurationWeapons( ShipObject *shippo ); + + + +// determine if standard game mode active ------------------------------------- +// +#define GAME_MODE_ACTIVE() ( !EntryMode && !InFloatingMenu ) + + +#endif // _G_SUPP_H_ + + diff --git a/src/parsec/include/g_swarm.h b/src/parsec/include/g_swarm.h new file mode 100644 index 0000000..2322d0b --- /dev/null +++ b/src/parsec/include/g_swarm.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: s_swarm.h + */ + +#ifndef _S_SWARM_H_ +#define _S_SWARM_H_ + + +struct callback_pcluster_s; + +// external functions + +GenObject * SWARM_Init( int owner, Vertex3 *origin, ShipObject *targetpo, int randseed ); +int SWARM_Animate( callback_pcluster_s* cluster ); +void SWARM_TimedAnimate( callback_pcluster_s* cluster ); + + +#endif // _S_SWARM_H_ + + diff --git a/src/parsec/include/g_telep.h b/src/parsec/include/g_telep.h new file mode 100644 index 0000000..8ac127c --- /dev/null +++ b/src/parsec/include/g_telep.h @@ -0,0 +1,79 @@ +/* + * PARSEC HEADER: s_telep.h + */ + +#ifndef _S_TELEP_H_ +#define _S_TELEP_H_ + + +// teleporter limits ---------------------------------------------------------- +// +#define TELEPORTER_MAX_TEX_NAME 63 + + +// teleporter custom type structure ------------------------------------------- + +struct Teleporter : CustomObject { + + // object properties that can be modified via the console + geomv_t exit_delta_x; + geomv_t exit_delta_y; + geomv_t exit_delta_z; + float exit_rot_phi; + float exit_rot_theta; + geomv_t actoffset; + int active; // enable/disable the teleporter + char tex_name_interior[ TELEPORTER_MAX_TEX_NAME + 1 ]; // texture name of the teleporter start interior + char tex_name_tunnel [ TELEPORTER_MAX_TEX_NAME + 1 ]; // texture name of the texture for the tunnel + int start_tex_sec_layer; // enable/disable second texture layer at teleporter start + geomv_t u_variation[ 2 ]; + geomv_t v_variation[ 2 ]; + int start_tex_alpha; // alpha for the start interior texture + geomv_t act_cone_angle; // cone angle of the activation cone + int tunnel_slerp; // 0/1 is SLERP on/off + int tunnel_lerp; // 0/1/2 is LERP off/LERP normal/LERP Hermite way + float tunnel_anim_speed; // animation speed in sec + float tunnel_tangent_scale1; // tangent scale for hermite interpolation ( start tangent ) + float tunnel_tangent_scale2; // tangent scale for hermite interpolation ( end tangent ) + int tunnel_spline; // 2 bits toggling spline drawing for the center of the tunnel and the boundaries ( bit0 set -> center, bit1 set ->boundaries ) + int tunnel_spline_cords; // # of steps to use for the spline interpolation when drawing center/boundaries of tunnel + int tunnel_tex_alpha; // alpha for the tunnel interior texture + int tunnel_len; // length of the tunnel in spline cords + Vector3 start; // coordinates of the teleporter start + float start_rot_phi; // start rotations ( phi ) + float start_rot_theta; // start rotations ( theta ) + + // internal data + Vertex3* start_vtxlist; // vtxs in object space + TextureMap* start_texmap; + TextureMap* tunnel_texmap; + geomv_t u_delta[ 2 ]; + geomv_t v_delta[ 2 ]; + bams_t u_phi[ 2 ]; + bams_t v_phi[ 2 ]; + bams_t u_phi_delta[ 2 ]; + bams_t v_phi_delta[ 2 ]; + geomv_t u_maxdelta[ 2 ]; + geomv_t v_maxdelta[ 2 ]; + GenObject* child_object; + Xmatrx tunnel_frame; + float tunnel_t; + Vertex3* tunnel_verts; + geomv_t tunnel_cur_anim_step; + geomv_t tunnel_spline_arclen; + CullBox3 tunnel_cullbox; + + // hacks :) + Xmatrx start_frame, end_frame; + Xmatrx* spline_frames; +}; + + +// external functions + +// (none) + + +#endif // _S_TELEP_H_ + + diff --git a/src/parsec/include/g_vapor.h b/src/parsec/include/g_vapor.h new file mode 100644 index 0000000..15817fe --- /dev/null +++ b/src/parsec/include/g_vapor.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: s_vapor.h + */ + +#ifndef _S_VAPOR_H_ +#define _S_VAPOR_H_ + + +// external functions + +void CreateVaporTrail( GenObject *ownerpo ); + + +#endif // _S_VAPOR_H_ + + diff --git a/src/parsec/include/g_wfx.h b/src/parsec/include/g_wfx.h new file mode 100644 index 0000000..4385d16 --- /dev/null +++ b/src/parsec/include/g_wfx.h @@ -0,0 +1,51 @@ +/* + * PARSEC HEADER: part_wfx.h + */ + +#ifndef _PART_WFX_H_ +#define _PART_WFX_H_ + + +// constants for particle weapons + +enum { + + PARTICLEGUN_SPREADFIRE +}; + + +// external functions + +void WFX_InitParticleSizes( float resoscale ); + +int WFX_ShootParticleWeapon( ShipObject *shippo, int type ); +void WFX_RemoteShootSpreadfire( int playerid ); + +int WFX_MaintainHelix( ShipObject *shippo, int playerid ); +int WFX_ActivateHelix( ShipObject *shippo ); +void WFX_DeactivateHelix( ShipObject *shippo ); +void WFX_RemoteActivateHelix( int playerid ); +void WFX_RemoteDeactivateHelix( int playerid ); +void WFX_EnsureHelixInactive( ShipObject *shippo ); + +void WFX_MaintainLightning( ShipObject *shippo ); +int WFX_ActivateLightning( ShipObject *shippo ); +void WFX_DeactivateLightning( ShipObject *shippo ); +void WFX_RemoteActivateLightning( int playerid ); +void WFX_RemoteDeactivateLightning( int playerid ); +void WFX_EnsureLightningInactive( ShipObject *shippo ); + +struct photon_sphere_pcluster_s; +void WFX_CalcPhotonSphereAnimation( photon_sphere_pcluster_s *cluster ); +int WFX_ActivatePhoton( ShipObject *shippo ); +void WFX_DeactivatePhoton( ShipObject *shippo ); +void WFX_RemoteActivatePhoton( int playerid ); +void WFX_RemoteDeactivatePhoton( int playerid ); +void WFX_EnsurePhotonInactive( ShipObject *shippo ); + +void WFX_EnsureParticleWeaponsInactive( ShipObject *shippo ); + + +#endif // _PART_WFX_H_ + + diff --git a/src/parsec/include/h_cockpt.h b/src/parsec/include/h_cockpt.h new file mode 100644 index 0000000..e6b00da --- /dev/null +++ b/src/parsec/include/h_cockpt.h @@ -0,0 +1,78 @@ +/* + * PARSEC HEADER: h_cockpt.h + */ + +#ifndef _H_COCKPT_H_ +#define _H_COCKPT_H_ + + +// geometry of all cockpit elements ------------------------------------------- +// +struct cockpitinfo_s { + + float xpos; + float ypos; + float width; + float height; + int owidth; + int oheight; + + TextureMap* texmap; + const char* texname; +}; + + +// indices into cockpitinfo[] structure --------------------------------------- +// +enum { + + DAMAGE1, + DAMAGE1_SLICE, + DAMAGE2, + DAMAGE2_SLICE, + WEAPONS1, + WEAPONS1_SLICE, + WEAPONS2, + WEAPONS2_WORM, + WEAPONS2_ELITE, + RADAR, + RADAR_SLICE, + RADAR_ELITE, + ICONBAR1, + ICONBAR2, + ENERGYBAR, + ENERGYBAR_EMPTY, + SPEEDBAR, + SPEEDBAR_EMPTY, + DAMAGEBAR1, + DAMAGEBAR1_EMPTY, + DAMAGEBAR2, + DAMAGEBAR2_EMPTY, + CROSS, + CROSS2, + INCOMING +}; + + +// external functions + +void COCKPIT_DrawDisplay(); +void COCKPIT_DrawQuickSayBuffer(); + +void FadeInCockpit(); +void FadeOutCockpit(); + + +// external variables + +extern cockpitinfo_s cockpitinfo[]; +extern int cp_scale; +extern float scale_tab[]; +extern int cockpit_messagearea_yoffs; +extern float Scaled_Screen_Width; +extern float Scaled_Screen_Height; + + +#endif // _H_COCKPT_H_ + + diff --git a/src/parsec/include/h_drwhud.h b/src/parsec/include/h_drwhud.h new file mode 100644 index 0000000..88aaa71 --- /dev/null +++ b/src/parsec/include/h_drwhud.h @@ -0,0 +1,30 @@ +/* + * PARSEC HEADER: h_drwhud.h + */ + +#ifndef _H_DRWHUD_H_ +#define _H_DRWHUD_H_ + + +// external functions + +void InitHudDisplay(); + +void DrawOnlineHelp(); + +void HUD_DrawTrackingText( int targetvisible ); +void HUD_DrawBitmaps(); +void HUD_WriteAmmoString( int ammo, int x, int y ); + +void HUD_DrawHUD(); + + +// external variables + +extern int obj_cam_x; +extern int obj_cam_y; + + +#endif // _H_DRWHUD_H_ + + diff --git a/src/parsec/include/h_frmplt.h b/src/parsec/include/h_frmplt.h new file mode 100644 index 0000000..e0873a7 --- /dev/null +++ b/src/parsec/include/h_frmplt.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: h_frmplt.h + */ + +#ifndef _H_FRMPLT_H_ +#define _H_FRMPLT_H_ + + +// external variables + +extern time_t limit_timeval_old; +extern time_t limit_timeval_cur; + + +#endif // _H_FRMPLT_H_ + + diff --git a/src/parsec/include/h_global.h b/src/parsec/include/h_global.h new file mode 100644 index 0000000..52aa3cd --- /dev/null +++ b/src/parsec/include/h_global.h @@ -0,0 +1,47 @@ +/* + * PARSEC HEADER: h_global.h + */ + +#ifndef _H_GLOBAL_H_ +#define _H_GLOBAL_H_ + + +// global externals (GAME CODE/HUD) ----------------------- + + +// message maintenance + +struct msgmaint_s { + + int lifetimecount; + char message[ MAX_MESSAGELEN + 1 ]; +}; + +extern msgmaint_s MsgMaint[]; + + +// texfont messages + +struct texfontmsg_s { + + char* message; + IterTexfont* itexfont; + + short msgtype; + word flags; + + short maxpulses; + short refalpha; + float decalpha; + + int lifetime; + int starttime; + float curalpha; +}; + +extern texfontmsg_s TexfontMsgs[]; + + +#endif // _H_GLOBAL_H_ + + diff --git a/src/parsec/include/h_radar.h b/src/parsec/include/h_radar.h new file mode 100644 index 0000000..50af6a4 --- /dev/null +++ b/src/parsec/include/h_radar.h @@ -0,0 +1,28 @@ +/* + * PARSEC HEADER: h_radar.h + */ + +#ifndef _H_RADAR_H_ +#define _H_RADAR_H_ + + +// external variables + +extern int hud_radar_w; +extern int hud_radar_h; +extern int hud_radar_x; +extern int hud_radar_y; + +extern int hud_radar_bitm_x; +extern int hud_radar_bitm_y; + + +// external functions + +void HUD_DrawHUDRadarFrame(); +void HUD_DrawHUDRadar(); + + +#endif // _H_RADAR_H_ + + diff --git a/src/parsec/include/h_strmap.h b/src/parsec/include/h_strmap.h new file mode 100644 index 0000000..85e0248 --- /dev/null +++ b/src/parsec/include/h_strmap.h @@ -0,0 +1,35 @@ +/* + * PARSEC HEADER: h_strmap.h + */ + +#ifndef _H_STRMAP_H_ +#define _H_STRMAP_H_ + + +// external functions --------------------------------------------------------- +// +void MAP_FadeInStarmap(); +void MAP_FadeOutStarmap(); +void MAP_ActivateStarmap(); +int MAP_ShowStarmap( void *param ); +void MAP_KeyHandler(); + + +// ---------------------------------------------------------------------------- +// +struct starmap_bg_info_s { + + float xpos; + float ypos; + float width; + float height; + int owidth; + int oheight; + + TextureMap* texmap; + const char* texname; +}; + +#endif // _H_STRMAP_H_ + + diff --git a/src/parsec/include/h_supp.h b/src/parsec/include/h_supp.h new file mode 100644 index 0000000..7755b10 --- /dev/null +++ b/src/parsec/include/h_supp.h @@ -0,0 +1,40 @@ +/* + * PARSEC HEADER: h_supp.h + */ + +#ifndef _H_SUPP_H_ +#define _H_SUPP_H_ + + +// external functions + +char* CalcHudCharAddress( int no ); +void SetHudCharColor( int no ); + +void ResetMessageArea(); +void MaintainMessages(); +void ShowMessage( const char *msg ); + +void ShowTexfontMessage( texfontmsg_s *msg ); + +void WriteFrameRate(); +void WriteGameTime(); +void WriteServerPing(); +void WriteExtraCollectMessage( char* pszText ); + + + +// external variables + +extern int Msg_ScreenTop; +extern int cur_hud_char_color; +extern char* Hud_Char_ColOfs[]; + + +// number of different colors in hud font +#define NUM_HUD_CHARSET_COLORS 6 + + +#endif // _H_SUPP_H_ + + diff --git a/src/parsec/include/h_text.h b/src/parsec/include/h_text.h new file mode 100644 index 0000000..ba4757f --- /dev/null +++ b/src/parsec/include/h_text.h @@ -0,0 +1,23 @@ +/* + * PARSEC HEADER: h_text.h + */ + +#ifndef _H_TEXT_H_ +#define _H_TEXT_H_ + +#if 0 + +// external functions + +void HUD_InitDemoText(); +void HUD_DrawDemoText(); + +void HUD_ClearDemoText(); +void HUD_SetDemoText( int lineid, char *text ); + +#endif + + +#endif // _H_TEXT_H_ + + diff --git a/src/parsec/include/il_joy.h b/src/parsec/include/il_joy.h new file mode 100644 index 0000000..37f9bdc --- /dev/null +++ b/src/parsec/include/il_joy.h @@ -0,0 +1,25 @@ +/* + * PARSEC HEADER: il_joy.h + */ + +#ifndef _IL_JOY_H_ +#define _IL_JOY_H_ + + +// external functions --------------------------------------------------------- +// +void IL_JoyInitHandler(); +void IL_JoyKillHandler(); +void IL_JoyCollect(); + + +// device/platform dependend constraints -------------------------------------- +// +#define JOY_DEVICE_MIN -32767 +#define JOY_DEVICE_MAX 32767 +#define JOY_DEVICE_RANGE 65535 + + +#endif // _IL_JOY_H_ + + diff --git a/src/parsec/include/il_mouse.h b/src/parsec/include/il_mouse.h new file mode 100644 index 0000000..7b69735 --- /dev/null +++ b/src/parsec/include/il_mouse.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: il_mouse.h + */ + +#ifndef _IL_MOUSE_H_ +#define _IL_MOUSE_H_ + + +// il_mouse.c implements the following functions +// --------------------------------------------- +// void INPs_MouseInitHandler(); +// void INPs_MouseKillHandler(); +// int INPs_MouseSetState( mousestate_s *state ); +// int INPs_MouseGetState( mousestate_s *state ); + + +#endif // _IL_MOUSE_H_ + + diff --git a/src/parsec/include/il_supp.h b/src/parsec/include/il_supp.h new file mode 100644 index 0000000..d10f265 --- /dev/null +++ b/src/parsec/include/il_supp.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: il_supp.h + */ + +#ifndef _IL_SUPP_H_ +#define _IL_SUPP_H_ + + +// external functions + +int IL_ActivateGun(); +int IL_ActivateMissile(); +void IL_UserProcessAuxInput(); + + +#endif // _IL_SUPP_H_ + + diff --git a/src/parsec/include/img_3df.h b/src/parsec/include/img_3df.h new file mode 100644 index 0000000..28ca61a --- /dev/null +++ b/src/parsec/include/img_3df.h @@ -0,0 +1,28 @@ +/* + * PARSEC HEADER: img_3df.h + */ + +#ifndef _IMG_3DF_H_ +#define _IMG_3DF_H_ + + +// 3df format info + +struct format_3df_s { + + const char* spec; + dword format; + int texelsize; + int _mksiz16; +}; + + +// external functions + +format_3df_s* TDF_DecodeFormatInfo( char *formatspec ); +int TDF_LoadTexture( char *fname, int insertindex, char *loaderparams, texfont_s *texfont ); + + +#endif // _IMG_3DF_H_ + + diff --git a/src/parsec/include/img_api.h b/src/parsec/include/img_api.h new file mode 100644 index 0000000..ca2834d --- /dev/null +++ b/src/parsec/include/img_api.h @@ -0,0 +1,78 @@ +/* + * PARSEC HEADER: img_api.h + */ + +#ifndef _IMG_API_H_ +#define _IMG_API_H_ + + +// buffer formats + +enum buffer_formats { + + BUFFERFORMAT_INVALID = 0x0000, + + BUFFERFORMAT_INDEXED = 0x0001, + BUFFERFORMAT_RGB_332 = 0x0002, + BUFFERFORMAT_ALPHA_8 = 0x0003, + BUFFERFORMAT_INTENSITY_8 = 0x0004, + BUFFERFORMAT_RGB_555 = 0x0005, + BUFFERFORMAT_RGB_565 = 0x0006, + BUFFERFORMAT_ARGB_1555 = 0x0007, + BUFFERFORMAT_ARGB_4444 = 0x0008, + BUFFERFORMAT_AP_88 = 0x0009, + BUFFERFORMAT_AI_88 = 0x000a, + BUFFERFORMAT_RGB_888 = 0x000b, + BUFFERFORMAT_ARGB_8888 = 0x000c, + + BUFFERFORMAT_BASE_MASK = 0x00ff, + + BUFFERFORMAT_VGA_PAL = 0x0100, + BUFFERFORMAT_RGB_PAL = 0x0200, + BUFFERFORMAT_RGBA_PAL = 0x0400, + + BUFFERFORMAT_PREFIX_PAL = 0x1000, + BUFFERFORMAT_POSTFIX_PAL = 0x2000 +}; + + +// recognized image formats + +enum image_formats { + + IMAGEFORMAT_INVALID, + + IMAGEFORMAT_RAW, + IMAGEFORMAT_TGA, + IMAGEFORMAT_3DF, + IMAGEFORMAT_PCX, + IMAGEFORMAT_BMP, + IMAGEFORMAT_JPG, + IMAGEFORMAT_PNG +}; + + +// generic image info + +struct img_info_s { + + int format; + int width; + int height; + size_t buffsize; + int userinfo[ 4 ]; +}; + + +// external functions + +int IMG_DetermineFormat( char *fname ); +int IMG_BufferPixelSize( int format ); +int IMG_CopyConvertBuffer( char *dstbuff, int dstfmt, char *srcbuff, int srcfmt, size_t bsiz ); +int IMG_SaveBuffer( const char *filename, char *buff, img_info_s *info ); +int IMG_LoadTexture( char *fname, int insertindex, char *loaderparams, texfont_s *texfont ); + + +#endif // _IMG_API_H_ + + diff --git a/src/parsec/include/img_conv.h b/src/parsec/include/img_conv.h new file mode 100644 index 0000000..26528b5 --- /dev/null +++ b/src/parsec/include/img_conv.h @@ -0,0 +1,61 @@ +/* + * PARSEC HEADER: img_conv.h + */ + +#ifndef _IMG_CONV_H_ +#define _IMG_CONV_H_ + + + +// retiling info to create a texfont texture + +struct retileinfo_s { + + int srcwidth; + int srcheight; + + int tilewidth; + int tileheight; + + int spacing; + texfont_s* texfont; +}; + + +// forward declaration +struct format_3df_s; + + +// image to texture conversion info + +struct imgtotexdata_s { + + char* texbitmap; + int width; + int height; + int lodloaded; + int lodlarge; + int lodsmall; + dword format; // TEXFMT + format_3df_s* texfmtgr; + retileinfo_s* retileinfo; +}; + + +// external functions + +char *IMG_ConvertTextureImageData( imgtotexdata_s *imgtotexdata, int swaprgba ); + + +// external variables + +extern int image_mirror_vertically; +extern int image_invert_pixels; +extern int image_compress_data; + +extern int image_lods[]; + + +#endif // _IMG_CONV_H_ + + diff --git a/src/parsec/include/img_jpg.h b/src/parsec/include/img_jpg.h new file mode 100644 index 0000000..ead405f --- /dev/null +++ b/src/parsec/include/img_jpg.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: img_jpg.h + */ + +#ifndef _IMG_JPG_H_ +#define _IMG_JPG_H_ + + +// external functions + +int JPG_SaveBuffer( const char *filename, char *buff, int width, int height ); + + +#endif // _IMG_JPG_H_ + + diff --git a/src/parsec/include/img_load.h b/src/parsec/include/img_load.h new file mode 100644 index 0000000..5d1c113 --- /dev/null +++ b/src/parsec/include/img_load.h @@ -0,0 +1,45 @@ +/* + * PARSEC HEADER: img_load.h + */ + +#ifndef _IMG_LOAD_H_ +#define _IMG_LOAD_H_ + + +// forward declarations +struct format_3df_s; +struct imgreadinfo_s; +struct imgtotexdata_s; + + +// image reading info + +struct imgreadinfo_s { + + int mapwidth; // -1 == use default + int mapheight; // -1 == use default + + int lodlarge; // -1 == use default + int lodsmall; // -1 == use default + + int retilewidth; // -1 == use default + int retileheight; // -1 == use default + + int spacing; + + format_3df_s* texfmtgr; +}; + + +// external functions + +int IMG_ParseLoadingParameters( const char *loaderparams, imgreadinfo_s *imgreadinfo ); +int IMG_CheckMapGeometry( imgreadinfo_s *imgreadinfo, int width, int height ); +void IMG_CheckLodSpecs( imgreadinfo_s *imgreadinfo, int lgside ); +void IMG_CreateTexture( int insertindex, imgtotexdata_s *imgtotexdata, dword texgeometry, int inputwidth, int inputheight, texfont_s *texfont ); +int IMG_LoadGenericTexture(const char *fname, int insertindex, char *loaderparams, texfont_s *texfont); + + +#endif // _IMG_LOAD_H_ + + diff --git a/src/parsec/include/img_supp.h b/src/parsec/include/img_supp.h new file mode 100644 index 0000000..8117846 --- /dev/null +++ b/src/parsec/include/img_supp.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: img_supp.h + */ + +#ifndef _IMG_SUPP_H_ +#define _IMG_SUPP_H_ + + +// external functions + +dword IMG_DetermineTexGeoAspect( dword width, dword height ); +int IMG_DetermineTexGeoAspectExt( dword width, dword height ); +dword IMG_DetermineTexGeoScale( dword maxside ); + +dword IMG_CountMipmapTexels( dword texw, dword texh, dword lodlarge, dword lodsmall ); + + +#endif // _IMG_SUPP_H_ + + diff --git a/src/parsec/include/img_tga.h b/src/parsec/include/img_tga.h new file mode 100644 index 0000000..e4e3e60 --- /dev/null +++ b/src/parsec/include/img_tga.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: img_tga.h + */ + +#ifndef _IMG_TGA_H_ +#define _IMG_TGA_H_ + + +// external functions + +int TGA_SaveBuffer( const char *filename, char *buff, int width, int height ); + + +#endif // _IMG_TGA_H_ + + diff --git a/src/parsec/include/inp_comm.h b/src/parsec/include/inp_comm.h new file mode 100644 index 0000000..1109866 --- /dev/null +++ b/src/parsec/include/inp_comm.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: INP_COMM.H + */ + +#ifndef _INP_COMM_H_ +#define _INP_COMM_H_ + + +// external functions + +// none + + +#endif + + diff --git a/src/parsec/include/inp_defs.h b/src/parsec/include/inp_defs.h new file mode 100644 index 0000000..ed06e6d --- /dev/null +++ b/src/parsec/include/inp_defs.h @@ -0,0 +1,220 @@ +/* + * PARSEC HEADER: inp_defs.h + */ + +#ifndef _INP_DEFS_H_ +#define _INP_DEFS_H_ + + +// ---------------------------------------------------------------------------- +// INPUT SUBSYSTEM (INP) related definitions - +// ---------------------------------------------------------------------------- + + +// keys corresponding to game functions (gamefunckeys) --------------------- + +struct keyfunc_s { + + dword key_Escape; // 00 + dword key_TurnLeft; // 01 + dword key_TurnRight; // 02 + dword key_DiveDown; // 03 + dword key_PullUp; // 04 + dword key_RollLeft; // 05 + dword key_RollRight; // 06 + dword key_ShootWeapon; // 07 + dword key_LaunchMissile; // 08 + dword key_NextWeapon; // 09 + dword key_NextMissile; // 10 + dword key_Accelerate; // 11 + dword key_Decelerate; // 12 + dword key_SlideLeft; // 13 + dword key_SlideRight; // 14 + dword key_SlideUp; // 15 + dword key_SlideDown; // 16 + dword key_NextTarget; // 17 + dword key_ToggleFrameRate; // 18 + dword key_ToggleObjCamera; // 19 + dword key_ToggleHelp; // 20 + dword key_ToggleConsole; // 21 + dword key_SaveScreenShot; // 22 + dword key_ShowKillStats; // 23 + dword key_SpeedZero; // 24 + dword key_TargetSpeed; // 25 + dword key_AfterBurner; // 26 + dword key_FrontTarget; // 27 + dword key_Select; // 28 + dword key_CursorLeft; // 29 + dword key_CursorRight; // 30 + dword key_CursorUp; // 31 + dword key_CursorDown; // 32 + +}; + +#define NUM_GAMEFUNC_KEYS ( sizeof( keyfunc_s ) / sizeof( ((keyfunc_s*)0)->key_Escape ) ) + + +// single entry in table of additional key mappings +struct keyaddition_s { + + dword code; // AKC_ code (full 32 bit valid!) + int state; // 0: released 1: depressed +}; + + +//CAVEAT: MUST BE CONSISTENT WITH DEFINITION IN ID_KEYB.INC!! +#define KEY_ADDITIONS_MAX 128 + +// header of table containing additional key mappings +struct keyaddctrl_s { + + int size; // number of key entries in table + keyaddition_s table[KEY_ADDITIONS_MAX]; // first entry +}; + + +// various keyboard state flags +struct keybflags_s { + + byte ConEnabled; // console visible and may potentially be typed into + byte ConActive; // enables keyboard routing into console + byte ConTogReleased; // -1 if contoggle is released (internal use only) + byte ExtOn; // extended key (keyboard-code internal use only) + byte ShiftOn; // shift is down (keyboard-code internal use only) +}; + +//NOTE: +// if ( ConEnabled == TRUE ) the console is visible and enabled. that is, +// the console toggle key is checked and used to toggle keyboard routing into +// the console on/off. routing is achieved by using ConActive. +// +// that is: +// console enabled/visible and may be typed into: +// ( ConEnabled == TRUE ) && ( ConActive == TRUE ) +// console enabled/visible but may not be typed into: +// ( ConEnabled == TRUE ) && ( ConActive == FALSE ) +// console disabled/invisible (also no typing, of course) +// ( ConEnabled == FALSE ) && ( ConActive == DONT_CARE ) +// +// therefore, ConActive stores the current state of console +// keyboard routing (also if the console is disabled +// in the meantime!) + + +// generic joystick data structure -------------------------------------------- +// +struct joystate_s { + + int32 X; // x-axis position + int32 Y; // y-axis position + int32 Z; // z-axis position + int32 Rx; // x-axis rotation + int32 Ry; // y-axis rotation + int32 Rz; // z-axis rotation + int32 Slider[ 2 ]; // extra axes positions + int32 POV[ 4 ]; // POV directions + byte Buttons[ 32 ]; // 32 buttons +}; + + +// button query masks --------------------------------------------------------- +// +#define JOYBUTT1MASK 0x10 +#define JOYBUTT2MASK 0x20 +#define JOYBUTT3MASK 0x30 // both buttons pressed -> button 3 +#define JOYBUTTFIELDMASK 0x30 + + +// external variables --------------------------------------------------------- +// +extern keyfunc_s * DepressedKeys; +extern keyfunc_s * KeyAssignments; +extern keyaddctrl_s * KeyAdditional; +extern keybflags_s * KeybFlags; + + +// joystick resolution -------------------------------------------------------- +// +#define JOY_FLAT_CENTER 0.15 +#define JOY_HALF_RES 32 +#define EP_WAIT 50 + + +// joystick constraints ------------------------------------------------------- +// +#define JOY_THROTTLE_MIN 0 +#define JOY_THROTTLE_MAX 255 +#define JOY_THROTTLE_DEADZONE_MASK 0xFFFFFFF0 +#define JOY_THROTTLE_RANGE 256 + +#define JOY_X_MIN -32 +#define JOY_X_ZERO 0 +#define JOY_X_MAX 32 +#define JOY_X_RANGE 65 + +#define JOY_Y_MIN -32 +#define JOY_Y_ZERO 0 +#define JOY_Y_MAX 32 +//FIXME: range should be 64 ?????? +#define JOY_Y_RANGE 65 + +#define JOY_RUDDER_MIN -32 +#define JOY_RUDDER_ZERO 0 +#define JOY_RUDDER_MAX 32 +//FIXME: range should be 64 ?????? +#define JOY_RUDDER_RANGE 65 + + +// mouse constants ------------------------------------------------------------ +// +enum { + + MOUSE_BUTTON_LEFT, + MOUSE_BUTTON_MIDDLE, + MOUSE_BUTTON_RIGHT, + + NUM_MOUSE_BUTTONS // must be last! +}; + +#define MOUSE_BUTTON_RELEASED 0 +#define MOUSE_BUTTON_PRESSED 1 + + +// generic mouse data structure ----------------------------------------------- +// +struct mousestate_s { + float xpos; // normalized [ 0.0, 1.0 ] + float ypos; // normalized [ 0.0, 1.0 ] + byte drawcursor; // custom cursor drawing + byte buttons[ NUM_MOUSE_BUTTONS ]; // button state +}; + + +// check if one of the select keys is pressed --------------------------------- +// +inline int SELECT_KEYS_PRESSED() +{ + return ( DepressedKeys->key_Select || + DepressedKeys->key_ShootWeapon || + DepressedKeys->key_LaunchMissile ); +} + + +// reset all select keys ------------------------------------------------------ +// +inline void SELECT_KEYS_RESET() +{ + DepressedKeys->key_Select = 0; + DepressedKeys->key_ShootWeapon = 0; + DepressedKeys->key_LaunchMissile = 0; +} + + +// include system-specific subsystem prototypes ------------------------------- +// +#include "inp_subh.h" + + +#endif // _INP_DEFS_H_ + + diff --git a/src/parsec/include/inp_glob.h b/src/parsec/include/inp_glob.h new file mode 100644 index 0000000..a780d3b --- /dev/null +++ b/src/parsec/include/inp_glob.h @@ -0,0 +1,26 @@ +/* + * PARSEC HEADER: inp_glob.h + */ + +#ifndef _INP_GLOB_H_ +#define _INP_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// INPUT SUBSYSTEM (INP) related global declarations and definitions - +// ---------------------------------------------------------------------------- + +// current joystick sensitivity (timing) + +extern float joy_yaw_corr_refframe; +extern float joy_pitch_corr_refframe; +extern float joy_roll_corr_refframe; +extern float joy_acc_corr_refframe; + +extern int inp_mouse_invert_yaxis; +extern int inp_mouse_sensitivity; +extern int inp_mouse_drift; + +#endif // _INP_GLOB_H_ + + diff --git a/src/parsec/include/inp_init.h b/src/parsec/include/inp_init.h new file mode 100644 index 0000000..d2f5a3e --- /dev/null +++ b/src/parsec/include/inp_init.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: inp_init.h + */ + +#ifndef _INP_INIT_H_ +#define _INP_INIT_H_ + + +// external functions + +void INP_InitSubsystem(); +void INP_KillSubsystem(); + + +#endif // _INP_INIT_H_ + + diff --git a/src/parsec/include/inp_keyn.h b/src/parsec/include/inp_keyn.h new file mode 100755 index 0000000..a8a496d --- /dev/null +++ b/src/parsec/include/inp_keyn.h @@ -0,0 +1,109 @@ +/* + * inp_keyn.h + * + * Created on: Nov 3, 2012 + * Author: jasonw + */ + +#ifndef INP_KEYN_H_ +#define INP_KEYN_H_ + +// C++ STL map +#include + +#include "keycodes.h" + +// "constructor" for the key_names hash table +// (STL maps can only use initializer lists in C++11) +static std::map create_key_names() +{ + std::map m; + + m[MKC_NIL] = "None"; + m[MKC_ESCAPE] = "Escape"; + m[MKC_1] = "1"; + m[MKC_2] = "2"; + m[MKC_3] = "3"; + m[MKC_4] = "4"; + m[MKC_5] = "5"; + m[MKC_6] = "6"; + m[MKC_7] = "7"; + m[MKC_8] = "8"; + m[MKC_9] = "9"; + m[MKC_0] = "0"; + m[MKC_MINUS] = "-"; + m[MKC_EQUALS] = "="; + m[MKC_BACKSPACE] = "Backspace"; + m[MKC_TAB] = "Tab"; + m[MKC_Q] = "Q"; + m[MKC_W] = "W"; + m[MKC_E] = "E"; + m[MKC_R] = "R"; + m[MKC_T] = "T"; + m[MKC_U] = "U"; + m[MKC_I] = "I"; + m[MKC_O] = "O"; + m[MKC_P] = "P"; + m[MKC_LBRACKET] = "["; + m[MKC_RBRACKET] = "]"; + m[MKC_BACKSLASH] = "\\"; + m[MKC_A] = "A"; + m[MKC_S] = "S"; + m[MKC_D] = "D"; + m[MKC_F] = "F"; + m[MKC_G] = "G"; + m[MKC_H] = "H"; + m[MKC_J] = "J"; + m[MKC_K] = "K"; + m[MKC_L] = "L"; + m[MKC_SEMICOLON] = ";"; + m[MKC_APOSTROPHE] = "'"; + m[MKC_ENTER] = "Enter"; + m[MKC_LSHIFT] = "Left Shift"; + m[MKC_RSHIFT] = "Right Shift"; + m[MKC_Z] = "Z"; + m[MKC_X] = "X"; + m[MKC_C] = "C"; + m[MKC_V] = "V"; + m[MKC_B] = "B"; + m[MKC_N] = "N"; + m[MKC_M] = "M"; + m[MKC_COMMA] = ","; + m[MKC_PERIOD] = "."; + m[MKC_SLASH] = "/"; + m[MKC_LCONTROL] = "Left Control"; + m[MKC_RCONTROL] = "Right Control"; + m[MKC_LALT] = "Left Alt"; + m[MKC_RALT] = "Right Alt"; + m[MKC_CURSORUP] = "Up Arrow"; + m[MKC_CURSORLEFT] = "Left Arrow"; + m[MKC_CURSORDOWN] = "Down Arrow"; + m[MKC_CURSORRIGHT] = "Right Arrow"; + m[MKC_SPACE] = "Spacebar"; + m[MKC_F1] = "F1"; + m[MKC_F2] = "F2"; + m[MKC_F3] = "F3"; + m[MKC_F4] = "F4"; + m[MKC_F5] = "F5"; + m[MKC_F6] = "F6"; + m[MKC_F7] = "F7"; + m[MKC_F8] = "F8"; + m[MKC_F9] = "F9"; + m[MKC_F10] = "F10"; + m[MKC_F11] = "F11"; + m[MKC_F12] = "F12"; + m[MKC_TILDE] = "Tilde"; + m[MKC_HOME] = "Home"; + m[MKC_INSERT] = "Insert"; + m[MKC_DELETE] = "Delete"; + m[MKC_PAGEUP] = "Page Up"; + m[MKC_PAGEDOWN] = "Page Down"; + + return m; +} + +// create the hash table +static std::map key_names = create_key_names(); + + +#endif /* INP_KEYN_H_ */ diff --git a/src/parsec/include/inp_sdl.h b/src/parsec/include/inp_sdl.h new file mode 100644 index 0000000..02aed25 --- /dev/null +++ b/src/parsec/include/inp_sdl.h @@ -0,0 +1,26 @@ +/* + * PARSEC HEADER: inp_sdl.h + */ + +#ifndef _INP_SDL_H_ +#define _INP_SDL_H_ + + +// il_sdl.c implements the following functions +// -------------------------------------------- +// void INPs_InitGeneral(); +// void INPs_KillGeneral(); +// void INPs_KeybInitHandler(); +// void INPs_KeybKillHandler(); +// void INPs_JoyInitHandler(); +// void INPs_JoyKillHandler(); +// int INPs_ActivateGun(); +// int INPs_ActivateMissile(); +// void INPs_Collect(); +// void INPs_UserProcessAuxInput(); + + +#endif //_INP_SDL_H_ + + + diff --git a/src/parsec/include/inp_subh.h b/src/parsec/include/inp_subh.h new file mode 100644 index 0000000..64a5d00 --- /dev/null +++ b/src/parsec/include/inp_subh.h @@ -0,0 +1,36 @@ +/* + * PARSEC HEADER: inp_subh.h + */ + +#ifndef _INP_SUBH_H_ +#define _INP_SUBH_H_ + + +// ---------------------------------------------------------------------------- +// INPUT SUBSYSTEM (INP) system-dependent function declarations - +// ---------------------------------------------------------------------------- + +void INPs_InitGeneral(); +void INPs_KillGeneral(); + +void INPs_KeybInitHandler(); +void INPs_KeybKillHandler(); + +void INPs_JoyInitHandler(); +void INPs_JoyKillHandler(); + +void INPs_MouseInitHandler(); +void INPs_MouseKillHandler(); +int INPs_MouseSetState( mousestate_s *state ); +int INPs_MouseGetState( mousestate_s *state ); + + +int INPs_ActivateGun(); +int INPs_ActivateMissile(); + +void INPs_Collect(); +void INPs_UserProcessAuxInput(); + +#endif // _INP_SUBH_H_ + + diff --git a/src/parsec/include/inp_user.h b/src/parsec/include/inp_user.h new file mode 100644 index 0000000..4480db0 --- /dev/null +++ b/src/parsec/include/inp_user.h @@ -0,0 +1,42 @@ +/* + * PARSEC HEADER: inp_user.h + */ + +#ifndef _INP_USER_H_ +#define _INP_USER_H_ + + +// number selectable gun and missile types + +#define NUMBER_OF_SELECTABLE_GUNTYPES 4 +#define NUMBER_OF_SELECTABLE_MISSILETYPES 4 + + +// external functions + +void INP_UserRotX( bams_t angle ); +void INP_UserRotY( bams_t angle ); +void INP_UserRotZ( bams_t angle ); +void INP_UserSlideX( geomv_t slideval ); +void INP_UserSlideY( geomv_t slideval ); + +void INP_UserAcceleration( fixed_t c_speed ); + +void INP_UserCycleGuns(); +void INP_UserCycleMissiles(); +void INP_UserCycleTargets(); + +void INP_UserSelectFrontTarget(); + +void INP_UserZeroSpeed(); +void INP_UserTrackTargetSpeed(); + +void INP_UserResetActivityChecking(); + +void INP_UserProcessInput(); +void INP_UserCheckFiring(); + + +#endif // _INP_USER_H_ + + diff --git a/src/parsec/include/isdl_joy.h b/src/parsec/include/isdl_joy.h new file mode 100644 index 0000000..e5867f3 --- /dev/null +++ b/src/parsec/include/isdl_joy.h @@ -0,0 +1,30 @@ +/* + * PARSEC HEADER: isdl_joy.h + */ + +#ifndef _ISDL_JOY_H_ +#define _ISDL_JOY_H_ + + +// external functions --------------------------------------------------------- +// +void ISDL_JoyInitHandler(); +void ISDL_JoyKillHandler(); +void ISDL_JoyCollect(); + + +// device/platform dependend constraints -------------------------------------- +// +#define JOY_DEVICE_MIN -32767 +#define JOY_DEVICE_MAX 32767 +#define JOY_DEVICE_RANGE 65535 + +#define JOY_X_DIV 1024 //JOY_DEVICE_RANGE / JOY_X_RANGE; +#define JOY_Y_DIV 1024 //JOY_DEVICE_RANGE / JOY_Y_RANGE; +#define JOY_THROTTLE_DIV 256 //JOY_DEVICE_RANGE / JOY_THROTTLE_RANGE +#define JOY_THROTTLE_OFF 128 //JOY_THROTTLE_RANGE / 2 +#define JOY_RUDDER_DIV 1024 //JOY_DEVICE_RANGE / JOY_RUDDER_RANGE + +#endif // _ISDL_JOY_H_ + + diff --git a/src/parsec/include/isdl_keydf.h b/src/parsec/include/isdl_keydf.h new file mode 100644 index 0000000..cf57ab1 --- /dev/null +++ b/src/parsec/include/isdl_keydf.h @@ -0,0 +1,89 @@ +/* + * PARSEC HEADER: isdl_keydf.h + */ + +#ifndef _ISDL_KEYDF_H_ +#define _ISDL_KEYDF_H_ + + +// ---------------------------------------------------------- +// game function keys +// ---------------------------------------------------------- + +struct keyfunc_s _keyassignments[ 2 ] = { + { // primary assignments -- + MKC_ESCAPE, + MKC_CURSORLEFT, + MKC_CURSORRIGHT, + MKC_CURSORUP, + MKC_CURSORDOWN, + MKC_Q, + MKC_E, + MKC_SPACE, + MKC_ENTER, + MKC_G, + MKC_M, + MKC_R, + MKC_F, + MKC_A, + MKC_D, + MKC_W, + MKC_S, + MKC_T, + MKC_I, + MKC_F6, + MKC_F1, + MKC_TILDE, + MKC_F12, + MKC_TAB, + MKC_BACKSPACE, + MKC_Z, + MKC_LSHIFT, + MKC_B, + MKC_ENTER, + MKC_CURSORLEFT, + MKC_CURSORRIGHT, + MKC_CURSORUP, + MKC_CURSORDOWN, + }, + { // secondary assignments -- + MKC_ESCAPE, + MKC_CURSORLEFT_GRAY, + MKC_CURSORRIGHT_GRAY, + MKC_CURSORUP_GRAY, + MKC_CURSORDOWN_GRAY, + MKC_Q, + MKC_E, + MKC_SPACE, + MKC_ENTER_GRAY, + MKC_G, + MKC_M, + MKC_R, + MKC_F, + MKC_A, + MKC_D, + MKC_W, + MKC_S, + MKC_T, + MKC_I, + MKC_F6, + MKC_F1, + MKC_TILDE, + MKC_F12, + MKC_TAB, + MKC_BACKSPACE, + MKC_Z, + MKC_LSHIFT, + MKC_B, + MKC_ENTER_GRAY, + MKC_CURSORLEFT_GRAY, + MKC_CURSORRIGHT_GRAY, + MKC_CURSORUP_GRAY, + MKC_CURSORDOWN_GRAY, + } +}; + + +#endif // _ISDL_KEYDF_H_ + + diff --git a/src/parsec/include/isdl_keyn.h b/src/parsec/include/isdl_keyn.h new file mode 100644 index 0000000..7ca4f39 --- /dev/null +++ b/src/parsec/include/isdl_keyn.h @@ -0,0 +1,117 @@ +/* + * PARSEC HEADER: isdl_keyn.h + */ + +#ifndef _ISDL_KEYN_H_ +#define _ISDL_KEYN_H_ + + +#define MAX_KEYCODE 0x5f + +// english keyboard +static char *key_names[ MAX_KEYCODE + 1 ] = { + + "None", // 00 + "Escape", // 01 + "1", // 02 + "2", // 03 + "3", // 04 + "4", // 05 + "5", // 06 + "6", // 07 + "7", // 08 + "8", // 09 + "9", // 0a + "0", // 0b + "-", // 0c + "=", // 0d + "Backspace", // 0e + "Tab", // 0f + "Q", // 10 + "W", // 11 + "E", // 12 + "R", // 13 + "T", // 14 + "Y", // 15 + "U", // 16 + "I", // 17 + "O", // 18 + "P", // 19 + "[", // 1a + "]", // 1b + "Enter", // 1c + "Control", // 1d + "A", // 1e + "S", // 1f + "D", // 20 + "F", // 21 + "G", // 22 + "H", // 23 + "J", // 24 + "K", // 25 + "L", // 26 + ";", // 27 + "'", // 28 + "Tilde", // 29 + "Left Shift", // 2a + "\\", // 2b + "Z", // 2c + "X", // 2d + "C", // 2e + "V", // 2f + "B", // 30 + "N", // 31 + "M", // 32 + ",", // 33 + ".", // 34 + "/", // 35 + "Right Shift", // 36 + "Numpad *", // 37 + "Alt", // 38 + "Space", // 39 + "Caps Lock", // 3a + "F1", // 3b + "F2", // 3c + "F3", // 3d + "F4", // 3e + "F5", // 3f + "F6", // 40 + "F7", // 41 + "F8", // 42 + "F9", // 43 + "F10", // 44 + "NumLock", // 45 + "ScrollLock", // 46 + "Home", // 47 + "Cursur Up", // 48 + "Page Up", // 49 + "Numpad -", // 4a + "Cursor Left", // 4b + "NumPad 5", // 4c + "Cursor Right", // 4d + "Numpad +", // 4e + "End", // 4f + "Cursor Down", // 50 + "Page Down", // 51 + "Insert", // 52 + "Delete", // 53 + " ", // 54 + " ", // 55 + "<", // 56 + "F11", // 57 + "F12", // 58 + " ", // 59 + " ", // 5a + "Left Win", // 5b + "Right Win", // 5c + "Apps", // 5d + " ", // 5e + " ", // 5f + + }; + + +#endif // _ISDL_KEYN_H_ + + + diff --git a/src/parsec/include/isdl_mouse.h b/src/parsec/include/isdl_mouse.h new file mode 100644 index 0000000..127b7c6 --- /dev/null +++ b/src/parsec/include/isdl_mouse.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: isdl_mouse.h + */ + +#ifndef _ISDL_MOUSE_H_ +#define _ISDL_MOUSE_H_ + + +// il_mouse.c implements the following functions +// --------------------------------------------- +// void INPs_MouseInitHandler(); +// void INPs_MouseKillHandler(); +// int INPs_MouseSetState( mousestate_s *state ); +// int INPs_MouseGetState( mousestate_s *state ); + + +#endif // _ISDL_MOUSE_H_ + + diff --git a/src/parsec/include/isdl_supp.h b/src/parsec/include/isdl_supp.h new file mode 100644 index 0000000..c9fc62b --- /dev/null +++ b/src/parsec/include/isdl_supp.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: isdl_supp.h + */ + +#ifndef _ISDL_SUPP_H_ +#define _ISDL_SUPP_H_ + + +// external functions + +int ISDL_ActivateGun(); +int ISDL_ActivateMissile(); +void ISDL_UserProcessAuxInput(); + + +#endif // _IL_SUPP_H_ + + diff --git a/src/parsec/include/m_button.h b/src/parsec/include/m_button.h new file mode 100644 index 0000000..92080ac --- /dev/null +++ b/src/parsec/include/m_button.h @@ -0,0 +1,92 @@ +/* + * PARSEC HEADER: m_button.h + */ + +#ifndef _M_BUTTON_H_ +#define _M_BUTTON_H_ + + +// menu item ids + +enum { + + M_GAME, + M_SERVER, + M_CONFIG, + M_QUIT, + + M_CONNECT, + M_JOIN_GAME, + M_STARMAP, + M_PLAY_DEMO, + M_DISCONNECT, + + M_CREATE, + M_GAME_MOD, + M_SETTINGS, + + M_SPACECRAFT, + M_CONTROLS, + M_OPTIONS, + M_BACK, + + M_BUTTON_CAP +}; + + +// button metrics +// +#define BUTTON_WIDTH 320 +#define BUTTON_HEIGHT 79 +#define BUTTON_ALPHA 255 + +#define BUTTON_SLIDE_SPEED 12 + +#define BUTTON_POS_LEFT 0 +#define BUTTON_POS_RIGHT ( m_sintab_size - 1 ) + +#define BUTTON_PHASE_OFS ( m_sintab_size >> 3 ) + +#define BUTTON_ALPHA_LOW 0 +#define BUTTON_ALPHA_MID 128 +#define BUTTON_ALPHA_HIGH 255 + +#define BUTTON_FADE_SPEED 6 +#define BUTTON_FADE_QUANTUM 10 + + +// number of items comprising every menu -------------------------------------- +// +#define NUM_MENU_ITEMS 5 + + +// external functions + +void MenuButtonsEnterSubmenu(); +void MenuButtonsLeaveSubmenu(); +int MenuButtonsSelection(); +int MenuButtonsEscape(); +void MenuButtonsCursorUp(); +void MenuButtonsCursorDown(); +void MenuButtonsToggleConnect(); +void MenuButtonsToggleDisconnect(); + +int MouseOverMenuButton( int mousex, int mousey ); + +void MoveInButtons(); +void MoveOutButtons(); +void SlideInButtons(); +void SlideOutButtons(); +int SlideFinishedButtons(); +void FadeInButtons(); +void FadeOutButtons( int target ); +int FadeFinishedButtons(); + +void DrawMenuButtons(); +void DrawMenuConnected(); +void DrawMenuLoading(); + + +#endif // _M_BUTTON_H_ + + diff --git a/src/parsec/include/m_list.h b/src/parsec/include/m_list.h new file mode 100644 index 0000000..a231a55 --- /dev/null +++ b/src/parsec/include/m_list.h @@ -0,0 +1,46 @@ +/* + * PARSEC HEADER: m_list.h + */ + +#ifndef _M_LIST_H_ +#define _M_LIST_H_ + + +// list window modes + +enum { + + LISTWIN_DEMOLIST, + LISTWIN_PLAYERLIST, + LISTWIN_SERVERLIST +}; + + +// external functions + +int DemoListSelection(); +void DemoListCursorUp(); +void DemoListCursorDown(); +void DemoListMouseSet(); + +int MouseOverListItem( int mousex, int mousey ); + +void MoveInListWindow(); +void MoveOutListWindow(); +void SlideInListWindow(); +void SlideOutListWindow(); +int SlideFinishedListWindow(); + +void DrawRemotePlayerListWindow(); +void DrawMenuListWindow(); + + +// external variables + +extern int listwin_mode; +extern int listwin_active; + + +#endif // _M_LIST_H_ + + diff --git a/src/parsec/include/m_logo.h b/src/parsec/include/m_logo.h new file mode 100644 index 0000000..afe62e1 --- /dev/null +++ b/src/parsec/include/m_logo.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: m_logo.h + */ + +#ifndef _M_LOGO_H_ +#define _M_LOGO_H_ + + +// external functions + +void SlideInLogo(); +void SlideOutLogo(); +void MoveInLogo(); +void MoveOutLogo(); + +void DrawMenuLogo(); + + +#endif // _M_LOGO_H_ + + diff --git a/src/parsec/include/m_main.h b/src/parsec/include/m_main.h new file mode 100644 index 0000000..521ef04 --- /dev/null +++ b/src/parsec/include/m_main.h @@ -0,0 +1,85 @@ +/* + * PARSEC HEADER: m_main.h + */ + +#ifndef _M_MAIN_H_ +#define _M_MAIN_H_ + + +// menu mouse states + +enum { + + MOUSE_OVER_NOTHING = 0x0000, + + MOUSE_OVER_ENTER_SIMUL = 0x0100, + MOUSE_OVER_CURUP_SIMUL = 0x0200, + MOUSE_OVER_CURDN_SIMUL = 0x0400, + MOUSE_OVER_CURLF_SIMUL = 0x0800, + MOUSE_OVER_CURRT_SIMUL = 0x1000, + + MOUSE_OVER_BUTTON = 0x0001 | MOUSE_OVER_ENTER_SIMUL, + MOUSE_OVER_OPTION = 0x0002 | MOUSE_OVER_ENTER_SIMUL, + MOUSE_OVER_UPARROW = 0x0003 | MOUSE_OVER_CURUP_SIMUL, + MOUSE_OVER_DOWNARROW = 0x0004 | MOUSE_OVER_CURDN_SIMUL, + MOUSE_OVER_LEFTARROW = 0x0005 | MOUSE_OVER_CURLF_SIMUL, + MOUSE_OVER_RIGHTARROW = 0x0006 | MOUSE_OVER_CURRT_SIMUL, + MOUSE_OVER_SHIP = 0x0007 | MOUSE_OVER_ENTER_SIMUL +}; + + +// metrics of list window + +struct list_window_metrics_s { + + int valid; + + int frame_l; + int frame_r; + int frame_t; + int frame_b; + int chwidth; + int chheight; + int text_x; + int text_y; + int maxcontwidth; + int maxcontheight; +}; + + +// external functions + +void DrawFloatingMenu(); +void FloatingMenuKeyHandler(); + +void MenuNotifyConnect(); +void MenuNotifyDisconnect(); + +void ActivateFloatingMenu( int statuswin ); + +void SlideInFloatingMenu(); +void SlideOutFloatingMenu(); +void MoveInFloatingMenu(); +void MoveOutFloatingMenu(); +void HideFloatingMenu(); + +void ExitOptionsMenu(); + +// externally callable functions for automation ------------------------------- +// +void MENU_FloatingMenuEnterGame(); + + + + +// external variables + +extern int m_sintab[]; +extern int m_sintab_size; +extern int m_sintab_ampl; +extern int disable_join_game; + + +#endif // _M_MAIN_H_ + + diff --git a/src/parsec/include/m_option.h b/src/parsec/include/m_option.h new file mode 100644 index 0000000..5324040 --- /dev/null +++ b/src/parsec/include/m_option.h @@ -0,0 +1,67 @@ +/* + * PARSEC HEADER: m_option.h + */ + +#ifndef _M_OPTION_H_ +#define _M_OPTION_H_ + +extern bool mod_player_name; + +// options menu item ids + +enum { + + RES_OPT, + DEPTH_OPT, + FULL_OPT, + SYNC_OPT, + APPLY_VID_OPT, + TEXDETAIL_OPT, + GEOMDETAIL_OPT, + SFXDETAIL_OPT, + APPLY_DETAIL_OPT, + PROTOCOL_OPT, + KILL_LIMIT_OPT, + SOLAR_OPT, + APPLY_NET_OPT, + SOUND_OPT, + CTRL_OPT, + INVERT_OPT, + SENSITIVITY_OPT, + CENTER_OPT, +// APPLY_MOUSE_OPT, + NAME_OPT, + EXIT_OPT, + + NUM_OPTIONS +}; + + + + +// external functions + +int OptionsListSelection(); +void OptionsListSelectDefault(); +void OptionsListCursorUp(); +void OptionsListCursorDown(); +void OptionsKeyPressed(char key); + +int MouseOverOption( int mousex, int mousey ); + +void MoveInOptions(); +void MoveOutOptions(); +void SlideInOptions(); +void SlideOutOptions(); +int SlideFinishedOptions(); + +void InitOptionsSubsystemInfo(); +void InitOptionsWindow(); + +void ExecOptionSelection( int optno ); +void DrawOptionsMenuWindow(); + + +#endif // _M_OPTION_H_ + + diff --git a/src/parsec/include/m_status.h b/src/parsec/include/m_status.h new file mode 100644 index 0000000..d382049 --- /dev/null +++ b/src/parsec/include/m_status.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: m_status.h + */ + +#ifndef _M_STATUS_H_ +#define _M_STATUS_H_ + + +// external functions + +void DrawStatusWindow(); + +int FadeFinishedStatusWindow(); +void FadeOutStatusWindow(); +void FadeInStatusWindow(); +void HideStatusWindow(); + + +#endif // _M_STATUS_H_ + + diff --git a/src/parsec/include/m_viewer.h b/src/parsec/include/m_viewer.h new file mode 100644 index 0000000..3ec0e5e --- /dev/null +++ b/src/parsec/include/m_viewer.h @@ -0,0 +1,42 @@ +/* + * PARSEC HEADER: m_viewer.h + */ + +#ifndef _M_VIEWER_H_ +#define _M_VIEWER_H_ + + +// possible active viewer modes + +enum { + + SCVMODE_SPACECRAFT, + SCVMODE_OBJECTSRING +}; + + +#define NUM_SCV_OBJECTS 15 + + +// external functions + +int MouseOverViewerItem( int mousex, int mousey ); + +void FadeInBackground(); +void FadeOutBackground(); +int FadeFinishedBackground(); + +void SlideInShip(); +void SlideOutShip(); +int SlideFinishedShip(); + +void SlideInRing(); +void SlideOutRing(); +int SlideFinishedRing(); + +void DrawSpacecraftViewer(); + + +#endif // _M_VIEWER_H_ + + diff --git a/src/parsec/include/net_conn.h b/src/parsec/include/net_conn.h new file mode 100644 index 0000000..366ac99 --- /dev/null +++ b/src/parsec/include/net_conn.h @@ -0,0 +1,34 @@ +/* + * PARSEC HEADER: net_conn.h + */ + +#ifndef _NET_CONN_H_ +#define _NET_CONN_H_ + + +// external functions + +const char* NET_GetCurrentProtocolName(); +int NET_SwitchNetSubsys( const char *protocol ); + +int NET_AutomaticConnect(); +int NET_CommandConnect( const char *server ); +int NET_CommandDisconnect(); + + +// structure definitions + +struct protocol_s { + const char* name; + int id; +}; + + +// external variables + +extern protocol_s* protocol_table; + + +#endif // _NET_CONN_H_ + + diff --git a/src/parsec/include/net_game.h b/src/parsec/include/net_game.h new file mode 100644 index 0000000..15cdf07 --- /dev/null +++ b/src/parsec/include/net_game.h @@ -0,0 +1,92 @@ +/* + * PARSEC HEADER: net_game.h + */ + +#ifndef _NET_GAME_H_ +#define _NET_GAME_H_ + +// value alive counter is set to immediately +// after a packet has been received +#define MAX_ALIVE_COUNTER 12000 // 20 seconds + +// bufferno for virtual buffer +#define VIRTUAL_BUFFER_ID -1 // packet is virtual (packet replay) + +// ping packet type +#define PING_REQUEST 1 // request packet +#define PING_REPLY 0 // reply packet + +// special ship ids +#define SHIPID_LOCALPLAYER 0 // ship belongs to local player +#define SHIPID_NOSHIP -1 // there is no ship (player not joined) + +// special slot ids +#define SLOTID_CONNECT_REFUSED -1 // connection refused (all slots used) +#define SLOTID_DELETED -2 // skip request in slot-request queue +#define SLOTID_LOCALHOST -3 // slot id flag for local player +#define SLOTID_NOT_ASSIGNED -4 // slot id has not been assigned yet + +// connect/join status macros +#define REMOTE_PLAYER_ACTIVE(x) ( ( Player_Status[ x ] != PLAYER_INACTIVE ) && ( Player_ShipId[ x ] != SHIPID_LOCALPLAYER ) ) +#define REMOTE_PLAYER_JOINED(x) ( ( Player_Status[ x ] == PLAYER_JOINED ) && ( Player_ShipId[ x ] != SHIPID_LOCALPLAYER ) ) + + +// inline functions + +inline +void CopyRemoteNode( node_t& dest, node_t& src ) +{ + dest = src; +} + +inline +void CopyRemoteName( char *dest, const char *src ) +{ + strncpy( dest, src, MAX_PLAYER_NAME ); + dest[ MAX_PLAYER_NAME ] = 0; +} + + +// external functions + +void NET_ForceDisconnect(); + +void NET_InitLocalPlayer(); +void NET_InitRemotePlayerTables(); +void NET_RemoveRemotePlayers(); + +void NET_SetRemotePlayerState( int id, int status, int objclass, int killstat ); +void NET_SetRemotePlayerMatrix( int id, const Xmatrx matrix ); +void NET_SetRemotePlayerName( int id, const char *name ); + +int NET_RegisterRemotePlayer( int slotid, node_t *node, char *name ); + +void NET_RmEvListReset(); +void NET_RmEvListUpdateLocations(); + +void NET_RmEvSingleClear ( RE_Header* relist ); +void NET_RmEvSinglePlayerName ( RE_Header* relist ); +void NET_RmEvSinglePlayerStatus ( RE_Header* relist, word desired_player_state, int unjoin_flag, int killer ); +void NET_RmEvSinglePlayerAndShipStatus( RE_Header* relist, word desired_player_state, int unjoin_flag, int killer ); + +void NET_InterpolatePlayer( int playerid ); +void NET_FillShipRemInfo( ShipRemInfo *info, ShipObject *shippo, int playerid ); +void NET_ExecShipRemInfo( ShipRemInfo *info, ShipObject *shippo, int senderid ); +void NET_FreezeKillStats( int freeze ); + +void NET_SetDesiredPlayerStatus( RE_PlayerAndShipStatus* pas_status ); +void NET_PlayerDisconnected( int playerid ); +void NET_RemovePlayer( int playerid ); + + +// external variables + +extern node_t LocalNode; +extern node_t LocalBroadcast; +extern node_t Server_Node; +extern node_t Player_Node[]; +extern char REListMem[]; + +#endif // _NET_GAME_H_ + + diff --git a/src/parsec/include/net_game_gmsv.h b/src/parsec/include/net_game_gmsv.h new file mode 100644 index 0000000..d71900d --- /dev/null +++ b/src/parsec/include/net_game_gmsv.h @@ -0,0 +1,30 @@ +/* + * PARSEC HEADER: net_game_gmsv.h + */ + +#ifndef _NET_GAME_GMSV_H_ +#define _NET_GAME_GMSV_H_ + + +// net_game_gmsv.c implements the following functions +// -------------------------------------------------- +// size_t NETs_RmEvList_GetMaxSize(); +// void NETs_UpdateKillStats( RE_KillStats* killstats ); + + + +// external functions --------------------------------------------------------- +// +void NET_DisconnectNoConnection(); +void NET_ResyncLocalPlayer( RE_PlayerAndShipStatus* pas_status ); + +// declare prototypes when we do not compile for shared lib gamecode support -- +// +void NET_PingCurrentServer(); +void NET_ProcessPingPacket( NetPacket_GMSV* gamepacket ); +void NET_Handle_STREAM ( NetPacket_GMSV* gamepacket ); + + +#endif // _NET_PEER_H_ + + diff --git a/src/parsec/include/net_game_peer.h b/src/parsec/include/net_game_peer.h new file mode 100644 index 0000000..c17c9d1 --- /dev/null +++ b/src/parsec/include/net_game_peer.h @@ -0,0 +1,60 @@ +/* + * PARSEC HEADER: net_game_peer.h + */ + +#ifndef _NET_GAME_PEER_H_ +#define _NET_GAME_PEER_H_ + + +// net_game_peer.c implements the following functions +// -------------------------------------------------- +// size_t NETs_RmEvList_GetMaxSize(); +// void NETs_UpdateKillStats( RE_KillStats* killstats ); + + +// external functions --------------------------------------------------------- +// + + +// declare prototypes when we do not compile for shared lib gamecode support -- +// +int NET_AcquireRemoteSlot ( node_t *node ); +int NET_AddSlotRequest ( node_t *node, char *name, int timetag ); +int NET_DelSlotRequest ( node_t *node ); +int NET_MergeSlotRequests ( NetPacket_PEER* gamepacket, int timetag ); +void NET_ResetSlotReqQueue (); +void NET_RmEvSinglePlayerTable ( NetPacket_PEER* gamepacket ); +void NET_RmEvSingleConnectQueue ( NetPacket_PEER* gamepacket ); +void NET_SetPacketKillStats ( NetPacket_PEER* gamepacket ); +void NET_Translate_PKTP_JOIN ( NetPacket_PEER* gamepacket, RE_PlayerAndShipStatus* pShipStatus ); +void NET_Translate_PKTP_GAME_STATE ( NetPacket_PEER* gamepacket, RE_PlayerAndShipStatus* pShipStatus, RE_KillStats* pKillStats ); +void NET_Translate_PKTP_UNJOIN ( NetPacket_PEER* gamepacket, RE_PlayerAndShipStatus* pShipStatus, RE_KillStats* pKillStats ); +void NET_Translate_PKTP_NODE_ALIVE ( NetPacket_PEER* gamepacket, RE_PlayerAndShipStatus* pShipStatus, RE_KillStats* pKillStats ); + + +// special slotrequest timetags ----------------------------------------------- +// +#define TIMETAG_LOCALHOST -1 +#define TIMETAG_REPLYNOW -2 + + +// slot request structure (entry in slot request queue) ----------------------- +// +struct slotrequest_s { + + int slotid; + int timetag; + node_t node; + char name[ MAX_PLAYER_NAME + 1 ]; +}; + + +// external variables --------------------------------------------------------- +// +extern int NumSlotRequests; +extern slotrequest_s SlotReqQueue[]; + + +#endif // _NET_PEER_H_ + + diff --git a/src/parsec/include/net_glob.h b/src/parsec/include/net_glob.h new file mode 100644 index 0000000..c21e259 --- /dev/null +++ b/src/parsec/include/net_glob.h @@ -0,0 +1,144 @@ +/* + * PARSEC HEADER: net_glob.h + */ + +#ifndef _NET_GLOB_H_ +#define _NET_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// NETWORKING SUBSYSTEM (NET) related global declarations and definitions - +// ---------------------------------------------------------------------------- + + +// forward declarations ------------------------------------------------------- +// +struct node_t; +struct RE_Header; +struct RE_KillStats; +struct NetPacket; +struct NetPacketExternal; +struct ShipRemInfo; +class NET_Stream; + + +extern int LocalPlayerId; +extern char LocalPlayerName[]; + +extern int NetAvailable; +extern int NetworkGameMask; +extern int NetConnected; +extern int NetJoined; +extern int EntryMode; +extern int ShipDowned; +extern int Packet_Send_Frametime; +extern int Packet_Send_Frequency; +extern int Packet_Recv_Rate; +extern int HaveFullPlayerState; // indicates whether we have received a full playerstate from the server + +extern refframe_t ServerTimeoutFrames; // # of refframes the server times out + +extern int NetInterfaceSelect; + +extern char* CurServerToResolve; +extern int CurServerID; +extern char* CurServerName; +extern int CurServerPing; +extern node_t* CurJumpServerNode; +extern int CurMaxPlayers; +extern int CurMaxDataLength; +extern int CurKillUpdate; +extern int CurKiller; +extern int MyUniverse; +extern int NumRemPlayers; +extern int CurSendMessageId_PEER; +extern int CurGameTime; +extern int ServerPingTime; + +extern int RE_List_Avail; +extern char* RE_List_CurPos; + +extern int Player_Status[]; +extern GenObject* Player_Ship[]; +extern int Player_ShipId[]; +extern int Player_AliveCounter[]; +extern int Player_UpToDate[]; +extern int Player_KillStat[]; +extern int Player_LastMsgId[]; +extern int Player_LastUpdateGameStateMsgId[]; +extern char Player_Name[][ MAX_PLAYER_NAME + 1 ]; + +extern char* Masters[]; + + +// NETWORKING subsystem jump table for dynamic function binding --------------- +// +struct net_subsys_jtab_s { + + // PROTOCOL API + + int (* Connect ) (); + int (* Disconnect ) (); + int (* Join ) (); + int (* Unjoin ) ( byte flag ); + + int (* UpdateName ) (); + + void (* MaintainNet ) (); + + // PROTOCOL API - GAME + + size_t (* RmEvList_GetMaxSize) (); + void (* UpdateKillStats) ( RE_KillStats* killstats ); + + // PROTOCOL API - PACKET HANDLING + + size_t (* HandleOutPacket) ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket ); + size_t (* HandleOutPacket_DEMO ) ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket ); + int (* HandleInPacket) ( const NetPacketExternal* ext_gamepacket, const int ext_pktsize, NetPacket* int_gamepacket ); + int (* HandleInPacket_DEMO ) ( const NetPacketExternal* ext_gamepacket, NetPacket* int_gamepacket, size_t* psize_external ); + void (* StdGameHeader) ( byte command, NetPacket* gampacket ); + size_t (* NetPacketExternal_DEMO_GetSize ) ( const NetPacketExternal* ext_gamepacket ); + void (* WritePacketInfo ) ( FILE *fp, NetPacketExternal* ext_gamepacket ); + + // PACKET API + + int (* CompareNodes )( node_t *node1, node_t *node2 ); + int (* VirtualNode )( node_t *node ); + void (* SetVirtualAddress )( node_t *node ); + void (* SetBroadcastAddress )( node_t *node ); + + void (* ResolveNode )( node_t* node_dst, node_t* node_src ); + void (* MakeNodeRaw )( node_t* node_dst, node_t* node_src ); + node_t* (* GetSender )( int bufid ); + void (* ResolveSender )( node_t *node, int bufid ); + + void (* PrintNode )( node_t *node ); + + void (* ProcessPacketChain ) ( void (*procfunc)( NetPacket* gamepacket, int bufid ) ); + void (* FlushListenBuffers )(); + int (* InsertVirtualPacket )( NetPacket* gamepacket ); + int (* DeterminePacketLoss )( char **info, int *isiz, int incoming ); + + int (* SleepUntilInput) ( int timeout_msec ); + + void (* SendPacket ) ( NetPacket *gamepacket, node_t *node ); + void (* AuxSendPacket ) ( NetPacket *gamepacket, node_t *node ); + + int (* ResetAPI )(); + int (* InitAPI )(); + int (* KillAPI )(); + +}; + +// exported by NET_GLOB.C ----------------------------------------------------- +// +extern net_subsys_jtab_s net_subsys_jtab; + +// exported by NET_UDP.C ------------------------------------------------------ +// +extern NET_Stream ServerStream; + +#endif // _NET_GLOB_H_ + + diff --git a/src/parsec/include/net_gmsv.h b/src/parsec/include/net_gmsv.h new file mode 100644 index 0000000..7a2c25c --- /dev/null +++ b/src/parsec/include/net_gmsv.h @@ -0,0 +1,46 @@ +/* + * PARSEC HEADER: net_gmsv.h + */ + +#ifndef _NET_GMSV_H_ +#define _NET_GMSV_H_ + + +// net_gmsv.c implements the following functions +// --------------------------------------------- +// int NETs_Connect( char *server ); +// int NETs_Disconnect(); +// int NETs_Join(); +// int NETs_Unjoin( byte flag ); +// int NETs_UpdateName(); +// void NETs_MaintainNet(); + + +#ifdef DBIND_PROTOCOL + + #undef NETs_Connect + #undef NETs_Disconnect + #undef NETs_Join + #undef NETs_Unjoin + #undef NETs_UpdateName + #undef NETs_MaintainNet + + #define NETs_Connect NETs_GAMESERVER_Connect + #define NETs_Disconnect NETs_GAMESERVER_Disconnect + #define NETs_Join NETs_GAMESERVER_Join + #define NETs_Unjoin NETs_GAMESERVER_Unjoin + #define NETs_UpdateName NETs_GAMESERVER_UpdateName + #define NETs_MaintainNet NETs_GAMESERVER_MaintainNet + +#endif // DBIND_PROTOCOL + + +// external functions --------------------------------------------------------- +// +void NET_ProcPacketLoop_GMSV( NetPacket* int_gamepacket, int bufid ); +void NET_ProcPacketLoop_Disconnected_GMSV( NetPacket* int_gamepacket, int bufid ); + + +#endif // _NET_GMSV_H_ + + diff --git a/src/parsec/include/net_pckt_peer.h b/src/parsec/include/net_pckt_peer.h new file mode 100644 index 0000000..a1ef16e --- /dev/null +++ b/src/parsec/include/net_pckt_peer.h @@ -0,0 +1,23 @@ +/* + * PARSEC HEADER: net_pckt_peer.h + */ + +#ifndef _NET_PCKT_PEER_H_ +#define _NET_PCKT_PEER_H_ + +// net_pckt_peer.c implements the following functions +// --------------------------------------------- +// size_t NETs_HandleOutPacket ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket ); +// size_t NETs_HandleOutPacket_DEMO ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket ); +// int NETs_HandleInPacket ( const NetPacketExternal* ext_gamepacket, const int ext_pktlen, NetPacket* int_gamepacket ); +// int NETs_HandleInPacket_DEMO ( const NetPacketExternal* ext_gamepacket, NetPacket* int_gamepacket, size_t& psize ); +// size_t NETs_NetPacketExternal_DEMO_GetSize ( const NetPacketExternal* ext_gamepacket ); +// void NETs_StdGameHeader ( byte command, NetPacket* gamepacket ); +// void NETs_WritePacketInfo ( FILE *fp, NetPacketExternal* ext_gamepacket ); + +// external functions + + +#endif // _NET_PCKT_PEER_H_ + + diff --git a/src/parsec/include/net_peer.h b/src/parsec/include/net_peer.h new file mode 100644 index 0000000..1a2aa7c --- /dev/null +++ b/src/parsec/include/net_peer.h @@ -0,0 +1,40 @@ +/* + * PARSEC HEADER: net_peer.h + */ + +#ifndef _NET_PEER_H_ +#define _NET_PEER_H_ + + +// net_peer.c implements the following functions +// --------------------------------------------- +// int NETs_Connect(); +// int NETs_Disconnect(); +// int NETs_Join(); +// int NETs_Unjoin( byte flag ); +// int NETs_UpdateName(); +// void NETs_MaintainNet(); + + +#ifdef DBIND_PROTOCOL + +#undef NETs_Connect +#undef NETs_Disconnect +#undef NETs_Join +#undef NETs_Unjoin +#undef NETs_UpdateName +#undef NETs_MaintainNet + +#define NETs_Connect NETs_PEERTOPEER_Connect +#define NETs_Disconnect NETs_PEERTOPEER_Disconnect +#define NETs_Join NETs_PEERTOPEER_Join +#define NETs_Unjoin NETs_PEERTOPEER_Unjoin +#define NETs_UpdateName NETs_PEERTOPEER_UpdateName +#define NETs_MaintainNet NETs_PEERTOPEER_MaintainNet + +#endif + + +#endif // _NET_PEER_H_ + + diff --git a/src/parsec/include/net_prediction.h b/src/parsec/include/net_prediction.h new file mode 100644 index 0000000..05795ea --- /dev/null +++ b/src/parsec/include/net_prediction.h @@ -0,0 +1,93 @@ +#ifndef NET_PredICTIONMANAGER_H_ +#define NET_PredICTIONMANAGER_H_ + +// forward decls -------------------------------------------------------------- +// +class NET_Stream; + +// constants ------------------------------------------------------------------ +// +#define MAX_NUM_PREDICTIONS 1000 + +// virtual base class for all prediction events ------------------------------- +// +class NET_PredEvent +{ +public: + NET_PredEvent() : m_nMessageId( 0 ), m_nDoCount(0) {} + virtual ~NET_PredEvent() {}; + virtual void Do() { m_nDoCount++; } + void SetMessageId( dword nMessageId ) { m_nMessageId = nMessageId; } + dword GetMessageId() { return m_nMessageId; } + int GetDoCount() { return m_nDoCount; } +protected: + dword m_nMessageId; + int m_nDoCount; +}; + + +// typedefs ------------------------------------------------------------------- +// +typedef UTL_listentry_s LE_PredEvt; + + +// special implementation for an extra collect prediction event --------------- +// +class G_PredEventExtraCollect : public NET_PredEvent +{ +public: + G_PredEventExtraCollect( ExtraObject* pExtra ); + void Do(); + +protected: + ExtraObject* m_pExtra; +}; + + +// the prediction manager ----------------------------------------------------- +// +class NET_PredictionManager +{ +public: + //NOTE: stores information about events that were predicted in the game-engine + // whenever the game-engine modifies the local world, we save a prediction that includes a checkpoint ( = next outgoing message id ) + // whenever we receive a packet, we clear all predictions inserted before the ACK checkpoint + // and we re-apply all pending predictions not yet ACK ( checkpoint # is synonym for message id ) + + // INITIALIZERS + // standard ctor + NET_PredictionManager( NET_Stream* pStream ); + + // standard dtor + ~NET_PredictionManager(); + + + // MODIFIERS + // reset all data + void Reset(); + + // clear all predictions up to the message# and reapply all predictions after the message# + void DoCheckpoint( dword MessageId ); + + // predictions + void PredictExtraCollect( ExtraObject* pExtra ); + + // ACCESSORS + // return the # of predictions pending + int GetNumPredictions() { return m_predictions->GetNumEntries(); } + +protected: + UTL_List* m_predictions; + NET_Stream* m_pStream; + +protected: + // add a predictionevent + // ensures that MAX_NUM_PREDICTIONS is not exceeded + void _AddPrediction( NET_PredEvent* pEvent ); +}; + +// external global ------------------------------------------------------------ +// +extern NET_PredictionManager ThePredictionManager; + +#endif // NET_PredICTIONMANAGER_H_ diff --git a/src/parsec/include/net_rmev.h b/src/parsec/include/net_rmev.h new file mode 100644 index 0000000..b2ded5b --- /dev/null +++ b/src/parsec/include/net_rmev.h @@ -0,0 +1,95 @@ +/* + * PARSEC HEADER: net_rmev.h + */ + +#ifndef _NET_RMEV_H_ +#define _NET_RMEV_H_ + + +// net_rmev.c implements the following functions +// --------------------------------------------- +// int NET_RmEvAllowed( int re_type ); +// size_t NET_RmEvGetSize( RE_Header *relist ); +// int NET_RmEvPlayerName( char *name ); +// int NET_RmEvSendText( const char *text ); +// int NET_RmEvObject( const GenObject *objpo ); +// int NET_RmEvLaser( const LaserObject *laserpo ); +// int NET_RmEvMissile( const MissileObject *missilepo, dword targetobjid ); +// int NET_RmEvExtra( const ExtraObject *extrapo ); +// int NET_RmEvParticleObject( int type, const Vertex3& origin ); +// int NET_RmEvKillObject( dword objid, byte listno ); +// int NET_RmEvWeaponState( dword weapon, byte state, int energy, dword specials ); +// int NET_RmEvStateSync( dword statekey, dword stateval ); +// int NET_RmEvCreateSwarm( dword owner, dword targetobjid, dword seed ); +// int NET_RmEvCreateEmp( int upgradelevel ); +// RE_PlayerAndShipStatus* NET_RmEvPlayerAndShipStatus(); +// +// void NET_ExecRmEvCreateObject ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvCreateLaser ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvCreateMissile ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvParticleObject ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvCreateExtra ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvKillObject ( RE_Header *rmev ); +// void NET_ExecRmEvSendText ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvPlayerName ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvWeaponState ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvStateSync ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvCreateSwarm ( RE_Header *rmev, int ownerid ); +// void NET_ExecRmEvCreateEmp ( RE_Header *rmev, int ownerid ); + +// void NET_ExecRmEvGameState ( RE_GameState* gamestate ); +// void NET_ExecRmEvKillStats ( RE_KillStats* killstats ); +// void NET_ExecRmEvCommandInfo ( RE_CommandInfo* commandinfo ); + + +// syncable remote state ids + +enum { + + RMEVSTATE_NEBULAID, + RMEVSTATE_PROBEXTRA, + RMEVSTATE_PROBHELIX, + RMEVSTATE_PROBLIGHTNING, + RMEVSTATE_PROBPHOTON, + RMEVSTATE_PROBMINE, + RMEVSTATE_PROBREPAIR, + RMEVSTATE_PROBAFTERBURNER, + RMEVSTATE_PROBHOLODECOY, + RMEVSTATE_PROBINVISIBILITY, + RMEVSTATE_PROBINVULNERABILITY, + RMEVSTATE_PROBENERGYFIELD, + RMEVSTATE_PROBLASERUPGRADE, + RMEVSTATE_PROBLASERUPGRADE1, + RMEVSTATE_PROBLASERUPGRADE2, + RMEVSTATE_PROBMISSPACK, + RMEVSTATE_PROBDUMBPACK, + RMEVSTATE_PROBGUIDEPACK, + RMEVSTATE_PROBSWARMPACK, + RMEVSTATE_PROBEMPUPGRADE1, + RMEVSTATE_PROBEMPUPGRADE2, + RMEVSTATE_AMAZING, + RMEVSTATE_BRILLIANT, + RMEVSTATE_KILLLIMIT, + RMEVSTATE_ENERGYBOOST, + RMEVSTATE_REPAIRBOOST, + RMEVSTATE_DUMBPACK, + RMEVSTATE_HOMPACK, + RMEVSTATE_SWARMPACK, + RMEVSTATE_PROXPACK, + + RMEVSTATE_NUMSTATES +}; + + +// external functions --------------------------------------------------------- +// +size_t NET_RmEvList_GetSize( RE_Header* relist ); +int NET_RmEvList_IsWellFormed( RE_Header* relist ); + +#endif // _NET_RMEV_H_ + + + + + + diff --git a/src/parsec/include/net_rmev_gmsv.h b/src/parsec/include/net_rmev_gmsv.h new file mode 100644 index 0000000..8d70230 --- /dev/null +++ b/src/parsec/include/net_rmev_gmsv.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: net_rmev_gmsv.h + */ + +#ifndef _NET_RMEV_GMSV_H_ +#define _NET_RMEV_GMSV_H_ + + +// net_rmev_gmsv.c implements the following functions +// -------------------------------------------------- +// void NET_ExecRmEvCommandInfo( RE_CommandInfo* commandinfo ); + +// external functions --------------------------------------------------------- +// +void NET_ProcessRmEvList_GMSV( NetPacket_GMSV* gamepacket ); +RE_CommandInfo* NET_RmEvSingleCommandInfo( NetPacket_GMSV* gamepacket, const char* commandstring ); + +#endif // _NET_RMEV_GMSV_H_ + + diff --git a/src/parsec/include/net_rmev_peer.h b/src/parsec/include/net_rmev_peer.h new file mode 100644 index 0000000..340b956 --- /dev/null +++ b/src/parsec/include/net_rmev_peer.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: net_rmev_peer.h + */ + +#ifndef _NET_RMEV_PEER_H_ +#define _NET_RMEV_PEER_H_ + + +// net_rmev_peer.c implements the following functions +// -------------------------------------------------- + + +// external functions + +void NET_ProcessNodeAlive_PEER( NetPacket_PEER* gamepacket ); +void NET_UpdateGameState_PEER ( NetPacket_PEER* gamepacket ); + + +#endif // _NET_RMEV_PEER_H_ + + diff --git a/src/parsec/include/net_serv.h b/src/parsec/include/net_serv.h new file mode 100644 index 0000000..f2c260d --- /dev/null +++ b/src/parsec/include/net_serv.h @@ -0,0 +1,77 @@ +/* + * PARSEC HEADER: net_serv.h + */ + +#ifndef _NET_SERV_H_ +#define _NET_SERV_H_ + + +//NOTE: +// these functions are only needed by the GMSV protocol +// they are implemented by NET_SERV.C. + + +// server access functions + +int NET_ResolveServerNode(); +int NET_ServerConnect(); +int NET_ServerDisconnect(); +void NET_ServerDisconnectReset(); +int NET_ServerJump(); +void NET_ServerMessages(); +int NET_ServerUpdateName(); +int NET_ServerParseMessage( char* msg ); +void NET_ServerProcessPingPacket( NetPacket_GMSV* gamepacket ); +int NET_ServerList_Get( char* masterhostname, int serverid = -1 ); +int NET_ServerList_AddServer( RE_IPv4ServerInfo* pServerInfo ); +int NET_ServerList_UpdateServer( RE_IPv4ServerInfo* pServerInfo ); +int NET_ServerList_AddLinkInfo( RE_ServerLinkInfo* pServerLinkInfo ); +int NET_ServerList_AddMapObject( RE_MapObject* pMapObject ); +int NET_ServerList_SetPONG( int serverid, refframe_t sendframe, int curplayers, int maxplayers ); +int NET_ServerList_SetINFO( int serverid, refframe_t framediff, int curplayers, int maxplayers, int srv_version_minor, int srv_version_major, char* srv_name ); +int NET_ServerPing( node_t* node, int anon, int fullinfo = FALSE ); + +// defaults for "SERVRLIST" command ------------------------------------------- +// +#define DEFAULT_SERVERLIST_MIN_PING 0 +#define DEFAULT_SERVERLIST_MAX_PING 9999 +#define DEFAULT_SERVERLIST_MIN_PLAYERS 0 +#define DEFAULT_SERVERLIST_MAX_PLAYERS MAX_NET_ALLOC_SLOTS +#define DEFAULT_SERVERLIST_LOCALE 1 + +// all info about a "SERVERLIST" command -------------------------------------- +// +struct serverlist_info_s { + + int m_ListRequested; + int m_nMinPing; + int m_nMaxPing; + int m_nMinPlayers; + int m_nMaxPlayers; + int m_nLocale; + + word m_RequestedServerIDs[ MAX_NUM_LINKS ]; + int m_nNumRequestedServerIDs; + + serverlist_info_s() + { + Reset(); + } + + void Reset() + { + m_ListRequested = FALSE; + m_nMinPing = DEFAULT_SERVERLIST_MIN_PING; + m_nMaxPing = DEFAULT_SERVERLIST_MAX_PING; + m_nMinPlayers = DEFAULT_SERVERLIST_MIN_PLAYERS; + m_nMaxPlayers = DEFAULT_SERVERLIST_MAX_PLAYERS; + m_nLocale = DEFAULT_SERVERLIST_LOCALE; + m_nNumRequestedServerIDs = 0; + } +}; + +extern serverlist_info_s serverlist_info; + +#endif // _NET_SERV_H_ + + diff --git a/src/parsec/include/net_subh.h b/src/parsec/include/net_subh.h new file mode 100644 index 0000000..439a9b0 --- /dev/null +++ b/src/parsec/include/net_subh.h @@ -0,0 +1,167 @@ +/* + * PARSEC HEADER: net_subh.h + */ + +#ifndef _NET_SUBH_H_ +#define _NET_SUBH_H_ + + +// ---------------------------------------------------------------------------- +// NETWORKING SUBSYSTEM (NET) system-dependent function declarations - +// ---------------------------------------------------------------------------- + + +// remote event functions (RMEV) + +int NET_RmEvAllowed( int re_type ); +size_t NET_RmEvGetSize( RE_Header *relist ); +int NET_RmEvPlayerName( const char *name ); +int NET_RmEvSendText( const char *text ); +int NET_RmEvObject( const GenObject *objpo ); +int NET_RmEvLaser( const LaserObject *laserpo ); +int NET_RmEvMissile( const MissileObject *missilepo, dword targetobjid ); +int NET_RmEvExtra( const ExtraObject *extrapo ); + int NET_RmEvMine( const ExtraObject *extrapo ); +int NET_RmEvParticleObject( int type, const Vertex3& origin ); +int NET_RmEvKillObject( dword objid, byte listno ); +int NET_RmEvWeaponState( dword weapon, byte state, int energy, dword specials ); +int NET_RmEvStateSync( dword statekey, dword stateval ); +int NET_RmEvCreateSwarm( Vector3 *origin, dword targetobjid, dword seed ); +int NET_RmEvCreateEmp( int upgradelevel ); +RE_PlayerStatus* NET_RmEvPlayerStatus( byte last_unjoin_flag ); +RE_PlayerAndShipStatus* NET_RmEvPlayerAndShipStatus( byte last_unjoin_flag ); +RE_ClientInfo* NET_RmEvClientInfo( int nSendFreq, int nRecvRate ); + +void NET_ExecRmEvCreateObject ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvCreateLaser ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvCreateMissile ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvParticleObject ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvCreateExtra ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvKillObject ( RE_Header *rmev ); +void NET_ExecRmEvSendText ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvPlayerName ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvWeaponState ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvStateSync ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvCreateSwarm ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvCreateEmp ( RE_Header *rmev, int ownerid ); + +void NET_ExecRmEvPlayerAndShipStatus ( RE_PlayerAndShipStatus* pas_status, dword messageid ); +void NET_ExecRmEvGameState ( RE_GameState* gamestate ); +void NET_ExecRmEvKillStats ( RE_KillStats* killstats ); +void NET_ExecRmEvCommandInfo ( RE_CommandInfo* commandinfo ); +void NET_ExecRmEvCreateExtra2 ( RE_Header *rmev, int ownerid ); +void NET_ExecRmEvIPv4ServerInfo ( RE_IPv4ServerInfo* pIPv4ServerInfo ); +void NET_ExecRmEvServerLinkInfo ( RE_ServerLinkInfo* pServerLinkInfo ); +void NET_ExecRmEvMapObject ( RE_MapObject* pMapObject ); +void NET_ExecRmEvStargate ( RE_Stargate* pRE_Stargate ); + +// utility functions (UTIL) + +int NET_ProtocolPEER(); +int NET_ProtocolGMSV(); + +int NET_ConnectedPEER(); +int NET_ConnectedGMSV(); + +char* NET_FetchPlayerName( int playerid ); +int NET_SetPlayerName( const char *name ); +ShipObject* NET_FetchOwnersShip( int ownerid ); +void NET_SetPlayerKillStat( int playerid, int amount ); + +int NET_KillStatLimitReached( int limit ); +void NET_KillStatForceIdleZero(); + +void NET_DrawEntryModeText(); + + +#ifdef DBIND_PROTOCOL + + // protocol api functions + + #define NETs_Connect (*net_subsys_jtab.Connect) + #define NETs_Disconnect (*net_subsys_jtab.Disconnect) + #define NETs_Join (*net_subsys_jtab.Join) + #define NETs_Unjoin (*net_subsys_jtab.Unjoin) + + #define NETs_UpdateName (*net_subsys_jtab.UpdateName) + + #define NETs_MaintainNet (*net_subsys_jtab.MaintainNet) + + // protocol api - game functions + + #define NETs_RmEvList_GetMaxSize (*net_subsys_jtab.RmEvList_GetMaxSize) + #define NETs_UpdateKillStats (*net_subsys_jtab.UpdateKillStats) + + // protocol api - packet handling functions + + #define NETs_HandleOutPacket (*net_subsys_jtab.HandleOutPacket) + #define NETs_HandleOutPacket_DEMO (*net_subsys_jtab.HandleOutPacket_DEMO) + #define NETs_HandleInPacket (*net_subsys_jtab.HandleInPacket) + #define NETs_HandleInPacket_DEMO (*net_subsys_jtab.HandleInPacket_DEMO) + #define NETs_NetPacketExternal_DEMO_GetSize (*net_subsys_jtab.NetPacketExternal_DEMO_GetSize) + #define NETs_StdGameHeader (*net_subsys_jtab.StdGameHeader) + #define NETs_WritePacketInfo (*net_subsys_jtab.WritePacketInfo) + +#else // DBIND_PROTOCOL + + // protocol api functions + + int NETs_Connect(); + int NETs_Disconnect(); + int NETs_Join(); + int NETs_Unjoin( byte flag ); + + int NETs_UpdateName(); + + void NETs_MaintainNet(); + + // protocol api - game functions + + size_t NETs_RmEvList_GetMaxSize(); + void NETs_UpdateKillStats( RE_KillStats* killstats ); + + // protocol api - packet handling functions + + size_t NETs_HandleOutPacket ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket ); + size_t NETs_HandleOutPacket_DEMO ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket ); + int NETs_HandleInPacket ( const NetPacketExternal* ext_gamepacket, const int ext_pktsize, NetPacket* int_gamepacket ); + int NETs_HandleInPacket_DEMO ( const NetPacketExternal* ext_gamepacket, NetPacket* int_gamepacket, size_t* psize_external ); + size_t NETs_NetPacketExternal_DEMO_GetSize( NetPacketExternal* ext_gamepacket ); + void NETs_StdGameHeader( byte command, NetPacket* gamepacket ); + void NETs_WritePacketInfo( FILE *fp, NetPacketExternal* ext_gamepacket ); + +#endif // DBIND_PROTOCOL + + +// packet api functions + +int NETs_CompareNodes( node_t *node1, node_t *node2 ); +int NETs_VirtualNode( node_t *node ); +void NETs_SetVirtualAddress( node_t *node ); +void NETs_SetBroadcastAddress( node_t *node ); + +void NETs_ResolveNode( node_t* node_dst, node_t* node_src ); +void NETs_MakeNodeRaw( node_t* node_dst, node_t* node_src ); +node_t* NETs_GetSender( int bufid ); +void NETs_ResolveSender( node_t *node, int bufid ); + +void NETs_PrintNode( node_t *node ); + +void NETs_FlushListenBuffers(); +void NETs_ProcessPacketChain ( void (*procfunc)(NetPacket* gamepacket,int bufid) ); +int NETs_InsertVirtualPacket( NetPacket* gamepacket ); +int NETs_DeterminePacketLoss( char **info, int *isiz, int incoming ); + +int NETs_SleepUntilInput( int timeout_msec ); + +void NETs_SendPacket ( NetPacket* gamepacket, node_t* node ); +void NETs_AuxSendPacket ( NetPacket* gamepacket, node_t* node ); + +int NETs_ResetAPI(); +int NETs_InitAPI(); +int NETs_KillAPI(); + + +#endif // _NET_SUBH_H_ + + diff --git a/src/parsec/include/net_udp.h b/src/parsec/include/net_udp.h new file mode 100644 index 0000000..f606e57 --- /dev/null +++ b/src/parsec/include/net_udp.h @@ -0,0 +1,33 @@ +/* + * PARSEC HEADER: net_udp.h + */ + +#ifndef _NET_UDP_H_ +#define _NET_UDP_H_ + + +// net_udp.c implements the following functions +// ------------------------------------------- +// int NETs_CompareNodes( node_t *node1, node_t *node2 ); +// int NETs_VirtualNode( node_t *node ); +// void NETs_SetVirtualAddress( node_t *node ); +// void NETs_SetBroadcastAddress( node_t *node ); +// void NETs_ResolveNode( node_t *node, node_t *noderaw ); +// void NETs_MakeNodeRaw( node_t *noderaw, node_t *node ); +// node_t* NETs_GetSender( int bufid ); +// void NETs_ResolveSender( node_t *node, int bufid ); +// void NETs_PrintNode( node_t *node ); +// void NETs_FlushListenBuffers(); +// void NETs_ProcessPacketChain( void (*procfunc)(NetPacket* gamepacket,int bufid) ); +// int NETs_InsertVirtualPacket( NetPacket* gamepacket ); +// int NETs_DeterminePacketLoss( char **info, int *isiz, int incoming ); +// void NETs_SendPacket( NetPacket* gamepacket, node_t* node ); +// void NETs_AuxSendPacket( NetPacket* gamepacket, node_t* node ); +// int NETs_ResetAPI(); +// int NETs_InitAPI(); +// int NETs_KillAPI(); + + +#endif // _NET_UDP_H_ + + diff --git a/src/parsec/include/net_udpdf.h b/src/parsec/include/net_udpdf.h new file mode 100644 index 0000000..0003e49 --- /dev/null +++ b/src/parsec/include/net_udpdf.h @@ -0,0 +1,31 @@ +/* + * PARSEC HEADER: net_udpdf.h + */ + +#ifndef _NET_UDPDF_H_ +#define _NET_UDPDF_H_ + +#include "net_ports.h" + +// default timeout value for connection to server ----------------------------- +// +#define DEFAULT_TIMEOUT_SERVER_CONNECTION 10 * FRAME_MEASURE_TIMEBASE + + +// external functions --------------------------------------------------------- +// +void UDP_StoreNodePort( node_t *node, word port ); +word UDP_GetNodePort( node_t *node ); +int NET_ResolveHostName( const char* hostname, char* ipaddress, node_t* node ); + + +// UDP packet platform specific functions ------------------------------------- +// +int UDPs_GetLocalIP(); +void UDPs_GetLocalBroadcast(); +int UDPs_InitOSNetAPI(); +void UDPs_KillOSNetAPI(); + +#endif // _NET_UDPDF_H_ + + diff --git a/src/parsec/include/net_univ.h b/src/parsec/include/net_univ.h new file mode 100644 index 0000000..e182be1 --- /dev/null +++ b/src/parsec/include/net_univ.h @@ -0,0 +1,40 @@ +/* + * PARSEC HEADER: net_univ.h + */ + +#ifndef _NET_UNIV_H_ +#define _NET_UNIV_H_ + + +// for server_s --------------------------------------------------------------- +// +#include "net_csdf.h" + +// max. # of entries in the linklist ------------------------------------------ +// +#define MAX_LINKLIST_SIZE MAX_SERVERS * MAX_NUM_LINKS / 2 + +// forward decls -------------------------------------------------------------- +// +struct Stargate; + +// external variables --------------------------------------------------------- +// +extern server_s server_list[]; +extern link_s link_list[]; +extern mapobj_s* map_objs[]; + +extern int num_servers_joined; +extern int g_nNumLinks; +extern int num_map_objs; + + +// external functions --------------------------------------------------------- +// +int NET_GetGameServerList(); +Stargate* NET_FindStargate( word serverid ); + + +#endif // _NET_UNIV_H_ + + diff --git a/src/parsec/include/net_util_cl.h b/src/parsec/include/net_util_cl.h new file mode 100644 index 0000000..b767433 --- /dev/null +++ b/src/parsec/include/net_util_cl.h @@ -0,0 +1,29 @@ +/* + * PARSEC HEADER: net_util_cl.h + */ + +#ifndef _NET_UTIL_CL_H_ +#define _NET_UTIL_CL_H_ + + +// net_util_cl.c implements the following functions +// ------------------------------------------------ +// int NET_ProtocolPEER(); +// int NET_ProtocolGMSV(); +// int NET_ConnectedPEER(); +// int NET_ConnectedGMSV(); +// char* NET_FetchPlayerName( int playerid ); +// int NET_SetPlayerName( char *name ); +// ShipObject* NET_FetchOwnersShip( int ownerid ); +// void NET_SetPlayerKillStat( int playerid, int amount ); +// int NET_KillStatLimitReached( int limit ); +// void NET_KillStatForceIdleZero(); +// void NET_DrawEntryModeText(); + + +// external functions --------------------------------------------------------- +// + +#endif // _NET_UTIL_CL_H_ + + diff --git a/src/parsec/include/nl_udp.h b/src/parsec/include/nl_udp.h new file mode 100644 index 0000000..7670422 --- /dev/null +++ b/src/parsec/include/nl_udp.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: nl_udp.h + */ + +#ifndef _NL_UDP_H_ +#define _NL_UDP_H_ + + +// nl_udp.c implements the following UDP platform specific functions +// ----------------------------------------------------------------- +// int UDPs_GetLocalIP(); +// void UDPs_GetLocalBroadcast(); +// int UDPs_InitOSNetAPI(); +// void UDPs_KillOSNetAPI(); + + +#endif // _NL_UDP_H_ + + diff --git a/src/parsec/include/nw_udp.h b/src/parsec/include/nw_udp.h new file mode 100644 index 0000000..3fe44e0 --- /dev/null +++ b/src/parsec/include/nw_udp.h @@ -0,0 +1,27 @@ +/* + * PARSEC HEADER: nw_udp.h + */ + +#ifndef _NW_UDP_H_ +#define _NW_UDP_H_ + + +// nw_udp.c implements the following UDP platform specific functions +// ----------------------------------------------------------------- +// int UDPs_GetLocalIP(); +// void UDPs_GetLocalBroadcast(); +// int UDPs_InitOSNetAPI(); +// void UDPs_KillOSNetAPI(); + + +// link winsock library +#ifdef NEED_WINSOCK2 + #pragma comment( lib, "ws2_32" ) +#else + #pragma comment( lib, "wsock32" ) +#endif + + +#endif // _NW_UDP_H_ + + diff --git a/src/parsec/include/obj_ani.h b/src/parsec/include/obj_ani.h new file mode 100644 index 0000000..ed2a9df --- /dev/null +++ b/src/parsec/include/obj_ani.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: obj_ani.h + */ + +#ifndef _OBJ_ANI_H_ +#define _OBJ_ANI_H_ + + +// external functions + +void OBJ_AnimateProjectiles(); +void OBJ_AnimateCustomObjects(); +void OBJ_BackgroundAnimateExtras(); +void OBJ_PerformShipActions(); + + +#endif // _OBJ_ANI_H_ + + diff --git a/src/parsec/include/obj_coll.h b/src/parsec/include/obj_coll.h new file mode 100644 index 0000000..a16fede --- /dev/null +++ b/src/parsec/include/obj_coll.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: obj_coll.h + */ + +#ifndef _OBJ_COLL_H_ +#define _OBJ_COLL_H_ + + +// external functions + +void OBJ_CheckCollisions(); + + +#endif // _OBJ_COLL_H_ + + diff --git a/src/parsec/include/obj_comm.h b/src/parsec/include/obj_comm.h new file mode 100644 index 0000000..5560def --- /dev/null +++ b/src/parsec/include/obj_comm.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: obj_comm.h + */ + +#ifndef _OBJ_COMM_H_ +#define _OBJ_COMM_H_ + + +// external functions + +// (none) + + +// external variables + +extern dword last_summoned_objectid; + + +#endif // _OBJ_COMM_H_ + + diff --git a/src/parsec/include/obj_ctrl.h b/src/parsec/include/obj_ctrl.h new file mode 100644 index 0000000..4287979 --- /dev/null +++ b/src/parsec/include/obj_ctrl.h @@ -0,0 +1,132 @@ +/* + * PARSEC HEADER: obj_ctrl.h + */ + +#ifndef _OBJ_CTRL_H_ +#define _OBJ_CTRL_H_ + +#ifdef PARSEC_SERVER + + #undef CreateObject + #undef FreeObjList + #undef KillAllObjects + #undef FetchObject + #undef FetchFirstShip + #undef FetchFirstLaser + #undef FetchFirstMissile + #undef FetchFirstExtra + #undef FetchFirstCustom + #undef KillClassInstances + +#endif // PARSEC_SERVER + + +// external functions + +void InitObjCtrl(); + +void FreeObjectMem( GenObject *objectpo ); +int FreeObjList( GenObject *listpo ); +int FreeObjects(); + +GenObject* CreateObject( int objclass, const Xmatrx startmatrx ); +GenObject* SummonObject( int objclass, const Xmatrx startmatrx ); +GenObject* SummonObjectFromType( int objtype, const Xmatrx startmatrx ); +CustomObject* CreateVirtualObject( dword objtypeid ); + +GenObject* FetchSpecificObject( dword objno, GenObject *listpo ); +GenObject* FetchSpecificHostObject( dword hostobjno, GenObject *listpo ); +GenObject* FetchObject( dword objno ); +GenObject* FetchHostObject( dword hostobjno ); + +int KillSpecificObject( dword objno, GenObject *listpo ); +int KillSpecificHostObject( dword hostobjno, GenObject *listpo ); +int KillObject( dword objno ); +int KillHostObject( dword hostobjno ); +int KillClassInstances( int objclass ); + +void OBJ_CorrectObjectInstance( GenObject *dstobj, GenObject *srcobj ); +void OBJ_SwitchObjectLod( GenObject *obj, dword lod ); +void OBJ_AutoSelectObjectLod( GenObject *obj ); + +void ScanActiveObjects( const Camera camera ); + + +// return pointer to first ship in ship-objects list -------------------------- +// +inline ShipObject *FetchShipListHead() +{ + // fetch head of ship-objects list + ShipObject *head = (ShipObject *) PShipObjects->NextObj; + + return head; +} + + +// return pointer to first "real" ship in ship-objects list ------------------- +// +inline ShipObject *FetchFirstShip() +{ + // fetch head of ship-objects list + ShipObject *head = (ShipObject *) PShipObjects->NextObj; + +#ifdef PARSEC_CLIENT + + // if local ship is head of list return next object + if ( head == MyShip ) { + head = (ShipObject *) head->NextObj; + } + +#endif // PARSEC_CLIENT + + return head; +} + + +// return pointer to first laser in laser-objects list ------------------------ +// +inline LaserObject *FetchFirstLaser() +{ + // fetch head of laser-objects list + LaserObject *head = (LaserObject *) LaserObjects->NextObj; + + return head; +} + + +// return pointer to first missile in missile-objects list -------------------- +// +inline MissileObject *FetchFirstMissile() +{ + // fetch head of missile-objects list + MissileObject *head = (MissileObject *) MisslObjects->NextObj; + + return head; +} + + +// return pointer to first extra in extra-objects list ------------------------ +// +inline ExtraObject *FetchFirstExtra() +{ + // fetch head of extra-objects list + ExtraObject *head = (ExtraObject *) ExtraObjects->NextObj; + + return head; +} + + +// return pointer to first custom object in custom-objects list --------------- +// +inline CustomObject *FetchFirstCustom() +{ + // fetch head of custom-objects list + CustomObject *head = (CustomObject *) CustmObjects->NextObj; + + return head; +} + + +#endif // _OBJ_CTRL_H_ + + diff --git a/src/parsec/include/obj_expl.h b/src/parsec/include/obj_expl.h new file mode 100644 index 0000000..ae9b057 --- /dev/null +++ b/src/parsec/include/obj_expl.h @@ -0,0 +1,24 @@ +/* + * PARSEC HEADER: obj_expl.h + */ + +#ifndef _OBJ_EXPL_H_ +#define _OBJ_EXPL_H_ + + +// external functions + +void LetShipExplode( ShipObject *shippo ); + +void OBJ_ShipHelixDamage( ShipObject *shippo, int owner ); +void OBJ_ShipLightningDamage( ShipObject *shippo, int owner ); +void OBJ_ShipPhotonDamage( ShipObject *shippo, int owner ); +void OBJ_ShipSwarmDamage( ShipObject *shippo, int owner ); +void OBJ_ShipEmpDamage( ShipObject *shippo, int owner, int hitpoints ); + +void OBJ_CheckExplosions(); + + +#endif // _OBJ_EXPL_H_ + + diff --git a/src/parsec/include/obj_game.h b/src/parsec/include/obj_game.h new file mode 100644 index 0000000..fa7eb54 --- /dev/null +++ b/src/parsec/include/obj_game.h @@ -0,0 +1,53 @@ +/* + * PARSEC HEADER: obj_game.h + */ + +#ifndef _OBJ_GAME_H_ +#define _OBJ_GAME_H_ + + +// afterburner constants + +#define AFTERBURNER_SPEED 150000 +#define AFTERBURNER_ENERGY 2400 + + +// external functions + +int OBJ_DeviceAvailable( ShipObject *shippo, int mask ); + +void OBJ_ShootLaser( ShipObject *shippo ); +void OBJ_LaunchMissile( ShipObject *shippo, dword launcher ); +void OBJ_LaunchHomingMissile( ShipObject *shippo, dword launcher, dword targetid ); +void OBJ_LaunchMine( ShipObject *shippo ); +void OBJ_LaunchSwarmMissiles( ShipObject *shippo, dword targetid ); + +void OBJ_EnableInvisibility( ShipObject *shippo ); +void OBJ_EnableInvulnerability( ShipObject *shippo ); +void OBJ_EnableDecoy( ShipObject *shippo ); + +void OBJ_EnableLaserUpgrade1( ShipObject *shippo ); +void OBJ_EnableLaserUpgrade2( ShipObject *shippo ); + +void OBJ_EnableEmpUpgrade1( ShipObject *shippo ); +void OBJ_EnableEmpUpgrade2( ShipObject *shippo ); + +char* OBJ_BoostEnergy( ShipObject *shippo, int boost ); + +void OBJ_EnableAfterBurner( ShipObject *shippo ); +void OBJ_DisableAfterBurner( ShipObject *shippo ); +void OBJ_ActivateAfterBurner( ShipObject *shippo ); +void OBJ_DeactivateAfterBurner( ShipObject *shippo ); + +void OBJ_EventShipImpact( ShipObject *shippo, int shieldhit ); + + +// external variables + +extern int afterburner_active; +extern int afterburner_energy; + + +#endif // _OBJ_GAME_H_ + + diff --git a/src/parsec/include/obj_iter.h b/src/parsec/include/obj_iter.h new file mode 100644 index 0000000..0568c87 --- /dev/null +++ b/src/parsec/include/obj_iter.h @@ -0,0 +1,22 @@ +/* + * PARSEC HEADER: obj_iter.h + */ + +#ifndef _OBJ_ITER_H_ +#define _OBJ_ITER_H_ + + +// function pointer type for iter polygon attachment +typedef void (*attach_iterpolys_fpt)( GenObject *obj, int inorder ); + + +// external functions + +void OBJ_AttachIterPolygons( GenObject *obj, int inorder ); +void OBJ_ResetRegisteredClassIterPolys( dword objclass ); +int OBJ_RegisterClassIterPolys( dword objclass, int apexid, int apexvtx, int apexcomp, int numprimvtxs, int numvtxs, float *vtxlist ); + + +#endif // _OBJ_ITER_H_ + + diff --git a/src/parsec/include/obj_part.h b/src/parsec/include/obj_part.h new file mode 100644 index 0000000..cee0be3 --- /dev/null +++ b/src/parsec/include/obj_part.h @@ -0,0 +1,32 @@ +/* + * PARSEC HEADER: obj_part.h + */ + +#ifndef _OBJ_PART_H_ +#define _OBJ_PART_H_ + + +// render modes for attached particles + +enum { + + PARTICLE_RENDERMODE_POSLIGHT, + PARTICLE_RENDERMODE_THRUST, + PARTICLE_RENDERMODE_MISSILE +}; + + +// function pointer type for particle attachment +typedef void (*attach_particles_fpt)( GenObject *obj ); + + +// external functions + +void OBJ_AttachClassParticles( GenObject *obj ); +void OBJ_ResetRegisteredClassParticles( dword objclass ); +int OBJ_RegisterClassParticle( dword objclass, const char *pdefname, float refz, int rendmode, Vector3 *pos ); + + +#endif // _OBJ_PART_H_ + + diff --git a/src/parsec/include/obj_vani.h b/src/parsec/include/obj_vani.h new file mode 100644 index 0000000..f00025a --- /dev/null +++ b/src/parsec/include/obj_vani.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: obj_vani.h + */ + +#ifndef _OBJ_VANI_H_ +#define _OBJ_VANI_H_ + + +// function pointer type for vtxanim registration +typedef void (*register_vtxanim_fpt)( GenObject *obj ); + + +// external functions + +int OBJ_RegisterVtxAnimation( const char *classname, register_vtxanim_fpt regfunc ); + + +#endif // _OBJ_VANI_H_ + + diff --git a/src/parsec/include/obj_xtra.h b/src/parsec/include/obj_xtra.h new file mode 100644 index 0000000..5034986 --- /dev/null +++ b/src/parsec/include/obj_xtra.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: obj_xtra.h + */ + +#ifndef _OBJ_XTRA_H_ +#define _OBJ_XTRA_H_ + + +// external functions + +void OBJ_FillExtraMemberVars( ExtraObject *extrapo ); +void OBJ_KillExtra( ExtraObject *precnode, int collected ); +void OBJ_AnimateExtra( ExtraObject *extrapo ); +void OBJ_DoExtraPlacement(); + +void OBJ_CreateShipExtras( ShipObject *shippo ); + + +#endif // _OBJ_XTRA_H_ + + diff --git a/src/parsec/include/part_ani.h b/src/parsec/include/part_ani.h new file mode 100644 index 0000000..daeb9e2 --- /dev/null +++ b/src/parsec/include/part_ani.h @@ -0,0 +1,22 @@ +/* + * PARSEC HEADER: part_ani.h + */ + +#ifndef _PART_ANI_H_ +#define _PART_ANI_H_ + + +// external functions + +void LinearParticleCollision( linear_pcluster_s *cluster, int pid ); +void CalcSphereParticlePosition( Vertex3& position, geomv_t radius, int spheretype ); +void CalcSphereParticleRotation( Vertex3& position, bams_t pitch, bams_t yaw, bams_t roll ); +int CalcSphereContraction( Vertex3& position, geomv_t speed ); + +void PAN_InitParticleSizes( float resoscale ); +void PAN_AnimateParticles(); + + +#endif // _PART_ANI_H_ + + diff --git a/src/parsec/include/part_api.h b/src/parsec/include/part_api.h new file mode 100644 index 0000000..8a6e978 --- /dev/null +++ b/src/parsec/include/part_api.h @@ -0,0 +1,435 @@ +/* + * PARSEC HEADER: part_api.h + */ + +#ifndef _PART_API_H_ +#define _PART_API_H_ + + +// particle system API functions +// ----------------------------- +// PRT_InitParticleSizes() +// PRT_InitParticle() +// PRT_InitClusterParticle() +// PRT_NewCluster() +// PRT_DeleteCluster() +// PRT_DeleteCluster_NoListRemoval() +// PRT_RemoveClusterFromAttachedList() +// PRT_ObjectHasAttachedClusters() +// PRT_ObjectHasAttachedClustersOfType() +// PRT_DeleteAttachedClustersOfType() +// PRT_AttachClusterToObject() +// PRT_FreeAttachedClusterList() +// PRT_AllocParticleDefinition() +// PRT_RegisterParticleDefinition() +// PRT_RegisterLoopTexParticle() +// PRT_RegisterOneShotTexParticle() +// PRT_AcquireParticleDefinition() +// PRT_AcquireParticleDefinitionById() +// PRT_InitParticleExtInfo() +// PRT_CreateLinearParticle() +// PRT_CreateCustomDrawParticle() +// PRT_TranslateCustomParticles() +// PRT_DrawCustomParticles() +// PRT_CreateGenObjectParticleCluster() +// PRT_CreateGenObjectParticle() +// PRT_AddGenObjectParticle() +// PRT_CreateObjectCenteredSphere() +// PRT_CreateParticleSphereObject() + + +// ensure particle type info is available +#include "parttype.h" + + +// init reference z values for particles according to resolution -------------- +// +void + +PRT_InitParticleSizes ( + + float resoscale +); + + +// set members of particle structure ------------------------------------------ +// +inline void + +PRT_InitParticle ( + + particle_s& particle, // particle to initialize + int bitmap, // bitmap id for particle + int color, // color for particle + int sizebound, // lod threshold + float refz, // reference distance + Vertex3* position, // position + Vector3* velocity, // velocity vector + int lifetime, // particle lifetime + int owner, // owner id (remote player id) + pextinfo_s* extinfo // extended drawing info +) + +{ + ASSERT( position != NULL ); + + particle.owner = owner; + particle.flags = PARTICLE_ACTIVE; + particle.lifetime = lifetime; + particle.extinfo = extinfo; + particle.bitmap = bitmap; + particle.color = color; + particle.sizebound = sizebound; + particle.ref_z = refz; + particle.position = *position; + + if ( velocity ) { + particle.velocity = *velocity; + } else { + particle.velocity.X = particle.velocity.Y = particle.velocity.Z = 0; + } +} + + +// set members of particle structure and write into preexisting cluster ------- +// +inline void + +PRT_InitClusterParticle ( + + pcluster_s* cluster, // cluster into which particle should be inserted + int pid, // id of particle to overwrite + int bitmap, // bitmap id for particle + int color, // color for particle + int sizebound, // lod threshold + float refz, // reference distance + Vertex3* position, // position + Vector3* velocity, // velocity vector + int lifetime, // particle lifetime + int owner, // owner id (remote player id) + pextinfo_s* extinfo // extended drawing info +) + +{ + ASSERT( pid < cluster->maxnumel ); + + //NOTE: + // the specified cluster member (particle) + // simply gets overwritten!! + + PRT_InitParticle( + cluster->rep[ pid ], + bitmap, + color, + sizebound, + refz, + position, + velocity, + lifetime, + owner, + extinfo ); + + // increase number of elements + cluster->numel++; + Particles->numel++; +} + + +// allocate new particle cluster and insert into list ------------------------- +// +pcluster_s * + +PRT_NewCluster ( + + dword type, // cluster type (CT_xx) + int numelements, // number of cluster elements (particles) + size_t auxstorage // size of user-defined storage in bytes +); + + +// delete entire particle cluster --------------------------------------------- +// +void + +PRT_DeleteCluster ( + + pcluster_s* cluster // cluster to delete +); + + +// delete entire particle cluster (don't check any attachment lists) ---------- +// +void + +PRT_DeleteCluster_NoListRemoval ( + + pcluster_s* cluster // cluster to delete +); + + +// remove cluster from attachment list if contained --------------------------- +// +void + +PRT_RemoveClusterFromAttachedList ( + + objectbase_pcluster_s* cluster +); + + +// check if genobject has attached particle clusters -------------------------- +// +int + +PRT_ObjectHasAttachedClusters ( + + GenObject* genobjpo +); + + +// check if genobject has attached particle clusters of a certain type -------- +// +objectbase_pcluster_s * + +PRT_ObjectHasAttachedClustersOfType ( + + GenObject* genobjpo, + int animtype +); + + +// delete all clusters of certain type attached to a genobject ---------------- +// +int + +PRT_DeleteAttachedClustersOfType ( + + const GenObject * genobjpo, + int animtype +); + + +// attach cluster to genobject (insert at head of attachment list) ------------ +// +void + +PRT_AttachClusterToObject ( + + GenObject* genobjpo, + objectbase_pcluster_s* cluster +); + + +// free cluster list attached to genobject ------------------------------------ +// +void + +PRT_FreeAttachedClusterList ( + + GenObject* genobjpo +); + + +// allocate particle definition (fields have to be set afterwards!) ----------- +// +pdef_s * + +PRT_AllocParticleDefinition ( + + int numtexframes, // number of texture animation frames + int numxfoframes // number of texture transformation frames +); + + +// register particle definition (create struct and associate name with it) ---- +// +pdef_s * + +PRT_RegisterParticleDefinition ( + + const char* pdefname, // unique name for particle definition + pdefreg_s* pdefreg, // definition info + int overwrite // overwrite old pdef if name already exists + +); + + +// register particle definition with looping texture-only animation ----------- +// +pdef_s * + +PRT_RegisterLoopTexParticle ( + + const char* pdefname, // unique name for particle definition + int numframes, // number of animation frames + const char**nametable, // pointer to table of texture names + int equidelta, // deltatime that is the same for all frames + int overwrite // overwrite old pdef if name already exists +); + + +// register particle definition with one-shot texture-only animation ---------- +// +pdef_s * + +PRT_RegisterOneShotTexParticle ( + + const char* pdefname, // unique name for particle definition + int numframes, // number of animation frames + const char**nametable, // pointer to table of texture names + int equidelta, // deltatime that is the same for all frames + int overwrite // overwrite old pdef if name already exists + +); + + +// acquire already registered particle definition via its unique name --------- +// +pdef_s * + +PRT_AcquireParticleDefinition ( + + const char* pdefname, // unique name for particle definition + int* retpdefid // id of returned particle definition +); + + +// acquire already registered particle definition via its id ------------------ +// +pdef_s * + +PRT_AcquireParticleDefinitionById ( + + int pdefid // id of particle definition +); + + +// init extended particle info using particle definitions --------------------- +// +void + +PRT_InitParticleExtInfo ( + + pextinfo_s* extinfo, // pextinfo_s to initialize + pdef_s* partdef, // base particle definition (obligatory) + pdef_s* partdef_dest, // destruction particle definition (optional) + particle_s* particle // particle_s::extinfo will be set (optional) +); + + +// create new particle with linear animation (insert into next free slot) ----- +// +particle_s * + +PRT_CreateLinearParticle ( + + particle_s& particle // already initialized particle +); + + +// create new particle with customdraw property ------------------------------- +// +particle_s * + +PRT_CreateCustomDrawParticle ( + + particle_s& particle, // already initialized particle + const GenObject* baseobject // object customdraw particles belong to +); + + +// translate customdraw particles belonging to specified object --------------- +// +int + +PRT_TranslateCustomParticles ( + + Vector3& tvector, // translation vector that should be applied + const GenObject* baseobject // object customdraw particles belong to +); + + +// draw customdraw particles belonging to specified object -------------------- +// +int + +PRT_DrawCustomParticles ( + + const GenObject* baseobject // object whose customdraw particles to draw +); + + +// create an empty genobject particle cluster --------------------------------- +// +genobject_pcluster_s * + +PRT_CreateGenObjectParticleCluster ( + + GenObject* baseobject, // object particle should be attached to + int numelements, // number of particles to allocate + genobject_pcluster_fpt callback, // callback for cluster animation + int use_bdsphere // indicate whether the bounding-sphere of the parent should be used +); + + +// create a genobject geometry particle and attach it to specified object ----- +// +genobject_pcluster_s * + +PRT_CreateGenObjectParticle ( + + particle_s& particle, // already initialized particle + GenObject* baseobject, // object particle should be attached to + genobject_pcluster_s* trycluster // try this cluster before scanning +); + + +// create a genobject geometry particle and attach it to specified object ----- +// +genobject_pcluster_s * + +PRT_AddGenObjectParticle ( + + particle_s& particle, // already initialized particle + GenObject* baseobject, // object particle should be attached to + genobject_pcluster_s* usecluster, // try this cluster before scanning + int numelements, // number of particles to allocate + genobject_pcluster_fpt callback // callback for cluster animation +); + + +// create a particle sphere centered around specific object origin ------------ +// +basesphere_pcluster_s * + +PRT_CreateObjectCenteredSphere ( + + GenObject* objectpo, // object this sphere should be attached to + geomv_t radius, // radius of sphere (also used for bounding) + int animtype, // animation type (SAT_xx) + int clustersiz, // cluster size (number of particles in sphere) + int lifetime, // lifetime of sphere (each sphere particle) + pdrwinfo_s* pdinfo, // particle appearance (drawing) info + int owner // owner id (remote player id) +); + + +// create particle object comprising a sphere --------------------------------- +// +sphereobj_pcluster_s * + +PRT_CreateParticleSphereObject ( + + Vertex3& origin, // origin of particle object + geomv_t radius, // radius of sphere (also used for bounding) + int animtype, // animation type (SAT_xx) + int clustersiz, // cluster size (number of particles in sphere) + int lifetime, // lifetime of sphere (each sphere particle) + pdrwinfo_s* pdinfo, // particle appearance (drawing) info + int owner // owner id (remote player id) +); + + +#endif // _PART_API_H_ + + diff --git a/src/parsec/include/part_def.h b/src/parsec/include/part_def.h new file mode 100644 index 0000000..4024ff3 --- /dev/null +++ b/src/parsec/include/part_def.h @@ -0,0 +1,29 @@ +/* + * PARSEC HEADER: part_def.h + */ + +#ifndef _PART_DEF_H_ +#define _PART_DEF_H_ + + +// external functions + +pdef_s* PDEF_plight01(); +pdef_s* PDEF_psmoke01(); +pdef_s* PDEF_psmoke02(); +pdef_s* PDEF_pflare01(); +pdef_s* PDEF_pflare02(); +pdef_s* PDEF_pflare03(); +pdef_s* PDEF_pflare04(); +pdef_s* PDEF_pflare05(); +pdef_s* PDEF_pflare06(); +pdef_s* PDEF_stargate(); +pdef_s* PDEF_explode1(); +pdef_s* PDEF_expwave1(); +pdef_s* PDEF_misglow1(); +pdef_s* PDEF_extragen(); + + +#endif // _PART_DEF_H_ + + diff --git a/src/parsec/include/part_sys.h b/src/parsec/include/part_sys.h new file mode 100644 index 0000000..6273b6c --- /dev/null +++ b/src/parsec/include/part_sys.h @@ -0,0 +1,25 @@ +/* + * PARSEC HEADER: part_sys.h + */ + +#ifndef _PART_SYS_H_ +#define _PART_SYS_H_ + + +// external functions + +void InitParticleSystem(); +void InitParticleSizes(); +void KillParticleSystem(); +void FreeParticles(); + +int PRT_ParticleInBoundingSphere( ShipObject *shippo, Vertex3& point ); + +int DrawCustomParticles( const GenObject *baseobject ); + +void PRTSYS_DrawParticles(); + + +#endif // _PART_SYS_H_ + + diff --git a/src/parsec/include/r_gl.h b/src/parsec/include/r_gl.h new file mode 100644 index 0000000..9fd36b5 --- /dev/null +++ b/src/parsec/include/r_gl.h @@ -0,0 +1,93 @@ +/* + * PARSEC HEADER: r_gl.h + */ + +#ifndef _R_GL_H_ +#define _R_GL_H_ + + +// include OpenGL headers ----------------------------------------------------- + +#include + + + +// define basic vertex types -------------------------------------------------- + +struct GLVertex2 { + + GLfloat x; // viewspace x + GLfloat y; // viewspace y + + GLfloat s; // texture s + GLfloat t; // texture t + + GLubyte r; // red component + GLubyte g; // green component + GLubyte b; // blue component + GLubyte a; // alpha component +}; + +struct GLVertex3 { + + GLfloat x; // viewspace x + GLfloat y; // viewspace y + GLfloat z; // viewspace z + + GLubyte r; // red component + GLubyte g; // green component + GLubyte b; // blue component + GLubyte a; // alpha component + + GLfloat s; // texture s + GLfloat t; // texture t + GLfloat p; // volume coordinate (r) + GLfloat q; // homogeneous component (w) +}; + +struct GLVertex3m { + + GLfloat x; // viewspace x + GLfloat y; // viewspace y + GLfloat z; // viewspace z + + GLubyte r; // red component + GLubyte g; // green component + GLubyte b; // blue component + GLubyte a; // alpha component + + GLfloat s0; // texture s0 + GLfloat t0; // texture t0 + GLfloat s1; // texture s1 + GLfloat t1; // texture t1 +}; + +struct GLVertex4 { + + GLfloat x; // viewspace x + GLfloat y; // viewspace y + GLfloat z; // viewspace z + GLfloat w; // viewspace w + + GLfloat s; // texture s + GLfloat t; // texture t + GLfloat p; // volume coordinate (r) + GLfloat q; // homogeneous component (w) +}; + +struct GLVertex4m { + + GLfloat x; // viewspace x + GLfloat y; // viewspace y + GLfloat z; // viewspace z + GLfloat w; // viewspace w + + GLfloat s0; // texture s0 + GLfloat t0; // texture t0 + GLfloat s1; // texture s1 + GLfloat t1; // texture t1 +}; + + +#endif // _R_GL_H_ + diff --git a/src/parsec/include/r_glob.h b/src/parsec/include/r_glob.h new file mode 100644 index 0000000..052ca87 --- /dev/null +++ b/src/parsec/include/r_glob.h @@ -0,0 +1,71 @@ +/* + * PARSEC HEADER: r_glob.h + */ + +#ifndef _R_GLOB_H_ +#define _R_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) related global declarations and definitions - +// ---------------------------------------------------------------------------- + + +// rasterization performance statistics + +struct rastperfstats_s { + + dword fieldstate; + + dword fragments; + dword pixels; + dword faildepth; + dword failalpha; + dword failchroma; +}; + +#define RASTPERF_NONE 0x0000 +#define RASTPERF_FRAGMENTS 0x0001 +#define RASTPERF_PIXELS 0x0002 +#define RASTPERF_FAILDEPTH 0x0004 +#define RASTPERF_FAILALPHA 0x0008 +#define RASTPERF_FAILCHROMA 0x0010 + + +// geometry performance statistics + +struct geomperfstats_s { + + dword fieldstate; + + dword vertices_in; + dword vertices_out; + dword polygons_in; + dword polygons_out; + dword triangles_in; + dword triangles_out; + dword edges; + dword spans_in; + dword spans_out; +}; + +#define GEOMPERF_NONE 0x0000 +#define GEOMPERF_VERTICES_IN 0x0001 +#define GEOMPERF_VERTICES_OUT 0x0002 +#define GEOMPERF_POLYGONS_IN 0x0004 +#define GEOMPERF_POLYGONS_OUT 0x0008 +#define GEOMPERF_TRIANGLES_IN 0x0010 +#define GEOMPERF_TRIANGLES_OUT 0x0020 +#define GEOMPERF_EDGES 0x0040 +#define GEOMPERF_SPANS_IN 0x0080 +#define GEOMPERF_SPANS_OUT 0x0100 + + +// make definition of pcluster pointers possible + +struct pcluster_s; + + +#endif // _R_GLOB_H_ + + diff --git a/src/parsec/include/r_obj.h b/src/parsec/include/r_obj.h new file mode 100644 index 0000000..1f5d41b --- /dev/null +++ b/src/parsec/include/r_obj.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: r_obj.h + */ + +#ifndef _R_OBJ_H_ +#define _R_OBJ_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) OBJ group - +// ---------------------------------------------------------------------------- + +void R_RenderObject( GenObject *objectp ); +void R_ReCalcAndRenderObject( GenObject *objectp, const Camera camera ); +void R_DrawWorld( const Camera camera ); +void R_DirectObjectRendering( int flags ); + + +#endif // _R_OBJ_H_ + + diff --git a/src/parsec/include/r_part.h b/src/parsec/include/r_part.h new file mode 100644 index 0000000..bd74b0d --- /dev/null +++ b/src/parsec/include/r_part.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: r_part.h + */ + +#ifndef _R_PART_H_ +#define _R_PART_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) PART group - +// ---------------------------------------------------------------------------- + + +int R_DrawParticleCluster( pcluster_s *cluster, int *numactive ); +void R_DrawParticles(); + + +#endif // _R_PART_H_ + + diff --git a/src/parsec/include/r_patch.h b/src/parsec/include/r_patch.h new file mode 100644 index 0000000..d8f4091 --- /dev/null +++ b/src/parsec/include/r_patch.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: r_patch.h + */ + +#ifndef _R_PATCH_H_ +#define _R_PATCH_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) patching function - +// ---------------------------------------------------------------------------- + + +void R_PatchSubSystem( ); +void R_InvalidateCachedTexture( TextureMap *tmap ); + + +#endif // _R_PATCH_H_ + + diff --git a/src/parsec/include/r_perf.h b/src/parsec/include/r_perf.h new file mode 100644 index 0000000..1aaf09e --- /dev/null +++ b/src/parsec/include/r_perf.h @@ -0,0 +1,22 @@ +/* + * PARSEC HEADER: r_perf.h + */ + +#ifndef _R_PERF_H_ +#define _R_PERF_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) PERF group - +// ---------------------------------------------------------------------------- + + +void R_ResetGeometryPerfStats(); +void R_QueryGeometryPerfStats( geomperfstats_s *perfstats ); +void R_ResetRasterizationPerfStats(); +void R_QueryRasterizationPerfStats( rastperfstats_s *perfstats ); + + +#endif // _R_PERF_H_ + + diff --git a/src/parsec/include/r_sfx.h b/src/parsec/include/r_sfx.h new file mode 100644 index 0000000..3d73356 --- /dev/null +++ b/src/parsec/include/r_sfx.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: r_sfx.h + */ + +#ifndef _R_SFX_H_ +#define _R_SFX_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) SFX group - +// ---------------------------------------------------------------------------- + + +void R_DrawLensFlare(); +void R_DrawPanorama(); +void R_DrawPlanet( PlanetObject *planet ); + + +#endif // _R_SFX_H_ + + diff --git a/src/parsec/include/r_supp.h b/src/parsec/include/r_supp.h new file mode 100644 index 0000000..10df562 --- /dev/null +++ b/src/parsec/include/r_supp.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: r_supp.h + */ + +#ifndef _R_SUPP_H_ +#define _R_SUPP_H_ + + +// ---------------------------------------------------------------------------- +// RENDERING SUBSYSTEM (R) SUPP group - +// ---------------------------------------------------------------------------- + + +int R_PrecacheTextures(); + + +#endif // _R_SUPP_H_ + + diff --git a/src/parsec/include/ro_api.h b/src/parsec/include/ro_api.h new file mode 100644 index 0000000..b860840 --- /dev/null +++ b/src/parsec/include/ro_api.h @@ -0,0 +1,84 @@ +/* + * PARSEC HEADER: ro_api.h + */ + +#ifndef _RO_API_H_ +#define _RO_API_H_ + +// default state not necessary +#define NO_DEFAULT_RASTERIZER_STATE + + +// need opengl headers +#include "r_gl.h" + + +// client state bits +enum { + + VTXARRAY_NONE = 0x0000, + VTXARRAY_COLORS = 0x0001, + VTXARRAY_EDGEFLAGS = 0x0002, + VTXARRAY_NORMALS = 0x0004, + VTXARRAY_TEXCOORDS = 0x0008, + VTXARRAY_VERTICES = 0x0010 +}; + + +// vertex pointers config +enum { + + VTXPTRS_NONE, + VTXPTRS_DO_ITER_1, + VTXPTRS_DO_ITER_2, + VTXPTRS_DO_ITER_3, + VTXPTRS_DO_ITER_4, + VTXPTRS_DO_FONT_1, + VTXPTRS_DO_FONT_2, + VTXPTRS_RO_PART_1, + VTXPTRS_RO_POLY_1, + VTXPTRS_RO_POLY_2, + VTXPTRS_RO_POLY_3 +}; + + +// external functions + +void RO_InitializeState(); + +void RO_SetCapability(GLenum cap, bool enable); + +int RO_DepthCmpEnabled(); +int RO_DepthWriteEnabled(); + +void RO_EnableDepthTest( int enable ); +void RO_DepthFunc( GLenum func ); +void RO_DepthMask( GLboolean flag ); +void RO_BlendFunc( GLenum sfactor, GLenum dfactor ); +void RO_AlphaFunc( GLenum func, GLclampf ref ); +void RO_AlphaTest( int enable ); +void RO_PointSmooth( int enable ); +void RO_LineSmooth( int enable ); +void RO_PointSize( GLfloat size ); + +void RO_ClientState( dword statebits ); +int RO_ArrayMakeCurrent( int userid, void *base ); + +void RO_InvalidateRasterizerState(); +void RO_InitRasterizerState( dword itertype, dword raststate, dword rastmask ); +void RO_TextureCombineState( dword texcomb ); + + +#define RO_AllowsExtendedTexenv() FALSE + + +#ifdef NO_DEFAULT_RASTERIZER_STATE + #define RO_DefaultRasterizerState() {} +#else + void RO_DefaultRasterizerState(); +#endif + + +#endif // _RO_API_H_ + + diff --git a/src/parsec/include/ro_obj.h b/src/parsec/include/ro_obj.h new file mode 100644 index 0000000..40bab9c --- /dev/null +++ b/src/parsec/include/ro_obj.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: ro_obj.h + */ + +#ifndef _RO_OBJ_H_ +#define _RO_OBJ_H_ + + +// ro_obj.c implements the following functions +// ------------------------------------------- +// void R_RenderObject( GenObject *objectp ); +// void R_ReCalcAndRenderObject( GenObject *objectp, const Camera camera ); +// void R_DrawWorld( const Camera camera ); +// void R_DirectObjectRendering( int flags ); + + +#endif // _RO_OBJ_H_ + + diff --git a/src/parsec/include/ro_objmc.h b/src/parsec/include/ro_objmc.h new file mode 100644 index 0000000..5636e83 --- /dev/null +++ b/src/parsec/include/ro_objmc.h @@ -0,0 +1,156 @@ +/* + * PARSEC HEADER: ro_objmc.h + */ + +#ifndef _RO_OBJMC_H_ +#define _RO_OBJMC_H_ + + +// -------------------------------------------------- +// messy macros for low level object rendering +// -------------------------------------------------- + + +// don't check everything in debug mode -- +#ifdef RELAXED_DEBUG_MODE + +#undef CHECKHEAPBASEREF +#undef CHECKHEAPREF +#undef CHECKMEMINTEGRITY + +#define CHECKHEAPBASEREF( r ) {} +#define CHECKHEAPREF( r ) {} +#define CHECKMEMINTEGRITY() {} + +#endif + + +// ------------------------------------ +#ifdef DEBUG + #define CHECKOBJECTREF( r ) if((r)==MyShip) {} else CHECKHEAPBASEREF((r)) +#else + #define CHECKOBJECTREF( r ) {} +#endif + + +// ------------------------------------ +#ifndef UPDATE_SOUND + #define AUDs_MaintainSound() {} +#endif + + +// ------------------------------------ +#ifndef COUNT_RENDERED_POLYGONS + #define COUNTPOLYGONS(a) (a) +#else + #define COUNTPOLYGONS(a) if ((a)) { NumRenderedPolygons++; } else { } +#endif + + +// ------------------------------------ +//#define BACKFACE_TOL_EPS 600000 +#define BACKFACE_TOL_EPS AUXDATA_BSP_BACKFACE_TOLERANCE_EPS + + +// ------------------------------------ +#ifndef CULL_BACKFACES_IN_BSP + + #define BSPBACKFACETEST(a) (a) + +#else + + #ifndef CHECK_BACKFACE_EPS + + #define BSPBACKFACETEST(a) \ + if ( ( bsp_objectp->ObjectType & TYPEBACKFACEMASK ) != 0 ) \ + { (a); } else { } + + #else + + #define BSPBACKFACETEST(a) \ + if ( ( sprod > -BACKFACE_TOL_EPS ) || \ + ( ( bsp_objectp->ObjectType & TYPEBACKFACEMASK ) != 0 ) ) \ + { (a); } else { } + + #endif + +#endif + + +// ------------------------------------ +#ifndef TWO_SIDES_POSSIBLE + + #define BACKFACINGBSPNODE(n,p,v,f) {} + +#else + + #define BACKFACINGBSPNODE(n,p,v,f) BSPBACKFACETEST( \ + RO_DrawBSPNode( (n), (p), (v), (f) ) ) + +#endif + + +// ------------------------------------ +#define CALCTEXTUREGRADIENTS(o,f) { \ + MtxMtxMUL( (o)->CurrentXmatrx, (f)->TexXmatrx, DestXmatrx ); \ + AdjointMtx( DestXmatrx, (f)->CurTexXmatrx ); } + +/* + if ( ( (f)->Shading == persptex_shad ) || \ + ( (f)->Shading == ipol1tex_shad ) ) { \ + MtxMtxMUL( (o)->CurrentXmatrx, (f)->TexXmatrx, DestXmatrx ); \ + AdjointMtx( DestXmatrx, (f)->CurTexXmatrx ); \ + } +*/ + + +// ------------------------------------ +//#define BSP_ERROR_EPS 80000 +#define BSP_ERROR_EPS AUXDATA_BSP_ERROR_EPS + + +// ------------------------------------ +#ifdef ENABLE_BSP_ERROR_TRACING + +#define CHECKBSPPLANE(s,n,p,v,f) \ + \ + (s) > -BSP_ERROR_EPS && (s) < BSP_ERROR_EPS ) { \ + \ + if ( AUX_BSP_DO_EXTENDED_SPROD_CHECK ) { \ + AUXDATA_BSP_SCALARPRODUCT_VALUE = abs( (s) ); \ + \ + if ( !AUX_BSP_EXTCHECK_SKIPSUBTREE ) { \ + if ( AUX_BSP_EXTCHECK_DRAW_NODE ) \ + RO_DrawBSPNode( (n), (p), (v), (f) ); \ + \ + if ( AUX_BSP_EXTCHECK_BACKNODE_FIRST ) { \ + if ( bsp_objectp->BSPTree[ bspnode ].BackTree > 0 ) \ + RO_TraverseBSPTree( bsp_objectp->BSPTree[ bspnode ].BackTree ); \ + if ( bsp_objectp->BSPTree[ bspnode ].FrontTree > 0 ) \ + RO_TraverseBSPTree( bsp_objectp->BSPTree[ bspnode ].FrontTree ); \ + } else { \ + if ( bsp_objectp->BSPTree[ bspnode ].FrontTree > 0 ) \ + RO_TraverseBSPTree( bsp_objectp->BSPTree[ bspnode ].FrontTree ); \ + if ( bsp_objectp->BSPTree[ bspnode ].BackTree > 0 ) \ + RO_TraverseBSPTree( bsp_objectp->BSPTree[ bspnode ].BackTree ); \ + } \ + } \ + \ + } else { \ + AUXDATA_BSP_SCALARPRODUCT_VALUE = abs( (s) ); \ + if ( (s) > 0 ) (s) = BSP_ERROR_EPS; else (s) = -BSP_ERROR_EPS; \ + goto testplane; \ + } \ + \ + } else if ( (s) > 0 + +#else + +#define CHECKBSPPLANE(s,n,p,v,f) ( (s) > 0 ) + +#endif + + +#endif // _RO_OBJMC_H_ + + diff --git a/src/parsec/include/ro_part.h b/src/parsec/include/ro_part.h new file mode 100644 index 0000000..bf70f6f --- /dev/null +++ b/src/parsec/include/ro_part.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: ro_part.h + */ + +#ifndef _RO_PART_H_ +#define _RO_PART_H_ + + +// ro_part.c implements the following functions +// -------------------------------------------- +// int R_DrawParticleCluster( pcluster_s *cluster, int *numactive ); +// void R_DrawParticles(); + + +#endif // _RO_PART_H_ + + diff --git a/src/parsec/include/ro_patch.h b/src/parsec/include/ro_patch.h new file mode 100644 index 0000000..e4642f8 --- /dev/null +++ b/src/parsec/include/ro_patch.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: ro_patch.h + */ + +#ifndef _RO_PATCH_H_ +#define _RO_PATCH_H_ + + +// ro_patch.c implements the following functions +// --------------------------------------------- +// void R_PatchSubSystem( ); +// void R_InvalidateCachedTexture( TextureMap *tmap ); + + +#endif // _RO_PATCH_H_ + + diff --git a/src/parsec/include/ro_perf.h b/src/parsec/include/ro_perf.h new file mode 100644 index 0000000..0c93c0b --- /dev/null +++ b/src/parsec/include/ro_perf.h @@ -0,0 +1,19 @@ +/* + * PARSEC HEADER: ro_perf.h + */ + +#ifndef _RO_PERF_H_ +#define _RO_PERF_H_ + + +// ro_perf.c implements the following functions +// -------------------------------------------- +// void R_ResetGeometryPerfStats(); +// void R_QueryGeometryPerfStats( geomperfstats_s *perfstats ); +// void R_ResetRasterizationPerfStats(); +// void R_QueryRasterizationPerfStats( rastperfstats_s *perfstats ); + + +#endif + + diff --git a/src/parsec/include/ro_poly.h b/src/parsec/include/ro_poly.h new file mode 100644 index 0000000..34b35fe --- /dev/null +++ b/src/parsec/include/ro_poly.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: ro_poly.h + */ + +#ifndef _RO_POLY_H_ +#define _RO_POLY_H_ + + +// external functions + +void RO_SolidFillPoly( SVertexExList *svertexlist, Face *face, int colorsvalid ); +void RO_TexMapPoly( SVertexExList *svertexlist, Face *face, int colorsvalid ); +int RO_RenderPolygon( GenObject *baseobj, dword polyid ); + + +#endif // _RO_POLY_H_ + + diff --git a/src/parsec/include/ro_sfx.h b/src/parsec/include/ro_sfx.h new file mode 100644 index 0000000..5bf8473 --- /dev/null +++ b/src/parsec/include/ro_sfx.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: ro_sfx.h + */ + +#ifndef _RO_SFX_H_ +#define _RO_SFX_H_ + + +// ro_sfx.c implements the following functions +// ------------------------------------------- +// void R_DrawLensFlare(); +// void R_DrawPanorama(); +// void R_DrawPlanet( PlanetObject *planet ); + + +#endif // _RO_SFX_H_ + + diff --git a/src/parsec/include/ro_supp.h b/src/parsec/include/ro_supp.h new file mode 100644 index 0000000..351640b --- /dev/null +++ b/src/parsec/include/ro_supp.h @@ -0,0 +1,62 @@ +/* + * PARSEC HEADER: ro_supp.h + */ + +#ifndef _RO_SUPP_H_ +#define _RO_SUPP_H_ + + +// ro_supp.c implements the following functions +// ------------------------------------------- +// int R_PrecacheTextures( GenObject *objectp ); + + +// conversion factor from source (internal) depth to destination (opengl) depth + +#ifdef FRACTIONAL_DEPTH_VALUES + #define OPENGL_DEPTH_RANGE 1.0f // [ 0, 1 ] -> [ 0, 1 ] +#else + #define OPENGL_DEPTH_RANGE (1/65535.0f) // [ 0, 65535 ] -> [ 0, 1 ] +#endif + + +// need opengl headers +#include "r_gl.h" + + +// structures + +struct GLTexInfo { + + TextureMap* texmap; + void* data; + int width; + int height; + dword format; + float coscale; + float aratio; + word lodsmall; + word lodlarge; +}; + + +// external functions + +void RO_EnableDepthBuffer( bool checking, bool writing ); +void RO_DisableDepthBuffer( bool checking, bool writing ); +void RO_RestoreDepthState( int zcmpstate, int zwritestate ); +void RO_InvalidateTextureMem(); +void RO_InvalidateCachedTexture( TextureMap *tmap ); +void RO_SelectTexelSource( GLTexInfo *texinfo ); +void RO_SelectTexelSource2( GLTexInfo *p2info ); +void RO_IterVertex2GLVertex( GLVertex3 *glvtxs, IterVertex2 *itervtxs, int num, GLTexInfo *texinfo ); +void RO_IterVertex3GLVertex( GLVertex3 *glvtxs, IterVertex3 *itervtxs, int num, GLTexInfo *texinfo ); +void RO_IterVertex2GLVertexRef( GLVertex3 *glvtxs, IterVertex2 **itervtxs, int num, GLTexInfo *texinfo ); +void RO_IterVertex3GLVertexRef( GLVertex3 *glvtxs, IterVertex3 **itervtxs, int num, GLTexInfo *texinfo ); +void RO_TextureMap2GLTexInfo( GLTexInfo *texinfo, TextureMap *texmap ); +void RO_Render2DRectangle( sgrid_t putx, sgrid_t puty, float srcw, float srch, dword dstw, dword dsth, dword zvalue, colrgba_s *color ); + + +#endif // _RO_SUPP_H_ + + diff --git a/src/parsec/include/sl_err.h b/src/parsec/include/sl_err.h new file mode 100644 index 0000000..d142051 --- /dev/null +++ b/src/parsec/include/sl_err.h @@ -0,0 +1,21 @@ +/* + * PARSEC HEADER: sl_err.h + */ + +#ifndef _SL_ERR_H_ +#define _SL_ERR_H_ + + +// sl_err.c implements the following functions +// ------------------------------------------- +// void SYSs_InitErrorHandling(); +// void SYSs_PanicFunction( char *msg, char *file, unsigned line ); +// void SYSs_OutOfMemFunction( char *msg, char *file, unsigned line ); +// void SYSs_PError( char *message, ... ); +// void SYSs_SError( char *message ); +// void SYSs_FError( char *message, char *filename ); + + +#endif + + diff --git a/src/parsec/include/sl_main.h b/src/parsec/include/sl_main.h new file mode 100644 index 0000000..5d4e917 --- /dev/null +++ b/src/parsec/include/sl_main.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: sl_main.h + */ + +#ifndef _SL_MAIN_H_ +#define _SL_MAIN_H_ + + +// sl_main.c implements the following functions +// -------------------------------------------- +// void SYSs_CheckMemory(); +// void SL_CleanUp(); +// int main( int argc, char **argv ); + + +#endif + + diff --git a/src/parsec/include/sl_msg.h b/src/parsec/include/sl_msg.h new file mode 100644 index 0000000..c48872f --- /dev/null +++ b/src/parsec/include/sl_msg.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: sl_msg.h + */ + +#ifndef _SL_MSG_H_ +#define _SL_MSG_H_ + + +// sl_msg.c implements the following functions +// ------------------------------------------- +// int SYSs_MsgOut( const char *format, ... ); +// int SYSs_MsgPut( const char *format, ... ); +// void SYSs_MsgPrompt(); + + +#endif // _SL_MSG_H_ + + diff --git a/src/parsec/include/sl_opt.h b/src/parsec/include/sl_opt.h new file mode 100644 index 0000000..1b6d4a1 --- /dev/null +++ b/src/parsec/include/sl_opt.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: sl_opt.h + */ + +#ifndef _SL_OPT_H_ +#define _SL_OPT_H_ + + +// sl_opt.c implements the following functions +// --------------------------------------------- +// void SYSs_CheckCommandLine( int argc, char **argv ); + + +#endif + + diff --git a/src/parsec/include/snd_api.h b/src/parsec/include/snd_api.h new file mode 100644 index 0000000..b43d653 --- /dev/null +++ b/src/parsec/include/snd_api.h @@ -0,0 +1,49 @@ +/* + * PARSEC HEADER: snd_api.h + */ + +#ifndef _SND_API_H_ +#define _SND_API_H_ + + +// recognized sample formats + +enum sample_formats { + + SAMPLEFORMAT_INVALID, + + SAMPLEFORMAT_WAV, + SAMPLEFORMAT_VOC, + SAMPLEFORMAT_AU, + SAMPLEFORMAT_SAM +}; + + +// generic sample info + +struct sample_s { + + int format; + dword totalfilelength; + dword headerlength; + word datatype; + word numchannels; + dword samplerate; + word alignment; + word samplesize; + dword samplebytes; + byte* samplebuffer; +}; + + +// external functions + +sample_s * SND_ReadSample( sampleinfo_s *pSampleInfo ); +void SND_FreeSample( sample_s *pSample ); +void SND_ConvertToMono( sample_s *pSample ); +void SND_ConvertRate( sample_s *pSample, int samplerate ); + + +#endif // _SND_API_H_ + + diff --git a/src/parsec/include/snd_wav.h b/src/parsec/include/snd_wav.h new file mode 100644 index 0000000..288f0a3 --- /dev/null +++ b/src/parsec/include/snd_wav.h @@ -0,0 +1,20 @@ +/* + * PARSEC HEADER: snd_wav.h + */ + +#ifndef _SND_WAV_H_ +#define _SND_WAV_H_ + + +// external functions + +void WAV_ParseHeader( FILE *fp, sampleinfo_s *pSampleInfo, sample_s *pSample ); +void WAV_ReadSample( sampleinfo_s *pSampleInfo, sample_s *pSample ); +void WAV_FreeSample( sample_s *pSample ); +void WAV_ConvertToMono( sample_s *pSample ); +void WAV_ConvertRate( sample_s *pSample, int samplerate ); + + +#endif // _SND_WAV_H_ + + diff --git a/src/parsec/include/sys_bind.h b/src/parsec/include/sys_bind.h new file mode 100644 index 0000000..bf987af --- /dev/null +++ b/src/parsec/include/sys_bind.h @@ -0,0 +1,36 @@ +/* + * PARSEC HEADER: sys_bind.h + */ + +#ifndef _SYS_BIND_H_ +#define _SYS_BIND_H_ + + +// PROTOCOL bindings + +enum { + + BT_PROTOCOL_PEERTOPEER, + BT_PROTOCOL_GAMESERVER, + BT_PROTOCOL_DEMONULL, + + BT_PROTOCOL_NUMTYPES +}; + + + +// external variables + +extern int sys_BindType_PROTOCOL; + + +// external functions + +void SYS_Bind_PROTOCOL(); + +void SYS_BindDynamicFunctions(); + + +#endif // _SYS_BIND_H_ + + diff --git a/src/parsec/include/sys_conv.h b/src/parsec/include/sys_conv.h new file mode 100644 index 0000000..e7af7e7 --- /dev/null +++ b/src/parsec/include/sys_conv.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: sys_conv.h + */ + +#ifndef _SYS_CONV_H_ +#define _SYS_CONV_H_ + + +// external functions + +int SYS_ConvertPackageMP3s( const char *packname, size_t baseofs ); + + +#endif // _SYS_CONV_H_ + + diff --git a/src/parsec/include/sys_err.h b/src/parsec/include/sys_err.h new file mode 100644 index 0000000..957204e --- /dev/null +++ b/src/parsec/include/sys_err.h @@ -0,0 +1,40 @@ +/* + * PARSEC HEADER: sys_err.h + */ + +#ifndef _SYS_ERR_H_ +#define _SYS_ERR_H_ + + +#include "debug.h" + + +// ---------------------------------------------------------------------------- +// SYSTEM SUBSYSTEM (SYS) ERROR HANDLING - +// ---------------------------------------------------------------------------- + +void SYSs_InitErrorHandling(); + +void SYSs_CriticalCleanUp(); + +FUNCTION_NORETURN(void SYSs_PanicFunction( const char *msg, const char *file, unsigned line )); +FUNCTION_NORETURN(void SYSs_OutOfMemFunction( const char *msg, const char *file, unsigned line )); + +FUNCTION_NORETURN(void SYSs_PError( const char *msg, ... )); +FUNCTION_NORETURN(void SYSs_SError( const char *msg )); +FUNCTION_NORETURN(void SYSs_FError( const char *msg, const char *filename )); + + +// wrappers + +#define PANIC(x) SYSs_PanicFunction( (x), __FILE__, __LINE__ ) +#define OUTOFMEM(x) SYSs_OutOfMemFunction( (x), __FILE__, __LINE__ ) + +#define PERROR SYSs_PError +#define SERROR SYSs_SError +#define FERROR SYSs_FError + + +#endif // _SYS_ERR_H_ + + diff --git a/src/parsec/include/sys_glob.h b/src/parsec/include/sys_glob.h new file mode 100644 index 0000000..196325d --- /dev/null +++ b/src/parsec/include/sys_glob.h @@ -0,0 +1,16 @@ +/* + * PARSEC HEADER: sys_glob.h + */ + +#ifndef _SYS_GLOB_H_ +#define _SYS_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// SYSTEM SUBSYSTEM (SYS) related global declarations and definitions - +// ---------------------------------------------------------------------------- + + +#endif // _SYS_GLOB_H_ + + diff --git a/src/parsec/include/sys_msg.h b/src/parsec/include/sys_msg.h new file mode 100644 index 0000000..d7f7f26 --- /dev/null +++ b/src/parsec/include/sys_msg.h @@ -0,0 +1,41 @@ +/* + * PARSEC HEADER: sys_msg.h + */ + +#ifndef _SYS_MSG_H_ +#define _SYS_MSG_H_ + + +// ---------------------------------------------------------------------------- +// SYSTEM SUBSYSTEM (SYS) MESSAGE OUTPUT - +// ---------------------------------------------------------------------------- + +int SYSs_MsgOut( const char *format, ... ); +int SYSs_MsgPut( const char *format, ... ); +void SYSs_MsgPrompt(); + +// wrappers + +#define MSGOUT SYSs_MsgOut +#define MSGPUT SYSs_MsgPut + +#define DBGOUT SYSs_MsgOut +#define DMSGOUT SYSs_MsgOut + +#ifdef ENABLE_LOGOUT_COMMAND + #include "utl_logfile.h" + extern UTL_LogFile g_Logfile; + #define LOGOUT(x) g_Logfile.printf x +#else // !ENABLE_LOGOUT_COMMAND + + #ifdef SYSTEM_COMPILER_MSVC + #define LOGOUT(x) + #else // !SYSTEM_COMPILER_MSVC + #define LOGOUT(x) + #endif // !SYSTEM_COMPILER_MSVC + +#endif // !ENABLE_LOGOUT_COMMAND + +#endif // _SYS_MSG_H_ + + diff --git a/src/parsec/include/sys_subh.h b/src/parsec/include/sys_subh.h new file mode 100644 index 0000000..fc8b600 --- /dev/null +++ b/src/parsec/include/sys_subh.h @@ -0,0 +1,46 @@ +/* + * PARSEC HEADER: sys_subh.h + */ + +#ifndef _SYS_SUBH_H_ +#define _SYS_SUBH_H_ + + +// ---------------------------------------------------------------------------- +// SYSTEM SUBSYSTEM (SYS) system-dependent function declarations - +// ---------------------------------------------------------------------------- + + +// init reference frame counting +void SYSs_InitRefFrameCount(); + +// get current reference frame count +refframe_t SYSs_GetRefFrameCount(); + +// pause reference frame counting +void SYSs_PauseRefFrameCount(); + +// resume reference frame counting +void SYSs_ResumeRefFrameCount(); + +// wait for specified number of reference frames +void SYSs_Wait( refframe_t refframes ); + +// called once per frame to pass control to a platform-specific handler +int SYSs_Yield(); + +// check if enough memory to boot game proper +void SYSs_CheckMemory(); + +// check and execute command line options +void SYSs_CheckCommandLine( int argc, char **argv ); + + +// frame timer install/deinstall +int SYSs_InitFrameTimer(); +int SYSs_KillFrameTimer(); + + +#endif // _SYS_SUBH_H_ + + diff --git a/src/parsec/include/t_pack.h b/src/parsec/include/t_pack.h new file mode 100644 index 0000000..367d467 --- /dev/null +++ b/src/parsec/include/t_pack.h @@ -0,0 +1,14 @@ +/* + * PARSEC HEADER: t_pack.h + */ + +#ifndef _T_PACK_H_ +#define _T_PACK_H_ + + +// external functions + + +#endif // T_PACK_ + + diff --git a/src/parsec/include/vid_defs.h b/src/parsec/include/vid_defs.h new file mode 100644 index 0000000..4c1c476 --- /dev/null +++ b/src/parsec/include/vid_defs.h @@ -0,0 +1,84 @@ +/* + * PARSEC HEADER: vid_defs.h + */ + +#ifndef _VID_DEFS_H_ +#define _VID_DEFS_H_ + + +// ---------------------------------------------------------------------------- +// VIDEO SUBSYSTEM (VID) related definitions - +// ---------------------------------------------------------------------------- + + +#define MODE_COL_16BPP 16 // depth (in bits per pixel) +#define MODE_COL_32BPP 32 + + +// color mode ids irrespective of bit depth ----------------------------------- +// +#define COLMODE_HICOLOR 1 +#define COLMODE_TRUECOLOR 2 + + +// color mode dependent constants --------------------------------------------- +// +#define VGA_PAL_NUMCOLORS 256 // number of distinct colors in vga palette +#define VGA_PAL_SIZE 768 // size of vga palette in bytes +#define VGA_PAL_COLBITS 6 // number of bits per color in vga palette +#define VGA_PAL_FULLBRIGHT 63 // maximum value for vga color + +#define HICOLOR_NUMCOLORS 65536L // number of distinct colors in hicolor mode + + +// global palette identifiers ------------------------------------------------- +// +#define PAL_GAME ( VGA_PAL_SIZE * 0 ) +#define PAL_MENU ( VGA_PAL_SIZE * 1 ) +#define PAL_BEYOND ( VGA_PAL_SIZE * 2 ) // has to be last!! + +#define PAL_STANDARD PAL_GAME +#define PAL_SHIP_VIEWER PAL_GAME +#define PAL_OBJECT_VIEWER PAL_GAME +#define PAL_CREDITS_SCROLL PAL_MENU + + +// special color identifiers -------------------------------------------------- +// +#define COL_BACKGROUND_BLACK -2 +#define COL_BACKGROUND_BLUE -3 + + +// special values for RGB color triplet (6 bits per color) -------------------- +// +#define COLRGB_CHANNELBITS 6 +#define COLRGB_FULLBRIGHT 0x3f +#define COLRGB_MUTECHANNEL 0x00 +#define COLRGB_BLACK { COLRGB_MUTECHANNEL, COLRGB_MUTECHANNEL, COLRGB_MUTECHANNEL } +#define COLRGB_WHITE { COLRGB_FULLBRIGHT, COLRGB_FULLBRIGHT, COLRGB_FULLBRIGHT } + + +// special values for RGBA color (8 bits per color) --------------------------- +// +#define COLRGBA_CHANNELBITS 8 +#define COLRGBA_FULLBRIGHT 0xff +#define COLRGBA_MUTECHANNEL 0x00 +#define COLRGBA_FULLYOPAQUE 0xff +#define COLRGBA_TRANSPARENT 0x00 +#define COLRGBA_BLACK { COLRGBA_MUTECHANNEL, COLRGBA_MUTECHANNEL, COLRGBA_MUTECHANNEL, COLRGBA_FULLYOPAQUE } +#define COLRGBA_WHITE { COLRGBA_FULLBRIGHT, COLRGBA_FULLBRIGHT, COLRGBA_FULLBRIGHT, COLRGBA_FULLYOPAQUE } + + +// wait for start of vertical retrace ----------------------------------------- +// +#define AwaitVertSync() {} + + +// include system-specific subsystem prototypes ------------------------------- +// +#include "vid_subh.h" + + +#endif // _VID_DEFS_H_ + + diff --git a/src/parsec/include/vid_glob.h b/src/parsec/include/vid_glob.h new file mode 100644 index 0000000..3ccb660 --- /dev/null +++ b/src/parsec/include/vid_glob.h @@ -0,0 +1,108 @@ +/* + * PARSEC HEADER: vid_glob.h + */ + +#ifndef _VID_GLOB_H_ +#define _VID_GLOB_H_ + + +// ---------------------------------------------------------------------------- +// VIDEO SUBSYSTEM (VID) related global declarations and definitions - +// ---------------------------------------------------------------------------- + +// C++ STL vector for the resolution list +#include + +//NOTE: +// the definition of hiresmodeinfo_s would belong into VID_DEFS.H +// but is defined here in order to make the array extdef possible. + +struct resinfo_s { + word width, height; + + resinfo_s(); + + resinfo_s(word w, word h); + + // set to a new resolution + void set(word w, word h); + + // has been set to a real resolution + bool isValid() const; + + // sorting and comparing + bool operator < (const resinfo_s & res) const; + bool operator == (const resinfo_s & res) const; + bool operator != (const resinfo_s & res) const; +}; + +int GetResolutionIndex(word xres, word yres); + + +extern int MaxScreenBPP; + +extern resinfo_s GameScreenRes; +extern int GameScreenBPP; +extern int GameScreenWindowed; + +extern int CurDataColorBits; +extern int CurDataDetail; + +extern resinfo_s Op_Resolution; +extern int Op_ColorDepth; +extern int Op_WindowedMode; + +extern resinfo_s InitOp_Resolution; +extern int InitOp_ColorDepth; +extern int InitOp_WindowedMode; +extern int InitOp_FlipSynched; + +extern float GammaCorrection; + +extern int TextModeActive; + +extern int FlipSynched; + +extern int Screen_Width; +extern int Screen_Height; +extern int Screen_XOfs; +extern int Screen_YOfs; +extern int Screen_BytesPerPixel; +extern int D_Value; +extern int Star_Siz; +extern int RObj_Siz; + +extern geomv_t Near_View_Plane; +extern geomv_t Far_View_Plane; +extern geomv_t Criterion_X; +extern geomv_t Criterion_Y; +extern Plane3 View_Volume[ 6 ]; +extern CullPlane3 Cull_Volume[ 6 ]; +extern Plane3 World_ViewVolume[ 6 ]; +extern CullPlane3 World_CullVolume[ 6 ]; +extern Plane3 Object_ViewVolume[ 6 ]; +extern CullPlane3 Object_CullVolume[ 6 ]; + +extern std::vector Resolutions; + +extern int VidInfo_NumTextureUnits; +extern int VidInfo_MaxTextureSize; +extern int VidInfo_MaxTextureLod; +extern int VidInfo_UseIterForDemoTexts; +extern int* VidInfo_SupportedTexFormats; + + +// determine if video mode is available using mode info table +#define VID_MODE_AVAILABLE(x) ( x >= 0 && x < Resolutions.size() ) + +// determine current color depth +#define VID_CUR_COLBITS ( GameScreenBPP ) + +// determine whether translucency supported in current video mode +#define VID_TRANSLUCENCY_SUPPORTED TRUE + + + +#endif // _VID_GLOB_H_ + + diff --git a/src/parsec/include/vid_init.h b/src/parsec/include/vid_init.h new file mode 100644 index 0000000..089dc84 --- /dev/null +++ b/src/parsec/include/vid_init.h @@ -0,0 +1,30 @@ +/* + * PARSEC HEADER: vid_init.h + */ + +#ifndef _VID_INIT_H_ +#define _VID_INIT_H_ + + +// external functions + +char * FetchCtrlFileName(); +void LoadResolutionData(); +void LoadDetailData(); + +void VID_MapSpecifierToMode( char * modespec, int * modearray ); + +void VID_SetupDependentData(); +int VID_MapBppToOpt( int bpp ); +int VID_MapOptToBpp( int bppopt ); +void VID_ApplyOptions(); + +void VID_SwitchMode( int xres, int yres, int bpp ); +void VID_InitMode(); + +void VID_InitSubsystem(); + + +#endif // _VID_INIT_H_ + + diff --git a/src/parsec/include/vid_plug.h b/src/parsec/include/vid_plug.h new file mode 100644 index 0000000..7924928 --- /dev/null +++ b/src/parsec/include/vid_plug.h @@ -0,0 +1,17 @@ +/* + * PARSEC HEADER: vid_plug.h + */ + +#ifndef _VID_PLUG_H_ +#define _VID_PLUG_H_ + + +// external functions + +int VID_PlugInSubsys( const char *subsysname ); +int VID_HotChangeMode( int xres, int yres, bool fullscreen, int bpp ); + + +#endif // _VID_PLUG_H_ + + diff --git a/src/parsec/include/vid_subh.h b/src/parsec/include/vid_subh.h new file mode 100644 index 0000000..453217d --- /dev/null +++ b/src/parsec/include/vid_subh.h @@ -0,0 +1,42 @@ +/* + * PARSEC HEADER: vid_subh.h + */ + +#ifndef _VID_SUBH_H_ +#define _VID_SUBH_H_ + + +// ---------------------------------------------------------------------------- +// VIDEO SUBSYSTEM (VID) system-dependent function declarations - +// ---------------------------------------------------------------------------- + + +// SUPP group + +int VIDs_FadeScreenFromBlack( int palno ); +int VIDs_FadeScreenToBlack( int palno, int fademusic ); +int VIDs_FadePaletteToBlack( char *palette, int fademusic ); +int VIDs_FadeScreenFromWhite( int palno ); +int VIDs_SetScreenToColor( colrgba_s col ); +int VIDs_SetScreenDazzle( float strength ); +int VIDs_SetColIndexZero( int color ); +int VIDs_SetGammaCorrection( float gamma ); + +// BUFF group + +void VIDs_ClearRenderBuffer(); +void VIDs_CommitRenderBuffer(); +char* VIDs_ScreenshotBuffer( int create, int *size ); + +// INIT group + +void VIDs_InitDisplay(); +void VIDs_RestoreDisplay(); +void VIDs_CalcProjectiveMatrix(); +void VIDs_CalcOrthographicMatrix(); +void VIDs_InitFrameBufferAPI(); + + +#endif // _VID_SUBH_H_ + + diff --git a/src/parsec/include/vid_supp.h b/src/parsec/include/vid_supp.h new file mode 100644 index 0000000..7a95d46 --- /dev/null +++ b/src/parsec/include/vid_supp.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: vid_supp.h + */ + +#ifndef _VID_SUPP_H_ +#define _VID_SUPP_H_ + + +// external functions +int VID_GetFOV(); +int VID_SetFOV( int fov2set ); +void VID_SetViewParameters( int mode ); +void VID_SetViewingVolume(); +void VID_RealizeFOV(); + +#endif // _VID_SUPP_H_ + + diff --git a/src/parsec/include/vsdl_buffo.h b/src/parsec/include/vsdl_buffo.h new file mode 100644 index 0000000..cad7b6b --- /dev/null +++ b/src/parsec/include/vsdl_buffo.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: vsdl_buffo.h + */ + +#ifndef _VSDL_BUFFO_H_ +#define _VSDL_BUFFO_H_ + + +// vx_buffa.c implements the following functions +// --------------------------------------------- +// void VIDs_ClearRenderBuffer(); +// void VIDs_CommitRenderBuffer(); +// char* VIDs_ScreenshotBuffer( int create, int *size ); + + +#endif // _VSDL_BUFFO_H_ + + diff --git a/src/parsec/include/vsdl_inito.h b/src/parsec/include/vsdl_inito.h new file mode 100644 index 0000000..4637c26 --- /dev/null +++ b/src/parsec/include/vsdl_inito.h @@ -0,0 +1,18 @@ +/* + * PARSEC HEADER: vsdl_inito.h + */ + +#ifndef _VSDL_INITO_H_ +#define _VSDL_INITO_H_ + + +// vsdl_inito.c implements the following functions +// --------------------------------------------- +// void VIDs_InitDisplay(); +// void VIDs_RestoreDisplay(); +// void VIDs_InitFrameBufferAPI(); + + +#endif // _VSDL_INITO_H_ + + diff --git a/src/parsec/include/vsdl_ogl.h b/src/parsec/include/vsdl_ogl.h new file mode 100644 index 0000000..5771bbb --- /dev/null +++ b/src/parsec/include/vsdl_ogl.h @@ -0,0 +1,41 @@ +/* + * PARSEC HEADER: vsdl_ogl.h + */ + +#ifndef _VSDL_OGL_H_ +#define _VSDL_OGL_H_ + +#ifdef SYSTEM_TARGET_LINUX +#include +#else +#include +#endif + + +#if SDL_VERSION_ATLEAST(2, 0, 0) + +extern SDL_Window * curwindow; +extern SDL_GLContext curcontext; + +#endif + + +// external functions + + +void VSDL_CommitOGLBuff(); + +int VSDL_InitOGLInterface( int printmodelistflags ); +int VSDL_InitOGLMode(); + +void VSDL_CalcProjectiveMatrix(); +void VSDL_CalcOrthographicMatrix(); + +void VSDL_ShutDownOGL(); + +void SDL_RCDisplayInfo(); + + +#endif // _VSDL_OGL_H_ + + diff --git a/src/parsec/include/vsdl_suppo.h b/src/parsec/include/vsdl_suppo.h new file mode 100644 index 0000000..d024c7d --- /dev/null +++ b/src/parsec/include/vsdl_suppo.h @@ -0,0 +1,23 @@ +/* + * PARSEC HEADER: vsdl_suppo.h + */ + +#ifndef _VSDL_SUPPO_H_ +#define _VSDL_SUPPO_H_ + + +// vm_suppa.c implements the following functions +// --------------------------------------------- +// int VIDs_FadeScreenFromBlack( int palno ); +// int VIDs_FadeScreenToBlack( int palno, int fademusic ); +// int VIDs_FadePaletteToBlack( char *palette, int fademusic ); +// int VIDs_FadeScreenFromWhite( int palno ); +// int VIDs_SetScreenToColor( colrgba_s col ); +// int VIDs_SetScreenDazzle( float strength ); +// int VIDs_SetColIndexZero( int color ); +// int VIDs_SetGammaCorrection( float gamma ); + + +#endif + + -- cgit v1.2.3