From ccbb2c00006315cfa317ca0fee19f2500b9e7071 Mon Sep 17 00:00:00 2001 From: James Monroe Date: Thu, 4 Apr 2013 13:01:17 -0500 Subject: [PATCH] Jedi Outcast v055 --- {CODEmp => CODE-mp}/Splines/Splines.dsp | 0 {CODEmp => CODE-mp}/Splines/math_angles.cpp | 0 {CODEmp => CODE-mp}/Splines/math_angles.h | 0 {CODEmp => CODE-mp}/Splines/math_matrix.cpp | 0 {CODEmp => CODE-mp}/Splines/math_matrix.h | 0 .../Splines/math_quaternion.cpp | 0 {CODEmp => CODE-mp}/Splines/math_quaternion.h | 0 {CODEmp => CODE-mp}/Splines/math_vector.cpp | 0 {CODEmp => CODE-mp}/Splines/math_vector.h | 0 CODE-mp/Splines/mssccprj.scc | 5 + {CODEmp => CODE-mp}/Splines/q_parse.cpp | 0 {CODEmp => CODE-mp}/Splines/q_shared.cpp | 0 {CODEmp => CODE-mp}/Splines/q_shared.h | 0 {CODEmp => CODE-mp}/Splines/splines.cpp | 0 {CODEmp => CODE-mp}/Splines/splines.h | 0 {CODEmp => CODE-mp}/Splines/util_list.h | 0 {CODEmp => CODE-mp}/Splines/util_str.cpp | 0 {CODEmp => CODE-mp}/Splines/util_str.h | 0 CODE-mp/Splines/vssver.scc | Bin 0 -> 304 bytes {CODEmp => CODE-mp}/botlib/aasfile.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_bsp.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_bspq3.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_cluster.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_cluster.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_debug.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_debug.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_def.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_entity.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_entity.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_file.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_file.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_funcs.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_main.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_main.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_move.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_move.h | 0 .../botlib/be_aas_optimize.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_optimize.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_reach.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_reach.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_route.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_route.h | 0 .../botlib/be_aas_routealt.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_routealt.h | 0 {CODEmp => CODE-mp}/botlib/be_aas_sample.cpp | 0 {CODEmp => CODE-mp}/botlib/be_aas_sample.h | 0 {CODEmp => CODE-mp}/botlib/be_ai_char.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_chat.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_gen.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_goal.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_move.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_weap.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_weight.cpp | 0 {CODEmp => CODE-mp}/botlib/be_ai_weight.h | 0 {CODEmp => CODE-mp}/botlib/be_ea.cpp | 0 {CODEmp => CODE-mp}/botlib/be_interface.cpp | 2 + {CODEmp => CODE-mp}/botlib/be_interface.h | 0 {CODEmp => CODE-mp}/botlib/botlib.dsp | 0 {CODEmp => CODE-mp}/botlib/l_crc.cpp | 0 {CODEmp => CODE-mp}/botlib/l_crc.h | 0 {CODEmp => CODE-mp}/botlib/l_libvar.cpp | 0 {CODEmp => CODE-mp}/botlib/l_libvar.h | 0 {CODEmp => CODE-mp}/botlib/l_log.cpp | 0 {CODEmp => CODE-mp}/botlib/l_log.h | 0 {CODEmp => CODE-mp}/botlib/l_memory.cpp | 0 {CODEmp => CODE-mp}/botlib/l_memory.h | 0 {CODEmp => CODE-mp}/botlib/l_precomp.cpp | 125 +- {CODEmp => CODE-mp}/botlib/l_precomp.h | 5 + {CODEmp => CODE-mp}/botlib/l_script.cpp | 0 {CODEmp => CODE-mp}/botlib/l_script.h | 0 {CODEmp => CODE-mp}/botlib/l_struct.cpp | 0 {CODEmp => CODE-mp}/botlib/l_struct.h | 0 {CODEmp => CODE-mp}/botlib/l_utils.h | 0 CODE-mp/botlib/mssccprj.scc | 5 + CODE-mp/botlib/vssver.scc | Bin 0 -> 896 bytes CODE-mp/buildvms.bat | 8 + {CODEmp => CODE-mp}/cgame/JK2_cgame.def | 0 {CODEmp => CODE-mp}/cgame/JK2_cgame.dsp | 9 +- {CODEmp => CODE-mp}/cgame/animtable.h | 191 +- {CODEmp => CODE-mp}/cgame/cg_consolecmds.c | 21 +- {CODEmp => CODE-mp}/cgame/cg_draw.c | 26 +- {CODEmp => CODE-mp}/cgame/cg_drawtools.c | 0 {CODEmp => CODE-mp}/cgame/cg_effects.c | 0 {CODEmp => CODE-mp}/cgame/cg_ents.c | 88 +- {CODEmp => CODE-mp}/cgame/cg_event.c | 109 +- {CODEmp => CODE-mp}/cgame/cg_info.c | 0 {CODEmp => CODE-mp}/cgame/cg_light.c | 0 {CODEmp => CODE-mp}/cgame/cg_lights.h | 0 {CODEmp => CODE-mp}/cgame/cg_local.h | 26 + {CODEmp => CODE-mp}/cgame/cg_localents.c | 0 {CODEmp => CODE-mp}/cgame/cg_main.c | 131 +- {CODEmp => CODE-mp}/cgame/cg_marks.c | 0 {CODEmp => CODE-mp}/cgame/cg_media.h | 0 {CODEmp => CODE-mp}/cgame/cg_newDraw.c | 2 +- {CODEmp => CODE-mp}/cgame/cg_playeranimate.c | 0 {CODEmp => CODE-mp}/cgame/cg_players.c | 722 +++-- {CODEmp => CODE-mp}/cgame/cg_playerstate.c | 15 +- {CODEmp => CODE-mp}/cgame/cg_predict.c | 0 {CODEmp => CODE-mp}/cgame/cg_public.h | 2 + {CODEmp => CODE-mp}/cgame/cg_saga.c | 0 {CODEmp => CODE-mp}/cgame/cg_scoreboard.c | 2 +- {CODEmp => CODE-mp}/cgame/cg_servercmds.c | 11 + {CODEmp => CODE-mp}/cgame/cg_snapshot.c | 0 {CODEmp => CODE-mp}/cgame/cg_syscalls.c | 10 + {CODEmp => CODE-mp}/cgame/cg_turret.c | 0 {CODEmp => CODE-mp}/cgame/cg_view.c | 0 {CODEmp => CODE-mp}/cgame/cg_weaponinit.c | 3 +- {CODEmp => CODE-mp}/cgame/cg_weapons.c | 24 +- CODE-mp/cgame/cgame.bat | 102 + CODE-mp/cgame/cgame.q3asm | 44 + {CODEmp => CODE-mp}/cgame/fx_blaster.c | 0 {CODEmp => CODE-mp}/cgame/fx_bowcaster.c | 0 {CODEmp => CODE-mp}/cgame/fx_bryarpistol.c | 0 {CODEmp => CODE-mp}/cgame/fx_demp2.c | 0 {CODEmp => CODE-mp}/cgame/fx_disruptor.c | 0 {CODEmp => CODE-mp}/cgame/fx_flechette.c | 0 {CODEmp => CODE-mp}/cgame/fx_force.c | 0 {CODEmp => CODE-mp}/cgame/fx_heavyrepeater.c | 0 {CODEmp => CODE-mp}/cgame/fx_local.h | 0 {CODEmp => CODE-mp}/cgame/fx_rocketlauncher.c | 0 CODE-mp/cgame/mssccprj.scc | 5 + {CODEmp => CODE-mp}/cgame/tr_types.h | 30 +- CODE-mp/cgame/vssver.scc | Bin 0 -> 752 bytes .../client/FXExport.cpp | 0 .../fxexport.h => CODE-mp/client/FXExport.h | 0 .../client/FxPrimitives.cpp | 0 .../client/FxPrimitives.h | 0 .../client/FxScheduler.cpp | 7 + .../client/FxScheduler.h | 0 .../client/FxSystem.cpp | 0 .../fxsystem.h => CODE-mp/client/FxSystem.h | 0 .../client/FxTemplate.cpp | 0 .../fxutil.cpp => CODE-mp/client/FxUtil.cpp | 0 .../fxutil.h => CODE-mp/client/FxUtil.h | 0 {CODEmp => CODE-mp}/client/cl_cgame.cpp | 5 + {CODEmp => CODE-mp}/client/cl_cin.cpp | 0 {CODEmp => CODE-mp}/client/cl_console.cpp | 0 {CODEmp => CODE-mp}/client/cl_input.cpp | 4 +- {CODEmp => CODE-mp}/client/cl_keys.cpp | 3 +- {CODEmp => CODE-mp}/client/cl_main.cpp | 18 +- {CODEmp => CODE-mp}/client/cl_net_chan.cpp | 0 {CODEmp => CODE-mp}/client/cl_parse.cpp | 0 {CODEmp => CODE-mp}/client/cl_scrn.cpp | 0 {CODEmp => CODE-mp}/client/cl_ui.cpp | 5 + {CODEmp => CODE-mp}/client/client.h | 0 {CODEmp => CODE-mp}/client/keys.h | 0 {CODEmp => CODE-mp}/client/snd_dma.cpp | 25 +- {CODEmp => CODE-mp}/client/snd_local.h | 0 {CODEmp => CODE-mp}/client/snd_mem.cpp | 3 +- {CODEmp => CODE-mp}/client/snd_mix.cpp | 0 {CODEmp => CODE-mp}/client/snd_mp3.cpp | 0 {CODEmp => CODE-mp}/client/snd_mp3.h | 0 {CODEmp => CODE-mp}/client/snd_public.h | 0 CODE-mp/client/vssver.scc | Bin 0 -> 512 bytes {CODEmp => CODE-mp}/encryption/buffer.cpp | 0 {CODEmp => CODE-mp}/encryption/buffer.h | 0 .../encryption/cpp_interface.cpp | 0 .../encryption/cpp_interface.h | 0 {CODEmp => CODE-mp}/encryption/encryption.h | 0 {CODEmp => CODE-mp}/encryption/sockets.cpp | 0 {CODEmp => CODE-mp}/encryption/sockets.h | 0 CODE-mp/encryption/vssver.scc | Bin 0 -> 144 bytes {CODEmp => CODE-mp}/game/JK2_game.def | 0 {CODEmp => CODE-mp}/game/JK2_game.dsp | 39 +- {CODEmp => CODE-mp}/game/ai_main.c | 46 +- {CODEmp => CODE-mp}/game/ai_main.h | 4 +- {CODEmp => CODE-mp}/game/ai_util.c | 3 - {CODEmp => CODE-mp}/game/ai_wpnav.c | 94 + {CODEmp => CODE-mp}/game/anims.h | 176 +- {CODEmp => CODE-mp}/game/be_aas.h | 0 {CODEmp => CODE-mp}/game/be_ai_char.h | 0 {CODEmp => CODE-mp}/game/be_ai_chat.h | 0 {CODEmp => CODE-mp}/game/be_ai_gen.h | 0 {CODEmp => CODE-mp}/game/be_ai_goal.h | 0 {CODEmp => CODE-mp}/game/be_ai_move.h | 0 {CODEmp => CODE-mp}/game/be_ai_weap.h | 0 {CODEmp => CODE-mp}/game/be_ea.h | 0 {CODEmp => CODE-mp}/game/bg_lib.c | 0 {CODEmp => CODE-mp}/game/bg_lib.h | 0 {CODEmp => CODE-mp}/game/bg_local.h | 23 +- {CODEmp => CODE-mp}/game/bg_misc.c | 60 +- CODE-mp/game/bg_panimate.c | 1012 ++++++ {CODEmp => CODE-mp}/game/bg_pmove.c | 648 +--- {CODEmp => CODE-mp}/game/bg_public.h | 14 + {CODEmp => CODE-mp}/game/bg_saber.c | 321 +- {CODEmp => CODE-mp}/game/bg_saga.h | 0 {CODEmp => CODE-mp}/game/bg_slidemove.c | 0 {CODEmp => CODE-mp}/game/bg_weapons.c | 0 {CODEmp => CODE-mp}/game/bg_weapons.h | 0 {CODEmp => CODE-mp}/game/botlib.h | 2 + {CODEmp => CODE-mp}/game/chars.h | 0 {CODEmp => CODE-mp}/game/g_active.c | 180 +- {CODEmp => CODE-mp}/game/g_arenas.c | 0 {CODEmp => CODE-mp}/game/g_bot.c | 0 {CODEmp => CODE-mp}/game/g_client.c | 58 +- {CODEmp => CODE-mp}/game/g_cmds.c | 5 + {CODEmp => CODE-mp}/game/g_combat.c | 46 +- {CODEmp => CODE-mp}/game/g_items.c | 133 +- {CODEmp => CODE-mp}/game/g_local.h | 19 +- {CODEmp => CODE-mp}/game/g_log.c | 0 {CODEmp => CODE-mp}/game/g_main.c | 40 +- {CODEmp => CODE-mp}/game/g_mem.c | 0 {CODEmp => CODE-mp}/game/g_misc.c | 29 + {CODEmp => CODE-mp}/game/g_missile.c | 44 +- {CODEmp => CODE-mp}/game/g_mover.c | 0 {CODEmp => CODE-mp}/game/g_object.c | 0 {CODEmp => CODE-mp}/game/g_public.h | 6 + {CODEmp => CODE-mp}/game/g_saga.c | 0 {CODEmp => CODE-mp}/game/g_session.c | 17 +- {CODEmp => CODE-mp}/game/g_spawn.c | 0 {CODEmp => CODE-mp}/game/g_svcmds.c | 0 {CODEmp => CODE-mp}/game/g_syscalls.c | 0 {CODEmp => CODE-mp}/game/g_target.c | 0 {CODEmp => CODE-mp}/game/g_team.c | 0 {CODEmp => CODE-mp}/game/g_team.h | 0 {CODEmp => CODE-mp}/game/g_trigger.c | 0 {CODEmp => CODE-mp}/game/g_utils.c | 0 {CODEmp => CODE-mp}/game/g_weapon.c | 60 +- CODE-mp/game/game.bat | 99 + CODE-mp/game/game.q3asm | 40 + {CODEmp => CODE-mp}/game/inv.h | 0 {CODEmp => CODE-mp}/game/match.h | 0 CODE-mp/game/mssccprj.scc | 5 + {CODEmp => CODE-mp}/game/q_math.c | 0 {CODEmp => CODE-mp}/game/q_shared.c | 0 {CODEmp => CODE-mp}/game/q_shared.h | 48 +- {CODEmp => CODE-mp}/game/surfaceflags.h | 0 {CODEmp => CODE-mp}/game/syn.h | 0 CODE-mp/game/vssver.scc | Bin 0 -> 1120 bytes {CODEmp => CODE-mp}/game/w_force.c | 261 +- {CODEmp => CODE-mp}/game/w_saber.c | 149 +- {CODEmp => CODE-mp}/game/w_saber.h | 1 - CODEmp/ghoul2/g2.h => CODE-mp/ghoul2/G2.h | 0 .../g2_api.cpp => CODE-mp/ghoul2/G2_API.cpp | 0 .../ghoul2/G2_bolts.cpp | 0 .../ghoul2/G2_bones.cpp | 0 .../g2_gore.h => CODE-mp/ghoul2/G2_gore.h | 0 .../g2_local.h => CODE-mp/ghoul2/G2_local.h | 0 .../g2_misc.cpp => CODE-mp/ghoul2/G2_misc.cpp | 0 .../ghoul2/G2_surfaces.cpp | 0 {CODEmp => CODE-mp}/ghoul2/ghoul2_shared.h | 0 CODE-mp/ghoul2/vssver.scc | Bin 0 -> 176 bytes CODE-mp/installvms.bat | 4 + {CODEmp => CODE-mp}/jk2mp.dsp | 4 + {CODEmp => CODE-mp}/jk2mp.dsw | 0 {CODEmp => CODE-mp}/jpeg-6/jcapimin.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jccoefct.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jccolor.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcdctmgr.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jchuff.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jchuff.h | 0 {CODEmp => CODE-mp}/jpeg-6/jcinit.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcmainct.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcmarker.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcmaster.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcomapi.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jconfig.h | 0 {CODEmp => CODE-mp}/jpeg-6/jcparam.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcphuff.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcprepct.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jcsample.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jctrans.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdapimin.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdapistd.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdatadst.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdatasrc.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdcoefct.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdcolor.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdct.h | 0 {CODEmp => CODE-mp}/jpeg-6/jddctmgr.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdhuff.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdhuff.h | 0 {CODEmp => CODE-mp}/jpeg-6/jdinput.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdmainct.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdmarker.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdmaster.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdpostct.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdsample.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jdtrans.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jerror.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jerror.h | 0 {CODEmp => CODE-mp}/jpeg-6/jfdctflt.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jidctflt.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jinclude.h | 0 {CODEmp => CODE-mp}/jpeg-6/jmemmgr.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jmemnobs.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jmemsys.h | 0 {CODEmp => CODE-mp}/jpeg-6/jmorecfg.h | 0 {CODEmp => CODE-mp}/jpeg-6/jpegint.h | 0 {CODEmp => CODE-mp}/jpeg-6/jpeglib.h | 0 {CODEmp => CODE-mp}/jpeg-6/jutils.cpp | 0 {CODEmp => CODE-mp}/jpeg-6/jversion.h | 0 CODE-mp/jpeg-6/vssver.scc | Bin 0 -> 784 bytes {CODEmp => CODE-mp}/mp3code/cdct.c | 0 {CODEmp => CODE-mp}/mp3code/config.h | 0 {CODEmp => CODE-mp}/mp3code/copyright.h | 0 {CODEmp => CODE-mp}/mp3code/csbt.c | 0 {CODEmp => CODE-mp}/mp3code/csbtb.c | 0 {CODEmp => CODE-mp}/mp3code/csbtl3.c | 0 {CODEmp => CODE-mp}/mp3code/cup.c | 0 {CODEmp => CODE-mp}/mp3code/cupini.c | 0 {CODEmp => CODE-mp}/mp3code/cupl1.c | 0 {CODEmp => CODE-mp}/mp3code/cupl3.c | 0 {CODEmp => CODE-mp}/mp3code/cwin.c | 0 {CODEmp => CODE-mp}/mp3code/cwinb.c | 0 {CODEmp => CODE-mp}/mp3code/cwinm.c | 0 {CODEmp => CODE-mp}/mp3code/htable.h | 0 {CODEmp => CODE-mp}/mp3code/hwin.c | 0 {CODEmp => CODE-mp}/mp3code/jdw.h | 0 {CODEmp => CODE-mp}/mp3code/l3.h | 0 {CODEmp => CODE-mp}/mp3code/l3dq.c | 0 {CODEmp => CODE-mp}/mp3code/l3init.c | 0 {CODEmp => CODE-mp}/mp3code/mdct.c | 0 {CODEmp => CODE-mp}/mp3code/mhead.c | 0 {CODEmp => CODE-mp}/mp3code/mhead.h | 0 {CODEmp => CODE-mp}/mp3code/mp3struct.h | 0 {CODEmp => CODE-mp}/mp3code/msis.c | 0 {CODEmp => CODE-mp}/mp3code/port.h | 0 {CODEmp => CODE-mp}/mp3code/small_header.h | 0 {CODEmp => CODE-mp}/mp3code/tableawd.h | 0 {CODEmp => CODE-mp}/mp3code/towave.c | 0 {CODEmp => CODE-mp}/mp3code/uph.c | 0 {CODEmp => CODE-mp}/mp3code/upsf.c | 0 CODE-mp/mp3code/vssver.scc | Bin 0 -> 528 bytes {CODEmp => CODE-mp}/mp3code/wavep.c | 0 CODE-mp/mssccprj.scc | 5 + {CODEmp => CODE-mp}/png/png.cpp | 0 {CODEmp => CODE-mp}/png/png.h | 0 CODE-mp/png/vssver.scc | Bin 0 -> 64 bytes CODE-mp/put.bat | 2 + .../qcommon/GenericParser2.cpp | 0 .../qcommon/GenericParser2.h | 0 .../miniheap.h => CODE-mp/qcommon/MiniHeap.h | 0 .../qcommon/RoffSystem.cpp | 0 .../qcommon/RoffSystem.h | 0 {CODEmp => CODE-mp}/qcommon/chash.h | 0 {CODEmp => CODE-mp}/qcommon/cm_load.cpp | 0 {CODEmp => CODE-mp}/qcommon/cm_local.h | 0 {CODEmp => CODE-mp}/qcommon/cm_patch.cpp | 0 {CODEmp => CODE-mp}/qcommon/cm_patch.h | 0 {CODEmp => CODE-mp}/qcommon/cm_polylib.cpp | 0 {CODEmp => CODE-mp}/qcommon/cm_polylib.h | 0 {CODEmp => CODE-mp}/qcommon/cm_public.h | 0 {CODEmp => CODE-mp}/qcommon/cm_shader.cpp | 0 {CODEmp => CODE-mp}/qcommon/cm_test.cpp | 0 {CODEmp => CODE-mp}/qcommon/cm_trace.cpp | 0 {CODEmp => CODE-mp}/qcommon/cmd.cpp | 0 {CODEmp => CODE-mp}/qcommon/common.cpp | 30 +- {CODEmp => CODE-mp}/qcommon/cvar.cpp | 16 +- {CODEmp => CODE-mp}/qcommon/disablewarnings.h | 0 {CODEmp => CODE-mp}/qcommon/files.cpp | 6 +- {CODEmp => CODE-mp}/qcommon/huffman.cpp | 0 {CODEmp => CODE-mp}/qcommon/md4.cpp | 0 {CODEmp => CODE-mp}/qcommon/msg.cpp | 0 {CODEmp => CODE-mp}/qcommon/net_chan.cpp | 0 {CODEmp => CODE-mp}/qcommon/q_math.cpp | 0 {CODEmp => CODE-mp}/qcommon/q_shared.cpp | 0 {CODEmp => CODE-mp}/qcommon/qcommon.h | 0 {CODEmp => CODE-mp}/qcommon/qfiles.h | 2 +- {CODEmp => CODE-mp}/qcommon/sstring.h | 0 {CODEmp => CODE-mp}/qcommon/strip.cpp | 0 {CODEmp => CODE-mp}/qcommon/strip.h | 0 {CODEmp => CODE-mp}/qcommon/tags.h | 0 {CODEmp => CODE-mp}/qcommon/unzip.cpp | 0 {CODEmp => CODE-mp}/qcommon/unzip.h | 0 {CODEmp => CODE-mp}/qcommon/vm.cpp | 0 .../qcommon/vm_interpreted.cpp | 0 {CODEmp => CODE-mp}/qcommon/vm_local.h | 0 {CODEmp => CODE-mp}/qcommon/vm_ppc.cpp | 0 {CODEmp => CODE-mp}/qcommon/vm_x86.cpp | 6 +- CODE-mp/qcommon/vssver.scc | Bin 0 -> 672 bytes {CODEmp => CODE-mp}/renderer/glext.h | 0 {CODEmp => CODE-mp}/renderer/matcomp.c | 0 {CODEmp => CODE-mp}/renderer/matcomp.h | 0 {CODEmp => CODE-mp}/renderer/mdx_format.h | 0 CODE-mp/renderer/mssccprj.scc | 5 + {CODEmp => CODE-mp}/renderer/qgl.h | 0 {CODEmp => CODE-mp}/renderer/ref_trin.def | 0 {CODEmp => CODE-mp}/renderer/renderer.dsp | 0 .../renderer/tr_WorldEffects.cpp | 66 +- .../renderer/tr_WorldEffects.h | 5 + {CODEmp => CODE-mp}/renderer/tr_animation.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_backend.cpp | 106 +- {CODEmp => CODE-mp}/renderer/tr_bsp.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_cmds.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_curve.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_flares.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_font.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_font.h | 0 {CODEmp => CODE-mp}/renderer/tr_ghoul2.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_image.cpp | 200 +- {CODEmp => CODE-mp}/renderer/tr_init.cpp | 20 +- {CODEmp => CODE-mp}/renderer/tr_light.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_local.h | 18 +- {CODEmp => CODE-mp}/renderer/tr_main.cpp | 65 +- {CODEmp => CODE-mp}/renderer/tr_marks.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_mesh.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_model.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_noise.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_public.h | 0 .../renderer/tr_quicksprite.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_quicksprite.h | 0 {CODEmp => CODE-mp}/renderer/tr_scene.cpp | 0 CODE-mp/renderer/tr_shade.cpp | 1483 +++++++++ .../renderer/tr_shade_calc.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_shader.cpp | 5 +- {CODEmp => CODE-mp}/renderer/tr_shadows.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_sky.cpp | 0 {CODEmp => CODE-mp}/renderer/tr_surface.cpp | 0 CODE-mp/renderer/tr_surfacesprites.cpp | 1462 +++++++++ {CODEmp => CODE-mp}/renderer/tr_world.cpp | 0 CODE-mp/renderer/vssver.scc | Bin 0 -> 656 bytes {CODEmp => CODE-mp}/server/server.h | 0 {CODEmp => CODE-mp}/server/sv_bot.cpp | 0 {CODEmp => CODE-mp}/server/sv_ccmds.cpp | 0 {CODEmp => CODE-mp}/server/sv_client.cpp | 0 {CODEmp => CODE-mp}/server/sv_game.cpp | 0 {CODEmp => CODE-mp}/server/sv_init.cpp | 0 {CODEmp => CODE-mp}/server/sv_main.cpp | 0 {CODEmp => CODE-mp}/server/sv_net_chan.cpp | 0 {CODEmp => CODE-mp}/server/sv_rankings.cpp | 0 {CODEmp => CODE-mp}/server/sv_snapshot.cpp | 3 +- {CODEmp => CODE-mp}/server/sv_world.cpp | 0 CODE-mp/server/vssver.scc | Bin 0 -> 208 bytes {CODEmp => CODE-mp}/strings/con_text.h | 0 {CODEmp => CODE-mp}/strings/str_server.h | 0 CODE-mp/strings/vssver.scc | Bin 0 -> 64 bytes CODE-mp/tosend.bat | 5 + {CODEmp => CODE-mp}/ui/keycodes.h | 0 CODE-mp/ui/mssccprj.scc | 5 + CODE-mp/ui/ui.bat | 43 + {CODEmp => CODE-mp}/ui/ui.def | 0 {CODEmp => CODE-mp}/ui/ui.dsp | 20 +- CODE-mp/ui/ui.q3asm | 14 + {CODEmp => CODE-mp}/ui/ui_atoms.c | 0 {CODEmp => CODE-mp}/ui/ui_force.c | 56 +- {CODEmp => CODE-mp}/ui/ui_force.h | 3 +- {CODEmp => CODE-mp}/ui/ui_gameinfo.c | 0 {CODEmp => CODE-mp}/ui/ui_local.h | 0 {CODEmp => CODE-mp}/ui/ui_main.c | 243 +- {CODEmp => CODE-mp}/ui/ui_players.c | 0 {CODEmp => CODE-mp}/ui/ui_public.h | 6 +- {CODEmp => CODE-mp}/ui/ui_shared.c | 78 +- {CODEmp => CODE-mp}/ui/ui_shared.h | 13 +- {CODEmp => CODE-mp}/ui/ui_syscalls.c | 10 + {CODEmp => CODE-mp}/ui/ui_util.c | 0 CODE-mp/ui/vssver.scc | Bin 0 -> 304 bytes CODE-mp/vssver.scc | Bin 0 -> 128 bytes {CODEmp => CODE-mp}/win32/glw_win.h | 2 + {CODEmp => CODE-mp}/win32/qe3.ico | Bin {CODEmp => CODE-mp}/win32/resource.h | 0 CODE-mp/win32/vssver.scc | Bin 0 -> 272 bytes {CODEmp => CODE-mp}/win32/win_gamma.cpp | 0 {CODEmp => CODE-mp}/win32/win_glimp.cpp | 58 +- {CODEmp => CODE-mp}/win32/win_input.cpp | 0 {CODEmp => CODE-mp}/win32/win_local.h | 0 {CODEmp => CODE-mp}/win32/win_main.cpp | 76 +- {CODEmp => CODE-mp}/win32/win_net.cpp | 0 {CODEmp => CODE-mp}/win32/win_qgl.cpp | 0 {CODEmp => CODE-mp}/win32/win_shared.cpp | 0 {CODEmp => CODE-mp}/win32/win_snd.cpp | 0 {CODEmp => CODE-mp}/win32/win_syscon.cpp | 206 +- {CODEmp => CODE-mp}/win32/win_wndproc.cpp | 0 {CODEmp => CODE-mp}/win32/winquake.rc | 0 {CODEmp => CODE-mp}/zlib/adler32.c | 0 {CODEmp => CODE-mp}/zlib/crc32.cpp | 0 {CODEmp => CODE-mp}/zlib/deflate.c | 0 {CODEmp => CODE-mp}/zlib/deflate.h | 0 {CODEmp => CODE-mp}/zlib/infblock.c | 0 {CODEmp => CODE-mp}/zlib/infblock.h | 0 {CODEmp => CODE-mp}/zlib/infcodes.c | 0 {CODEmp => CODE-mp}/zlib/infcodes.h | 0 {CODEmp => CODE-mp}/zlib/inffast.c | 0 {CODEmp => CODE-mp}/zlib/inffast.h | 0 {CODEmp => CODE-mp}/zlib/inffixed.h | 0 {CODEmp => CODE-mp}/zlib/inflate.c | 0 {CODEmp => CODE-mp}/zlib/inftrees.c | 0 {CODEmp => CODE-mp}/zlib/inftrees.h | 0 {CODEmp => CODE-mp}/zlib/infutil.c | 0 {CODEmp => CODE-mp}/zlib/infutil.h | 0 {CODEmp => CODE-mp}/zlib/trees.c | 0 {CODEmp => CODE-mp}/zlib/trees.h | 0 CODE-mp/zlib/vssver.scc | Bin 0 -> 384 bytes {CODEmp => CODE-mp}/zlib/zconf.h | 0 {CODEmp => CODE-mp}/zlib/zlib.h | 0 {CODEmp => CODE-mp}/zlib/zutil.c | 0 {CODEmp => CODE-mp}/zlib/zutil.h | 0 CODEmp/Debug/botlib.lib | Bin 1450954 -> 0 bytes CODEmp/Debug/cgamex86.lib | Bin 2102 -> 0 bytes CODEmp/Debug/jk2mpgamex86.lib | Bin 2186 -> 0 bytes CODEmp/Debug/uix86.lib | Bin 2060 -> 0 bytes CODEmp/Final/botlib.lib | Bin 740274 -> 0 bytes CODEmp/Final/cgamex86.lib | Bin 2102 -> 0 bytes CODEmp/Final/jk2mpgamex86.lib | Bin 2186 -> 0 bytes CODEmp/Final/uix86.lib | Bin 2060 -> 0 bytes CODEmp/Release/botlib.lib | Bin 1237224 -> 0 bytes CODEmp/Release/cgamex86.lib | Bin 2102 -> 0 bytes CODEmp/Release/jk2mpgamex86.lib | Bin 2186 -> 0 bytes CODEmp/Release/uix86.lib | Bin 2060 -> 0 bytes CODEmp/game/bg_panimate.c | 545 ---- CODEmp/renderer/tr_shade.cpp | 2771 ----------------- code/0_compiled_first/0_SH_Leak.cpp | 1 + code/0_compiled_first/vssver.scc | Bin 0 -> 48 bytes code/Debug/jk2gamex86.lib | Bin 2672 -> 0 bytes code/EaxMan.dll | Bin 0 -> 94208 bytes code/FFC10.dll | Bin 0 -> 126976 bytes code/FFC10d.dll | Bin 0 -> 405591 bytes code/FinalBuild/jk2gamex86.lib | Bin 2672 -> 0 bytes code/OpenAL32.dll | Bin 0 -> 143360 bytes code/Release/jk2gamex86.lib | Bin 2672 -> 0 bytes code/SHDebug/HA312W32.DLL | Bin 0 -> 382464 bytes code/SHDebug/SHW32.DLL | Bin 0 -> 112720 bytes code/SHDebug/jk2gamex86.lib | Bin 2672 -> 0 bytes code/SHDebug/vssver.scc | Bin 0 -> 64 bytes code/base/ext_data/NPCs.cfg | 2082 +++++++++++++ code/base/ext_data/dms.dat | 1233 ++++++++ code/base/ext_data/items.dat | 742 +++++ code/base/ext_data/vssver.scc | Bin 0 -> 96 bytes code/base/ext_data/weapons.dat | 609 ++++ code/cgame/FxPrimitives.cpp | 8 +- code/cgame/FxScheduler.cpp | 2 +- code/cgame/animtable.h | 94 +- code/cgame/cg_consolecmds.cpp | 6 +- code/cgame/cg_draw.cpp | 58 +- code/cgame/cg_ents.cpp | 72 +- code/cgame/cg_event.cpp | 4 +- code/cgame/cg_local.h | 12 +- code/cgame/cg_localents.cpp | 3 + code/cgame/cg_main.cpp | 163 +- code/cgame/cg_media.h | 9 +- code/cgame/cg_players.cpp | 100 +- code/cgame/cg_players.dsp | 88 - code/cgame/cg_predict.cpp | 140 +- code/cgame/cg_public.h | 1 + code/cgame/cg_servercmds.cpp | 85 +- code/cgame/cg_syscalls.cpp | 7 +- code/cgame/cg_text.cpp | 39 +- code/cgame/cg_text.h | 156 - code/cgame/cg_view.cpp | 94 +- code/cgame/cg_weapons.cpp | 55 +- code/cgame/vssver.scc | Bin 0 -> 880 bytes code/client/OpenAL/vssver.scc | Bin 0 -> 128 bytes code/client/cl_cgame.cpp | 8 +- code/client/cl_cin.cpp | 59 +- code/client/cl_main.cpp | 38 +- code/client/cl_mp3.org | 419 +++ code/client/cl_ui.cpp | 2 +- code/client/client.h | 2 + code/client/eax/eax-util.cpp | 706 ----- code/client/eax/eax-util.h | 765 ----- code/client/eax/vssver.scc | Bin 0 -> 64 bytes code/client/snd_dma.cpp | 543 +++- code/client/snd_local.h | 5 +- code/client/snd_mem.cpp | 8 +- code/client/snd_public.h | 4 +- code/client/vssver.scc | Bin 0 -> 480 bytes code/encryption/vssver.scc | Bin 0 -> 144 bytes code/ghoul2/g2.h | 4 +- code/ghoul2/g2_api.cpp | 814 ++++- code/ghoul2/g2_bolts.cpp | 5 + code/ghoul2/g2_bones.cpp | 402 +-- code/ghoul2/g2_misc.cpp | 52 +- code/ghoul2/g2_surfaces.cpp | 174 +- code/ghoul2/vssver.scc | Bin 0 -> 128 bytes code/icarus/vssver.scc | Bin 0 -> 320 bytes code/jpeg-6/vssver.scc | Bin 0 -> 784 bytes code/mac/MacQuake3 | Bin 0 -> 141015 bytes code/mac/q3.rsrc | 0 code/mac/vssver.scc | Bin 0 -> 256 bytes code/mp3code/vssver.scc | Bin 0 -> 528 bytes code/mssccprj.scc | 9 + code/null/vssver.scc | Bin 0 -> 112 bytes code/qcommon/cm_load.cpp | 6 + code/qcommon/cm_local.h | 1 + code/qcommon/cm_test.cpp | 170 +- code/qcommon/common.cpp | 98 +- code/qcommon/hstring.cpp | 493 +++ code/qcommon/hstring.h | 216 ++ code/qcommon/qcommon.h | 5 +- code/qcommon/strip.cpp | 11 +- code/qcommon/strippublic.h | 19 +- code/qcommon/stv_version.h | 2 +- code/qcommon/vssver.scc | Bin 0 -> 512 bytes code/renderer/mssccprj.scc | 5 + code/renderer/tr_font.cpp | 275 +- code/renderer/tr_font.h | 1 + code/renderer/tr_ghoul2.cpp | 2035 ++++++------ code/renderer/tr_image.cpp | 4 +- code/renderer/tr_init.cpp | 16 +- code/renderer/tr_light.cpp | 7 +- code/renderer/tr_local.h | 12 +- code/renderer/tr_quicksprite.cpp | 2 +- code/renderer/tr_shader.cpp | 8 +- code/renderer/tr_surfacesprites.cpp | 81 +- code/renderer/tr_types.h | 2 +- code/renderer/tr_worldeffects.cpp | 66 +- code/renderer/tr_worldeffects.h | 5 + code/renderer/vssver.scc | Bin 0 -> 784 bytes code/server/server.h | 1 + code/server/sv_init.cpp | 8 + code/server/sv_main.cpp | 13 +- code/server/sv_world.cpp | 135 +- code/server/vssver.scc | Bin 0 -> 208 bytes code/smartheap/HA312W32.DLL | Bin 0 -> 382464 bytes code/smartheap/SHW32.DLL | Bin 0 -> 112720 bytes code/smartheap/smrtheap.hpp | 197 ++ code/smartheap/vssver.scc | Bin 0 -> 144 bytes code/starwars.dsp | 18 +- code/tonet.bat | 2 + code/tosend.bat | 4 + code/ui/mssccprj.scc | 5 + code/ui/ui_atoms.cpp | 3 + code/ui/ui_main.cpp | 97 +- code/ui/ui_public.h | 2 +- code/ui/ui_shared.cpp | 81 +- code/ui/vssver.scc | Bin 0 -> 256 bytes code/unix/Makefile | 988 ++++++ code/unix/matha.s | 402 +++ code/unix/q3test.spec.sh | 41 + code/unix/quake3.gif | Bin 0 -> 1378 bytes code/unix/snd_mixa.s | 197 ++ code/unix/sys_dosa.s | 94 + code/unix/vssver.scc | Bin 0 -> 272 bytes code/vssver.scc | Bin 0 -> 208 bytes code/win32/background.bmp | Bin 0 -> 197688 bytes code/win32/clear.bmp | Bin 0 -> 5174 bytes code/win32/feelit/FFC10.dll | Bin 0 -> 126976 bytes code/win32/feelit/FFC10d.dll | Bin 0 -> 405591 bytes code/win32/feelit/vssver.scc | Bin 0 -> 528 bytes code/win32/vssver.scc | Bin 0 -> 352 bytes code/win32/win_local.h | 2 +- code/win32/win_main.cpp | 2 +- code/win32/win_snd.cpp | 11 +- code/win32/win_syscon.cpp | 6 +- code/win32/win_wndproc.cpp | 2 +- ui/vssver.scc | Bin 0 -> 48 bytes 636 files changed, 19310 insertions(+), 9565 deletions(-) rename {CODEmp => CODE-mp}/Splines/Splines.dsp (100%) rename {CODEmp => CODE-mp}/Splines/math_angles.cpp (100%) rename {CODEmp => CODE-mp}/Splines/math_angles.h (100%) rename {CODEmp => CODE-mp}/Splines/math_matrix.cpp (100%) rename {CODEmp => CODE-mp}/Splines/math_matrix.h (100%) rename {CODEmp => CODE-mp}/Splines/math_quaternion.cpp (100%) rename {CODEmp => CODE-mp}/Splines/math_quaternion.h (100%) rename {CODEmp => CODE-mp}/Splines/math_vector.cpp (100%) rename {CODEmp => CODE-mp}/Splines/math_vector.h (100%) create mode 100644 CODE-mp/Splines/mssccprj.scc rename {CODEmp => CODE-mp}/Splines/q_parse.cpp (100%) rename {CODEmp => CODE-mp}/Splines/q_shared.cpp (100%) rename {CODEmp => CODE-mp}/Splines/q_shared.h (100%) rename {CODEmp => CODE-mp}/Splines/splines.cpp (100%) rename {CODEmp => CODE-mp}/Splines/splines.h (100%) rename {CODEmp => CODE-mp}/Splines/util_list.h (100%) rename {CODEmp => CODE-mp}/Splines/util_str.cpp (100%) rename {CODEmp => CODE-mp}/Splines/util_str.h (100%) create mode 100644 CODE-mp/Splines/vssver.scc rename {CODEmp => CODE-mp}/botlib/aasfile.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_bsp.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_bspq3.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_cluster.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_cluster.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_debug.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_debug.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_def.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_entity.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_entity.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_file.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_file.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_funcs.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_main.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_main.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_move.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_move.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_optimize.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_optimize.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_reach.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_reach.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_route.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_route.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_routealt.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_routealt.h (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_sample.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_aas_sample.h (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_char.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_chat.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_gen.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_goal.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_move.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_weap.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_weight.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_ai_weight.h (100%) rename {CODEmp => CODE-mp}/botlib/be_ea.cpp (100%) rename {CODEmp => CODE-mp}/botlib/be_interface.cpp (96%) rename {CODEmp => CODE-mp}/botlib/be_interface.h (100%) rename {CODEmp => CODE-mp}/botlib/botlib.dsp (100%) rename {CODEmp => CODE-mp}/botlib/l_crc.cpp (100%) rename {CODEmp => CODE-mp}/botlib/l_crc.h (100%) rename {CODEmp => CODE-mp}/botlib/l_libvar.cpp (100%) rename {CODEmp => CODE-mp}/botlib/l_libvar.h (100%) rename {CODEmp => CODE-mp}/botlib/l_log.cpp (100%) rename {CODEmp => CODE-mp}/botlib/l_log.h (100%) rename {CODEmp => CODE-mp}/botlib/l_memory.cpp (100%) rename {CODEmp => CODE-mp}/botlib/l_memory.h (100%) rename {CODEmp => CODE-mp}/botlib/l_precomp.cpp (94%) rename {CODEmp => CODE-mp}/botlib/l_precomp.h (93%) rename {CODEmp => CODE-mp}/botlib/l_script.cpp (100%) rename {CODEmp => CODE-mp}/botlib/l_script.h (100%) rename {CODEmp => CODE-mp}/botlib/l_struct.cpp (100%) rename {CODEmp => CODE-mp}/botlib/l_struct.h (100%) rename {CODEmp => CODE-mp}/botlib/l_utils.h (100%) create mode 100644 CODE-mp/botlib/mssccprj.scc create mode 100644 CODE-mp/botlib/vssver.scc create mode 100644 CODE-mp/buildvms.bat rename {CODEmp => CODE-mp}/cgame/JK2_cgame.def (100%) rename {CODEmp => CODE-mp}/cgame/JK2_cgame.dsp (94%) rename {CODEmp => CODE-mp}/cgame/animtable.h (90%) rename {CODEmp => CODE-mp}/cgame/cg_consolecmds.c (93%) rename {CODEmp => CODE-mp}/cgame/cg_draw.c (94%) rename {CODEmp => CODE-mp}/cgame/cg_drawtools.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_effects.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_ents.c (93%) rename {CODEmp => CODE-mp}/cgame/cg_event.c (91%) rename {CODEmp => CODE-mp}/cgame/cg_info.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_light.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_lights.h (100%) rename {CODEmp => CODE-mp}/cgame/cg_local.h (95%) rename {CODEmp => CODE-mp}/cgame/cg_localents.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_main.c (94%) rename {CODEmp => CODE-mp}/cgame/cg_marks.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_media.h (100%) rename {CODEmp => CODE-mp}/cgame/cg_newDraw.c (96%) rename {CODEmp => CODE-mp}/cgame/cg_playeranimate.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_players.c (88%) rename {CODEmp => CODE-mp}/cgame/cg_playerstate.c (93%) rename {CODEmp => CODE-mp}/cgame/cg_predict.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_public.h (95%) rename {CODEmp => CODE-mp}/cgame/cg_saga.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_scoreboard.c (96%) rename {CODEmp => CODE-mp}/cgame/cg_servercmds.c (94%) rename {CODEmp => CODE-mp}/cgame/cg_snapshot.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_syscalls.c (95%) rename {CODEmp => CODE-mp}/cgame/cg_turret.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_view.c (100%) rename {CODEmp => CODE-mp}/cgame/cg_weaponinit.c (97%) rename {CODEmp => CODE-mp}/cgame/cg_weapons.c (94%) create mode 100644 CODE-mp/cgame/cgame.bat create mode 100644 CODE-mp/cgame/cgame.q3asm rename {CODEmp => CODE-mp}/cgame/fx_blaster.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_bowcaster.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_bryarpistol.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_demp2.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_disruptor.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_flechette.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_force.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_heavyrepeater.c (100%) rename {CODEmp => CODE-mp}/cgame/fx_local.h (100%) rename {CODEmp => CODE-mp}/cgame/fx_rocketlauncher.c (100%) create mode 100644 CODE-mp/cgame/mssccprj.scc rename {CODEmp => CODE-mp}/cgame/tr_types.h (88%) create mode 100644 CODE-mp/cgame/vssver.scc rename CODEmp/client/fxexport.cpp => CODE-mp/client/FXExport.cpp (100%) rename CODEmp/client/fxexport.h => CODE-mp/client/FXExport.h (100%) rename CODEmp/client/fxprimitives.cpp => CODE-mp/client/FxPrimitives.cpp (100%) rename CODEmp/client/fxprimitives.h => CODE-mp/client/FxPrimitives.h (100%) rename CODEmp/client/fxscheduler.cpp => CODE-mp/client/FxScheduler.cpp (96%) rename CODEmp/client/fxscheduler.h => CODE-mp/client/FxScheduler.h (100%) rename CODEmp/client/fxsystem.cpp => CODE-mp/client/FxSystem.cpp (100%) rename CODEmp/client/fxsystem.h => CODE-mp/client/FxSystem.h (100%) rename CODEmp/client/fxtemplate.cpp => CODE-mp/client/FxTemplate.cpp (100%) rename CODEmp/client/fxutil.cpp => CODE-mp/client/FxUtil.cpp (100%) rename CODEmp/client/fxutil.h => CODE-mp/client/FxUtil.h (100%) rename {CODEmp => CODE-mp}/client/cl_cgame.cpp (96%) rename {CODEmp => CODE-mp}/client/cl_cin.cpp (100%) rename {CODEmp => CODE-mp}/client/cl_console.cpp (100%) rename {CODEmp => CODE-mp}/client/cl_input.cpp (95%) rename {CODEmp => CODE-mp}/client/cl_keys.cpp (95%) rename {CODEmp => CODE-mp}/client/cl_main.cpp (95%) rename {CODEmp => CODE-mp}/client/cl_net_chan.cpp (100%) rename {CODEmp => CODE-mp}/client/cl_parse.cpp (100%) rename {CODEmp => CODE-mp}/client/cl_scrn.cpp (100%) rename {CODEmp => CODE-mp}/client/cl_ui.cpp (95%) rename {CODEmp => CODE-mp}/client/client.h (100%) rename {CODEmp => CODE-mp}/client/keys.h (100%) rename {CODEmp => CODE-mp}/client/snd_dma.cpp (95%) rename {CODEmp => CODE-mp}/client/snd_local.h (100%) rename {CODEmp => CODE-mp}/client/snd_mem.cpp (95%) rename {CODEmp => CODE-mp}/client/snd_mix.cpp (100%) rename {CODEmp => CODE-mp}/client/snd_mp3.cpp (100%) rename {CODEmp => CODE-mp}/client/snd_mp3.h (100%) rename {CODEmp => CODE-mp}/client/snd_public.h (100%) create mode 100644 CODE-mp/client/vssver.scc rename {CODEmp => CODE-mp}/encryption/buffer.cpp (100%) rename {CODEmp => CODE-mp}/encryption/buffer.h (100%) rename {CODEmp => CODE-mp}/encryption/cpp_interface.cpp (100%) rename {CODEmp => CODE-mp}/encryption/cpp_interface.h (100%) rename {CODEmp => CODE-mp}/encryption/encryption.h (100%) rename {CODEmp => CODE-mp}/encryption/sockets.cpp (100%) rename {CODEmp => CODE-mp}/encryption/sockets.h (100%) create mode 100644 CODE-mp/encryption/vssver.scc rename {CODEmp => CODE-mp}/game/JK2_game.def (100%) rename {CODEmp => CODE-mp}/game/JK2_game.dsp (94%) rename {CODEmp => CODE-mp}/game/ai_main.c (94%) rename {CODEmp => CODE-mp}/game/ai_main.h (94%) rename {CODEmp => CODE-mp}/game/ai_util.c (93%) rename {CODEmp => CODE-mp}/game/ai_wpnav.c (91%) rename {CODEmp => CODE-mp}/game/anims.h (90%) rename {CODEmp => CODE-mp}/game/be_aas.h (100%) rename {CODEmp => CODE-mp}/game/be_ai_char.h (100%) rename {CODEmp => CODE-mp}/game/be_ai_chat.h (100%) rename {CODEmp => CODE-mp}/game/be_ai_gen.h (100%) rename {CODEmp => CODE-mp}/game/be_ai_goal.h (100%) rename {CODEmp => CODE-mp}/game/be_ai_move.h (100%) rename {CODEmp => CODE-mp}/game/be_ai_weap.h (100%) rename {CODEmp => CODE-mp}/game/be_ea.h (100%) rename {CODEmp => CODE-mp}/game/bg_lib.c (100%) rename {CODEmp => CODE-mp}/game/bg_lib.h (100%) rename {CODEmp => CODE-mp}/game/bg_local.h (71%) rename {CODEmp => CODE-mp}/game/bg_misc.c (93%) create mode 100644 CODE-mp/game/bg_panimate.c rename {CODEmp => CODE-mp}/game/bg_pmove.c (82%) rename {CODEmp => CODE-mp}/game/bg_public.h (94%) rename {CODEmp => CODE-mp}/game/bg_saber.c (84%) rename {CODEmp => CODE-mp}/game/bg_saga.h (100%) rename {CODEmp => CODE-mp}/game/bg_slidemove.c (100%) rename {CODEmp => CODE-mp}/game/bg_weapons.c (100%) rename {CODEmp => CODE-mp}/game/bg_weapons.h (100%) rename {CODEmp => CODE-mp}/game/botlib.h (97%) rename {CODEmp => CODE-mp}/game/chars.h (100%) rename {CODEmp => CODE-mp}/game/g_active.c (86%) rename {CODEmp => CODE-mp}/game/g_arenas.c (100%) rename {CODEmp => CODE-mp}/game/g_bot.c (100%) rename {CODEmp => CODE-mp}/game/g_client.c (94%) rename {CODEmp => CODE-mp}/game/g_cmds.c (95%) rename {CODEmp => CODE-mp}/game/g_combat.c (94%) rename {CODEmp => CODE-mp}/game/g_items.c (89%) rename {CODEmp => CODE-mp}/game/g_local.h (96%) rename {CODEmp => CODE-mp}/game/g_log.c (100%) rename {CODEmp => CODE-mp}/game/g_main.c (93%) rename {CODEmp => CODE-mp}/game/g_mem.c (100%) rename {CODEmp => CODE-mp}/game/g_misc.c (93%) rename {CODEmp => CODE-mp}/game/g_missile.c (91%) rename {CODEmp => CODE-mp}/game/g_mover.c (100%) rename {CODEmp => CODE-mp}/game/g_object.c (100%) rename {CODEmp => CODE-mp}/game/g_public.h (95%) rename {CODEmp => CODE-mp}/game/g_saga.c (100%) rename {CODEmp => CODE-mp}/game/g_session.c (86%) rename {CODEmp => CODE-mp}/game/g_spawn.c (100%) rename {CODEmp => CODE-mp}/game/g_svcmds.c (100%) rename {CODEmp => CODE-mp}/game/g_syscalls.c (100%) rename {CODEmp => CODE-mp}/game/g_target.c (100%) rename {CODEmp => CODE-mp}/game/g_team.c (100%) rename {CODEmp => CODE-mp}/game/g_team.h (100%) rename {CODEmp => CODE-mp}/game/g_trigger.c (100%) rename {CODEmp => CODE-mp}/game/g_utils.c (100%) rename {CODEmp => CODE-mp}/game/g_weapon.c (94%) create mode 100644 CODE-mp/game/game.bat create mode 100644 CODE-mp/game/game.q3asm rename {CODEmp => CODE-mp}/game/inv.h (100%) rename {CODEmp => CODE-mp}/game/match.h (100%) create mode 100644 CODE-mp/game/mssccprj.scc rename {CODEmp => CODE-mp}/game/q_math.c (100%) rename {CODEmp => CODE-mp}/game/q_shared.c (100%) rename {CODEmp => CODE-mp}/game/q_shared.h (93%) rename {CODEmp => CODE-mp}/game/surfaceflags.h (100%) rename {CODEmp => CODE-mp}/game/syn.h (100%) create mode 100644 CODE-mp/game/vssver.scc rename {CODEmp => CODE-mp}/game/w_force.c (91%) rename {CODEmp => CODE-mp}/game/w_saber.c (91%) rename {CODEmp => CODE-mp}/game/w_saber.h (85%) rename CODEmp/ghoul2/g2.h => CODE-mp/ghoul2/G2.h (100%) rename CODEmp/ghoul2/g2_api.cpp => CODE-mp/ghoul2/G2_API.cpp (100%) rename CODEmp/ghoul2/g2_bolts.cpp => CODE-mp/ghoul2/G2_bolts.cpp (100%) rename CODEmp/ghoul2/g2_bones.cpp => CODE-mp/ghoul2/G2_bones.cpp (100%) rename CODEmp/ghoul2/g2_gore.h => CODE-mp/ghoul2/G2_gore.h (100%) rename CODEmp/ghoul2/g2_local.h => CODE-mp/ghoul2/G2_local.h (100%) rename CODEmp/ghoul2/g2_misc.cpp => CODE-mp/ghoul2/G2_misc.cpp (100%) rename CODEmp/ghoul2/g2_surfaces.cpp => CODE-mp/ghoul2/G2_surfaces.cpp (100%) rename {CODEmp => CODE-mp}/ghoul2/ghoul2_shared.h (100%) create mode 100644 CODE-mp/ghoul2/vssver.scc create mode 100644 CODE-mp/installvms.bat rename {CODEmp => CODE-mp}/jk2mp.dsp (94%) rename {CODEmp => CODE-mp}/jk2mp.dsw (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcapimin.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jccoefct.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jccolor.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcdctmgr.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jchuff.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jchuff.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcinit.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcmainct.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcmarker.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcmaster.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcomapi.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jconfig.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcparam.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcphuff.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcprepct.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jcsample.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jctrans.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdapimin.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdapistd.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdatadst.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdatasrc.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdcoefct.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdcolor.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdct.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jddctmgr.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdhuff.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdhuff.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdinput.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdmainct.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdmarker.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdmaster.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdpostct.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdsample.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jdtrans.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jerror.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jerror.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jfdctflt.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jidctflt.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jinclude.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jmemmgr.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jmemnobs.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jmemsys.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jmorecfg.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jpegint.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jpeglib.h (100%) rename {CODEmp => CODE-mp}/jpeg-6/jutils.cpp (100%) rename {CODEmp => CODE-mp}/jpeg-6/jversion.h (100%) create mode 100644 CODE-mp/jpeg-6/vssver.scc rename {CODEmp => CODE-mp}/mp3code/cdct.c (100%) rename {CODEmp => CODE-mp}/mp3code/config.h (100%) rename {CODEmp => CODE-mp}/mp3code/copyright.h (100%) rename {CODEmp => CODE-mp}/mp3code/csbt.c (100%) rename {CODEmp => CODE-mp}/mp3code/csbtb.c (100%) rename {CODEmp => CODE-mp}/mp3code/csbtl3.c (100%) rename {CODEmp => CODE-mp}/mp3code/cup.c (100%) rename {CODEmp => CODE-mp}/mp3code/cupini.c (100%) rename {CODEmp => CODE-mp}/mp3code/cupl1.c (100%) rename {CODEmp => CODE-mp}/mp3code/cupl3.c (100%) rename {CODEmp => CODE-mp}/mp3code/cwin.c (100%) rename {CODEmp => CODE-mp}/mp3code/cwinb.c (100%) rename {CODEmp => CODE-mp}/mp3code/cwinm.c (100%) rename {CODEmp => CODE-mp}/mp3code/htable.h (100%) rename {CODEmp => CODE-mp}/mp3code/hwin.c (100%) rename {CODEmp => CODE-mp}/mp3code/jdw.h (100%) rename {CODEmp => CODE-mp}/mp3code/l3.h (100%) rename {CODEmp => CODE-mp}/mp3code/l3dq.c (100%) rename {CODEmp => CODE-mp}/mp3code/l3init.c (100%) rename {CODEmp => CODE-mp}/mp3code/mdct.c (100%) rename {CODEmp => CODE-mp}/mp3code/mhead.c (100%) rename {CODEmp => CODE-mp}/mp3code/mhead.h (100%) rename {CODEmp => CODE-mp}/mp3code/mp3struct.h (100%) rename {CODEmp => CODE-mp}/mp3code/msis.c (100%) rename {CODEmp => CODE-mp}/mp3code/port.h (100%) rename {CODEmp => CODE-mp}/mp3code/small_header.h (100%) rename {CODEmp => CODE-mp}/mp3code/tableawd.h (100%) rename {CODEmp => CODE-mp}/mp3code/towave.c (100%) rename {CODEmp => CODE-mp}/mp3code/uph.c (100%) rename {CODEmp => CODE-mp}/mp3code/upsf.c (100%) create mode 100644 CODE-mp/mp3code/vssver.scc rename {CODEmp => CODE-mp}/mp3code/wavep.c (100%) create mode 100644 CODE-mp/mssccprj.scc rename {CODEmp => CODE-mp}/png/png.cpp (100%) rename {CODEmp => CODE-mp}/png/png.h (100%) create mode 100644 CODE-mp/png/vssver.scc create mode 100644 CODE-mp/put.bat rename CODEmp/qcommon/genericparser2.cpp => CODE-mp/qcommon/GenericParser2.cpp (100%) rename CODEmp/qcommon/genericparser2.h => CODE-mp/qcommon/GenericParser2.h (100%) rename CODEmp/qcommon/miniheap.h => CODE-mp/qcommon/MiniHeap.h (100%) rename CODEmp/qcommon/roffsystem.cpp => CODE-mp/qcommon/RoffSystem.cpp (100%) rename CODEmp/qcommon/roffsystem.h => CODE-mp/qcommon/RoffSystem.h (100%) rename {CODEmp => CODE-mp}/qcommon/chash.h (100%) rename {CODEmp => CODE-mp}/qcommon/cm_load.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/cm_local.h (100%) rename {CODEmp => CODE-mp}/qcommon/cm_patch.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/cm_patch.h (100%) rename {CODEmp => CODE-mp}/qcommon/cm_polylib.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/cm_polylib.h (100%) rename {CODEmp => CODE-mp}/qcommon/cm_public.h (100%) rename {CODEmp => CODE-mp}/qcommon/cm_shader.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/cm_test.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/cm_trace.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/cmd.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/common.cpp (94%) rename {CODEmp => CODE-mp}/qcommon/cvar.cpp (93%) rename {CODEmp => CODE-mp}/qcommon/disablewarnings.h (100%) rename {CODEmp => CODE-mp}/qcommon/files.cpp (96%) rename {CODEmp => CODE-mp}/qcommon/huffman.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/md4.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/msg.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/net_chan.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/q_math.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/q_shared.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/qcommon.h (100%) rename {CODEmp => CODE-mp}/qcommon/qfiles.h (95%) rename {CODEmp => CODE-mp}/qcommon/sstring.h (100%) rename {CODEmp => CODE-mp}/qcommon/strip.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/strip.h (100%) rename {CODEmp => CODE-mp}/qcommon/tags.h (100%) rename {CODEmp => CODE-mp}/qcommon/unzip.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/unzip.h (100%) rename {CODEmp => CODE-mp}/qcommon/vm.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/vm_interpreted.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/vm_local.h (100%) rename {CODEmp => CODE-mp}/qcommon/vm_ppc.cpp (100%) rename {CODEmp => CODE-mp}/qcommon/vm_x86.cpp (96%) create mode 100644 CODE-mp/qcommon/vssver.scc rename {CODEmp => CODE-mp}/renderer/glext.h (100%) rename {CODEmp => CODE-mp}/renderer/matcomp.c (100%) rename {CODEmp => CODE-mp}/renderer/matcomp.h (100%) rename {CODEmp => CODE-mp}/renderer/mdx_format.h (100%) create mode 100644 CODE-mp/renderer/mssccprj.scc rename {CODEmp => CODE-mp}/renderer/qgl.h (100%) rename {CODEmp => CODE-mp}/renderer/ref_trin.def (100%) rename {CODEmp => CODE-mp}/renderer/renderer.dsp (100%) rename CODEmp/renderer/tr_worldeffects.cpp => CODE-mp/renderer/tr_WorldEffects.cpp (93%) rename CODEmp/renderer/tr_worldeffects.h => CODE-mp/renderer/tr_WorldEffects.h (90%) rename {CODEmp => CODE-mp}/renderer/tr_animation.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_backend.cpp (90%) rename {CODEmp => CODE-mp}/renderer/tr_bsp.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_cmds.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_curve.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_flares.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_font.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_font.h (100%) rename {CODEmp => CODE-mp}/renderer/tr_ghoul2.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_image.cpp (90%) rename {CODEmp => CODE-mp}/renderer/tr_init.cpp (93%) rename {CODEmp => CODE-mp}/renderer/tr_light.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_local.h (95%) rename {CODEmp => CODE-mp}/renderer/tr_main.cpp (92%) rename {CODEmp => CODE-mp}/renderer/tr_marks.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_mesh.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_model.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_noise.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_public.h (100%) rename {CODEmp => CODE-mp}/renderer/tr_quicksprite.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_quicksprite.h (100%) rename {CODEmp => CODE-mp}/renderer/tr_scene.cpp (100%) create mode 100644 CODE-mp/renderer/tr_shade.cpp rename {CODEmp => CODE-mp}/renderer/tr_shade_calc.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_shader.cpp (96%) rename {CODEmp => CODE-mp}/renderer/tr_shadows.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_sky.cpp (100%) rename {CODEmp => CODE-mp}/renderer/tr_surface.cpp (100%) create mode 100644 CODE-mp/renderer/tr_surfacesprites.cpp rename {CODEmp => CODE-mp}/renderer/tr_world.cpp (100%) create mode 100644 CODE-mp/renderer/vssver.scc rename {CODEmp => CODE-mp}/server/server.h (100%) rename {CODEmp => CODE-mp}/server/sv_bot.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_ccmds.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_client.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_game.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_init.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_main.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_net_chan.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_rankings.cpp (100%) rename {CODEmp => CODE-mp}/server/sv_snapshot.cpp (95%) rename {CODEmp => CODE-mp}/server/sv_world.cpp (100%) create mode 100644 CODE-mp/server/vssver.scc rename {CODEmp => CODE-mp}/strings/con_text.h (100%) rename {CODEmp => CODE-mp}/strings/str_server.h (100%) create mode 100644 CODE-mp/strings/vssver.scc create mode 100644 CODE-mp/tosend.bat rename {CODEmp => CODE-mp}/ui/keycodes.h (100%) create mode 100644 CODE-mp/ui/mssccprj.scc create mode 100644 CODE-mp/ui/ui.bat rename {CODEmp => CODE-mp}/ui/ui.def (100%) rename {CODEmp => CODE-mp}/ui/ui.dsp (94%) create mode 100644 CODE-mp/ui/ui.q3asm rename {CODEmp => CODE-mp}/ui/ui_atoms.c (100%) rename {CODEmp => CODE-mp}/ui/ui_force.c (85%) rename {CODEmp => CODE-mp}/ui/ui_force.h (92%) rename {CODEmp => CODE-mp}/ui/ui_gameinfo.c (100%) rename {CODEmp => CODE-mp}/ui/ui_local.h (100%) rename {CODEmp => CODE-mp}/ui/ui_main.c (95%) rename {CODEmp => CODE-mp}/ui/ui_players.c (100%) rename {CODEmp => CODE-mp}/ui/ui_public.h (92%) rename {CODEmp => CODE-mp}/ui/ui_shared.c (95%) rename {CODEmp => CODE-mp}/ui/ui_shared.h (95%) rename {CODEmp => CODE-mp}/ui/ui_syscalls.c (94%) rename {CODEmp => CODE-mp}/ui/ui_util.c (100%) create mode 100644 CODE-mp/ui/vssver.scc create mode 100644 CODE-mp/vssver.scc rename {CODEmp => CODE-mp}/win32/glw_win.h (87%) rename {CODEmp => CODE-mp}/win32/qe3.ico (100%) rename {CODEmp => CODE-mp}/win32/resource.h (100%) create mode 100644 CODE-mp/win32/vssver.scc rename {CODEmp => CODE-mp}/win32/win_gamma.cpp (100%) rename {CODEmp => CODE-mp}/win32/win_glimp.cpp (93%) rename {CODEmp => CODE-mp}/win32/win_input.cpp (100%) rename {CODEmp => CODE-mp}/win32/win_local.h (100%) rename {CODEmp => CODE-mp}/win32/win_main.cpp (91%) rename {CODEmp => CODE-mp}/win32/win_net.cpp (100%) rename {CODEmp => CODE-mp}/win32/win_qgl.cpp (100%) rename {CODEmp => CODE-mp}/win32/win_shared.cpp (100%) rename {CODEmp => CODE-mp}/win32/win_snd.cpp (100%) rename {CODEmp => CODE-mp}/win32/win_syscon.cpp (71%) rename {CODEmp => CODE-mp}/win32/win_wndproc.cpp (100%) rename {CODEmp => CODE-mp}/win32/winquake.rc (100%) rename {CODEmp => CODE-mp}/zlib/adler32.c (100%) rename {CODEmp => CODE-mp}/zlib/crc32.cpp (100%) rename {CODEmp => CODE-mp}/zlib/deflate.c (100%) rename {CODEmp => CODE-mp}/zlib/deflate.h (100%) rename {CODEmp => CODE-mp}/zlib/infblock.c (100%) rename {CODEmp => CODE-mp}/zlib/infblock.h (100%) rename {CODEmp => CODE-mp}/zlib/infcodes.c (100%) rename {CODEmp => CODE-mp}/zlib/infcodes.h (100%) rename {CODEmp => CODE-mp}/zlib/inffast.c (100%) rename {CODEmp => CODE-mp}/zlib/inffast.h (100%) rename {CODEmp => CODE-mp}/zlib/inffixed.h (100%) rename {CODEmp => CODE-mp}/zlib/inflate.c (100%) rename {CODEmp => CODE-mp}/zlib/inftrees.c (100%) rename {CODEmp => CODE-mp}/zlib/inftrees.h (100%) rename {CODEmp => CODE-mp}/zlib/infutil.c (100%) rename {CODEmp => CODE-mp}/zlib/infutil.h (100%) rename {CODEmp => CODE-mp}/zlib/trees.c (100%) rename {CODEmp => CODE-mp}/zlib/trees.h (100%) create mode 100644 CODE-mp/zlib/vssver.scc rename {CODEmp => CODE-mp}/zlib/zconf.h (100%) rename {CODEmp => CODE-mp}/zlib/zlib.h (100%) rename {CODEmp => CODE-mp}/zlib/zutil.c (100%) rename {CODEmp => CODE-mp}/zlib/zutil.h (100%) delete mode 100644 CODEmp/Debug/botlib.lib delete mode 100644 CODEmp/Debug/cgamex86.lib delete mode 100644 CODEmp/Debug/jk2mpgamex86.lib delete mode 100644 CODEmp/Debug/uix86.lib delete mode 100644 CODEmp/Final/botlib.lib delete mode 100644 CODEmp/Final/cgamex86.lib delete mode 100644 CODEmp/Final/jk2mpgamex86.lib delete mode 100644 CODEmp/Final/uix86.lib delete mode 100644 CODEmp/Release/botlib.lib delete mode 100644 CODEmp/Release/cgamex86.lib delete mode 100644 CODEmp/Release/jk2mpgamex86.lib delete mode 100644 CODEmp/Release/uix86.lib delete mode 100644 CODEmp/game/bg_panimate.c delete mode 100644 CODEmp/renderer/tr_shade.cpp create mode 100644 code/0_compiled_first/vssver.scc delete mode 100644 code/Debug/jk2gamex86.lib create mode 100644 code/EaxMan.dll create mode 100644 code/FFC10.dll create mode 100644 code/FFC10d.dll delete mode 100644 code/FinalBuild/jk2gamex86.lib create mode 100644 code/OpenAL32.dll delete mode 100644 code/Release/jk2gamex86.lib create mode 100644 code/SHDebug/HA312W32.DLL create mode 100644 code/SHDebug/SHW32.DLL delete mode 100644 code/SHDebug/jk2gamex86.lib create mode 100644 code/SHDebug/vssver.scc create mode 100644 code/base/ext_data/NPCs.cfg create mode 100644 code/base/ext_data/dms.dat create mode 100644 code/base/ext_data/items.dat create mode 100644 code/base/ext_data/vssver.scc create mode 100644 code/base/ext_data/weapons.dat delete mode 100644 code/cgame/cg_players.dsp delete mode 100644 code/cgame/cg_text.h create mode 100644 code/cgame/vssver.scc create mode 100644 code/client/OpenAL/vssver.scc create mode 100644 code/client/cl_mp3.org delete mode 100644 code/client/eax/eax-util.cpp delete mode 100644 code/client/eax/eax-util.h create mode 100644 code/client/eax/vssver.scc create mode 100644 code/client/vssver.scc create mode 100644 code/encryption/vssver.scc create mode 100644 code/ghoul2/vssver.scc create mode 100644 code/icarus/vssver.scc create mode 100644 code/jpeg-6/vssver.scc create mode 100644 code/mac/MacQuake3 create mode 100644 code/mac/q3.rsrc create mode 100644 code/mac/vssver.scc create mode 100644 code/mp3code/vssver.scc create mode 100644 code/mssccprj.scc create mode 100644 code/null/vssver.scc create mode 100644 code/qcommon/hstring.cpp create mode 100644 code/qcommon/hstring.h create mode 100644 code/qcommon/vssver.scc create mode 100644 code/renderer/mssccprj.scc create mode 100644 code/renderer/vssver.scc create mode 100644 code/server/vssver.scc create mode 100644 code/smartheap/HA312W32.DLL create mode 100644 code/smartheap/SHW32.DLL create mode 100644 code/smartheap/smrtheap.hpp create mode 100644 code/smartheap/vssver.scc create mode 100644 code/tonet.bat create mode 100644 code/tosend.bat create mode 100644 code/ui/mssccprj.scc create mode 100644 code/ui/vssver.scc create mode 100644 code/unix/Makefile create mode 100644 code/unix/matha.s create mode 100644 code/unix/q3test.spec.sh create mode 100644 code/unix/quake3.gif create mode 100644 code/unix/snd_mixa.s create mode 100644 code/unix/sys_dosa.s create mode 100644 code/unix/vssver.scc create mode 100644 code/vssver.scc create mode 100644 code/win32/background.bmp create mode 100644 code/win32/clear.bmp create mode 100644 code/win32/feelit/FFC10.dll create mode 100644 code/win32/feelit/FFC10d.dll create mode 100644 code/win32/feelit/vssver.scc create mode 100644 code/win32/vssver.scc create mode 100644 ui/vssver.scc diff --git a/CODEmp/Splines/Splines.dsp b/CODE-mp/Splines/Splines.dsp similarity index 100% rename from CODEmp/Splines/Splines.dsp rename to CODE-mp/Splines/Splines.dsp diff --git a/CODEmp/Splines/math_angles.cpp b/CODE-mp/Splines/math_angles.cpp similarity index 100% rename from CODEmp/Splines/math_angles.cpp rename to CODE-mp/Splines/math_angles.cpp diff --git a/CODEmp/Splines/math_angles.h b/CODE-mp/Splines/math_angles.h similarity index 100% rename from CODEmp/Splines/math_angles.h rename to CODE-mp/Splines/math_angles.h diff --git a/CODEmp/Splines/math_matrix.cpp b/CODE-mp/Splines/math_matrix.cpp similarity index 100% rename from CODEmp/Splines/math_matrix.cpp rename to CODE-mp/Splines/math_matrix.cpp diff --git a/CODEmp/Splines/math_matrix.h b/CODE-mp/Splines/math_matrix.h similarity index 100% rename from CODEmp/Splines/math_matrix.h rename to CODE-mp/Splines/math_matrix.h diff --git a/CODEmp/Splines/math_quaternion.cpp b/CODE-mp/Splines/math_quaternion.cpp similarity index 100% rename from CODEmp/Splines/math_quaternion.cpp rename to CODE-mp/Splines/math_quaternion.cpp diff --git a/CODEmp/Splines/math_quaternion.h b/CODE-mp/Splines/math_quaternion.h similarity index 100% rename from CODEmp/Splines/math_quaternion.h rename to CODE-mp/Splines/math_quaternion.h diff --git a/CODEmp/Splines/math_vector.cpp b/CODE-mp/Splines/math_vector.cpp similarity index 100% rename from CODEmp/Splines/math_vector.cpp rename to CODE-mp/Splines/math_vector.cpp diff --git a/CODEmp/Splines/math_vector.h b/CODE-mp/Splines/math_vector.h similarity index 100% rename from CODEmp/Splines/math_vector.h rename to CODE-mp/Splines/math_vector.h diff --git a/CODE-mp/Splines/mssccprj.scc b/CODE-mp/Splines/mssccprj.scc new file mode 100644 index 0000000..a2ee319 --- /dev/null +++ b/CODE-mp/Splines/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[Splines.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\jk2sof2MP" +SCC_Project_Name = "$/General/code/Splines", GAAAAAAA diff --git a/CODEmp/Splines/q_parse.cpp b/CODE-mp/Splines/q_parse.cpp similarity index 100% rename from CODEmp/Splines/q_parse.cpp rename to CODE-mp/Splines/q_parse.cpp diff --git a/CODEmp/Splines/q_shared.cpp b/CODE-mp/Splines/q_shared.cpp similarity index 100% rename from CODEmp/Splines/q_shared.cpp rename to CODE-mp/Splines/q_shared.cpp diff --git a/CODEmp/Splines/q_shared.h b/CODE-mp/Splines/q_shared.h similarity index 100% rename from CODEmp/Splines/q_shared.h rename to CODE-mp/Splines/q_shared.h diff --git a/CODEmp/Splines/splines.cpp b/CODE-mp/Splines/splines.cpp similarity index 100% rename from CODEmp/Splines/splines.cpp rename to CODE-mp/Splines/splines.cpp diff --git a/CODEmp/Splines/splines.h b/CODE-mp/Splines/splines.h similarity index 100% rename from CODEmp/Splines/splines.h rename to CODE-mp/Splines/splines.h diff --git a/CODEmp/Splines/util_list.h b/CODE-mp/Splines/util_list.h similarity index 100% rename from CODEmp/Splines/util_list.h rename to CODE-mp/Splines/util_list.h diff --git a/CODEmp/Splines/util_str.cpp b/CODE-mp/Splines/util_str.cpp similarity index 100% rename from CODEmp/Splines/util_str.cpp rename to CODE-mp/Splines/util_str.cpp diff --git a/CODEmp/Splines/util_str.h b/CODE-mp/Splines/util_str.h similarity index 100% rename from CODEmp/Splines/util_str.h rename to CODE-mp/Splines/util_str.h diff --git a/CODE-mp/Splines/vssver.scc b/CODE-mp/Splines/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..f4e973bf980ff8004876c1c55d5cbe0274e5ab09 GIT binary patch literal 304 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~NuU(`Fs#sC5AK&os0iFaOgQ#BcZYz`o1+a>rl zfWZsQ=LGU6$5*j(bti!NTtNPNtJ;4fmKn%+93Nyf!I%i j`K*km2beDgflags |= DEFINE_GLOBAL; + } + hash = PC_NameHash(define->name); define->hashnext = definehash[hash]; definehash[hash] = define; + + if ( addGlobalDefine ) + { + define->globalnext = define->hashnext; + } } //end of the function PC_AddDefineToHash //============================================================================ // @@ -1117,12 +1134,16 @@ int PC_Directive_undef(source_t *source) if (define->flags & DEFINE_FIXED) { SourceWarning(source, "can't undef %s", token.string); - } //end if + } //end if else { if (lastdefine) lastdefine->hashnext = define->hashnext; else source->definehash[hash] = define->hashnext; - PC_FreeDefine(define); + + if ( !(define->flags & DEFINE_GLOBAL ) ) + { + PC_FreeDefine(define); + } } //end else break; } //end if @@ -1361,6 +1382,11 @@ int PC_AddDefine(source_t *source, char *string) { define_t *define; + if ( addGlobalDefine ) + { + return PC_AddGlobalDefine ( string ); + } + define = PC_DefineFromString(string); if (!define) return qfalse; #if DEFINEHASHING @@ -1380,12 +1406,14 @@ int PC_AddDefine(source_t *source, char *string) //============================================================================ int PC_AddGlobalDefine(char *string) { +#if !DEFINEHASHING define_t *define; define = PC_DefineFromString(string); if (!define) return qfalse; define->next = globaldefines; globaldefines = define; +#endif return qtrue; } //end of the function PC_AddGlobalDefine //============================================================================ @@ -1397,6 +1425,7 @@ int PC_AddGlobalDefine(char *string) //============================================================================ int PC_RemoveGlobalDefine(char *name) { +#if !DEFINEHASHING define_t *define; define = PC_FindDefine(globaldefines, name); @@ -1405,6 +1434,7 @@ int PC_RemoveGlobalDefine(char *name) PC_FreeDefine(define); return qtrue; } //end if +#endif return qfalse; } //end of the function PC_RemoveGlobalDefine //============================================================================ @@ -1418,11 +1448,27 @@ void PC_RemoveAllGlobalDefines(void) { define_t *define; +#if DEFINEHASHING + int i; + if ( globaldefines ) + { + for (i = 0; i < DEFINEHASHSIZE; i++) + { + while(globaldefines[i]) + { + define = globaldefines[i]; + globaldefines[i] = globaldefines[i]->globalnext; + PC_FreeDefine(define); + } + } + } +#else //DEFINEHASHING for (define = globaldefines; define; define = globaldefines) { globaldefines = globaldefines->next; PC_FreeDefine(define); } //end for +#endif } //end of the function PC_RemoveAllGlobalDefines //============================================================================ // @@ -1475,18 +1521,33 @@ define_t *PC_CopyDefine(source_t *source, define_t *define) //============================================================================ void PC_AddGlobalDefinesToSource(source_t *source) { - define_t *define, *newdefine; + define_t *define; +#if DEFINEHASHING + int i; + for (i = 0; i < DEFINEHASHSIZE; i++) + { + define = globaldefines[i]; + while(define) + { + define->hashnext = NULL; + PC_AddDefineToHash(define, source->definehash); + + define = define->globalnext; + } + } +#else //DEFINEHASHING + define_t* newdefine; for (define = globaldefines; define; define = define->next) { newdefine = PC_CopyDefine(source, define); -#if DEFINEHASHING - PC_AddDefineToHash(newdefine, source->definehash); -#else //DEFINEHASHING + + + newdefine->next = source->defines; source->defines = newdefine; -#endif //DEFINEHASHING - } //end for + } +#endif } //end of the function PC_AddGlobalDefinesToSource //============================================================================ // @@ -2982,6 +3043,13 @@ source_t *LoadSourceFile(const char *filename) PC_InitTokenHeap(); +#if DEFINEHASHING + if ( !globaldefines ) + { + globaldefines = (struct define_s **)GetClearedMemory(DEFINEHASHSIZE * sizeof(define_t *)); + } +#endif + script = LoadScriptFile(filename); if (!script) return NULL; @@ -3048,6 +3116,7 @@ void FreeSource(source_t *source) token_t *token; define_t *define; indent_t *indent; + define_t *nextdefine; int i; //PC_PrintDefineHashTable(source->definehash); @@ -3068,12 +3137,20 @@ void FreeSource(source_t *source) #if DEFINEHASHING for (i = 0; i < DEFINEHASHSIZE; i++) { - while(source->definehash[i]) + define = source->definehash[i]; + while(define) { - define = source->definehash[i]; - source->definehash[i] = source->definehash[i]->hashnext; - PC_FreeDefine(define); + nextdefine = define->hashnext; + + if ( !(define->flags & DEFINE_GLOBAL) ) + { + PC_FreeDefine(define); + } + + define = nextdefine; } //end while + + source->definehash[i] = NULL; } //end for #else //DEFINEHASHING //free all defines @@ -3145,6 +3222,28 @@ int PC_FreeSourceHandle(int handle) sourceFiles[handle] = NULL; return qtrue; } //end of the function PC_FreeSourceHandle + +int PC_LoadGlobalDefines ( const char* filename ) +{ + int handle; + token_t token; + + handle = PC_LoadSourceHandle ( filename ); + if ( handle < 1 ) + return qfalse; + + addGlobalDefine = qtrue; + + // Read all the token files which will add the defines globally + while ( PC_ReadToken(sourceFiles[handle], &token) ); + + addGlobalDefine = qfalse; + + PC_FreeSourceHandle ( handle ); + + return qtrue; +} + //============================================================================ // // Parameter: - diff --git a/CODEmp/botlib/l_precomp.h b/CODE-mp/botlib/l_precomp.h similarity index 93% rename from CODEmp/botlib/l_precomp.h rename to CODE-mp/botlib/l_precomp.h index 862f322..34a0aed 100644 --- a/CODEmp/botlib/l_precomp.h +++ b/CODE-mp/botlib/l_precomp.h @@ -37,6 +37,7 @@ #define DEFINE_FIXED 0x0001 +#define DEFINE_GLOBAL 0x0002 #define BUILTIN_LINE 1 #define BUILTIN_FILE 2 @@ -61,6 +62,7 @@ typedef struct define_s token_t *tokens; //macro tokens (possibly containing parm tokens) struct define_s *next; //next defined macro in a list struct define_s *hashnext; //next define in the hash chain + struct define_s *globalnext; //used to link up the globald defines } define_t; //indents @@ -161,3 +163,6 @@ int PC_FreeSourceHandle(int handle); int PC_ReadTokenHandle(int handle, pc_token_t *pc_token); int PC_SourceFileAndLine(int handle, char *filename, int *line); void PC_CheckOpenSourceHandles(void); +int PC_LoadGlobalDefines ( const char* filename ); +void PC_RemoveAllGlobalDefines ( void ); + diff --git a/CODEmp/botlib/l_script.cpp b/CODE-mp/botlib/l_script.cpp similarity index 100% rename from CODEmp/botlib/l_script.cpp rename to CODE-mp/botlib/l_script.cpp diff --git a/CODEmp/botlib/l_script.h b/CODE-mp/botlib/l_script.h similarity index 100% rename from CODEmp/botlib/l_script.h rename to CODE-mp/botlib/l_script.h diff --git a/CODEmp/botlib/l_struct.cpp b/CODE-mp/botlib/l_struct.cpp similarity index 100% rename from CODEmp/botlib/l_struct.cpp rename to CODE-mp/botlib/l_struct.cpp diff --git a/CODEmp/botlib/l_struct.h b/CODE-mp/botlib/l_struct.h similarity index 100% rename from CODEmp/botlib/l_struct.h rename to CODE-mp/botlib/l_struct.h diff --git a/CODEmp/botlib/l_utils.h b/CODE-mp/botlib/l_utils.h similarity index 100% rename from CODEmp/botlib/l_utils.h rename to CODE-mp/botlib/l_utils.h diff --git a/CODE-mp/botlib/mssccprj.scc b/CODE-mp/botlib/mssccprj.scc new file mode 100644 index 0000000..122048b --- /dev/null +++ b/CODE-mp/botlib/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[botlib.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\jk2sof2MP" +SCC_Project_Name = "$/General/code/botlib", ACAAAAAA diff --git a/CODE-mp/botlib/vssver.scc b/CODE-mp/botlib/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..8ecae8516d357264860dabf47915e964ff44fed0 GIT binary patch literal 896 zcmXBQc}SCS9LI5&d622tAA)ph&MaNi+R{~OUM=%nYudc;d0Up55jZM46pN)|b|9uS ztU$_1%|RuiVkjaeD`c(HnbS>Ev5ctC^X-8*&-cae_nf>9EDHgz*&zJu8D3MMG$fxf zaFYfTpYtsKAAFqjeIcKsZ#PY|Fz-X07!P&#lVY+TT(`StM8Mud_J`A*d+R2~^+smD z02%e2n?%1?$ot_JMdEFp-x|mVV4dyL!hor6@;Ww~1Qzhax?9a=awu%7 z`595zR!U$(W5uZ**EW9CP%_EB2VA0y-IQvJh-Se#d^k(qv7+PUrIBa z3&=6>Qn~W1mzTpF^M7KI^wjoI^#qsJ@8an4$;aRwUwLgB zy){`3TLf7vHu`$cT4OwpmSV+{+De0&xn6>L6KqsQaUD4xzW+?QbL)>zasuq>&^{h) zpGZCd%SyBDh1FK(wV0(yY56Wrvrb^P!JLRbG=D#Ny78@vxqlLxDw4mJwF(;$x zng(IY`vO`|fwgiU?-3T8oC+t^R=6|`3@tF%r=iX9EnOY!zmU^mSKH+j8+$o918z|- z3Z#*D$eD1OLyy8qt0rf`4yi%1S0056R+zJy{TI~jV?|aA%>T_nV=d>ZxW#VdT-d!_ z-DnuXWl0dRW#;mIPt6Ge3(Bii|MGkMP9+C(QB)^$CGySJ^uj1 Cc?p&P literal 0 HcmV?d00001 diff --git a/CODE-mp/buildvms.bat b/CODE-mp/buildvms.bat new file mode 100644 index 0000000..00d402b --- /dev/null +++ b/CODE-mp/buildvms.bat @@ -0,0 +1,8 @@ +set include= +cd game +call game +cd ..\cgame +call cgame +cd ..\ui +call ui +cd .. diff --git a/CODEmp/cgame/JK2_cgame.def b/CODE-mp/cgame/JK2_cgame.def similarity index 100% rename from CODEmp/cgame/JK2_cgame.def rename to CODE-mp/cgame/JK2_cgame.def diff --git a/CODEmp/cgame/JK2_cgame.dsp b/CODE-mp/cgame/JK2_cgame.dsp similarity index 94% rename from CODEmp/cgame/JK2_cgame.dsp rename to CODE-mp/cgame/JK2_cgame.dsp index 798511b..74605a9 100644 --- a/CODEmp/cgame/JK2_cgame.dsp +++ b/CODE-mp/cgame/JK2_cgame.dsp @@ -354,6 +354,11 @@ SOURCE=..\ghoul2\G2.h # End Source File # Begin Source File +SOURCE=.\JK2_cgame.def +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + SOURCE=..\ui\keycodes.h # End Source File # Begin Source File @@ -387,12 +392,12 @@ SOURCE=..\ui\ui_shared.h # End Group # Begin Source File -SOURCE=.\cg_syscalls.asm +SOURCE=.\cgame.bat # PROP Exclude_From_Build 1 # End Source File # Begin Source File -SOURCE=.\JK2_cgame.def +SOURCE=.\cgame.q3asm # PROP Exclude_From_Build 1 # End Source File # End Target diff --git a/CODEmp/cgame/animtable.h b/CODE-mp/cgame/animtable.h similarity index 90% rename from CODEmp/cgame/animtable.h rename to CODE-mp/cgame/animtable.h index 31a9964..f0b7a9d 100644 --- a/CODEmp/cgame/animtable.h +++ b/CODE-mp/cgame/animtable.h @@ -140,6 +140,8 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_MELEE4), //# Fourth melee attack ENUM2STRING(BOTH_MELEE5), //# Fifth melee attack ENUM2STRING(BOTH_MELEE6), //# Sixth melee attack + ENUM2STRING(BOTH_THERMAL_READY), //# pull back with thermal + ENUM2STRING(BOTH_THERMAL_THROW), //# throw thermal //* #sep ENUM2STRING(BOTH_ SABER ANIMS //Saber attack anims - power level 2 ENUM2STRING(BOTH_A1_T__B_), //# Fast weak vertical attack top to bottom @@ -637,7 +639,7 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_STAND1TOSTAND5), //# Transition from stand1 to stand5 ENUM2STRING(BOTH_STAND5TOSTAND1), //# Transition from stand5 to stand1 ENUM2STRING(BOTH_STAND5TOSTAND8), //# Transition from stand5 to stand8 - ENUM2STRING(BOTH_STAND8TOSTAND5), //# Transition from stand5 to stand8 + ENUM2STRING(BOTH_STAND8TOSTAND5), //# Transition from stand8 to stand5 ENUM2STRING(BOTH_CONSOLE1START), //# typing at a console ENUM2STRING(BOTH_CONSOLE1), //# typing at a console @@ -652,48 +654,6 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_GESTURE1), //# Generic gesture), non-specific ENUM2STRING(BOTH_GESTURE2), //# Generic gesture), non-specific ENUM2STRING(BOTH_GESTURE3), //# Generic gesture), non-specific - ENUM2STRING(BOTH_TALK1), //# Generic talk anim - ENUM2STRING(BOTH_TALKCOMM1START), //# Start talking into a comm link - ENUM2STRING(BOTH_TALKCOMM1), //# Talking into a comm link - ENUM2STRING(BOTH_TALKCOMM1STOP), //# Stop talking into a comm link - ENUM2STRING(BOTH_TALKGESTURE1), //# Generic talk anim - ENUM2STRING(BOTH_TALKGESTURE2), //# Generic talk anim - ENUM2STRING(BOTH_TALKGESTURE3), //# Generic talk anim - - ENUM2STRING(BOTH_TALKGESTURE4START), //# Beginning talk anim 4 - ENUM2STRING(BOTH_TALKGESTURE4), //# Talk gesture 4 - ENUM2STRING(BOTH_TALKGESTURE4STOP), //# Ending talk anim 4 - ENUM2STRING(BOTH_TALKGESTURE5START), //# Start hand on chin - ENUM2STRING(BOTH_TALKGESTURE5), //# Hand on chin - ENUM2STRING(BOTH_TALKGESTURE5STOP), //# Stop hand on chin - ENUM2STRING(BOTH_TALKGESTURE6START), //# Starting Motions to self - ENUM2STRING(BOTH_TALKGESTURE6), //# Pointing at self - ENUM2STRING(BOTH_TALKGESTURE6STOP), //# Ending Motions to self - ENUM2STRING(BOTH_TALKGESTURE7START), //# Start touches Kyle on shoulder - ENUM2STRING(BOTH_TALKGESTURE7), //# Hold touches Kyle on shoulder - ENUM2STRING(BOTH_TALKGESTURE7STOP), //# Ending touches Kyle on shoulder - ENUM2STRING(BOTH_TALKGESTURE8START), //# Lando's chin hold - ENUM2STRING(BOTH_TALKGESTURE8), //# Lando's chin hold - ENUM2STRING(BOTH_TALKGESTURE8STOP), //# Lando's chin hold - ENUM2STRING(BOTH_TALKGESTURE9), //# Same as gesture 2 but with the right hand - ENUM2STRING(BOTH_TALKGESTURE10), //# Shoulder shrug - ENUM2STRING(BOTH_TALKGESTURE11START), //# Arms folded across chest - ENUM2STRING(BOTH_TALKGESTURE11STOP), //# Arms folded across chest - ENUM2STRING(BOTH_TALKGESTURE12), //# Tavion taunting Kyle - ENUM2STRING(BOTH_TALKGESTURE13START), //# Luke warning Kyle - ENUM2STRING(BOTH_TALKGESTURE13), //# Luke warning Kyle - ENUM2STRING(BOTH_TALKGESTURE13STOP), //# Luke warning Kyle - ENUM2STRING(BOTH_TALKGESTURE14), //# Luke gesturing to Kyle - - ENUM2STRING(BOTH_TALKGESTURE15START), //# Desann taunting Kyle - ENUM2STRING(BOTH_TALKGESTURE15), //# Desann taunting Kyle - ENUM2STRING(BOTH_TALKGESTURE15STOP), //# Desann taunting Kyle - ENUM2STRING(BOTH_TALKGESTURE16), //# Bartender gesture cin #15 - ENUM2STRING(BOTH_TALKGESTURE17), //# Bartender gesture cin #15 - ENUM2STRING(BOTH_TALKGESTURE18), //# Bartender gesture cin #15 - ENUM2STRING(BOTH_TALKGESTURE19START), //# Desann lifting his arm "Join me" (cin #34) - ENUM2STRING(BOTH_TALKGESTURE19STOP), //# Desann lifting his arm "Join me" (cin #34) - ENUM2STRING(BOTH_TALKGESTURE20START), //# Kyle lifting his arm "Join us" (cin #34) ENUM2STRING(BOTH_PAUSE1START), //# Luke pauses to warn Kyle (cin #24) start ENUM2STRING(BOTH_PAUSE1STOP), //# Luke pauses to warn Kyle (cin #24) stop @@ -748,10 +708,14 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_SILENCEGESTURE1), //# Luke silencing Kyle with a raised hand (cin #37) ENUM2STRING(BOTH_REACHFORSABER1), //# Luke holding hand out for Kyle's saber (cin #37) ENUM2STRING(BOTH_PUNCHER1), //# Jan punching Kyle in the shoulder (cin #37) + ENUM2STRING(BOTH_CONSTRAINER1HOLD), //# Static pose of starting Tavion constraining Jan (cin #9) + ENUM2STRING(BOTH_CONSTRAINEE1HOLD), //# Static pose of starting Jan being constrained by Tavion (cin #9) ENUM2STRING(BOTH_CONSTRAINER1STAND), //# Tavion constraining Jan in a stand pose (cin #9) ENUM2STRING(BOTH_CONSTRAINEE1STAND), //# Jan being constrained in a stand pose (cin #9) - ENUM2STRING(BOTH_CONSTRAINER1WALK), //# Tavion constraining Jan in a walking loop (cin #9) - ENUM2STRING(BOTH_CONSTRAINEE1WALK), //# Jan being constrained in a walking loop (cin #9) + ENUM2STRING(BOTH_CONSTRAINER1WALK), //# Tavion shoving jan forward (cin #9) + ENUM2STRING(BOTH_CONSTRAINEE1WALK), //# Jan being shoved forward by Tavion (cin #9) + ENUM2STRING(BOTH_CONSTRAINER1LOOP), //# Tavion walking with Jan in a loop (cin #9) + ENUM2STRING(BOTH_CONSTRAINEE1LOOP), //# Jan walking with Tavion in a loop (cin #9) ENUM2STRING(BOTH_SABERKILLER1), //# Tavion about to strike Jan with saber (cin #9) ENUM2STRING(BOTH_SABERKILLEE1), //# Jan about to be struck by Tavion with saber (cin #9) ENUM2STRING(BOTH_HANDSHAKER1START), //# Luke shaking Kyle's hand (cin #37) @@ -762,26 +726,6 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_LAUGH1STOP), //# Reelo laughing (cin #18) ENUM2STRING(BOTH_ESCAPEPOD_LEAVE1), //# Kyle leaving escape pod (cin #33) ENUM2STRING(BOTH_ESCAPEPOD_LEAVE2), //# Jan leaving escape pod (cin #33) - ENUM2STRING(BOTH_HUGGER1), //# Kyle hugging Jan (cin #29) - ENUM2STRING(BOTH_HUGGERSTOP1), //# Kyle stop hugging Jan but don't let her go (cin #29) - ENUM2STRING(BOTH_HUGGERSTOP2), //# Kyle let go of Jan and step back (cin #29) - ENUM2STRING(BOTH_HUGGEE1), //# Jan being hugged (cin #29) - ENUM2STRING(BOTH_HUGGEESTOP1), //# Jan stop being hugged but don't let go (cin #29) - ENUM2STRING(BOTH_HUGGEESTOP2), //# Jan released from hug (cin #29) - ENUM2STRING(BOTH_KISSER1), //# Temp until the Kiss anim gets split up - ENUM2STRING(BOTH_KISSER1START1), //# Kyle start kissing Jan - ENUM2STRING(BOTH_KISSER1START2), //# Kyle start kissing Jan - ENUM2STRING(BOTH_KISSER1LOOP), //# Kyle loop kissing Jan - ENUM2STRING(BOTH_KISSER1STOP), //# Temp until the Kiss anim gets split up - ENUM2STRING(BOTH_KISSER1STOP1), //# Kyle stop kissing but don't let go - ENUM2STRING(BOTH_KISSER1STOP2), //# Kyle step back from Jan - ENUM2STRING(BOTH_KISSEE1), //# Temp until the Kiss anim gets split up - ENUM2STRING(BOTH_KISSEE1START1), //# Jan start being kissed - ENUM2STRING(BOTH_KISSEE1START2), //# Jan start2 being kissed - ENUM2STRING(BOTH_KISSEE1LOOP), //# Jan loop being kissed - ENUM2STRING(BOTH_KISSEE1STOP), //# Temp until the Kiss anim gets split up - ENUM2STRING(BOTH_KISSEE1STOP1), //# Jan stop being kissed but don't let go - ENUM2STRING(BOTH_KISSEE1STOP2), //# Jan wait for Kyle to step back ENUM2STRING(BOTH_BARTENDER_IDLE1), //# Bartender idle in cin #15 ENUM2STRING(BOTH_BARTENDER_THROW1), //# Bartender throws glass in cin #15 ENUM2STRING(BOTH_BARTENDER_COWERSTART), //# Start of Bartender raising both hands up in surrender (cin #16) @@ -867,6 +811,7 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_WALK4), //# Walk cycle goes to a stand4 ENUM2STRING(BOTH_WALK5), //# Tavion taunting Kyle (cin 22) ENUM2STRING(BOTH_WALK6), //# Slow walk for Luke (cin 12) + ENUM2STRING(BOTH_WALK7), //# Fast walk ENUM2STRING(BOTH_WALKTORUN1), //# transition from walk to run ENUM2STRING(BOTH_RUN1), //# Full run ENUM2STRING(BOTH_RUN1START), //# Start into full run1 @@ -953,15 +898,21 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_DIVE1), //# Dive! + ENUM2STRING(BOTH_SABERFAST_STANCE), + ENUM2STRING(BOTH_SABERSLOW_STANCE), + ENUM2STRING(BOTH_ENGAGETAUNT), ENUM2STRING(BOTH_A2_STABBACK1), //# Stab saber backward ENUM2STRING(BOTH_ATTACK_BACK), //# Swing around backwards and attack - ENUM2STRING(BOTH_FJSS_TR_BL), //# jump spin slash tr to bl - ENUM2STRING(BOTH_FJSS_TL_BR), //# jump spin slash bl to tr + ENUM2STRING(BOTH_JUMPFLIPSLASHDOWN1),//# + ENUM2STRING(BOTH_JUMPFLIPSTABDOWN),//# + ENUM2STRING(BOTH_FORCELEAP2_T__B_),//# + ENUM2STRING(BOTH_LUNGE2_B__T_),//# + ENUM2STRING(BOTH_CROUCHATTACKBACK1),//# ENUM2STRING(BOTH_ARIAL_LEFT), //# ENUM2STRING(BOTH_ARIAL_RIGHT), //# ENUM2STRING(BOTH_CARTWHEEL_LEFT), //# ENUM2STRING(BOTH_CARTWHEEL_RIGHT), //# - ENUM2STRING(BOTH_FLIP_LEFT), //# + ENUM2STRING(BOTH_FLIP_LEFT), //# ENUM2STRING(BOTH_FLIP_BACK1), //# ENUM2STRING(BOTH_FLIP_BACK2), //# ENUM2STRING(BOTH_FLIP_BACK3), //# @@ -970,17 +921,17 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_WALL_RUN_RIGHT), //# ENUM2STRING(BOTH_WALL_RUN_RIGHT_FLIP),//# ENUM2STRING(BOTH_WALL_RUN_RIGHT_STOP),//# - ENUM2STRING(BOTH_WALL_RUN_LEFT), //# + ENUM2STRING(BOTH_WALL_RUN_LEFT), //# ENUM2STRING(BOTH_WALL_RUN_LEFT_FLIP),//# ENUM2STRING(BOTH_WALL_RUN_LEFT_STOP),//# ENUM2STRING(BOTH_WALL_FLIP_RIGHT), //# ENUM2STRING(BOTH_WALL_FLIP_LEFT), //# - ENUM2STRING(BOTH_WALL_FLIP_FWD), //# - ENUM2STRING(BOTH_KNOCKDOWN1), //# - ENUM2STRING(BOTH_KNOCKDOWN2), //# - ENUM2STRING(BOTH_KNOCKDOWN3), //# - ENUM2STRING(BOTH_KNOCKDOWN4), //# - ENUM2STRING(BOTH_KNOCKDOWN5), //# + ENUM2STRING(BOTH_WALL_FLIP_FWD), //# + ENUM2STRING(BOTH_KNOCKDOWN1), //# knocked backwards + ENUM2STRING(BOTH_KNOCKDOWN2), //# knocked backwards hard + ENUM2STRING(BOTH_KNOCKDOWN3), //# knocked forwards + ENUM2STRING(BOTH_KNOCKDOWN4), //# knocked backwards from crouch + ENUM2STRING(BOTH_KNOCKDOWN5), //# dupe of 3 - will be removed ENUM2STRING(BOTH_GETUP1), //# ENUM2STRING(BOTH_GETUP2), //# ENUM2STRING(BOTH_GETUP3), //# @@ -998,21 +949,24 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_FORCE_GETUP_B6), //# ENUM2STRING(BOTH_WALL_FLIP_BACK1), //# ENUM2STRING(BOTH_WALL_FLIP_BACK2), //# - ENUM2STRING(BOTH_SPIN1), //# + ENUM2STRING(BOTH_SPIN1), //# + ENUM2STRING(BOTH_CEILING_CLING), //# clinging to ceiling + ENUM2STRING(BOTH_CEILING_DROP), //# dropping from ceiling cling //TESTING + ENUM2STRING(BOTH_FJSS_TR_BL), //# jump spin slash tr to bl + ENUM2STRING(BOTH_FJSS_TL_BR), //# jump spin slash bl to tr ENUM2STRING(BOTH_DEATHFROMBACKSLASH),//# - ENUM2STRING(BOTH_DEFLECTSLASH__R__L_FIN),//# ENUM2STRING(BOTH_RIGHTHANDCHOPPEDOFF),//# - ENUM2STRING(BOTH_JUMPFLIPSLASHDOWN1),//# - ENUM2STRING(BOTH_JUMPFLIPSTABDOWN),//# - ENUM2STRING(BOTH_FORCELEAP2_T__B_),//# - ENUM2STRING(BOTH_LUNGE2_B__T_),//# + ENUM2STRING(BOTH_DEFLECTSLASH__R__L_FIN),//# ENUM2STRING(BOTH_BASHED1),//# ENUM2STRING(BOTH_ARIAL_F1),//# ENUM2STRING(BOTH_BUTTERFLY_FR1),//# ENUM2STRING(BOTH_BUTTERFLY_FL1),//# - ENUM2STRING(BOTH_CROUCHATTACKBACK1),//# + ENUM2STRING(BOTH_POSE1),//# + ENUM2STRING(BOTH_POSE2),//# + ENUM2STRING(BOTH_POSE3),//# + ENUM2STRING(BOTH_POSE4),//# //# #sep BOTH_ MISC MOVEMENT ENUM2STRING(BOTH_HIT1), //# Kyle hit by crate in cin #9 @@ -1073,28 +1027,9 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_INJURED6POINT), //# Chang points to door while in injured state ENUM2STRING(BOTH_INJUREDTOSTAND1), //# Runinjured to stand1 + ENUM2STRING(BOTH_PROPUP1), //# Kyle getting up from having been knocked down (cin #9 end) ENUM2STRING(BOTH_CRAWLBACK1), //# Lying on back), crawling backwards with elbows ENUM2STRING(BOTH_SITWALL1), //# Sitting against a wall - ENUM2STRING(BOTH_SLEEP1), //# laying on back-rknee up-rhand on torso - ENUM2STRING(BOTH_SLEEP2), //# on floor-back against wall-arms crossed - ENUM2STRING(BOTH_SLEEP3), //# Sleeping in a chair - ENUM2STRING(BOTH_SLEEP4), //# Sleeping slumped over table - ENUM2STRING(BOTH_SLEEP5), //# Laying on side sleeping on flat sufrace - ENUM2STRING(BOTH_SLEEP6START), //# Kyle leaning back to sleep (cin 20) - ENUM2STRING(BOTH_SLEEP6STOP), //# Kyle waking up and shaking his head (cin 21) - ENUM2STRING(BOTH_SLEEP1GETUP), //# alarmed and getting up out of sleep1 pose to stand - ENUM2STRING(BOTH_SLEEP1GETUP2), //# - ENUM2STRING(BOTH_SLEEP2GETUP), //# alarmed and getting up out of sleep2 pose to stand - ENUM2STRING(BOTH_SLEEP3GETUP), //# alarmed and getting up out of sleep3 pose to stand - ENUM2STRING(BOTH_SLEEP3DEATH), //# death in chair), from sleep3 idle - ENUM2STRING(BOTH_SLEEP3DEAD), //# death in chair), from sleep3 idle - - ENUM2STRING(BOTH_SLEEP_IDLE1), //# rub face and nose while asleep from sleep pose 1 - ENUM2STRING(BOTH_SLEEP_IDLE2), //# shift position while asleep - stays in sleep2 - ENUM2STRING(BOTH_SLEEP_IDLE3), //# Idle anim from sleep pose 3 - ENUM2STRING(BOTH_SLEEP_IDLE4), //# Idle anim from sleep pose 4 - ENUM2STRING(BOTH_SLEEP1_NOSE), //# Scratch nose from SLEEP1 pose - ENUM2STRING(BOTH_SLEEP2_SHIFT), //# Shift in sleep from SLEEP2 pose ENUM2STRING(BOTH_RESTRAINED1), //# Telsia tied to medical table ENUM2STRING(BOTH_RESTRAINED1POINT), //# Telsia tied to medical table pointing at Munro ENUM2STRING(BOTH_LIFTED1), //# Fits with ENUM2STRING(BOTH_LIFT1), lifted on shoulder @@ -1115,6 +1050,8 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_TURNOFF), //# Protocol Droid shuts off ENUM2STRING(BOTH_BUTTON1), //# Single button push with right hand ENUM2STRING(BOTH_BUTTON2), //# Single button push with left finger + ENUM2STRING(BOTH_BUTTON_HOLD), //# Single button hold with left hand + ENUM2STRING(BOTH_BUTTON_RELEASE), //# Single button release with left hand //# JEDI-SPECIFIC ENUM2STRING(BOTH_RESISTPUSH), //# plant yourself to resist force push/pulls. @@ -1123,11 +1060,17 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(BOTH_MINDTRICK1), //# Use off-hand to do mind trick ENUM2STRING(BOTH_MINDTRICK2), //# Use off-hand to do distraction ENUM2STRING(BOTH_FORCELIGHTNING), //# Use off-hand to do lightning + ENUM2STRING(BOTH_FORCELIGHTNING_HOLD), //# Use off-hand to do lightning - hold + ENUM2STRING(BOTH_FORCELIGHTNING_RELEASE),//# Use off-hand to do lightning - release ENUM2STRING(BOTH_FORCEHEAL_START), //# Healing meditation pose start ENUM2STRING(BOTH_FORCEHEAL_STOP), //# Healing meditation pose end ENUM2STRING(BOTH_FORCEHEAL_QUICK), //# Healing meditation gesture ENUM2STRING(BOTH_SABERPULL), //# Use off-hand to do force power. - ENUM2STRING(BOTH_FORCEGRIP3), //# force-gripping + ENUM2STRING(BOTH_FORCEGRIP1), //# force-gripping (no anim?) + ENUM2STRING(BOTH_FORCEGRIP2), //# force-gripping (?) + ENUM2STRING(BOTH_FORCEGRIP3), //# force-gripping (right-hand) + ENUM2STRING(BOTH_FORCEGRIP_HOLD), //# Use off-hand to do grip - hold + ENUM2STRING(BOTH_FORCEGRIP_RELEASE),//# Use off-hand to do grip - release ENUM2STRING(BOTH_TOSS1), //# throwing to left after force gripping ENUM2STRING(BOTH_TOSS2), //# throwing to right after force gripping @@ -1205,8 +1148,6 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(TORSO_SURRENDER_START), //# arms up ENUM2STRING(TORSO_SURRENDER_STOP), //# arms back down - ENUM2STRING(TORSO_FORCEGRIP1), //# force-gripping - ENUM2STRING(TORSO_FORCEGRIP2), //# force-gripping ENUM2STRING(TORSO_CHOKING1), //# TEMP @@ -1237,6 +1178,46 @@ stringID_table_t animTable [MAX_ANIMATIONS+1] = ENUM2STRING(LEGS_RIGHTUP3), //# On a slope with RIGHT foot 12 higher than left ENUM2STRING(LEGS_RIGHTUP4), //# On a slope with RIGHT foot 16 higher than left ENUM2STRING(LEGS_RIGHTUP5), //# On a slope with RIGHT foot 20 higher than left + ENUM2STRING(LEGS_S1_LUP1), + ENUM2STRING(LEGS_S1_LUP2), + ENUM2STRING(LEGS_S1_LUP3), + ENUM2STRING(LEGS_S1_LUP4), + ENUM2STRING(LEGS_S1_LUP5), + ENUM2STRING(LEGS_S1_RUP1), + ENUM2STRING(LEGS_S1_RUP2), + ENUM2STRING(LEGS_S1_RUP3), + ENUM2STRING(LEGS_S1_RUP4), + ENUM2STRING(LEGS_S1_RUP5), + ENUM2STRING(LEGS_S3_LUP1), + ENUM2STRING(LEGS_S3_LUP2), + ENUM2STRING(LEGS_S3_LUP3), + ENUM2STRING(LEGS_S3_LUP4), + ENUM2STRING(LEGS_S3_LUP5), + ENUM2STRING(LEGS_S3_RUP1), + ENUM2STRING(LEGS_S3_RUP2), + ENUM2STRING(LEGS_S3_RUP3), + ENUM2STRING(LEGS_S3_RUP4), + ENUM2STRING(LEGS_S3_RUP5), + ENUM2STRING(LEGS_S4_LUP1), + ENUM2STRING(LEGS_S4_LUP2), + ENUM2STRING(LEGS_S4_LUP3), + ENUM2STRING(LEGS_S4_LUP4), + ENUM2STRING(LEGS_S4_LUP5), + ENUM2STRING(LEGS_S4_RUP1), + ENUM2STRING(LEGS_S4_RUP2), + ENUM2STRING(LEGS_S4_RUP3), + ENUM2STRING(LEGS_S4_RUP4), + ENUM2STRING(LEGS_S4_RUP5), + ENUM2STRING(LEGS_S5_LUP1), + ENUM2STRING(LEGS_S5_LUP2), + ENUM2STRING(LEGS_S5_LUP3), + ENUM2STRING(LEGS_S5_LUP4), + ENUM2STRING(LEGS_S5_LUP5), + ENUM2STRING(LEGS_S5_RUP1), + ENUM2STRING(LEGS_S5_RUP2), + ENUM2STRING(LEGS_S5_RUP3), + ENUM2STRING(LEGS_S5_RUP4), + ENUM2STRING(LEGS_S5_RUP5), //================================================= //HEAD ANIMS diff --git a/CODEmp/cgame/cg_consolecmds.c b/CODE-mp/cgame/cg_consolecmds.c similarity index 93% rename from CODEmp/cgame/cg_consolecmds.c rename to CODE-mp/cgame/cg_consolecmds.c index 3841035..eaaae63 100644 --- a/CODEmp/cgame/cg_consolecmds.c +++ b/CODE-mp/cgame/cg_consolecmds.c @@ -94,25 +94,6 @@ static void CG_ScoresUp_f( void ) { extern menuDef_t *menuScoreboard; void Menu_Reset(); // FIXME: add to right include file -static void CG_LoadHud_f( void) { - char buff[1024]; - const char *hudSet; - memset(buff, 0, sizeof(buff)); - - String_Init(); - Menu_Reset(); - - trap_Cvar_VariableStringBuffer("cg_hudFiles", buff, sizeof(buff)); - hudSet = buff; - if (hudSet[0] == '\0') { - hudSet = "ui/hud.txt"; - } - - CG_LoadMenus(hudSet); - menuScoreboard = NULL; -} - - static void CG_scrollScoresDown_f( void) { if (menuScoreboard && cg.scoreBoardShowing) { Menu_ScrollFeeder(menuScoreboard, FEEDER_SCOREBOARD, qtrue); @@ -430,6 +411,7 @@ static consoleCommand_t commands[] = { { "nextskin", CG_TestModelNextSkin_f }, { "prevskin", CG_TestModelPrevSkin_f }, { "viewpos", CG_Viewpos_f }, + { "datapad", CG_ScoresDown_f }, //SP compatibility for default.cfg { "+scores", CG_ScoresDown_f }, { "-scores", CG_ScoresUp_f }, // { "+zoom", CG_ZoomDown_f }, @@ -444,7 +426,6 @@ static consoleCommand_t commands[] = { { "vtell_target", CG_VoiceTellTarget_f }, { "vtell_attacker", CG_VoiceTellAttacker_f }, { "tcmd", CG_TargetCommand_f }, - { "loadhud", CG_LoadHud_f }, { "nextTeamMember", CG_NextTeamMember_f }, { "prevTeamMember", CG_PrevTeamMember_f }, { "nextOrder", CG_NextOrder_f }, diff --git a/CODEmp/cgame/cg_draw.c b/CODE-mp/cgame/cg_draw.c similarity index 94% rename from CODEmp/cgame/cg_draw.c rename to CODE-mp/cgame/cg_draw.c index ae09967..361b4dc 100644 --- a/CODEmp/cgame/cg_draw.c +++ b/CODE-mp/cgame/cg_draw.c @@ -1429,14 +1429,9 @@ void CG_DrawInvenSelect( void ) if (bg_itemlist[BG_GetItemIndexByTag(cg.itemSelect, IT_HOLDABLE)].pickup_name) { - // FIXME :this has to use the bg_itemlist pickup name -// tag = FindInventoryItemTag(cg.inventorySelect); + vec4_t textColor = { .312f, .75f, .621f, 1.0f }; -// if (tag) -// { - UI_DrawProportionalString(320, y+48, bg_itemlist[BG_GetItemIndexByTag(cg.itemSelect, IT_HOLDABLE)].pickup_name, UI_CENTER | UI_SMALLFONT, colorTable[CT_ICON_BLUE]); -// CG_DrawProportionalString(320, y + 53, bg_itemlist[i].pickup_name, CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); -// } + UI_DrawProportionalString(320, y+48, bg_itemlist[BG_GetItemIndexByTag(cg.itemSelect, IT_HOLDABLE)].pickup_name, UI_CENTER | UI_SMALLFONT, textColor); } } @@ -2614,6 +2609,12 @@ static void CG_DrawActivePowers(void) i++; } + + //additionally, draw an icon force force rage recovery + if (cg.snap->ps.fd.forceRageRecoveryTime > cg.time) + { + CG_DrawPic( startx, starty, endx, endy, cgs.media.rageRecShader); + } } //-------------------------------------------------------------- @@ -3799,15 +3800,6 @@ static void CG_Draw2D( void ) { CG_DrawRocketLocking( cg.snap->ps.rocketLockIndex, cg.snap->ps.rocketLockTime ); } - if (cg.snap->ps.holocronBits) - { - CG_DrawHolocronIcons(); - } - if (cg.snap->ps.fd.forcePowersActive) - { - CG_DrawActivePowers(); - } - if (BG_HasYsalimari(cgs.gametype, &cg.snap->ps)) { if (!cgYsalTime) @@ -3886,7 +3878,7 @@ static void CG_Draw2D( void ) { { CG_DrawHolocronIcons(); } - if (cg.snap->ps.fd.forcePowersActive) + if (cg.snap->ps.fd.forcePowersActive || cg.snap->ps.fd.forceRageRecoveryTime > cg.time) { CG_DrawActivePowers(); } diff --git a/CODEmp/cgame/cg_drawtools.c b/CODE-mp/cgame/cg_drawtools.c similarity index 100% rename from CODEmp/cgame/cg_drawtools.c rename to CODE-mp/cgame/cg_drawtools.c diff --git a/CODEmp/cgame/cg_effects.c b/CODE-mp/cgame/cg_effects.c similarity index 100% rename from CODEmp/cgame/cg_effects.c rename to CODE-mp/cgame/cg_effects.c diff --git a/CODEmp/cgame/cg_ents.c b/CODE-mp/cgame/cg_ents.c similarity index 93% rename from CODEmp/cgame/cg_ents.c rename to CODE-mp/cgame/cg_ents.c index 86506ff..abc61e7 100644 --- a/CODEmp/cgame/cg_ents.c +++ b/CODE-mp/cgame/cg_ents.c @@ -1085,7 +1085,7 @@ Ghoul2 Insert End //refEntity_t sRef; //memcpy( &sRef, &ent, sizeof( sRef ) ); - ent.customShader = trap_R_RegisterShader( "gfx/effects/solidWhite_cull" ); + ent.customShader = cgs.media.solidWhite; ent.renderfx = RF_RGB_TINT; wv = sin( cg.time * 0.003f ) * 0.08f + 0.1f; ent.shaderRGBA[0] = wv * 255; @@ -1107,7 +1107,7 @@ Ghoul2 Insert End fxSArgs.rotation = 0.0f; fxSArgs.bounce = 0.0f; fxSArgs.life = 1.0f; - fxSArgs.shader = cgs.media.yellowSaberGlowShader; + fxSArgs.shader = cgs.media.yellowDroppedSaberShader; fxSArgs.flags = 0x08000000; //trap_FX_AddSprite( org, NULL, NULL, 5.5f, 5.5f, wv, wv, 0.0f, 0.0f, 1.0f, cgs.media.yellowSaberGlowShader, 0x08000000 ); @@ -1122,27 +1122,27 @@ Ghoul2 Insert End //refEntity_t sRef; //memcpy( &sRef, &ent, sizeof( sRef ) ); - ent.customShader = trap_R_RegisterShader( "gfx/effects/solidWhite_cull" ); + ent.customShader = cgs.media.solidWhite; ent.renderfx = RF_RGB_TINT; wv = sin( cg.time * 0.005f ) * 0.08f + 0.1f; //* 0.08f + 0.1f; if (cent->currentState.trickedentindex3 == 1) { //dark - ent.shaderRGBA[0] = wv * 255; - ent.shaderRGBA[1] = wv * 0; - ent.shaderRGBA[2] = wv * 0; + ent.shaderRGBA[0] = wv*255; + ent.shaderRGBA[1] = 0; + ent.shaderRGBA[2] = 0; } else if (cent->currentState.trickedentindex3 == 2) { //light - ent.shaderRGBA[0] = wv * 255; - ent.shaderRGBA[1] = wv * 255; - ent.shaderRGBA[2] = wv * 255; + ent.shaderRGBA[0] = wv*255; + ent.shaderRGBA[1] = wv*255; + ent.shaderRGBA[2] = wv*255; } else { //neutral - ent.shaderRGBA[0] = wv * 0; - ent.shaderRGBA[1] = wv * 255; - ent.shaderRGBA[2] = wv * 255; + ent.shaderRGBA[0] = 0; + ent.shaderRGBA[1] = wv*255; + ent.shaderRGBA[2] = wv*255; } ent.modelScale[0] = 1.1; @@ -1153,7 +1153,6 @@ Ghoul2 Insert End ScaleModelAxis(&ent); trap_R_AddRefEntityToScene (&ent); - VectorMA( ent.origin, 1, ent.axis[2], org ); @@ -1208,7 +1207,7 @@ Ghoul2 Insert End int i = 0; VectorMA( ent.origin, 6.6f, ent.axis[0], beamOrg );// forward - beamID = trap_FX_RegisterEffect("tripMine/laserMP.efx"); + beamID = cgs.effects.tripmineLaserFX; if (cg.snap->ps.fd.forcePowersActive & (1 << FP_SEE)) { @@ -1324,7 +1323,8 @@ Ghoul2 Insert Start item = &bg_itemlist[ es->modelindex ]; if ((item->giType == IT_WEAPON || item->giType == IT_POWERUP) && - !(cent->currentState.eFlags & EF_DROPPEDWEAPON)) + !(cent->currentState.eFlags & EF_DROPPEDWEAPON) && + !cg_simpleItems.integer) { vec3_t uNorm; qboolean doGrey; @@ -1379,16 +1379,46 @@ Ghoul2 Insert End ent.shaderRGBA[1] = 255; ent.shaderRGBA[2] = 255; - if ( es->eFlags & EF_ITEMPLACEHOLDER ) + ent.origin[2] += 16; + + if (item->giType != IT_POWERUP || item->giTag != PW_FORCE_BOON) { ent.renderfx |= RF_FORCE_ENT_ALPHA; - ent.shaderRGBA[3] = 50 + sin(cg.time*0.01)*30; + } + + if ( es->eFlags & EF_ITEMPLACEHOLDER ) + { + if (item->giType == IT_POWERUP && item->giTag == PW_FORCE_BOON) + { + return; + } + ent.shaderRGBA[0] = 200; + ent.shaderRGBA[1] = 200; + ent.shaderRGBA[2] = 200; + ent.shaderRGBA[3] = 150 + sin(cg.time*0.01)*30; } else { ent.shaderRGBA[3] = 255; } + if (CG_GreyItem(item->giType, item->giTag, cg.snap->ps.fd.forceSide)) + { + ent.shaderRGBA[0] = 100; + ent.shaderRGBA[1] = 100; + ent.shaderRGBA[2] = 100; + + ent.shaderRGBA[3] = 200; + + if (item->giTag == PW_FORCE_ENLIGHTENED_LIGHT) + { + ent.customShader = trap_R_RegisterShader("gfx/misc/mp_light_enlight_disable"); + } + else + { + ent.customShader = trap_R_RegisterShader("gfx/misc/mp_dark_enlight_disable"); + } + } trap_R_AddRefEntityToScene(&ent); return; } @@ -1648,6 +1678,14 @@ Ghoul2 Insert End } else { // add to refresh list -- normal item + if (item->giType == IT_TEAM && + (item->giTag == PW_REDFLAG || item->giTag == PW_BLUEFLAG)) + { + ent.modelScale[0] = 0.7; + ent.modelScale[1] = 0.7; + ent.modelScale[2] = 0.7; + ScaleModelAxis(&ent); + } trap_R_AddRefEntityToScene(&ent); } @@ -1884,7 +1922,7 @@ Ghoul2 Insert End //refEntity_t sRef; //memcpy( &sRef, &ent, sizeof( sRef ) ); - ent.customShader = trap_R_RegisterShader( "gfx/effects/solidWhite_cull" ); + ent.customShader = cgs.media.solidWhite; ent.renderfx = RF_RGB_TINT; wv = sin( cg.time * 0.003f ) * 0.08f + 0.1f; ent.shaderRGBA[0] = wv * 255; @@ -1906,12 +1944,24 @@ Ghoul2 Insert End fxSArgs.rotation = 0.0f; fxSArgs.bounce = 0.0f; fxSArgs.life = 1.0f; - fxSArgs.shader = cgs.media.yellowSaberGlowShader; + fxSArgs.shader = cgs.media.yellowDroppedSaberShader; fxSArgs.flags = 0x08000000; //trap_FX_AddSprite( org, NULL, NULL, 5.5f, 5.5f, wv, wv, 0.0f, 0.0f, 1.0f, cgs.media.yellowSaberGlowShader, 0x08000000 ); trap_FX_AddSprite(&fxSArgs); } + + if (cgs.gametype == GT_JEDIMASTER) + { + ent.shaderRGBA[0] = 255; + ent.shaderRGBA[1] = 255; + ent.shaderRGBA[2] = 0; + + ent.renderfx |= RF_DEPTHHACK; + ent.customShader = cgs.media.forceSightBubble; + + trap_R_AddRefEntityToScene( &ent ); + } } if ( s1->eFlags & EF_FIRING ) diff --git a/CODEmp/cgame/cg_event.c b/CODE-mp/cgame/cg_event.c similarity index 91% rename from CODEmp/cgame/cg_event.c rename to CODE-mp/cgame/cg_event.c index 91ea87d..059b5cc 100644 --- a/CODEmp/cgame/cg_event.c +++ b/CODE-mp/cgame/cg_event.c @@ -204,9 +204,26 @@ clientkilled: char *s; if ( cgs.gametype < GT_TEAM ) { - s = va("%s %s\n%s place with %i", (char *)CG_GetStripEdString("INGAMETEXT", "KILLED_MESSAGE"), targetName, - CG_PlaceString( cg.snap->ps.persistant[PERS_RANK] + 1 ), - cg.snap->ps.persistant[PERS_SCORE] ); + if (cgs.gametype == GT_JEDIMASTER && + attacker < MAX_CLIENTS && + !ent->isJediMaster && + !cg.snap->ps.isJediMaster) + { + char part1[512]; + char part2[512]; + const char *kmsg1 = CG_GetStripEdString("INGAMETEXT", "KILLED_MESSAGE"); + strcpy(part1, kmsg1); + kmsg1 = CG_GetStripEdString("INGAMETEXT", "JMKILLED_NOTJM"); + strcpy(part2, kmsg1); + + s = va("%s %s %s\n", part1, targetName, part2); + } + else + { + s = va("%s %s.\n%s place with %i.", (char *)CG_GetStripEdString("INGAMETEXT", "KILLED_MESSAGE"), targetName, + CG_PlaceString( cg.snap->ps.persistant[PERS_RANK] + 1 ), + cg.snap->ps.persistant[PERS_SCORE] ); + } } else { s = va("%s %s", (char *)CG_GetStripEdString("INGAMETEXT", "KILLED_MESSAGE"), targetName ); } @@ -1041,7 +1058,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { } else { - trap_S_StartBackgroundTrack( "music/prototype/Duel.mp3", "music/prototype/Duel.mp3", qfalse ); + trap_S_StartBackgroundTrack( "music/mp/duel.mp3", "music/mp/duel.mp3", qfalse ); } } else @@ -1128,13 +1145,14 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { if (index < 1) { //a holocron most likely index = cg_entities[es->eventParm].currentState.trickedentindex4; - trap_S_StartSound (NULL, es->number, CHAN_AUTO, trap_S_RegisterSound( "sound/player/holocron.wav" ) ); + trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.holocronPickup ); if (es->number == cg.snap->ps.clientNum && showPowersName[index]) { const char *strText = CG_GetStripEdString("INGAMETEXT", "PICKUPLINE"); - Com_Printf("%s %s\n", strText, showPowersName[index]); + //Com_Printf("%s %s\n", strText, showPowersName[index]); + CG_CenterPrint( va("%s %s\n", strText, showPowersName[index]), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH ); } //Show the player their force selection bar in case picking the holocron up changed the current selection @@ -1336,13 +1354,25 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { DEBUGNAME("EV_SABER_HIT"); if (es->eventParm) { //hit a person + vec3_t fxDir; + VectorCopy(es->angles, fxDir); + if (!fxDir[0] && !fxDir[1] && !fxDir[2]) + { + fxDir[1] = 1; + } trap_S_StartSound(es->origin, es->number, CHAN_AUTO, trap_S_RegisterSound("sound/weapons/saber/saberhit.wav")); - trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/blood_sparks.efx"), es->origin, es->angles ); + trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/blood_sparks.efx"), es->origin, fxDir ); } else { //hit something else + vec3_t fxDir; + VectorCopy(es->angles, fxDir); + if (!fxDir[0] && !fxDir[1] && !fxDir[2]) + { + fxDir[1] = 1; + } trap_S_StartSound(es->origin, es->number, CHAN_AUTO, trap_S_RegisterSound("sound/weapons/saber/saberhit.wav")); - trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/spark.efx"), es->origin, es->angles ); + trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/spark.efx"), es->origin, fxDir ); } break; @@ -1351,15 +1381,27 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { if (es->eventParm) { //saber block + vec3_t fxDir; + VectorCopy(es->angles, fxDir); + if (!fxDir[0] && !fxDir[1] && !fxDir[2]) + { + fxDir[1] = 1; + } trap_S_StartSound(es->origin, es->number, CHAN_AUTO, trap_S_RegisterSound(va( "sound/weapons/saber/saberblock%d.wav", Q_irand(1, 9) ))); - trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/saber_block.efx"), es->origin, es->angles ); + trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/saber_block.efx"), es->origin, fxDir ); g_saberFlashTime = cg.time-50; VectorCopy( es->origin, g_saberFlashPos ); } else { //projectile block - trap_FX_PlayEffectID(trap_FX_RegisterEffect("blaster/deflect.efx"), es->origin, es->angles); + vec3_t fxDir; + VectorCopy(es->angles, fxDir); + if (!fxDir[0] && !fxDir[1] && !fxDir[2]) + { + fxDir[1] = 1; + } + trap_FX_PlayEffectID(trap_FX_RegisterEffect("blaster/deflect.efx"), es->origin, fxDir); } break; @@ -1389,9 +1431,14 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { { break; } - trap_FX_PlayEffectID(trap_FX_RegisterEffect("mp/spawn.efx"), pos, ang); + trap_FX_PlayEffectID(trap_FX_RegisterEffect("mp/jedispawn.efx"), pos, ang); trap_S_StartSound (NULL, es->number, CHAN_AUTO, trap_S_RegisterSound( "sound/weapons/saber/saberon.wav" ) ); + + if (cg.snap->ps.clientNum == es->number) + { + trap_S_StartLocalSound(cgs.media.happyMusic, CHAN_LOCAL); + } } break; @@ -1814,19 +1861,47 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { //CG_AddBufferedSound( cgs.media.blueScoredSound ); break; case GTS_RED_RETURN: // CTF: blue flag returned, 1FCTF: never used - CG_AddBufferedSound( cgs.media.blueFlagReturnedSound ); + if (cgs.gametype == GT_CTY) + { + CG_AddBufferedSound( cgs.media.blueYsalReturnedSound ); + } + else + { + CG_AddBufferedSound( cgs.media.blueFlagReturnedSound ); + } break; case GTS_BLUE_RETURN: // CTF red flag returned, 1FCTF: neutral flag returned - CG_AddBufferedSound( cgs.media.redFlagReturnedSound ); + if (cgs.gametype == GT_CTY) + { + CG_AddBufferedSound( cgs.media.redYsalReturnedSound ); + } + else + { + CG_AddBufferedSound( cgs.media.redFlagReturnedSound ); + } break; case GTS_RED_TAKEN: // CTF: red team took blue flag, 1FCTF: blue team took the neutral flag // if this player picked up the flag then a sound is played in CG_CheckLocalSounds - CG_AddBufferedSound( cgs.media.redTookFlagSound ); + if (cgs.gametype == GT_CTY) + { + CG_AddBufferedSound( cgs.media.redTookYsalSound ); + } + else + { + CG_AddBufferedSound( cgs.media.redTookFlagSound ); + } break; case GTS_BLUE_TAKEN: // CTF: blue team took the red flag, 1FCTF red team took the neutral flag // if this player picked up the flag then a sound is played in CG_CheckLocalSounds - CG_AddBufferedSound( cgs.media.blueTookFlagSound ); + if (cgs.gametype == GT_CTY) + { + CG_AddBufferedSound( cgs.media.blueTookYsalSound ); + } + else + { + CG_AddBufferedSound( cgs.media.blueTookFlagSound ); + } break; case GTS_REDTEAM_SCORED: CG_AddBufferedSound(cgs.media.redScoredSound); @@ -1921,6 +1996,10 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { DEBUGNAME("EV_DEATHx"); trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, va("*death%i.wav", event - EV_DEATH1 + 1) ) ); + if (es->eventParm && es->number == cg.snap->ps.clientNum) + { + trap_S_StartLocalSound(cgs.media.dramaticFailure, CHAN_LOCAL); + } break; diff --git a/CODEmp/cgame/cg_info.c b/CODE-mp/cgame/cg_info.c similarity index 100% rename from CODEmp/cgame/cg_info.c rename to CODE-mp/cgame/cg_info.c diff --git a/CODEmp/cgame/cg_light.c b/CODE-mp/cgame/cg_light.c similarity index 100% rename from CODEmp/cgame/cg_light.c rename to CODE-mp/cgame/cg_light.c diff --git a/CODEmp/cgame/cg_lights.h b/CODE-mp/cgame/cg_lights.h similarity index 100% rename from CODEmp/cgame/cg_lights.h rename to CODE-mp/cgame/cg_lights.h diff --git a/CODEmp/cgame/cg_local.h b/CODE-mp/cgame/cg_local.h similarity index 95% rename from CODEmp/cgame/cg_local.h rename to CODE-mp/cgame/cg_local.h index 5825b52..f1b6cba 100644 --- a/CODEmp/cgame/cg_local.h +++ b/CODE-mp/cgame/cg_local.h @@ -230,6 +230,8 @@ typedef struct centity_s { int frame_hold_time; int frame_hold_refreshed; + refEntity_t grip_arm; + int trickAlpha; int trickAlphaTime; } centity_t; @@ -873,6 +875,9 @@ typedef struct cgscreffects_s float shake_intensity; int shake_duration; int shake_start; + + float music_volume_mulitplier; + int music_volume_time; } cgscreffects_t; extern cgscreffects_t cgScreenEffects; @@ -934,6 +939,8 @@ typedef struct { qhandle_t purpleSaberCoreShader; qhandle_t saberBlurShader; + qhandle_t yellowDroppedSaberShader; + qhandle_t rivetMarkShader; qhandle_t teamRedShader; @@ -1019,6 +1026,8 @@ typedef struct { qhandle_t disruptorShader; + qhandle_t solidWhite; + qhandle_t heartShader; #ifdef JK2AWARDS @@ -1038,6 +1047,7 @@ typedef struct { sfxHandle_t winnerSound; sfxHandle_t loserSound; + sfxHandle_t crackleSound; sfxHandle_t grenadeBounce1; sfxHandle_t grenadeBounce2; @@ -1091,6 +1101,15 @@ typedef struct { sfxHandle_t redTookFlagSound; sfxHandle_t blueTookFlagSound; + sfxHandle_t redYsalReturnedSound; + sfxHandle_t blueYsalReturnedSound; + sfxHandle_t redTookYsalSound; + sfxHandle_t blueTookYsalSound; + + //music blips + sfxHandle_t happyMusic; + sfxHandle_t dramaticFailure; + // tournament sounds sfxHandle_t count3Sound; sfxHandle_t count2Sound; @@ -1128,6 +1147,8 @@ typedef struct { //force power icons qhandle_t forcePowerIcons[NUM_FORCE_POWERS]; + qhandle_t rageRecShader; + //other HUD parts qhandle_t HUDLeftFrame; qhandle_t HUDArmor1; @@ -1152,6 +1173,8 @@ typedef struct { qhandle_t HUDInnerLeft; + sfxHandle_t holocronPickup; + // Zoom sfxHandle_t zoomStart; sfxHandle_t zoomLoop; @@ -1218,6 +1241,9 @@ typedef struct fxHandle_t thermalExplosionEffect; fxHandle_t thermalShockwaveEffect; + // TRIPMINE + fxHandle_t tripmineLaserFX; + //FORCE fxHandle_t forceLightning; fxHandle_t forceLightningWide; diff --git a/CODEmp/cgame/cg_localents.c b/CODE-mp/cgame/cg_localents.c similarity index 100% rename from CODEmp/cgame/cg_localents.c rename to CODE-mp/cgame/cg_localents.c diff --git a/CODEmp/cgame/cg_main.c b/CODE-mp/cgame/cg_main.c similarity index 94% rename from CODEmp/cgame/cg_main.c rename to CODE-mp/cgame/cg_main.c index 504d34a..26c4798 100644 --- a/CODEmp/cgame/cg_main.c +++ b/CODE-mp/cgame/cg_main.c @@ -563,7 +563,7 @@ static cvarTable_t cvarTable[] = { // bk001129 { &cg_teamChatHeight, "cg_teamChatHeight", "0", CVAR_ARCHIVE }, { &cg_forceModel, "cg_forceModel", "0", CVAR_ARCHIVE }, { &cg_predictItems, "cg_predictItems", "1", CVAR_ARCHIVE }, - { &cg_deferPlayers, "cg_deferPlayers", "0", CVAR_ARCHIVE }, + { &cg_deferPlayers, "cg_deferPlayers", "1", CVAR_ARCHIVE }, { &cg_drawTeamOverlay, "cg_drawTeamOverlay", "0", CVAR_ARCHIVE }, { &cg_teamOverlayUserinfo, "teamoverlay", "0", CVAR_ROM | CVAR_USERINFO }, { &cg_stats, "cg_stats", "0", 0 }, @@ -588,7 +588,6 @@ static cvarTable_t cvarTable[] = { // bk001129 { &cg_singlePlayerActive, "ui_singlePlayerActive", "0", CVAR_USERINFO}, { &cg_recordSPDemo, "ui_recordSPDemo", "0", CVAR_ARCHIVE}, { &cg_recordSPDemoName, "ui_recordSPDemoName", "", CVAR_ARCHIVE}, - { &cg_hudFiles, "cg_hudFiles", "ui/hud.txt", CVAR_ARCHIVE}, { &cg_cameraOrbit, "cg_cameraOrbit", "0", CVAR_CHEAT}, { &cg_cameraOrbitDelay, "cg_cameraOrbitDelay", "50", CVAR_ARCHIVE}, @@ -644,6 +643,18 @@ void CG_RegisterCvars( void ) { trap_Cvar_Register(NULL, "team_model", DEFAULT_TEAM_MODEL, CVAR_USERINFO | CVAR_ARCHIVE ); trap_Cvar_Register(NULL, "team_headmodel", DEFAULT_TEAM_HEAD, CVAR_USERINFO | CVAR_ARCHIVE ); trap_Cvar_Register(NULL, "forcepowers", DEFAULT_FORCEPOWERS, CVAR_USERINFO | CVAR_ARCHIVE ); + + // Cvars uses for transferring data between client and server + trap_Cvar_Register(NULL, "ui_about_gametype", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_fraglimit", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_capturelimit", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_timelimit", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_maxclients", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_dmflags", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_mapname", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_hostname", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_needpass", "0", CVAR_ROM|CVAR_INTERNAL ); + trap_Cvar_Register(NULL, "ui_about_botminplayers", "0", CVAR_ROM|CVAR_INTERNAL ); } /* @@ -879,6 +890,8 @@ static void CG_RegisterSounds( void ) { cgs.media.purpleSaberCoreShader = trap_R_RegisterShader( "gfx/effects/sabers/purple_line" ); cgs.media.saberBlurShader = trap_R_RegisterShader( "gfx/effects/sabers/saberBlur" ); + cgs.media.yellowDroppedSaberShader = trap_R_RegisterShader("gfx/effects/yellow_glow"); + cgs.media.rivetMarkShader = trap_R_RegisterShader( "gfx/damage/rivetmark" ); trap_R_RegisterShader( "gfx/effects/saberFlare" ); @@ -984,9 +997,23 @@ static void CG_RegisterSounds( void ) { cgs.media.blueFlagReturnedSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM041" ); cgs.media.redTookFlagSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM040" ); cgs.media.blueTookFlagSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM039" ); + + cgs.media.redYsalReturnedSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM050" ); + cgs.media.blueYsalReturnedSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM049" ); + cgs.media.redTookYsalSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM048" ); + cgs.media.blueTookYsalSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM047" ); } } + cgs.media.happyMusic = trap_S_RegisterSound("music/goodsmall.mp3"); + cgs.media.dramaticFailure = trap_S_RegisterSound("music/badsmall.mp3"); + + //PRECACHE ALL MUSIC HERE (don't need to precache normally because it's streamed off the disk) + if (cg_buildScript.integer) + { + trap_S_StartBackgroundTrack( "music/mp/duel.mp3", "music/mp/duel.mp3", qfalse ); + } + cg.loadLCARSStage = 1; cgs.media.selectSound = trap_S_RegisterSound( "sound/weapons/change.wav" ); @@ -1001,6 +1028,7 @@ static void CG_RegisterSounds( void ) { cgs.media.landSound = trap_S_RegisterSound( "sound/player/land1.wav"); cgs.media.fallSound = trap_S_RegisterSound( "sound/player/fallsplat.wav"); + cgs.media.crackleSound = trap_S_RegisterSound( "sound/effects/energy_crackle.wav" ); #ifdef JK2AWARDS cgs.media.impressiveSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM025" ); cgs.media.excellentSound = trap_S_RegisterSound( "sound/chars/mothma/misc/40MOM053" ); @@ -1026,16 +1054,19 @@ static void CG_RegisterSounds( void ) { if (cg_buildScript.integer) { - trap_R_RegisterShader( "gfx/effects/solidWhite_cull" ); trap_R_RegisterShader( "gfx/effects/turretflashdie" ); - - trap_R_RegisterShader("gfx/misc/mp_light_enlight_disable"); - trap_R_RegisterShader("gfx/misc/mp_dark_enlight_disable"); } + cgs.media.solidWhite = trap_R_RegisterShader( "gfx/effects/solidWhite_cull" ); + + trap_R_RegisterShader("gfx/misc/mp_light_enlight_disable"); + trap_R_RegisterShader("gfx/misc/mp_dark_enlight_disable"); + trap_R_RegisterModel ( "models/map_objects/mp/sphere.md3" ); trap_R_RegisterModel("models/items/remote.md3"); + cgs.media.holocronPickup = trap_S_RegisterSound( "sound/player/holocron.wav" ); + // Zoom cgs.media.zoomStart = trap_S_RegisterSound( "sound/interface/zoomstart.wav" ); cgs.media.zoomLoop = trap_S_RegisterSound( "sound/interface/zoomloop.wav" ); @@ -1221,6 +1252,7 @@ static void CG_RegisterGraphics( void ) { trap_FX_RegisterEffect("effects/blaster/deflect.efx"); trap_FX_RegisterEffect("emplaced/dead_smoke.efx"); + trap_FX_RegisterEffect("emplaced/explode.efx"); if (cg_buildScript.integer) { @@ -1231,6 +1263,7 @@ static void CG_RegisterGraphics( void ) { trap_FX_RegisterEffect("effects/turret/muzzle_flash.efx"); trap_FX_RegisterEffect("saber/spark.efx"); trap_FX_RegisterEffect("mp/spawn.efx"); + trap_FX_RegisterEffect("mp/jedispawn.efx"); trap_FX_RegisterEffect("mp/itemcone.efx"); trap_FX_RegisterEffect("blaster/deflect.efx"); trap_FX_RegisterEffect("saber/saber_block.efx"); @@ -1834,77 +1867,6 @@ qboolean CG_Load_Menu(char **p) { } - -void CG_LoadMenus(const char *menuFile) { - char *token; - char *p; - int len, start; - fileHandle_t f; - static char buf[MAX_MENUDEFFILE]; - - start = trap_Milliseconds(); - - len = trap_FS_FOpenFile( menuFile, &f, FS_READ ); - if ( !f ) { - // do NOT do this, or it doesn't get a chance to look at the default menu below -ste - //trap_Error( va( S_COLOR_YELLOW "menu file not found: %s, using default\n", menuFile ) ); - len = trap_FS_FOpenFile( "ui/hud.txt", &f, FS_READ ); - if (!f) { - trap_Error( va( S_COLOR_RED "default menu file not found: ui/hud.txt, unable to continue!\n", menuFile ) ); - } - } - - if ( len >= MAX_MENUDEFFILE ) { - trap_Error( va( S_COLOR_RED "menu file too large: %s is %i, max allowed is %i", menuFile, len, MAX_MENUDEFFILE ) ); - trap_FS_FCloseFile( f ); - return; - } - - trap_FS_Read( buf, len, f ); - buf[len] = 0; - trap_FS_FCloseFile( f ); - - COM_Compress(buf); - - Menu_Reset(); - - p = buf; - - while ( 1 ) { - token = COM_ParseExt( (const char **)&p, qtrue ); - if( !token || token[0] == 0 || token[0] == '}') { - break; - } - - //if ( Q_stricmp( token, "{" ) ) { - // Com_Printf( "Missing { in menu file\n" ); - // break; - //} - - //if ( menuCount == MAX_MENUS ) { - // Com_Printf( "Too many menus!\n" ); - // break; - //} - - if ( Q_stricmp( token, "}" ) == 0 ) { - break; - } - - if (Q_stricmp(token, "loadmenu") == 0) { - if (CG_Load_Menu(&p)) { - continue; - } else { - break; - } - } - } - - Com_Printf("UI menu load time = %d milli seconds\n", trap_Milliseconds() - start); - -} - - - static qboolean CG_OwnerDrawHandleKey(int ownerDraw, int flags, float *special, int key) { return qfalse; } @@ -2149,10 +2111,8 @@ CG_LoadHudMenu(); ================= */ -void CG_LoadHudMenu() { - char buff[1024]; - const char *hudSet; - +void CG_LoadHudMenu() +{ cgDC.registerShaderNoMip = &trap_R_RegisterShaderNoMip; cgDC.setColor = &trap_R_SetColor; cgDC.drawHandlePic = &CG_DrawPic; @@ -2211,14 +2171,6 @@ void CG_LoadHudMenu() { Init_Display(&cgDC); Menu_Reset(); - - trap_Cvar_VariableStringBuffer("cg_hudFiles", buff, sizeof(buff)); - hudSet = buff; - if (hudSet[0] == '\0') { - hudSet = "ui/hud.txt"; - } - - CG_LoadMenus(hudSet); } void CG_AssetCache() { @@ -2451,6 +2403,7 @@ Ghoul2 Insert End i++; } + cgs.media.rageRecShader = trap_R_RegisterShaderNoMip("gfx/mp/f_icon_ragerec"); //rww - precache other HUD graphics cgs.media.HUDLeftFrame = trap_R_RegisterShaderNoMip( "gfx/hud/static_test" ); diff --git a/CODEmp/cgame/cg_marks.c b/CODE-mp/cgame/cg_marks.c similarity index 100% rename from CODEmp/cgame/cg_marks.c rename to CODE-mp/cgame/cg_marks.c diff --git a/CODEmp/cgame/cg_media.h b/CODE-mp/cgame/cg_media.h similarity index 100% rename from CODEmp/cgame/cg_media.h rename to CODE-mp/cgame/cg_media.h diff --git a/CODEmp/cgame/cg_newDraw.c b/CODE-mp/cgame/cg_newDraw.c similarity index 96% rename from CODEmp/cgame/cg_newDraw.c rename to CODE-mp/cgame/cg_newDraw.c index dbe9550..7543b4c 100644 --- a/CODEmp/cgame/cg_newDraw.c +++ b/CODE-mp/cgame/cg_newDraw.c @@ -1013,7 +1013,7 @@ static void CG_DrawAreaChat(rectDef_t *rect, float scale, vec4_t color, qhandle_ const char *CG_GetKillerText(void) { const char *s = ""; if ( cg.killerName[0] ) { - s = va("Fragged by %s", cg.killerName ); + s = va("%s %s", CG_GetStripEdString("INGAMETEXT", "KILLEDBY"), cg.killerName ); } return s; } diff --git a/CODEmp/cgame/cg_playeranimate.c b/CODE-mp/cgame/cg_playeranimate.c similarity index 100% rename from CODEmp/cgame/cg_playeranimate.c rename to CODE-mp/cgame/cg_playeranimate.c diff --git a/CODEmp/cgame/cg_players.c b/CODE-mp/cgame/cg_players.c similarity index 88% rename from CODEmp/cgame/cg_players.c rename to CODE-mp/cgame/cg_players.c index 2fec1e8..eb70991 100644 --- a/CODEmp/cgame/cg_players.c +++ b/CODE-mp/cgame/cg_players.c @@ -427,7 +427,7 @@ retryModel: { // Didn't find any slashes, this is a raw filename right in base (whish isn't a good thing) return qfalse; } - +/* // Try to load the animation.cfg for this model then. if ( !BG_ParseAnimationFile( afilename, ci->animations ) ) { // The GLA's animations failed @@ -437,6 +437,19 @@ retryModel: return qfalse; } } +*/ +//rww - For now, we'll just ignore what animation file it wants. In theory all multiplayer-supported models +//should want _humanoid/animation.cfg, so if it doesn't want that then throw it away + if (Q_stricmp(afilename, "models/players/_humanoid/animation.cfg")) + { + Com_Printf( "Model does not use supported animation config.\n"); + return qfalse; + } + else if (!BG_ParseAnimationFile("models/players/_humanoid/animation.cfg", ci->animations)) + { + Com_Printf( "Failed to load animation file models/players/_humanoid/animation.cfg\n" ); + return qfalse; + } else if (!retriedAlready) { int i; @@ -549,11 +562,13 @@ retryModel: } } + /* if (cg_entities[clientNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[clientNum].ghoul2)) { trap_G2API_CleanGhoul2Models(&(cg_entities[clientNum].ghoul2)); } trap_G2API_DuplicateGhoul2Instance(ci->ghoul2Model, &cg_entities[clientNum].ghoul2); + */ cg_entities[clientNum].ghoul2weapon = NULL; } @@ -613,6 +628,35 @@ void CG_LoadClientInfo( clientInfo_t *ci ) { qboolean isFemale = qfalse; fileHandle_t f; + clientNum = ci - cgs.clientinfo; + + if (clientNum < 0 || clientNum >= MAX_CLIENTS) + { + clientNum = -1; + } + + ci->deferred = qfalse; + + if (ci->team == TEAM_SPECTATOR) + { + // reset any existing players and bodies, because they might be in bad + // frames for this new model + clientNum = ci - cgs.clientinfo; + for ( i = 0 ; i < MAX_GENTITIES ; i++ ) { + if ( cg_entities[i].currentState.clientNum == clientNum + && cg_entities[i].currentState.eType == ET_PLAYER ) { + CG_ResetPlayerEntity( &cg_entities[i] ); + } + } + + if (ci->ghoul2Model && trap_G2_HaveWeGhoul2Models(ci->ghoul2Model)) + { + trap_G2API_CleanGhoul2Models(&ci->ghoul2Model); + } + + return; + } + teamname[0] = 0; if( cgs.gametype >= GT_TEAM) { if( ci->team == TEAM_BLUE ) { @@ -625,8 +669,8 @@ void CG_LoadClientInfo( clientInfo_t *ci ) { strcat( teamname, "/" ); } modelloaded = qtrue; - if ( !CG_RegisterClientModelname( ci, ci->modelName, ci->skinName, ci->headModelName, ci->headSkinName, teamname, -1 ) ) { - if ( cg_buildScript.integer ) { + if ( !CG_RegisterClientModelname( ci, ci->modelName, ci->skinName, ci->headModelName, ci->headSkinName, teamname, clientNum ) ) { + if ( cg_buildScript.integer && ci->team != TEAM_SPECTATOR ) { CG_Error( "CG_RegisterClientModelname( %s, %s, %s, %s %s ) failed", ci->modelName, ci->skinName, ci->headModelName, ci->headSkinName, teamname ); } @@ -649,6 +693,15 @@ void CG_LoadClientInfo( clientInfo_t *ci ) { modelloaded = qfalse; } + if (clientNum != -1 && ci->ghoul2Model && trap_G2_HaveWeGhoul2Models(ci->ghoul2Model)) + { + if (cg_entities[clientNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[clientNum].ghoul2)) + { + trap_G2API_CleanGhoul2Models(&cg_entities[clientNum].ghoul2); + } + trap_G2API_DuplicateGhoul2Instance(ci->ghoul2Model, &cg_entities[clientNum].ghoul2); + } + ci->newAnims = qfalse; if ( ci->torsoModel ) { orientation_t tag; @@ -689,6 +742,15 @@ void CG_LoadClientInfo( clientInfo_t *ci ) { trap_FS_FCloseFile(f); } + if (isFemale) + { + ci->gender = GENDER_FEMALE; + } + else + { + ci->gender = GENDER_MALE; + } + for ( i = 0 ; i < MAX_CUSTOM_SOUNDS ; i++ ) { s = cg_customSoundNames[i]; if ( !s ) { @@ -703,15 +765,7 @@ void CG_LoadClientInfo( clientInfo_t *ci ) { // if the model didn't load use the sounds of the default model if (soundpath[0]) { - if (CG_FileExists(va("sound/%s/%s.wav", soundpath, soundName)) || - CG_FileExists(va("sound/%s/%s.mp3", soundpath, soundName))) - { - ci->sounds[i] = trap_S_RegisterSound( va("sound/%s/%s", soundpath, soundName) ); - } - else - { - ci->sounds[i] = 0; - } + ci->sounds[i] = trap_S_RegisterSound( va("sound/%s/%s", soundpath, soundName) ); if (!ci->sounds[i]) { @@ -729,15 +783,7 @@ void CG_LoadClientInfo( clientInfo_t *ci ) { { if (modelloaded) { - if (CG_FileExists(va("sound/chars/%s/misc/%s.wav", dir, soundName)) || - CG_FileExists(va("sound/chars/%s/misc/%s.mp3", dir, soundName))) - { - ci->sounds[i] = trap_S_RegisterSound( va("sound/chars/%s/misc/%s", dir, soundName) ); - } - else - { - ci->sounds[i] = 0; - } + ci->sounds[i] = trap_S_RegisterSound( va("sound/chars/%s/misc/%s", dir, soundName) ); } if ( !ci->sounds[i] ) @@ -783,8 +829,16 @@ static void CG_CopyClientInfoModel( clientInfo_t *from, clientInfo_t *to ) { to->newAnims = from->newAnims; - // rww - was duplicating instance, now just reassigning pointer to same memory - to->ghoul2Model = from->ghoul2Model; + //to->ghoul2Model = from->ghoul2Model; + //rww - Trying to use the same ghoul2 pointer for two seperate clients == DISASTER + if (to->ghoul2Model && trap_G2_HaveWeGhoul2Models(to->ghoul2Model)) + { + trap_G2API_CleanGhoul2Models(&to->ghoul2Model); + } + if (from->ghoul2Model && trap_G2_HaveWeGhoul2Models(from->ghoul2Model)) + { + trap_G2API_DuplicateGhoul2Instance(from->ghoul2Model, &to->ghoul2Model); + } to->bolt_head = from->bolt_head; to->bolt_lhand = from->bolt_lhand; @@ -1086,6 +1140,20 @@ void CG_NewClientInfo( int clientNum, qboolean entitiesInitialized ) { newInfo.ATST = wasATST; + if (cgs.gametype >= GT_TEAM) + { + if (newInfo.team == TEAM_RED) + { + strcpy(newInfo.skinName, "red"); + strcpy(newInfo.headSkinName, "red"); + } + if (newInfo.team == TEAM_BLUE) + { + strcpy(newInfo.skinName, "blue"); + strcpy(newInfo.headSkinName, "blue"); + } + } + // scan for an existing clientinfo that matches this modelname // so we can avoid loading checks if possible if ( !CG_ScanForExistingClientInfo( &newInfo ) ) { @@ -1123,11 +1191,7 @@ void CG_NewClientInfo( int clientNum, qboolean entitiesInitialized ) { { // Copy the new ghoul2 model to the centity. animation_t *anim; // First check if we have a ghoul2 model on the client entity. - if (cg_entities[clientNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[clientNum].ghoul2)) - { - trap_G2API_CleanGhoul2Models(&cg_entities[clientNum].ghoul2); - } - + anim = &ci->animations[ (cg_entities[clientNum].currentState.legsAnim & ~ANIM_TOGGLEBIT) ]; if (anim) @@ -1166,35 +1230,42 @@ void CG_NewClientInfo( int clientNum, qboolean entitiesInitialized ) { cg_entities[clientNum].currentState.torsoAnim = 0; } - trap_G2API_DuplicateGhoul2Instance(ci->ghoul2Model, &cg_entities[clientNum].ghoul2); - //rww - FIXME: Perhaps I'm missing something, but if we're duplicating the instance from ci instead of pointing the cent g2 instance to it, can't we clean one up? (no reason to have - // the same instance duplicated in memory) I'm not touching this at the moment because I don't want to unknowingly break something horribly if I'm wrong - - if (cg_entities[clientNum].weapon > WP_NONE) + if (cg_entities[clientNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[clientNum].ghoul2)) { - CG_CopyG2WeaponInstance(cg_entities[clientNum].weapon, cg_entities[clientNum].ghoul2); + trap_G2API_CleanGhoul2Models(&cg_entities[clientNum].ghoul2); } + trap_G2API_DuplicateGhoul2Instance(ci->ghoul2Model, &cg_entities[clientNum].ghoul2); + + /* + if (cg_entities[clientNum].currentState.weapon > WP_NONE) + { + CG_CopyG2WeaponInstance(cg_entities[clientNum].currentState.weapon, cg_entities[clientNum].ghoul2); + } + */ + //It should catch this next update anyway. We just set all ghoul2weapon's to NULL above. } else if (ci->team == TEAM_SPECTATOR && cg_entities[clientNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[clientNum].ghoul2)) - { //rww - not doing this seems to allow .ghoul2 to become an invalid pointer. And as we all know, invalid pointers make baby Carmack cry. + { //this shouldn't actually happen now because we are not trying to register models for spectators. But just in case. trap_G2API_CleanGhoul2Models(&cg_entities[clientNum].ghoul2); - trap_G2API_DuplicateGhoul2Instance(ci->ghoul2Model, &cg_entities[clientNum].ghoul2); + if (ci->ghoul2Model && trap_G2_HaveWeGhoul2Models(ci->ghoul2Model)) + { + trap_G2API_DuplicateGhoul2Instance(ci->ghoul2Model, &cg_entities[clientNum].ghoul2); + } } } - +qboolean cgQueueLoad = qfalse; /* ====================== -CG_LoadDeferredPlayers +CG_ActualLoadDeferredPlayers -Called each frame when a player is dead -and the scoreboard is up -so deferred players can be loaded +Called at the beginning of CG_Player if cgQueueLoad is set. ====================== */ -void CG_LoadDeferredPlayers( void ) { +void CG_ActualLoadDeferredPlayers( void ) +{ int i; clientInfo_t *ci; @@ -1213,6 +1284,19 @@ void CG_LoadDeferredPlayers( void ) { } } +/* +====================== +CG_LoadDeferredPlayers + +Called each frame when a player is dead +and the scoreboard is up +so deferred players can be loaded +====================== +*/ +void CG_LoadDeferredPlayers( void ) { + cgQueueLoad = qtrue; +} + /* ============================================================================= @@ -1223,37 +1307,6 @@ PLAYER ANIMATION static qboolean CG_FirstAnimFrame(clientInfo_t *ci, lerpFrame_t *lf, qboolean torsoOnly, float speedScale); -qboolean CG_DeathAnim( int anim ) -{ - switch((anim&~ANIM_TOGGLEBIT)) - { - case BOTH_DIVE1: - case BOTH_DEATHBACKWARD1: - case BOTH_DEATHBACKWARD2: - case BOTH_DEATHFORWARD1: - case BOTH_DEATHFORWARD2: - case BOTH_DEATH1: - case BOTH_DEATH2: - case BOTH_DEATH3: - case BOTH_DEATH4: - case BOTH_DEATH5: - case BOTH_DEATH6: - case BOTH_DEATH7: - - case BOTH_DEATH1IDLE: - case BOTH_LYINGDEATH1: - case BOTH_STUMBLEDEATH1: - case BOTH_FALLDEATH1: - case BOTH_FALLDEATH1INAIR: - case BOTH_FALLDEATH1LAND: - return qtrue; - break; - default: - return qfalse; - break; - } -} - qboolean CG_InRoll( centity_t *cent ) { switch ( (cent->currentState.legsAnim&~ANIM_TOGGLEBIT) ) @@ -1271,9 +1324,6 @@ qboolean CG_InRoll( centity_t *cent ) return qfalse; } -qboolean PM_SaberInSpecial( int move ); -qboolean PM_SaberInSpecialAttack( int anim ); - /* =============== CG_SetLerpFrameAnimation @@ -1486,12 +1536,12 @@ static void CG_SetLerpFrameAnimation( centity_t *cent, clientInfo_t *ci, lerpFra if (!cent->isATST) { - if (BG_FlippingAnim(newAnimation) || CG_DeathAnim(newAnimation)) + if (BG_FlippingAnim(newAnimation) || BG_InDeathAnim(newAnimation)) { flags &= ~BONE_ANIM_BLEND; } else if ( oldAnim != -1 && - (BG_FlippingAnim(oldAnim) || CG_DeathAnim(oldAnim)) ) + (BG_FlippingAnim(oldAnim) || BG_InDeathAnim(oldAnim)) ) { flags &= ~BONE_ANIM_BLEND; } @@ -1538,12 +1588,12 @@ static void CG_SetLerpFrameAnimation( centity_t *cent, clientInfo_t *ci, lerpFra !BG_SpinningSaberAnim( cent->currentState.torsoAnim ) && !BG_InSpecialJump( cent->currentState.legsAnim ) && !BG_InSpecialJump( cent->currentState.torsoAnim ) && - !CG_DeathAnim(cent->currentState.legsAnim) && - !CG_DeathAnim(cent->currentState.torsoAnim) && + !BG_InDeathAnim(cent->currentState.legsAnim) && + !BG_InDeathAnim(cent->currentState.torsoAnim) && !CG_InRoll(cent) && - !PM_SaberInSpecial(cent->currentState.saberMove) && - !PM_SaberInSpecialAttack(cent->currentState.torsoAnim) && - !PM_SaberInSpecialAttack(cent->currentState.legsAnim) ) + !BG_SaberInSpecial(cent->currentState.saberMove) && + !BG_SaberInSpecialAttack(cent->currentState.torsoAnim) && + !BG_SaberInSpecialAttack(cent->currentState.legsAnim) ) { trap_G2API_SetBoneAnim(cent->ghoul2, 0, "Motion", anim->firstFrame, anim->firstFrame + anim->numFrames, flags, animSpeed, lf->frameTime, -1, 150); } @@ -2316,19 +2366,19 @@ void CG_G2ClientSpineAngles( centity_t *cent, vec3_t viewAngles, const vec3_t an !BG_SpinningSaberAnim( cent->currentState.torsoAnim ) && !BG_InSpecialJump( cent->currentState.legsAnim ) && !BG_InSpecialJump( cent->currentState.torsoAnim ) && - !CG_DeathAnim(cent->currentState.legsAnim) && - !CG_DeathAnim(cent->currentState.torsoAnim) && + !BG_InDeathAnim(cent->currentState.legsAnim) && + !BG_InDeathAnim(cent->currentState.torsoAnim) && !CG_InRoll(cent) && - !PM_SaberInSpecial(cent->currentState.saberMove) && - !PM_SaberInSpecialAttack(cent->currentState.torsoAnim) && - !PM_SaberInSpecialAttack(cent->currentState.legsAnim) && + !BG_SaberInSpecial(cent->currentState.saberMove) && + !BG_SaberInSpecialAttack(cent->currentState.torsoAnim) && + !BG_SaberInSpecialAttack(cent->currentState.legsAnim) && /* !BG_FlippingAnim( cent->rootBone ) && !BG_SpinningSaberAnim( cent->rootBone ) && !BG_InSpecialJump( cent->rootBone ) && - !CG_DeathAnim(cent->rootBone) && - !PM_SaberInSpecialAttack(cent->rootBone) && + !BG_InDeathAnim(cent->rootBone) && + !BG_SaberInSpecialAttack(cent->rootBone) && */ !(cent->currentState.eFlags & EF_DEAD) ) @@ -2911,118 +2961,63 @@ static void CG_TrailItem( centity_t *cent, qhandle_t hModel ) { CG_PlayerFlag =============== */ -static void CG_PlayerFlag( centity_t *cent, qhandle_t hSkin, refEntity_t *torso ) { -#if 0 - clientInfo_t *ci; - refEntity_t pole; - refEntity_t flag; - vec3_t angles, dir; - int legsAnim, /*flagAnim,*/ updateangles; - float angle, d; +static void CG_PlayerFlag( centity_t *cent, qhandle_t hModel ) { + refEntity_t ent; + vec3_t angles; + vec3_t axis[3]; + vec3_t boltOrg, tAng, getAng, right; + mdxaBone_t boltMatrix; - // show the flag pole model - memset( &pole, 0, sizeof(pole) ); - pole.hModel = cgs.media.flagPoleModel; - VectorCopy( torso->lightingOrigin, pole.lightingOrigin ); - pole.shadowPlane = torso->shadowPlane; - pole.renderfx = torso->renderfx; - CG_PositionEntityOnTag( &pole, torso, torso->hModel, "tag_flag" ); - trap_R_AddRefEntityToScene( &pole ); - - // show the flag model - memset( &flag, 0, sizeof(flag) ); - flag.hModel = cgs.media.flagFlapModel; - flag.customSkin = hSkin; - VectorCopy( torso->lightingOrigin, flag.lightingOrigin ); - flag.shadowPlane = torso->shadowPlane; - flag.renderfx = torso->renderfx; - - VectorClear(angles); - - updateangles = qfalse; - legsAnim = cent->currentState.legsAnim & ~ANIM_TOGGLEBIT; -/* - if( legsAnim == TORSO_WEAPONREADY3 || legsAnim == BOTH_CROUCH1IDLE ) { - flagAnim = FLAG_STAND; - } else if ( legsAnim == BOTH_WALK1 || legsAnim == BOTH_CROUCH1WALK ) { - flagAnim = FLAG_STAND; - updateangles = qtrue; - } else { - flagAnim = FLAG_RUN; - updateangles = qtrue; - } -*/ - if ( updateangles ) { - - VectorCopy( cent->currentState.pos.trDelta, dir ); - // add gravity - dir[2] += 100; - VectorNormalize( dir ); - d = DotProduct(pole.axis[2], dir); - // if there is anough movement orthogonal to the flag pole - if (fabs(d) < 0.9) { - // - d = DotProduct(pole.axis[0], dir); - if (d > 1.0f) { - d = 1.0f; - } - else if (d < -1.0f) { - d = -1.0f; - } - angle = acos(d); - - d = DotProduct(pole.axis[1], dir); - if (d < 0) { - angles[YAW] = 360 - angle * 180 / M_PI; - } - else { - angles[YAW] = angle * 180 / M_PI; - } - if (angles[YAW] < 0) - angles[YAW] += 360; - if (angles[YAW] > 360) - angles[YAW] -= 360; - - //vectoangles( cent->currentState.pos.trDelta, tmpangles ); - //angles[YAW] = tmpangles[YAW] + 45 - cent->pe.torso.yawAngle; - // change the yaw angle - CG_SwingAngles( angles[YAW], 25, 90, 0.15f, ¢->pe.flag.yawAngle, ¢->pe.flag.yawing ); - } - - /* - d = DotProduct(pole.axis[2], dir); - angle = Q_acos(d); - - d = DotProduct(pole.axis[1], dir); - if (d < 0) { - angle = 360 - angle * 180 / M_PI; - } - else { - angle = angle * 180 / M_PI; - } - if (angle > 340 && angle < 20) { - flagAnim = FLAG_RUNUP; - } - if (angle > 160 && angle < 200) { - flagAnim = FLAG_RUNDOWN; - } - */ + if (!cent->ghoul2) + { + return; } - // set the yaw angle - angles[YAW] = cent->pe.flag.yawAngle; - // lerp the flag animation frames - ci = &cgs.clientinfo[ cent->currentState.clientNum ]; -// CG_RunLerpFrame( ci, ¢->pe.flag, flagAnim, 1 ); - flag.oldframe = cent->pe.flag.oldFrame; - flag.frame = cent->pe.flag.frame; - flag.backlerp = cent->pe.flag.backlerp; + VectorSet( tAng, cent->turAngles[PITCH], cent->turAngles[YAW], cent->turAngles[ROLL] ); - AnglesToAxis( angles, flag.axis ); - CG_PositionRotatedEntityOnTag( &flag, &pole, pole.hModel, "tag_flag" ); + trap_G2API_GetBoltMatrix(cent->ghoul2, 0, cgs.clientinfo[cent->currentState.number].bolt_llumbar, &boltMatrix, tAng, cent->lerpOrigin, cg.time, cgs.gameModels, cent->modelScale); + trap_G2API_GiveMeVectorFromMatrix(&boltMatrix, ORIGIN, boltOrg); - trap_R_AddRefEntityToScene( &flag ); -#endif + trap_G2API_GiveMeVectorFromMatrix(&boltMatrix, POSITIVE_X, tAng); + vectoangles(tAng, tAng); + + VectorCopy(cent->lerpAngles, angles); + + boltOrg[2] -= 12; + VectorSet(getAng, 0, cent->lerpAngles[1], 0); + AngleVectors(getAng, 0, right, 0); + boltOrg[0] += right[0]*8; + boltOrg[1] += right[1]*8; + boltOrg[2] += right[2]*8; + + angles[PITCH] = -cent->lerpAngles[PITCH]/2-30; + angles[YAW] = tAng[YAW]+270; + + AnglesToAxis(angles, axis); + + memset( &ent, 0, sizeof( ent ) ); + VectorMA( boltOrg, 24, axis[0], ent.origin ); + + angles[ROLL] += 20; + AnglesToAxis( angles, ent.axis ); + + ent.hModel = hModel; + + ent.modelScale[0] = 0.5; + ent.modelScale[1] = 0.5; + ent.modelScale[2] = 0.5; + ScaleModelAxis(&ent); + + /* + if (cent->currentState.number == cg.snap->ps.clientNum) + { //If we're the current client (in third person), render the flag on our back transparently + ent.renderfx |= RF_FORCE_ENT_ALPHA; + ent.shaderRGBA[3] = 100; + } + */ + //FIXME: Not doing this at the moment because sorting totally messes up + + trap_R_AddRefEntityToScene( &ent ); } @@ -3048,34 +3043,18 @@ static void CG_PlayerPowerups( centity_t *cent, refEntity_t *torso ) { ci = &cgs.clientinfo[ cent->currentState.clientNum ]; // redflag if ( powerups & ( 1 << PW_REDFLAG ) ) { - if (ci->newAnims) { - CG_PlayerFlag( cent, cgs.media.redFlagFlapSkin, torso ); - } - else { - CG_TrailItem( cent, cgs.media.redFlagModel ); - } + CG_PlayerFlag( cent, cgs.media.redFlagModel ); trap_R_AddLightToScene( cent->lerpOrigin, 200 + (rand()&31), 1.0, 0.2f, 0.2f ); } // blueflag if ( powerups & ( 1 << PW_BLUEFLAG ) ) { - if (ci->newAnims){ - CG_PlayerFlag( cent, cgs.media.blueFlagFlapSkin, torso ); - } - else { - CG_TrailItem( cent, cgs.media.blueFlagModel ); - } + CG_PlayerFlag( cent, cgs.media.blueFlagModel ); trap_R_AddLightToScene( cent->lerpOrigin, 200 + (rand()&31), 0.2f, 0.2f, 1.0 ); } // neutralflag if ( powerups & ( 1 << PW_NEUTRALFLAG ) ) { - if (ci->newAnims) { - CG_PlayerFlag( cent, cgs.media.neutralFlagFlapSkin, torso ); - } - else { - CG_TrailItem( cent, cgs.media.neutralFlagModel ); - } trap_R_AddLightToScene( cent->lerpOrigin, 200 + (rand()&31), 1.0, 1.0, 1.0 ); } @@ -3407,6 +3386,56 @@ void CG_ForcePushBlur( vec3_t org ) ex->refEntity.customShader = trap_R_RegisterShader( "gfx/effects/forcePush" ); } +void CG_ForceGripEffect( vec3_t org ) +{ + localEntity_t *ex; + float wv = sin( cg.time * 0.004f ) * 0.08f + 0.1f; + + ex = CG_AllocLocalEntity(); + ex->leType = LE_PUFF; + ex->refEntity.reType = RT_SPRITE; + ex->radius = 2.0f; + ex->startTime = cg.time; + ex->endTime = ex->startTime + 120; + VectorCopy( org, ex->pos.trBase ); + ex->pos.trTime = cg.time; + ex->pos.trType = TR_LINEAR; + VectorScale( cg.refdef.viewaxis[1], 55, ex->pos.trDelta ); + + ex->color[0] = 200+((wv*255)); + if (ex->color[0] > 255) + { + ex->color[0] = 255; + } + ex->color[1] = 0; + ex->color[2] = 0; + ex->refEntity.customShader = trap_R_RegisterShader( "gfx/effects/forcePush" ); + + ex = CG_AllocLocalEntity(); + ex->leType = LE_PUFF; + ex->refEntity.reType = RT_SPRITE; + ex->refEntity.rotation = 180.0f; + ex->radius = 2.0f; + ex->startTime = cg.time; + ex->endTime = ex->startTime + 120; + VectorCopy( org, ex->pos.trBase ); + ex->pos.trTime = cg.time; + ex->pos.trType = TR_LINEAR; + VectorScale( cg.refdef.viewaxis[1], -55, ex->pos.trDelta ); + + /* + ex->color[0] = 200+((wv*255)); + if (ex->color[0] > 255) + { + ex->color[0] = 255; + } + */ + ex->color[0] = 255; + ex->color[1] = 255; + ex->color[2] = 255; + ex->refEntity.customShader = cgs.media.redSaberGlowShader;//trap_R_RegisterShader( "gfx/effects/forcePush" ); +} + static void CG_ForcePushBodyBlur( centity_t *cent, vec3_t origin, vec3_t tempAngles ) { vec3_t eyePos; @@ -3966,7 +3995,13 @@ Ghoul2 Insert Start if ( trace.fraction < 1.0f ) { - trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/spark.efx"), trace.endpos, trace.plane.normal ); + vec3_t trDir; + VectorCopy(trace.plane.normal, trDir); + if (!trDir[0] && !trDir[1] && !trDir[2]) + { + trDir[1] = 1; + } + trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/spark.efx"), trace.endpos, trDir ); //Stop saber? (it wouldn't look right if it was stuck through a thin wall and unable to hurt players on the other side) VectorSubtract(org_, trace.endpos, v); @@ -4036,7 +4071,14 @@ Ghoul2 Insert Start if ( trace.fraction < 1.0f ) { - trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/spark.efx"), trace.endpos, trace.plane.normal ); + vec3_t trDir; + VectorCopy(trace.plane.normal, trDir); + if (!trDir[0] && !trDir[1] && !trDir[2]) + { + trDir[1] = 1; + } + + trap_FX_PlayEffectID( trap_FX_RegisterEffect("saber/spark.efx"), trace.endpos, trDir ); //Stop saber? (it wouldn't look right if it was stuck through a thin wall and unable to hurt players on the other side) VectorSubtract(otherPos, trace.endpos, v); @@ -4601,6 +4643,8 @@ void CG_AddRandomLightning(vec3_t start, vec3_t end) CG_AddLightningBeam(inOrg, outOrg); } +extern char *forceHolocronModels[]; + /* =============== CG_Player @@ -4632,6 +4676,12 @@ void CG_Player( centity_t *cent ) { int effectTimeLayer = 0; qboolean gotLHandMatrix = qfalse; + if (cgQueueLoad) + { + CG_ActualLoadDeferredPlayers(); + cgQueueLoad = qfalse; + } + // the client number is stored in clientNum. It can't be derived // from the entity number, because a single client may have // multiple corpses on the level using the same clientinfo @@ -4647,6 +4697,8 @@ void CG_Player( centity_t *cent ) { return; } + cent->ghoul2 = cg_entities[cent->currentState.number].ghoul2; + if (!cent->ghoul2) { //not ready yet? return; @@ -4893,6 +4945,15 @@ void CG_Player( centity_t *cent ) { CG_DrawYsalimariSphere(cent, cent->lerpOrigin, efColors); } + if (cent->currentState.eFlags & EF_INVULNERABLE) + { + vec3_t efColors; + efColors[0] = 0; + efColors[1] = 255; + efColors[2] = 0; + CG_DrawYsalimariSphere(cent, cent->lerpOrigin, efColors); + } + // add the shadow shadow = CG_PlayerShadow( cent, &shadowPlane ); @@ -4965,6 +5026,139 @@ void CG_Player( centity_t *cent ) { trap_R_AddRefEntityToScene( &seeker ); } + if (cgs.gametype == GT_HOLOCRON && cent->currentState.time2 && (cg.renderingThirdPerson || cg.snap->ps.clientNum != cent->currentState.number)) + { + int i = 0; + int renderedHolos = 0; + refEntity_t holoRef; + + while (i < NUM_FORCE_POWERS && renderedHolos < 3) + { + if (cent->currentState.time2 & (1 << i)) + { + memset( &holoRef, 0, sizeof(holoRef) ); + + VectorCopy(cent->lerpOrigin, elevated); + elevated[2] += 8; + + VectorCopy( elevated, holoRef.lightingOrigin ); + holoRef.shadowPlane = shadowPlane; + holoRef.renderfx = 0;//RF_THIRD_PERSON; + + if (renderedHolos == 0) + { + angle = ((cg.time / 8) & 255) * (M_PI * 2) / 255; + dir[0] = cos(angle) * 20; + dir[1] = sin(angle) * 20; + dir[2] = cos(angle) * 20; + VectorAdd(elevated, dir, holoRef.origin); + + angles[0] = sin(angle) * 30; + angles[1] = (angle * 180 / M_PI) + 90; + if (angles[1] > 360) + angles[1] -= 360; + angles[2] = 0; + AnglesToAxis( angles, holoRef.axis ); + } + else if (renderedHolos == 1) + { + angle = ((cg.time / 8) & 255) * (M_PI * 2) / 255 + M_PI; + if (angle > M_PI * 2) + angle -= (float)M_PI * 2; + dir[0] = sin(angle) * 20; + dir[1] = cos(angle) * 20; + dir[2] = cos(angle) * 20; + VectorAdd(elevated, dir, holoRef.origin); + + angles[0] = cos(angle - 0.5 * M_PI) * 30; + angles[1] = 360 - (angle * 180 / M_PI); + if (angles[1] > 360) + angles[1] -= 360; + angles[2] = 0; + AnglesToAxis( angles, holoRef.axis ); + } + else + { + angle = ((cg.time / 6) & 255) * (M_PI * 2) / 255 + 0.5 * M_PI; + if (angle > M_PI * 2) + angle -= (float)M_PI * 2; + dir[0] = sin(angle) * 20; + dir[1] = cos(angle) * 20; + dir[2] = 0; + VectorAdd(elevated, dir, holoRef.origin); + + VectorCopy(dir, holoRef.axis[1]); + VectorNormalize(holoRef.axis[1]); + VectorSet(holoRef.axis[2], 0, 0, 1); + CrossProduct(holoRef.axis[1], holoRef.axis[2], holoRef.axis[0]); + } + + holoRef.modelScale[0] = 0.5; + holoRef.modelScale[1] = 0.5; + holoRef.modelScale[2] = 0.5; + ScaleModelAxis(&holoRef); + + { + float wv; + addspriteArgStruct_t fxSArgs; + vec3_t holoCenter; + + holoCenter[0] = holoRef.origin[0] + holoRef.axis[2][0]*18; + holoCenter[1] = holoRef.origin[1] + holoRef.axis[2][1]*18; + holoCenter[2] = holoRef.origin[2] + holoRef.axis[2][2]*18; + + wv = sin( cg.time * 0.004f ) * 0.08f + 0.1f; + + VectorCopy(holoCenter, fxSArgs.origin); + VectorClear(fxSArgs.vel); + VectorClear(fxSArgs.accel); + fxSArgs.scale = wv*60; + fxSArgs.dscale = wv*60; + fxSArgs.sAlpha = wv*12; + fxSArgs.eAlpha = wv*12; + fxSArgs.rotation = 0.0f; + fxSArgs.bounce = 0.0f; + fxSArgs.life = 1.0f; + + fxSArgs.flags = 0x08000000|0x00000001; + + if (forcePowerDarkLight[i] == FORCE_DARKSIDE) + { //dark + fxSArgs.sAlpha *= 2; + fxSArgs.eAlpha *= 2; + fxSArgs.shader = cgs.media.redSaberGlowShader; + trap_FX_AddSprite(&fxSArgs); + } + else if (forcePowerDarkLight[i] == FORCE_LIGHTSIDE) + { //light + fxSArgs.sAlpha *= 1.5; + fxSArgs.eAlpha *= 1.5; + fxSArgs.shader = cgs.media.redSaberGlowShader; + trap_FX_AddSprite(&fxSArgs); + fxSArgs.shader = cgs.media.greenSaberGlowShader; + trap_FX_AddSprite(&fxSArgs); + fxSArgs.shader = cgs.media.blueSaberGlowShader; + trap_FX_AddSprite(&fxSArgs); + } + else + { //neutral + fxSArgs.sAlpha *= 0.5; + fxSArgs.eAlpha *= 0.5; + fxSArgs.shader = cgs.media.greenSaberGlowShader; + trap_FX_AddSprite(&fxSArgs); + fxSArgs.shader = cgs.media.blueSaberGlowShader; + trap_FX_AddSprite(&fxSArgs); + } + } + + holoRef.hModel = trap_R_RegisterModel(forceHolocronModels[i]); + trap_R_AddRefEntityToScene( &holoRef ); + + renderedHolos++; + } + i++; + } + } doEssentialOne: // add a water splash if partially in and out of water CG_PlayerSplash( cent ); @@ -5279,7 +5473,87 @@ doEssentialTwo: efOrg[1] = lHandMatrix.matrix[1][3]; efOrg[2] = lHandMatrix.matrix[2][3]; - CG_ForcePushBlur( efOrg ); + if ( (cent->currentState.forcePowersActive & (1 << FP_GRIP)) && + (cg.renderingThirdPerson || cent->currentState.number != cg.snap->ps.clientNum) ) + { + vec3_t boltDir; + vec3_t origBolt; + VectorCopy(efOrg, origBolt); + trap_G2API_GiveMeVectorFromMatrix( &lHandMatrix, NEGATIVE_Y, boltDir ); + + CG_ForceGripEffect( efOrg ); + CG_ForceGripEffect( efOrg ); + + //Render a scaled version of the model's hand with a n337 looking shader + { + const char *rotateBone; + char *limbName; + char *limbCapName; + vec3_t armAng; + float wv = sin( cg.time * 0.003f ) * 0.08f + 0.1f; + + rotateBone = "lradius"; + limbName = "l_arm"; + limbCapName = "l_arm_cap_torso_off"; + + if (cent->grip_arm.ghoul2 && trap_G2_HaveWeGhoul2Models(cent->grip_arm.ghoul2)) + { + trap_G2API_CleanGhoul2Models(&(cent->grip_arm.ghoul2)); + } + + memset( ¢->grip_arm, 0, sizeof(cent->grip_arm) ); + + VectorCopy(origBolt, efOrg); + trap_G2API_GiveMeVectorFromMatrix( &lHandMatrix, NEGATIVE_Y, boltDir ); + efOrg[0] += boltDir[0]*8; + efOrg[1] += boltDir[1]*8; + efOrg[2] += boltDir[2]*8; + trap_G2API_GiveMeVectorFromMatrix( &lHandMatrix, NEGATIVE_X, boltDir ); + efOrg[0] -= boltDir[0]*4; + efOrg[1] -= boltDir[1]*4; + efOrg[2] -= boltDir[2]*4; + + VectorCopy(efOrg, cent->grip_arm.origin); + VectorCopy(cent->grip_arm.origin, cent->grip_arm.lightingOrigin); + + VectorCopy(cent->lerpAngles, armAng); + armAng[ROLL] = -90; + AnglesToAxis(armAng, cent->grip_arm.axis); + + trap_G2API_DuplicateGhoul2Instance(cent->ghoul2, ¢->grip_arm.ghoul2); + + trap_G2API_SetRootSurface(cent->grip_arm.ghoul2, 0, limbName); + trap_G2API_SetNewOrigin(cent->grip_arm.ghoul2, trap_G2API_AddBolt(cent->grip_arm.ghoul2, 0, rotateBone)); + trap_G2API_SetSurfaceOnOff(cent->grip_arm.ghoul2, limbCapName, 0); + + cent->grip_arm.modelScale[0] = 1;//+(wv*6); + cent->grip_arm.modelScale[1] = 1;//+(wv*6); + cent->grip_arm.modelScale[2] = 1;//+(wv*6); + ScaleModelAxis(¢->grip_arm); + + cent->grip_arm.radius = 64; + + cent->grip_arm.customShader = trap_R_RegisterShader( "gfx/misc/red_portashield" ); + + cent->grip_arm.renderfx |= RF_RGB_TINT; + cent->grip_arm.shaderRGBA[0] = 255 - (wv*900); + if (cent->grip_arm.shaderRGBA[0] < 30) + { + cent->grip_arm.shaderRGBA[0] = 30; + } + if (cent->grip_arm.shaderRGBA[0] > 255) + { + cent->grip_arm.shaderRGBA[0] = 255; + } + cent->grip_arm.shaderRGBA[1] = cent->grip_arm.shaderRGBA[2] = cent->grip_arm.shaderRGBA[0]; + + trap_R_AddRefEntityToScene( ¢->grip_arm ); + } + } + else if (!(cent->currentState.forcePowersActive & (1 << FP_GRIP))) + { + CG_ForcePushBlur( efOrg ); + } } if (cent->currentState.weapon == WP_STUN_BATON && (cent->currentState.eFlags & EF_FIRING)) @@ -5483,7 +5757,7 @@ stillDoSaber: fxSArgs.rotation = 0.0f; fxSArgs.bounce = 0.0f; fxSArgs.life = 1.0f; - fxSArgs.shader = cgs.media.yellowSaberGlowShader; + fxSArgs.shader = cgs.media.yellowDroppedSaberShader; fxSArgs.flags = 0x08000000; trap_FX_AddSprite(&fxSArgs); } @@ -5787,12 +6061,12 @@ doEssentialThree: legs.renderfx &= ~RF_RGB_TINT; legs.renderfx &= ~RF_FORCE_ENT_ALPHA; - legs.renderfx |= RF_DEPTHHACK; + legs.renderfx |= RF_NODEPTH; legs.customShader = cgs.media.forceSightBubble; trap_R_AddRefEntityToScene( &legs ); - legs.renderfx &= ~RF_DEPTHHACK; + legs.renderfx &= ~RF_NODEPTH; } if ((cg.snap->ps.fd.forcePowersActive & (1 << FP_SEE)) && cg.snap->ps.clientNum != cent->currentState.number && cg_auraShell.integer) @@ -5832,11 +6106,11 @@ doEssentialThree: } else */ { // See through walls. - legs.renderfx |= RF_MINLIGHT | RF_DEPTHHACK; + legs.renderfx |= RF_MINLIGHT | RF_NODEPTH; if (cg.snap->ps.fd.forcePowerLevel[FP_SEE] < FORCE_LEVEL_2) { //only level 2+ can see players through walls - legs.renderfx &= ~RF_DEPTHHACK; + legs.renderfx &= ~RF_NODEPTH; } } @@ -5882,7 +6156,7 @@ doEssentialThree: trap_R_AddRefEntityToScene( &legs ); if ( random() > 0.9f ) - trap_S_StartSound ( NULL, cent->currentState.number, CHAN_AUTO, trap_S_RegisterSound( "sound/effects/energy_crackle.wav" ) ); + trap_S_StartSound ( NULL, cent->currentState.number, CHAN_AUTO, cgs.media.crackleSound ); } } diff --git a/CODEmp/cgame/cg_playerstate.c b/CODE-mp/cgame/cg_playerstate.c similarity index 93% rename from CODEmp/cgame/cg_playerstate.c rename to CODE-mp/cgame/cg_playerstate.c index da612c5..88db5ad 100644 --- a/CODEmp/cgame/cg_playerstate.c +++ b/CODE-mp/cgame/cg_playerstate.c @@ -283,6 +283,8 @@ static void pushReward(sfxHandle_t sfx, qhandle_t shader, int rewardCount) { } } +int cgAnnouncerTime = 0; //to prevent announce sounds from playing on top of each other + /* ================== CG_CheckLocalSounds @@ -392,7 +394,7 @@ void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { reward = qfalse; #endif // lead changes - if (!reward) { + if (!reward && cgAnnouncerTime < cg.time) { // if ( !cg.warmup ) { // never play lead changes during warmup @@ -400,10 +402,12 @@ void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { if ( cgs.gametype < GT_TEAM) { if ( ps->persistant[PERS_RANK] == 0 ) { CG_AddBufferedSound(cgs.media.takenLeadSound); + cgAnnouncerTime = cg.time + 3000; } else if ( ps->persistant[PERS_RANK] == RANK_TIED_FLAG ) { //CG_AddBufferedSound(cgs.media.tiedLeadSound); } else if ( ( ops->persistant[PERS_RANK] & ~RANK_TIED_FLAG ) == 0 ) { CG_AddBufferedSound(cgs.media.lostLeadSound); + cgAnnouncerTime = cg.time + 3000; } } } @@ -411,7 +415,7 @@ void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { } // timelimit warnings - if ( cgs.timelimit > 0 ) { + if ( cgs.timelimit > 0 && cgAnnouncerTime < cg.time ) { int msec; msec = cg.time - cgs.levelStartTime; @@ -422,27 +426,32 @@ void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ) { else if ( !( cg.timelimitWarnings & 2 ) && msec > (cgs.timelimit - 1) * 60 * 1000 ) { cg.timelimitWarnings |= 1 | 2; trap_S_StartLocalSound( cgs.media.oneMinuteSound, CHAN_ANNOUNCER ); + cgAnnouncerTime = cg.time + 3000; } else if ( cgs.timelimit > 5 && !( cg.timelimitWarnings & 1 ) && msec > (cgs.timelimit - 5) * 60 * 1000 ) { cg.timelimitWarnings |= 1; trap_S_StartLocalSound( cgs.media.fiveMinuteSound, CHAN_ANNOUNCER ); + cgAnnouncerTime = cg.time + 3000; } } // fraglimit warnings - if ( cgs.fraglimit > 0 && cgs.gametype < GT_CTF && cgs.gametype != GT_TOURNAMENT) { + if ( cgs.fraglimit > 0 && cgs.gametype < GT_CTF && cgs.gametype != GT_TOURNAMENT && cgAnnouncerTime < cg.time) { highScore = cgs.scores1; if ( !( cg.fraglimitWarnings & 4 ) && highScore == (cgs.fraglimit - 1) ) { cg.fraglimitWarnings |= 1 | 2 | 4; CG_AddBufferedSound(cgs.media.oneFragSound); + cgAnnouncerTime = cg.time + 3000; } else if ( cgs.fraglimit > 2 && !( cg.fraglimitWarnings & 2 ) && highScore == (cgs.fraglimit - 2) ) { cg.fraglimitWarnings |= 1 | 2; CG_AddBufferedSound(cgs.media.twoFragSound); + cgAnnouncerTime = cg.time + 3000; } else if ( cgs.fraglimit > 3 && !( cg.fraglimitWarnings & 1 ) && highScore == (cgs.fraglimit - 3) ) { cg.fraglimitWarnings |= 1; CG_AddBufferedSound(cgs.media.threeFragSound); + cgAnnouncerTime = cg.time + 3000; } } } diff --git a/CODEmp/cgame/cg_predict.c b/CODE-mp/cgame/cg_predict.c similarity index 100% rename from CODEmp/cgame/cg_predict.c rename to CODE-mp/cgame/cg_predict.c diff --git a/CODEmp/cgame/cg_public.h b/CODE-mp/cgame/cg_public.h similarity index 95% rename from CODEmp/cgame/cg_public.h rename to CODE-mp/cgame/cg_public.h index 968b085..4831038 100644 --- a/CODEmp/cgame/cg_public.h +++ b/CODE-mp/cgame/cg_public.h @@ -165,6 +165,8 @@ typedef enum { CG_PC_FREE_SOURCE, CG_PC_READ_TOKEN, CG_PC_SOURCE_FILE_AND_LINE, + CG_PC_LOAD_GLOBAL_DEFINES, + CG_PC_REMOVE_ALL_GLOBAL_DEFINES, CG_S_STOPBACKGROUNDTRACK, CG_REAL_TIME, diff --git a/CODEmp/cgame/cg_saga.c b/CODE-mp/cgame/cg_saga.c similarity index 100% rename from CODEmp/cgame/cg_saga.c rename to CODE-mp/cgame/cg_saga.c diff --git a/CODEmp/cgame/cg_scoreboard.c b/CODE-mp/cgame/cg_scoreboard.c similarity index 96% rename from CODEmp/cgame/cg_scoreboard.c rename to CODE-mp/cgame/cg_scoreboard.c index 7c7d2e7..25bce0b 100644 --- a/CODEmp/cgame/cg_scoreboard.c +++ b/CODE-mp/cgame/cg_scoreboard.c @@ -269,7 +269,7 @@ qboolean CG_DrawOldScoreboard( void ) { // fragged by ... line if ( cg.killerName[0] ) { - s = va("Fragged by %s", cg.killerName ); + s = va("%s %s", CG_GetStripEdString("INGAMETEXT", "KILLEDBY"), cg.killerName ); w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH; x = ( SCREEN_WIDTH - w ) / 2; y = 40; diff --git a/CODEmp/cgame/cg_servercmds.c b/CODE-mp/cgame/cg_servercmds.c similarity index 94% rename from CODEmp/cgame/cg_servercmds.c rename to CODE-mp/cgame/cg_servercmds.c index f474d39..2eb0f84 100644 --- a/CODEmp/cgame/cg_servercmds.c +++ b/CODE-mp/cgame/cg_servercmds.c @@ -138,6 +138,17 @@ void CG_ParseServerinfo( void ) { trap_Cvar_Set("g_redTeam", cgs.redTeam); Q_strncpyz( cgs.blueTeam, Info_ValueForKey( info, "g_blueTeam" ), sizeof(cgs.blueTeam) ); trap_Cvar_Set("g_blueTeam", cgs.blueTeam); + + trap_Cvar_Set ( "ui_about_gametype", va("%i", cgs.gametype ) ); + trap_Cvar_Set ( "ui_about_fraglimit", va("%i", cgs.fraglimit ) ); + trap_Cvar_Set ( "ui_about_capturelimit", va("%i", cgs.capturelimit ) ); + trap_Cvar_Set ( "ui_about_timelimit", va("%i", cgs.timelimit ) ); + trap_Cvar_Set ( "ui_about_maxclients", va("%i", cgs.maxclients ) ); + trap_Cvar_Set ( "ui_about_dmflags", va("%i", cgs.dmflags ) ); + trap_Cvar_Set ( "ui_about_mapname", mapname ); + trap_Cvar_Set ( "ui_about_hostname", Info_ValueForKey( info, "sv_hostname" ) ); + trap_Cvar_Set ( "ui_about_needpass", Info_ValueForKey( info, "g_needpass" ) ); + trap_Cvar_Set ( "ui_about_botminplayers", Info_ValueForKey ( info, "bot_minplayers" ) ); } /* diff --git a/CODEmp/cgame/cg_snapshot.c b/CODE-mp/cgame/cg_snapshot.c similarity index 100% rename from CODEmp/cgame/cg_snapshot.c rename to CODE-mp/cgame/cg_snapshot.c diff --git a/CODEmp/cgame/cg_syscalls.c b/CODE-mp/cgame/cg_syscalls.c similarity index 95% rename from CODEmp/cgame/cg_syscalls.c rename to CODE-mp/cgame/cg_syscalls.c index 651c5cd..f9ae526 100644 --- a/CODEmp/cgame/cg_syscalls.c +++ b/CODE-mp/cgame/cg_syscalls.c @@ -437,6 +437,16 @@ int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ) { return syscall( CG_PC_SOURCE_FILE_AND_LINE, handle, filename, line ); } +int trap_PC_LoadGlobalDefines ( const char* filename ) +{ + return syscall ( CG_PC_LOAD_GLOBAL_DEFINES, filename ); +} + +void trap_PC_RemoveAllGlobalDefines ( void ) +{ + syscall ( CG_PC_REMOVE_ALL_GLOBAL_DEFINES ); +} + void trap_S_StopBackgroundTrack( void ) { syscall( CG_S_STOPBACKGROUNDTRACK ); } diff --git a/CODEmp/cgame/cg_turret.c b/CODE-mp/cgame/cg_turret.c similarity index 100% rename from CODEmp/cgame/cg_turret.c rename to CODE-mp/cgame/cg_turret.c diff --git a/CODEmp/cgame/cg_view.c b/CODE-mp/cgame/cg_view.c similarity index 100% rename from CODEmp/cgame/cg_view.c rename to CODE-mp/cgame/cg_view.c diff --git a/CODEmp/cgame/cg_weaponinit.c b/CODE-mp/cgame/cg_weaponinit.c similarity index 97% rename from CODEmp/cgame/cg_weaponinit.c rename to CODE-mp/cgame/cg_weaponinit.c index 3310b70..5dc4ce2 100644 --- a/CODEmp/cgame/cg_weaponinit.c +++ b/CODE-mp/cgame/cg_weaponinit.c @@ -465,8 +465,9 @@ void CG_RegisterWeapon( int weaponNum) { weaponInfo->altMissileHitSound = NULL_SOUND; weaponInfo->altMissileTrailFunc = 0; + cgs.effects.tripmineLaserFX = trap_FX_RegisterEffect("tripMine/laserMP.efx"); + trap_FX_RegisterEffect( "tripMine/explosion" ); - trap_FX_RegisterEffect( "tripMine/laser" ); // NOTENOTE temp stuff trap_S_RegisterSound( "sound/weapons/laser_trap/stick.wav" ); trap_S_RegisterSound( "sound/weapons/laser_trap/warning.wav" ); diff --git a/CODEmp/cgame/cg_weapons.c b/CODE-mp/cgame/cg_weapons.c similarity index 94% rename from CODEmp/cgame/cg_weapons.c rename to CODE-mp/cgame/cg_weapons.c index 858742b..bd943da 100644 --- a/CODEmp/cgame/cg_weapons.c +++ b/CODE-mp/cgame/cg_weapons.c @@ -155,7 +155,7 @@ static int CG_MapTorsoToWeaponFrame( clientInfo_t *ci, int frame, int animNum ) break; } - return 0; + return -1; } @@ -746,6 +746,19 @@ void CG_AddViewWeapon( playerState_t *ps ) { hand.frame = CG_MapTorsoToWeaponFrame( ci, cent->pe.torso.frame, cent->currentState.torsoAnim & ~ANIM_TOGGLEBIT ); hand.oldframe = CG_MapTorsoToWeaponFrame( ci, cent->pe.torso.oldFrame, cent->currentState.torsoAnim & ~ANIM_TOGGLEBIT ); hand.backlerp = cent->pe.torso.backlerp; + + // Handle the fringe situation where oldframe is invalid + if ( hand.frame == -1 ) + { + hand.frame = 0; + hand.oldframe = 0; + hand.backlerp = 0; + } + else if ( hand.oldframe == -1 ) + { + hand.oldframe = hand.frame; + hand.backlerp = 0; + } } hand.hModel = weapon->handsModel; @@ -927,6 +940,12 @@ static qboolean CG_WeaponSelectable( int i ) { return qfalse; } + if (i == WP_DET_PACK && cg.predictedPlayerState.ammo[weaponData[i].ammoIndex] < 1 && + !cg.predictedPlayerState.hasDetPackPlanted) + { + return qfalse; + } + if ( ! (cg.predictedPlayerState.stats[ STAT_WEAPONS ] & ( 1 << i ) ) ) { return qfalse; } @@ -1158,10 +1177,11 @@ void CG_DrawWeaponSelect( void ) { name = cg_weapons[ cg.weaponSelect ].item->pickup_name; if ( name ) { + vec4_t textColor = { .875f, .718f, .121f, 1.0f }; // Just doing this for now...... //#ifdef _DEBUG //CG_DrawProportionalString(320, y + 48, name, CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); - UI_DrawProportionalString(320, y+48, name, UI_CENTER|UI_SMALLFONT, colorTable[CT_ICON_BLUE]); + UI_DrawProportionalString(320, y+48, name, UI_CENTER|UI_SMALLFONT, textColor); //#endif } } diff --git a/CODE-mp/cgame/cgame.bat b/CODE-mp/cgame/cgame.bat new file mode 100644 index 0000000..7fda2fd --- /dev/null +++ b/CODE-mp/cgame/cgame.bat @@ -0,0 +1,102 @@ +del /q vm +mkdir vm +cd vm +set cc=lcc -DQ3_VM -DMISSIONPACK -DCGAME -S -Wf-target=bytecode -Wf-g -I..\..\cgame -I..\..\game -I..\..\ui %1 + +%cc% ../../game/bg_misc.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_weapons.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_panimate.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_pmove.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_slidemove.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_lib.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_saber.c +@if errorlevel 1 goto quit +%cc% ../../game/q_math.c +@if errorlevel 1 goto quit +%cc% ../../game/q_shared.c +@if errorlevel 1 goto quit +%cc% ../cg_consolecmds.c +@if errorlevel 1 goto quit +%cc% ../cg_draw.c +@if errorlevel 1 goto quit +%cc% ../cg_drawtools.c +@if errorlevel 1 goto quit +%cc% ../cg_effects.c +@if errorlevel 1 goto quit +%cc% ../cg_ents.c +@if errorlevel 1 goto quit +%cc% ../cg_event.c +@if errorlevel 1 goto quit +%cc% ../cg_info.c +@if errorlevel 1 goto quit +%cc% ../cg_light.c +@if errorlevel 1 goto quit +%cc% ../cg_localents.c +@if errorlevel 1 goto quit +%cc% ../cg_main.c +@if errorlevel 1 goto quit +%cc% ../cg_marks.c +@if errorlevel 1 goto quit +%cc% ../cg_players.c +@if errorlevel 1 goto quit +%cc% ../cg_playerstate.c +@if errorlevel 1 goto quit +%cc% ../cg_predict.c +@if errorlevel 1 goto quit +%cc% ../cg_saga.c +@if errorlevel 1 goto quit +%cc% ../cg_scoreboard.c +@if errorlevel 1 goto quit +%cc% ../cg_servercmds.c +@if errorlevel 1 goto quit +%cc% ../cg_snapshot.c +@if errorlevel 1 goto quit +%cc% ../cg_turret.c +@if errorlevel 1 goto quit +%cc% ../cg_view.c +@if errorlevel 1 goto quit +%cc% ../cg_weaponinit.c +@if errorlevel 1 goto quit +%cc% ../cg_weapons.c +@if errorlevel 1 goto quit +%cc% ../fx_blaster.c +@if errorlevel 1 goto quit +%cc% ../fx_bowcaster.c +@if errorlevel 1 goto quit +%cc% ../fx_bryarpistol.c +@if errorlevel 1 goto quit +%cc% ../fx_demp2.c +@if errorlevel 1 goto quit +%cc% ../fx_disruptor.c +@if errorlevel 1 goto quit +%cc% ../fx_flechette.c +@if errorlevel 1 goto quit +%cc% ../fx_heavyrepeater.c +@if errorlevel 1 goto quit +%cc% ../fx_rocketlauncher.c +@if errorlevel 1 goto quit +%cc% ../fx_force.c +@if errorlevel 1 goto quit +%cc% ../../ui/ui_shared.c +@if errorlevel 1 goto quit +%cc% ../cg_newDraw.c +@if errorlevel 1 goto quit + +sysmaker ../cg_public.h ../cg_syscalls.c ../cg_syscalls.asm +@if errorlevel 1 goto quit + +q3asm -f ../cgame +@if errorlevel 1 goto quit + +mkdir "..\..\base\vm" +copy *.map "..\..\base\vm" +copy *.qvm "..\..\base\vm" + +:quit +cd .. diff --git a/CODE-mp/cgame/cgame.q3asm b/CODE-mp/cgame/cgame.q3asm new file mode 100644 index 0000000..a88d978 --- /dev/null +++ b/CODE-mp/cgame/cgame.q3asm @@ -0,0 +1,44 @@ +-o "cgame" +cg_main +..\cg_syscalls +cg_consolecmds +cg_draw +cg_drawtools +cg_effects +cg_ents +cg_event +cg_info +cg_light +cg_localents +cg_marks +cg_players +cg_playerstate +cg_predict +cg_saga +cg_scoreboard +cg_servercmds +cg_snapshot +cg_turret +cg_view +cg_weaponinit +cg_weapons +fx_blaster +fx_bowcaster +fx_bryarpistol +fx_demp2 +fx_disruptor +fx_flechette +fx_heavyrepeater +fx_rocketlauncher +fx_force +bg_slidemove +bg_weapons +bg_panimate +bg_pmove +bg_lib +bg_misc +bg_saber +q_math +q_shared +ui_shared +cg_newDraw diff --git a/CODEmp/cgame/fx_blaster.c b/CODE-mp/cgame/fx_blaster.c similarity index 100% rename from CODEmp/cgame/fx_blaster.c rename to CODE-mp/cgame/fx_blaster.c diff --git a/CODEmp/cgame/fx_bowcaster.c b/CODE-mp/cgame/fx_bowcaster.c similarity index 100% rename from CODEmp/cgame/fx_bowcaster.c rename to CODE-mp/cgame/fx_bowcaster.c diff --git a/CODEmp/cgame/fx_bryarpistol.c b/CODE-mp/cgame/fx_bryarpistol.c similarity index 100% rename from CODEmp/cgame/fx_bryarpistol.c rename to CODE-mp/cgame/fx_bryarpistol.c diff --git a/CODEmp/cgame/fx_demp2.c b/CODE-mp/cgame/fx_demp2.c similarity index 100% rename from CODEmp/cgame/fx_demp2.c rename to CODE-mp/cgame/fx_demp2.c diff --git a/CODEmp/cgame/fx_disruptor.c b/CODE-mp/cgame/fx_disruptor.c similarity index 100% rename from CODEmp/cgame/fx_disruptor.c rename to CODE-mp/cgame/fx_disruptor.c diff --git a/CODEmp/cgame/fx_flechette.c b/CODE-mp/cgame/fx_flechette.c similarity index 100% rename from CODEmp/cgame/fx_flechette.c rename to CODE-mp/cgame/fx_flechette.c diff --git a/CODEmp/cgame/fx_force.c b/CODE-mp/cgame/fx_force.c similarity index 100% rename from CODEmp/cgame/fx_force.c rename to CODE-mp/cgame/fx_force.c diff --git a/CODEmp/cgame/fx_heavyrepeater.c b/CODE-mp/cgame/fx_heavyrepeater.c similarity index 100% rename from CODEmp/cgame/fx_heavyrepeater.c rename to CODE-mp/cgame/fx_heavyrepeater.c diff --git a/CODEmp/cgame/fx_local.h b/CODE-mp/cgame/fx_local.h similarity index 100% rename from CODEmp/cgame/fx_local.h rename to CODE-mp/cgame/fx_local.h diff --git a/CODEmp/cgame/fx_rocketlauncher.c b/CODE-mp/cgame/fx_rocketlauncher.c similarity index 100% rename from CODEmp/cgame/fx_rocketlauncher.c rename to CODE-mp/cgame/fx_rocketlauncher.c diff --git a/CODE-mp/cgame/mssccprj.scc b/CODE-mp/cgame/mssccprj.scc new file mode 100644 index 0000000..eede0df --- /dev/null +++ b/CODE-mp/cgame/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[JK2_cgame.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\jk2sof2MP" +SCC_Project_Name = "$/General/code/cgame", UPCAAAAA diff --git a/CODEmp/cgame/tr_types.h b/CODE-mp/cgame/tr_types.h similarity index 88% rename from CODEmp/cgame/tr_types.h rename to CODE-mp/cgame/tr_types.h index 0c1436e..67283eb 100644 --- a/CODEmp/cgame/tr_types.h +++ b/CODE-mp/cgame/tr_types.h @@ -13,6 +13,7 @@ #define RF_THIRD_PERSON 0x00002 // don't draw through eyes, only mirrors (player bodies, chat sprites) #define RF_FIRST_PERSON 0x00004 // only draw through eyes (view weapon, damage blood blob) #define RF_DEPTHHACK 0x00008 // for view weapon Z crunching +#define RF_NODEPTH 0x00010 // No depth at all (seeing through walls) #define RF_VOLUMETRIC 0x00020 // fake volumetric shading @@ -37,6 +38,7 @@ #define RF_DISINTEGRATE2 0x40000 // does a procedural hole-ripping thing with scaling at the ripping point + // refdef flags #define RDF_NOWORLDMODEL 1 // used for player configuration screen #define RDF_HYPERSPACE 4 // teleportation effect @@ -262,25 +264,31 @@ typedef enum { ** being run right now. These are constant once the OpenGL ** subsystem is initialized. */ -typedef enum { - TC_NONE, - TC_S3TC, - TC_S3TC_DXT -} textureCompression_t; - typedef struct { - const char *renderer_string; - const char *vendor_string; - const char *version_string; - const char *extensions_string; + char renderer_string[MAX_STRING_CHARS]; + char vendor_string[MAX_STRING_CHARS]; + char version_string[MAX_STRING_CHARS]; + char extensions_string[BIG_INFO_STRING]; int maxTextureSize; // queried from GL int maxActiveTextures; // multitexture ability + int tfSolidCompressed; + float tfSolidCompressedBPT; + int tfAlphaCompressed; + float tfAlphaCompressedBPT; + int tfSolidUncompressed; + float tfSolidUncompressedBPT; + int tfAlphaUncompressed; + float tfAlphaUncompressedBPT; + int tfLightmap; + float tfLightmapBPT; + int tfCinematic; // Specially for the Voodoo4 - glTexImage2D can only handle 16 bit + float tfCinematicBPT; + int colorBits, depthBits, stencilBits; qboolean deviceSupportsGamma; - textureCompression_t textureCompression; qboolean textureEnvAddAvailable; qboolean textureFilterAnisotropicAvailable; qboolean clampToEdgeAvailable; diff --git a/CODE-mp/cgame/vssver.scc b/CODE-mp/cgame/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..38a1a6f03cb14e87672ac5a6fb389ae3cdd995f7 GIT binary patch literal 752 zcmXZaYe-XJ7zglU>DDAor`u7}nwhpacQKdFsD{-v%)q=<#+Js2WCl|-%={2^F$xSb z7cS{$QI?=aL|Bj+3%rGa$|5pLs0kwJ+0G56`k&SN;XTjq{CRmE&U*~fAR^n~^5*?f zny=a)do6WdUHtI#d$S@Uu!2_;gh^Axjn0a>AiN2Io5G)#IQD&Cj)o&)|3$0BdA4vd z43@$ld&c_aClePV;3#|akp_N9RhC@axC-0gnt#D z3OK!_Od8p-;+Mml{^!Fd+XHzLoOFEooj8qQ8RVPcrQNFb8>E8`hm+wE75m1jj$-5C z6u4?-sM0%^#iqhrVAb}7C#D{b35Jz$uR-5Dy0?>&!7BI;eMIVv&1KfWYWNpr%Pya` zGg>$e?${-@HTVsT8rHyjLcPQ13cm2kuol*kYhzBkFY~pq4({ZFT57|}d7+;kp6?mz zcGflUD2a4zHzWE74|t+^;g{G7XIjdPWSfx}?k@wbF!s8~t0y^O9s~U8sHVnRLvzCS z+XknY^=jMKX8~uz%7GU@FNN&qLXl^|BMU|OQKCvt=x>BGL5T~a8Pe^2J{ikI#`dUKdzPjHo3b0%?lUEE6%Vd@_6CCis9ST+>C6xg%kW2 D^WfQU literal 0 HcmV?d00001 diff --git a/CODEmp/client/fxexport.cpp b/CODE-mp/client/FXExport.cpp similarity index 100% rename from CODEmp/client/fxexport.cpp rename to CODE-mp/client/FXExport.cpp diff --git a/CODEmp/client/fxexport.h b/CODE-mp/client/FXExport.h similarity index 100% rename from CODEmp/client/fxexport.h rename to CODE-mp/client/FXExport.h diff --git a/CODEmp/client/fxprimitives.cpp b/CODE-mp/client/FxPrimitives.cpp similarity index 100% rename from CODEmp/client/fxprimitives.cpp rename to CODE-mp/client/FxPrimitives.cpp diff --git a/CODEmp/client/fxprimitives.h b/CODE-mp/client/FxPrimitives.h similarity index 100% rename from CODEmp/client/fxprimitives.h rename to CODE-mp/client/FxPrimitives.h diff --git a/CODEmp/client/fxscheduler.cpp b/CODE-mp/client/FxScheduler.cpp similarity index 96% rename from CODEmp/client/fxscheduler.cpp rename to CODE-mp/client/FxScheduler.cpp index e8aba32..1577e4b 100644 --- a/CODEmp/client/fxscheduler.cpp +++ b/CODE-mp/client/FxScheduler.cpp @@ -966,6 +966,13 @@ void CFxScheduler::PlayEffect( int id, vec3_t origin, vec3_t forward ) { vec3_t axis[3]; + // Cannot have a empty forward vector + if ( !forward[0] && !forward[1] && !forward[2] ) + { + assert ( qfalse ); + return; + } + // Take the forward vector and create two arbitrary but perpendicular vectors VectorCopy( forward, axis[0] ); MakeNormalVectors( forward, axis[1], axis[2] ); diff --git a/CODEmp/client/fxscheduler.h b/CODE-mp/client/FxScheduler.h similarity index 100% rename from CODEmp/client/fxscheduler.h rename to CODE-mp/client/FxScheduler.h diff --git a/CODEmp/client/fxsystem.cpp b/CODE-mp/client/FxSystem.cpp similarity index 100% rename from CODEmp/client/fxsystem.cpp rename to CODE-mp/client/FxSystem.cpp diff --git a/CODEmp/client/fxsystem.h b/CODE-mp/client/FxSystem.h similarity index 100% rename from CODEmp/client/fxsystem.h rename to CODE-mp/client/FxSystem.h diff --git a/CODEmp/client/fxtemplate.cpp b/CODE-mp/client/FxTemplate.cpp similarity index 100% rename from CODEmp/client/fxtemplate.cpp rename to CODE-mp/client/FxTemplate.cpp diff --git a/CODEmp/client/fxutil.cpp b/CODE-mp/client/FxUtil.cpp similarity index 100% rename from CODEmp/client/fxutil.cpp rename to CODE-mp/client/FxUtil.cpp diff --git a/CODEmp/client/fxutil.h b/CODE-mp/client/FxUtil.h similarity index 100% rename from CODEmp/client/fxutil.h rename to CODE-mp/client/FxUtil.h diff --git a/CODEmp/client/cl_cgame.cpp b/CODE-mp/client/cl_cgame.cpp similarity index 96% rename from CODEmp/client/cl_cgame.cpp rename to CODE-mp/client/cl_cgame.cpp index 555f3ab..c01446c 100644 --- a/CODEmp/client/cl_cgame.cpp +++ b/CODE-mp/client/cl_cgame.cpp @@ -699,6 +699,11 @@ int CL_CgameSystemCalls( int *args ) { return botlib_export->PC_ReadTokenHandle( args[1], (struct pc_token_s *)VMA(2) ); case CG_PC_SOURCE_FILE_AND_LINE: return botlib_export->PC_SourceFileAndLine( args[1], (char *)VMA(2), (int *)VMA(3) ); + case CG_PC_LOAD_GLOBAL_DEFINES: + return botlib_export->PC_LoadGlobalDefines ( (char *)VMA(1) ); + case CG_PC_REMOVE_ALL_GLOBAL_DEFINES: + botlib_export->PC_RemoveAllGlobalDefines ( ); + return 0; case CG_S_STOPBACKGROUNDTRACK: S_StopBackgroundTrack(); diff --git a/CODEmp/client/cl_cin.cpp b/CODE-mp/client/cl_cin.cpp similarity index 100% rename from CODEmp/client/cl_cin.cpp rename to CODE-mp/client/cl_cin.cpp diff --git a/CODEmp/client/cl_console.cpp b/CODE-mp/client/cl_console.cpp similarity index 100% rename from CODEmp/client/cl_console.cpp rename to CODE-mp/client/cl_console.cpp diff --git a/CODEmp/client/cl_input.cpp b/CODE-mp/client/cl_input.cpp similarity index 95% rename from CODEmp/client/cl_input.cpp rename to CODE-mp/client/cl_input.cpp index 41603d3..1ef68a3 100644 --- a/CODEmp/client/cl_input.cpp +++ b/CODE-mp/client/cl_input.cpp @@ -914,8 +914,8 @@ void CL_InitInput( void ) { Cmd_AddCommand ("-speed", IN_SpeedUp); Cmd_AddCommand ("+attack", IN_Button0Down); Cmd_AddCommand ("-attack", IN_Button0Up); - Cmd_AddCommand ("+force_jump", IN_Button1Down);//force jump - Cmd_AddCommand ("-force_jump", IN_Button1Up); + //Cmd_AddCommand ("+force_jump", IN_Button1Down);//force jump + //Cmd_AddCommand ("-force_jump", IN_Button1Up); Cmd_AddCommand ("+use", IN_Button5Down); Cmd_AddCommand ("-use", IN_Button5Up); Cmd_AddCommand ("+force_grip", IN_Button6Down);//force grip diff --git a/CODEmp/client/cl_keys.cpp b/CODE-mp/client/cl_keys.cpp similarity index 95% rename from CODEmp/client/cl_keys.cpp rename to CODE-mp/client/cl_keys.cpp index d2acf05..5d72486 100644 --- a/CODEmp/client/cl_keys.cpp +++ b/CODE-mp/client/cl_keys.cpp @@ -546,7 +546,8 @@ CompleteCommand Tab expansion =============== */ -static void CompleteCommand( void ) { +void CompleteCommand( void ) +{ field_t *edit; field_t temp; diff --git a/CODEmp/client/cl_main.cpp b/CODE-mp/client/cl_main.cpp similarity index 95% rename from CODEmp/client/cl_main.cpp rename to CODE-mp/client/cl_main.cpp index e989c01..1363c41 100644 --- a/CODEmp/client/cl_main.cpp +++ b/CODE-mp/client/cl_main.cpp @@ -53,6 +53,7 @@ cvar_t *cl_inGameVideo; cvar_t *cl_serverStatusResendTime; cvar_t *cl_trn; +cvar_t *cl_framerate; vec3_t cl_windVec; @@ -1957,6 +1958,8 @@ CL_Frame ================== */ +static unsigned int frameCount; +static float avgFrametime=0.0; void CL_Frame ( int msec ) { if ( !com_cl_running->integer ) { @@ -1990,6 +1993,19 @@ void CL_Frame ( int msec ) { // decide the simulation time cls.frametime = msec; + if(cl_framerate->integer) + { + avgFrametime+=msec; + char mess[256]; + if(!(frameCount&0x1f)) + { + sprintf(mess,"Frame rate=%f\n\n",1000.0f*(1.0/(avgFrametime/32.0f))); + // OutputDebugString(mess); + Com_Printf(mess); + avgFrametime=0.0f; + } + frameCount++; + } cls.realtime += cls.frametime; @@ -2298,7 +2314,7 @@ void CL_Init( void ) { cl_freelook = Cvar_Get( "cl_freelook", "1", CVAR_ARCHIVE ); cl_showMouseRate = Cvar_Get ("cl_showmouserate", "0", 0); - + cl_framerate = Cvar_Get ("cl_framerate", "0", CVAR_TEMP); cl_allowDownload = Cvar_Get ("cl_allowDownload", "0", CVAR_ARCHIVE); cl_conXOffset = Cvar_Get ("cl_conXOffset", "0", 0); diff --git a/CODEmp/client/cl_net_chan.cpp b/CODE-mp/client/cl_net_chan.cpp similarity index 100% rename from CODEmp/client/cl_net_chan.cpp rename to CODE-mp/client/cl_net_chan.cpp diff --git a/CODEmp/client/cl_parse.cpp b/CODE-mp/client/cl_parse.cpp similarity index 100% rename from CODEmp/client/cl_parse.cpp rename to CODE-mp/client/cl_parse.cpp diff --git a/CODEmp/client/cl_scrn.cpp b/CODE-mp/client/cl_scrn.cpp similarity index 100% rename from CODEmp/client/cl_scrn.cpp rename to CODE-mp/client/cl_scrn.cpp diff --git a/CODEmp/client/cl_ui.cpp b/CODE-mp/client/cl_ui.cpp similarity index 95% rename from CODEmp/client/cl_ui.cpp rename to CODE-mp/client/cl_ui.cpp index 901d9f6..3f7578f 100644 --- a/CODEmp/client/cl_ui.cpp +++ b/CODE-mp/client/cl_ui.cpp @@ -1087,6 +1087,11 @@ int CL_UISystemCalls( int *args ) { return botlib_export->PC_ReadTokenHandle( args[1], (struct pc_token_s *)VMA(2) ); case UI_PC_SOURCE_FILE_AND_LINE: return botlib_export->PC_SourceFileAndLine( args[1], (char *)VMA(2), (int *)VMA(3) ); + case UI_PC_LOAD_GLOBAL_DEFINES: + return botlib_export->PC_LoadGlobalDefines ( (char *)VMA(1) ); + case UI_PC_REMOVE_ALL_GLOBAL_DEFINES: + botlib_export->PC_RemoveAllGlobalDefines ( ); + return 0; case UI_S_STOPBACKGROUNDTRACK: S_StopBackgroundTrack(); diff --git a/CODEmp/client/client.h b/CODE-mp/client/client.h similarity index 100% rename from CODEmp/client/client.h rename to CODE-mp/client/client.h diff --git a/CODEmp/client/keys.h b/CODE-mp/client/keys.h similarity index 100% rename from CODEmp/client/keys.h rename to CODE-mp/client/keys.h diff --git a/CODEmp/client/snd_dma.cpp b/CODE-mp/client/snd_dma.cpp similarity index 95% rename from CODEmp/client/snd_dma.cpp rename to CODE-mp/client/snd_dma.cpp index 329a364..2938f69 100644 --- a/CODEmp/client/snd_dma.cpp +++ b/CODE-mp/client/snd_dma.cpp @@ -146,6 +146,25 @@ int s_rawend; portable_samplepair_t s_rawsamples[MAX_RAW_SAMPLES]; + +// instead of clearing a whole channel_t struct, we're going to skip the MP3SlidingDecodeBuffer[] buffer in the middle... +// +#ifndef offsetof +#include +#endif +static inline void Channel_Clear(channel_t *ch) +{ + // memset (ch, 0, sizeof(*ch)); + + memset(ch,0,offsetof(channel_t,MP3SlidingDecodeBuffer)); + + byte *const p = (byte *)ch + offsetof(channel_t,MP3SlidingDecodeBuffer) + sizeof(ch->MP3SlidingDecodeBuffer); + + memset(p,0,(sizeof(*ch) - offsetof(channel_t,MP3SlidingDecodeBuffer)) - sizeof(ch->MP3SlidingDecodeBuffer)); +} + + + // ==================================================================== // User-setable variables // ==================================================================== @@ -520,7 +539,9 @@ sfxHandle_t S_RegisterSound( const char *name) if ( sfx->bDefaultSound ) { // Suppress error for inline sounds if(Q_stricmp(sfx->sSoundName, DEFAULT_SOUND_NAME)){ +#ifdef _DEBUG Com_Printf( S_COLOR_YELLOW "WARNING: could not find %s - using default\n", sfx->sSoundName ); +#endif } return 0; } @@ -688,7 +709,7 @@ channel_t *S_PickChannel(int entnum, int entchannel) Com_Printf( S_COLOR_RED"***kicking %s\n", ch_firstToDie->thesfx->sSoundName ); } - memset (ch_firstToDie, 0, sizeof(*ch_firstToDie)); + Channel_Clear(ch_firstToDie); // memset (ch_firstToDie, 0, sizeof(*ch_firstToDie)); return ch_firstToDie; } @@ -2301,7 +2322,7 @@ int SND_FreeOldestSound() { sfx = &s_knownSfx[i]; - if (sfx->bInMemory && sfx->iLastTimeUsed < iOldest) + if (!sfx->bDefaultSound && sfx->bInMemory && sfx->iLastTimeUsed < iOldest) { if (sfx->pSoundData) { diff --git a/CODEmp/client/snd_local.h b/CODE-mp/client/snd_local.h similarity index 100% rename from CODEmp/client/snd_local.h rename to CODE-mp/client/snd_local.h diff --git a/CODEmp/client/snd_mem.cpp b/CODE-mp/client/snd_mem.cpp similarity index 95% rename from CODEmp/client/snd_mem.cpp rename to CODE-mp/client/snd_mem.cpp index b14d858..03dd2ca 100644 --- a/CODEmp/client/snd_mem.cpp +++ b/CODE-mp/client/snd_mem.cpp @@ -333,7 +333,7 @@ static qboolean S_LoadSound_Actual( sfx_t *sfx ) FS_FreeFile (data); return qfalse; } - +#ifdef _DEBUG if ( info.width == 1 ) { Com_Printf(S_COLOR_YELLOW "WARNING: %s is an 8 bit wav file\n", sfx->sSoundName); } @@ -341,6 +341,7 @@ static qboolean S_LoadSound_Actual( sfx_t *sfx ) if ( info.rate != 22050 ) { Com_Printf(S_COLOR_YELLOW "WARNING: %s is not a 22kHz wav file\n", sfx->sSoundName); } +#endif samples = (short *)Z_Malloc(info.samples * sizeof(short) * 2, TAG_TEMP_WORKSPACE); diff --git a/CODEmp/client/snd_mix.cpp b/CODE-mp/client/snd_mix.cpp similarity index 100% rename from CODEmp/client/snd_mix.cpp rename to CODE-mp/client/snd_mix.cpp diff --git a/CODEmp/client/snd_mp3.cpp b/CODE-mp/client/snd_mp3.cpp similarity index 100% rename from CODEmp/client/snd_mp3.cpp rename to CODE-mp/client/snd_mp3.cpp diff --git a/CODEmp/client/snd_mp3.h b/CODE-mp/client/snd_mp3.h similarity index 100% rename from CODEmp/client/snd_mp3.h rename to CODE-mp/client/snd_mp3.h diff --git a/CODEmp/client/snd_public.h b/CODE-mp/client/snd_public.h similarity index 100% rename from CODEmp/client/snd_public.h rename to CODE-mp/client/snd_public.h diff --git a/CODE-mp/client/vssver.scc b/CODE-mp/client/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..fa80f3baa4fcda3613a888cdc5265ba3f54e89dc GIT binary patch literal 512 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~Nct&Tic#{dEAft2@Lw{3gdeSaGO*&Bd3e6{@h zz+Cm;Y(Vx#AdbscTj|w8`ki8d( ztMXiCUzAn&!vbXQ17eSu83{-C9QqIP&we02w4tke>?VC)ND7Xg(bkqI2gcy8Aw-b`M+#xcK&}xpa=_)|DIXi zXg`xBn9mC28*}o$vDUiyj|nKx2IQM(O!^ip@cJJ}Jv)%^^X2Ep`nXoGJO_{;BsO!| V#MXIWc}^fd|D;X8`?mdHJ^;b5DOdmi literal 0 HcmV?d00001 diff --git a/CODEmp/game/JK2_game.def b/CODE-mp/game/JK2_game.def similarity index 100% rename from CODEmp/game/JK2_game.def rename to CODE-mp/game/JK2_game.def diff --git a/CODEmp/game/JK2_game.dsp b/CODE-mp/game/JK2_game.dsp similarity index 94% rename from CODEmp/game/JK2_game.dsp rename to CODE-mp/game/JK2_game.dsp index 0e89786..99bea4e 100644 --- a/CODEmp/game/JK2_game.dsp +++ b/CODE-mp/game/JK2_game.dsp @@ -389,6 +389,26 @@ SOURCE=.\inv.h # End Source File # Begin Source File +SOURCE=.\JK2_game.def + +!IF "$(CFG)" == "JK2game - Win32 Release JK2" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "JK2game - Win32 Debug JK2" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "JK2game - Win32 Final JK2" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + SOURCE=.\match.h # End Source File # Begin Source File @@ -422,28 +442,13 @@ SOURCE=.\w_saber.h # End Group # Begin Source File -SOURCE=.\g_syscalls.asm +SOURCE=.\game.bat # PROP Exclude_From_Build 1 # End Source File # Begin Source File -SOURCE=.\JK2_game.def - -!IF "$(CFG)" == "JK2game - Win32 Release JK2" - +SOURCE=.\game.q3asm # PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "JK2game - Win32 Debug JK2" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "JK2game - Win32 Final JK2" - -# PROP BASE Exclude_From_Build 1 -# PROP Exclude_From_Build 1 - -!ENDIF - # End Source File # End Target # End Project diff --git a/CODEmp/game/ai_main.c b/CODE-mp/game/ai_main.c similarity index 94% rename from CODEmp/game/ai_main.c rename to CODE-mp/game/ai_main.c index b39a73e..41fce2c 100644 --- a/CODEmp/game/ai_main.c +++ b/CODE-mp/game/ai_main.c @@ -1659,6 +1659,12 @@ int PassStandardEnemyChecks(bot_state_t *bs, gentity_t *en) return 0; } + if (bs->doingFallback && + (gLevelFlags & LEVELFLAG_IGNOREINFALLBACK)) + { + return 0; + } + if (en->client) { if (en->client->ps.pm_type == PM_INTERMISSION || @@ -5505,7 +5511,7 @@ void StandardBotAI(bot_state_t *bs, float thinktime) int wp, enemy; int desiredIndex; int goalWPIndex; - int doingFallback; + int doingFallback = 0; int fjHalt; vec3_t a, ang, headlevel, eorg, noz_x, noz_y, dif, a_fo; float reaction; @@ -6185,6 +6191,15 @@ void StandardBotAI(bot_state_t *bs, float thinktime) doingFallback = BotFallbackNavigation(bs); } + if (doingFallback) + { + bs->doingFallback = qtrue; + } + else + { + bs->doingFallback = qfalse; + } + if (bs->timeToReact < level.time && bs->currentEnemy && bs->enemySeenTime > level.time + (ENEMY_FORGET_MS - (ENEMY_FORGET_MS*0.2))) { if (bs->frame_Enemy_Vis) @@ -6287,19 +6302,26 @@ void StandardBotAI(bot_state_t *bs, float thinktime) bs->saberPowerTime = level.time + Q_irand(3000, 15000); } - if (bs->currentEnemy->health > 75 && bs->cur_ps.fd.forcePowerLevel[FP_SABERATTACK] > 2 && - bs->cur_ps.fd.saberAnimLevel != FORCE_LEVEL_3 && bs->saberPower) - { //if we are up against someone with a lot of health and we have a strong attack available, then h4q them - Cmd_SaberAttackCycle_f(&g_entities[bs->client]); + if (bs->currentEnemy->health > 75 && g_entities[bs->client].client->ps.fd.forcePowerLevel[FP_SABERATTACK] > 2) + { + if (g_entities[bs->client].client->ps.fd.saberAnimLevel != FORCE_LEVEL_3 && bs->saberPower) + { //if we are up against someone with a lot of health and we have a strong attack available, then h4q them + Cmd_SaberAttackCycle_f(&g_entities[bs->client]); + } } - else if (bs->currentEnemy->health > 40 && bs->cur_ps.fd.forcePowerLevel[FP_SABERATTACK] > 1 && - bs->cur_ps.fd.saberAnimLevel != FORCE_LEVEL_2) - { //they're down on health a little, use level 2 if we can - Cmd_SaberAttackCycle_f(&g_entities[bs->client]); + else if (bs->currentEnemy->health > 40 && g_entities[bs->client].client->ps.fd.forcePowerLevel[FP_SABERATTACK] > 1) + { + if (g_entities[bs->client].client->ps.fd.saberAnimLevel != FORCE_LEVEL_2) + { //they're down on health a little, use level 2 if we can + Cmd_SaberAttackCycle_f(&g_entities[bs->client]); + } } - else if (bs->cur_ps.fd.saberAnimLevel != FORCE_LEVEL_1) - { //they've gone below 40 health, go at them with quick attacks - Cmd_SaberAttackCycle_f(&g_entities[bs->client]); + else + { + if (g_entities[bs->client].client->ps.fd.saberAnimLevel != FORCE_LEVEL_1) + { //they've gone below 40 health, go at them with quick attacks + Cmd_SaberAttackCycle_f(&g_entities[bs->client]); + } } if (bs->frame_Enemy_Len <= SABER_ATTACK_RANGE) diff --git a/CODEmp/game/ai_main.h b/CODE-mp/game/ai_main.h similarity index 94% rename from CODEmp/game/ai_main.h rename to CODE-mp/game/ai_main.h index fdb0046..2804371 100644 --- a/CODEmp/game/ai_main.h +++ b/CODE-mp/game/ai_main.h @@ -4,7 +4,7 @@ //#define FORCEJUMP_INSTANTMETHOD 1 -#define MAX_CHAT_BUFFER_SIZE 65536 +#define MAX_CHAT_BUFFER_SIZE 8192 #define MAX_CHAT_LINE_SIZE 128 #define MAX_WPARRAY_SIZE 4096 @@ -37,6 +37,7 @@ #define WPFLAG_NOMOVEFUNC 0x00200000 //don't move over if a func is under #define LEVELFLAG_NOPOINTPREDICTION 1 //don't take waypoint beyond current into account when adjusting path view angles +#define LEVELFLAG_IGNOREINFALLBACK 2 //ignore enemies when in a fallback navigation routine #define WP_KEEP_FLAG_DIST 128 @@ -340,6 +341,7 @@ typedef struct bot_state_s int doForcePush; int noUseTime; + qboolean doingFallback; //end rww } bot_state_t; diff --git a/CODEmp/game/ai_util.c b/CODE-mp/game/ai_util.c similarity index 93% rename from CODEmp/game/ai_util.c rename to CODE-mp/game/ai_util.c index 81711fd..5f312c7 100644 --- a/CODEmp/game/ai_util.c +++ b/CODE-mp/game/ai_util.c @@ -10,9 +10,6 @@ void *BAllocList[MAX_BALLOC]; #endif char gBotChatBuffer[MAX_CLIENTS][MAX_CHAT_BUFFER_SIZE]; -//A total of 4194304 bytes. Not very nice at all, but we really -//want to have at least 65k for the total chat buffer just in -//case and we have no method of dynamic allocation here. void *B_TempAlloc(int size) { diff --git a/CODEmp/game/ai_wpnav.c b/CODE-mp/game/ai_wpnav.c similarity index 91% rename from CODEmp/game/ai_wpnav.c rename to CODE-mp/game/ai_wpnav.c index b5ff70f..2686ac6 100644 --- a/CODEmp/game/ai_wpnav.c +++ b/CODE-mp/game/ai_wpnav.c @@ -2179,6 +2179,82 @@ void LoadPath_ThisLevel(void) } } +gentity_t *GetClosestSpawn(gentity_t *ent) +{ + gentity_t *spawn; + gentity_t *closestSpawn = NULL; + float closestDist = -1; + int i = MAX_CLIENTS; + + spawn = NULL; + + while (i < MAX_GENTITIES) + { + spawn = &g_entities[i]; + + if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) ) + { + float checkDist; + vec3_t vSub; + + VectorSubtract(ent->client->ps.origin, spawn->r.currentOrigin, vSub); + checkDist = VectorLength(vSub); + + if (closestDist == -1 || checkDist < closestDist) + { + closestSpawn = spawn; + closestDist = checkDist; + } + } + + i++; + } + + return closestSpawn; +} + +gentity_t *GetNextSpawnInIndex(gentity_t *currentSpawn) +{ + gentity_t *spawn; + gentity_t *nextSpawn = NULL; + int i = currentSpawn->s.number+1; + + spawn = NULL; + + while (i < MAX_GENTITIES) + { + spawn = &g_entities[i]; + + if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) ) + { + nextSpawn = spawn; + break; + } + + i++; + } + + if (!nextSpawn) + { //loop back around to 0 + i = MAX_CLIENTS; + + while (i < MAX_GENTITIES) + { + spawn = &g_entities[i]; + + if (spawn && spawn->inuse && (!Q_stricmp(spawn->classname, "info_player_start") || !Q_stricmp(spawn->classname, "info_player_deathmatch")) ) + { + nextSpawn = spawn; + break; + } + + i++; + } + } + + return nextSpawn; +} + int AcceptBotCommand(char *cmd, gentity_t *pl) { int OptionalArgument, i; @@ -2284,6 +2360,24 @@ int AcceptBotCommand(char *cmd, gentity_t *pl) return 1; } + if (Q_stricmp (cmd, "bot_wp_spawntele") == 0) + { + gentity_t *closestSpawn = GetClosestSpawn(pl); + + if (!closestSpawn) + { //There should always be a spawn point.. + return 1; + } + + closestSpawn = GetNextSpawnInIndex(closestSpawn); + + if (closestSpawn) + { + VectorCopy(closestSpawn->r.currentOrigin, pl->client->ps.origin); + } + return 1; + } + if (Q_stricmp (cmd, "bot_wp_addflagged") == 0) { gDeactivated = 1; diff --git a/CODEmp/game/anims.h b/CODE-mp/game/anims.h similarity index 90% rename from CODEmp/game/anims.h rename to CODE-mp/game/anims.h index 8e8f2ca..a8b695b 100644 --- a/CODEmp/game/anims.h +++ b/CODE-mp/game/anims.h @@ -140,6 +140,8 @@ typedef enum //# animNumber_e BOTH_MELEE4, //# Fourth melee attack BOTH_MELEE5, //# Fifth melee attack BOTH_MELEE6, //# Sixth melee attack + BOTH_THERMAL_READY, //# pull back with thermal + BOTH_THERMAL_THROW, //# throw thermal //* #sep BOTH_ SABER ANIMS //Saber attack anims - power level 2 BOTH_A1_T__B_, //# Fast weak vertical attack top to bottom @@ -638,7 +640,7 @@ typedef enum //# animNumber_e BOTH_STAND1TOSTAND5, //# Transition from stand1 to stand5 BOTH_STAND5TOSTAND1, //# Transition from stand5 to stand1 BOTH_STAND5TOSTAND8, //# Transition from stand5 to stand8 - BOTH_STAND8TOSTAND5, //# Transition from stand5 to stand8 + BOTH_STAND8TOSTAND5, //# Transition from stand8 to stand5 BOTH_CONSOLE1START, //# typing at a console BOTH_CONSOLE1, //# typing at a console @@ -653,46 +655,6 @@ typedef enum //# animNumber_e BOTH_GESTURE1, //# Generic gesture, non-specific BOTH_GESTURE2, //# Generic gesture, non-specific BOTH_GESTURE3, //# Generic gesture, non-specific - BOTH_TALK1, //# Generic talk anim - BOTH_TALKCOMM1START, //# Start talking into a comm link - BOTH_TALKCOMM1, //# Talking into a comm link - BOTH_TALKCOMM1STOP, //# Stop talking into a comm link - BOTH_TALKGESTURE1, //# Generic talk anim - BOTH_TALKGESTURE2, //# Generic talk anim - BOTH_TALKGESTURE3, //# Generic talk anim - BOTH_TALKGESTURE4START, //# Beginning talk anim 4 - BOTH_TALKGESTURE4, //# Talk gesture 4 - BOTH_TALKGESTURE4STOP, //# Ending talk anim 4 - BOTH_TALKGESTURE5START, //# Start hand on chin - BOTH_TALKGESTURE5, //# Hand on chin - BOTH_TALKGESTURE5STOP, //# Stop hand on chin - BOTH_TALKGESTURE6START, //# Starting Motions to self - BOTH_TALKGESTURE6, //# Pointing at self - BOTH_TALKGESTURE6STOP, //# Ending Motions to self - BOTH_TALKGESTURE7START, //# Start touches Kyle on shoulder - BOTH_TALKGESTURE7, //# Hold touches Kyle on shoulder - BOTH_TALKGESTURE7STOP, //# Ending touches Kyle on shoulder - BOTH_TALKGESTURE8START, //# Lando's chin hold - BOTH_TALKGESTURE8, //# Lando's chin hold - BOTH_TALKGESTURE8STOP, //# Lando's chin hold - BOTH_TALKGESTURE9, //# Same as gesture 2 but with the right hand - BOTH_TALKGESTURE10, //# Shoulder shrug - BOTH_TALKGESTURE11START, //# Arms folded across chest - BOTH_TALKGESTURE11STOP, //# Arms folded across chest - BOTH_TALKGESTURE12, //# Tavion taunting Kyle - BOTH_TALKGESTURE13START, //# Luke warning Kyle - BOTH_TALKGESTURE13, //# Luke warning Kyle - BOTH_TALKGESTURE13STOP, //# Luke warning Kyle - BOTH_TALKGESTURE14, //# Luke gesturing to Kyle - BOTH_TALKGESTURE15START, //# Desann taunting Kyle - BOTH_TALKGESTURE15, //# Desann taunting Kyle - BOTH_TALKGESTURE15STOP, //# Desann taunting Kyle - BOTH_TALKGESTURE16, //# Bartender gesture cin #15 - BOTH_TALKGESTURE17, //# Bartender gesture cin #15 - BOTH_TALKGESTURE18, //# Bartender gesture cin #15 - BOTH_TALKGESTURE19START, //# Desann lifting his arm "Join me" (cin #34) - BOTH_TALKGESTURE19STOP, //# Desann lifting his arm "Join me" (cin #34) - BOTH_TALKGESTURE20START, //# Kyle lifting his arm "Join us" (cin #34) BOTH_PAUSE1START, //# Luke pauses to warn Kyle (cin #24) start BOTH_PAUSE1STOP, //# Luke pauses to warn Kyle (cin #24) stop @@ -747,10 +709,14 @@ typedef enum //# animNumber_e BOTH_SILENCEGESTURE1, //# Luke silencing Kyle with a raised hand (cin #37) BOTH_REACHFORSABER1, //# Luke holding hand out for Kyle's saber (cin #37) BOTH_PUNCHER1, //# Jan punching Kyle in the shoulder (cin #37) - BOTH_CONSTRAINER1STAND, //# Tavion constraining Jan in a stand pose (cin #9) - BOTH_CONSTRAINEE1STAND, //# Jan being constrained in a stand pose (cin #9) - BOTH_CONSTRAINER1WALK, //# Tavion constraining Jan in a walking loop (cin #9) - BOTH_CONSTRAINEE1WALK, //# Jan being constrained in a walking loop (cin #9) + BOTH_CONSTRAINER1HOLD, //# Static pose of starting Tavion constraining Jan (cin #9) + BOTH_CONSTRAINEE1HOLD, //# Static pose of starting Jan being constrained by Tavion (cin #9) + BOTH_CONSTRAINER1STAND, //# Tavion constraining Jan in a stand pose (cin #9) + BOTH_CONSTRAINEE1STAND, //# Jan being constrained in a stand pose (cin #9) + BOTH_CONSTRAINER1WALK, //# Tavion shoving jan forward (cin #9) + BOTH_CONSTRAINEE1WALK, //# Jan being shoved forward by Tavion (cin #9) + BOTH_CONSTRAINER1LOOP, //# Tavion walking with Jan in a loop (cin #9) + BOTH_CONSTRAINEE1LOOP, //# Jan walking with Tavion in a loop (cin #9) BOTH_SABERKILLER1, //# Tavion about to strike Jan with saber (cin #9) BOTH_SABERKILLEE1, //# Jan about to be struck by Tavion with saber (cin #9) BOTH_HANDSHAKER1START, //# Luke shaking Kyle's hand (cin #37) @@ -761,26 +727,6 @@ typedef enum //# animNumber_e BOTH_LAUGH1STOP, //# Reelo laughing (cin #18) BOTH_ESCAPEPOD_LEAVE1, //# Kyle leaving escape pod (cin #33) BOTH_ESCAPEPOD_LEAVE2, //# Jan leaving escape pod (cin #33) - BOTH_HUGGER1, //# Kyle hugging Jan (cin #29) - BOTH_HUGGERSTOP1, //# Kyle stop hugging Jan but don't let her go (cin #29) - BOTH_HUGGERSTOP2, //# Kyle let go of Jan and step back (cin #29) - BOTH_HUGGEE1, //# Jan being hugged (cin #29) - BOTH_HUGGEESTOP1, //# Jan stop being hugged but don't let go (cin #29) - BOTH_HUGGEESTOP2, //# Jan released from hug (cin #29) - BOTH_KISSER1, //# Temp until the Kiss anim gets split up - BOTH_KISSER1START1, //# Kyle start kissing Jan - BOTH_KISSER1START2, //# Kyle start kissing Jan - BOTH_KISSER1LOOP, //# Kyle loop kissing Jan - BOTH_KISSER1STOP, //# Temp until the Kiss anim gets split up - BOTH_KISSER1STOP1, //# Kyle stop kissing but don't let go - BOTH_KISSER1STOP2, //# Kyle step back from Jan - BOTH_KISSEE1, //# Temp until the Kiss anim gets split up - BOTH_KISSEE1START1, //# Jan start being kissed - BOTH_KISSEE1START2, //# Jan start being kissed - BOTH_KISSEE1LOOP, //# Jan loop being kissed - BOTH_KISSEE1STOP, //# Temp until the Kiss anim gets split up - BOTH_KISSEE1STOP1, //# Jan stop being kissed but don't let go - BOTH_KISSEE1STOP2, //# Jan wait for Kyle to step back BOTH_BARTENDER_IDLE1, //# Bartender idle in cin #15 BOTH_BARTENDER_THROW1, //# Bartender throws glass in cin #15 BOTH_BARTENDER_COWERSTART, //# Start of Bartender raising both hands up in surrender (cin #16) @@ -864,6 +810,7 @@ typedef enum //# animNumber_e BOTH_WALK4, //# Walk cycle goes to a stand4 BOTH_WALK5, //# Tavion taunting Kyle (cin 22) BOTH_WALK6, //# Slow walk for Luke (cin 12) + BOTH_WALK7, //# Fast walk BOTH_WALKTORUN1, //# transition from walk to run BOTH_RUN1, //# Full run BOTH_RUN1START, //# Start into full run1 @@ -950,10 +897,16 @@ typedef enum //# animNumber_e BOTH_DIVE1, //# Dive! + BOTH_SABERFAST_STANCE, + BOTH_SABERSLOW_STANCE, + BOTH_ENGAGETAUNT, BOTH_A2_STABBACK1, //# Stab saber backward BOTH_ATTACK_BACK, //# Swing around backwards and attack - BOTH_FJSS_TR_BL, //# jump spin slash tr to bl - BOTH_FJSS_TL_BR, //# jump spin slash bl to tr + BOTH_JUMPFLIPSLASHDOWN1,//# + BOTH_JUMPFLIPSTABDOWN,//# + BOTH_FORCELEAP2_T__B_,//# + BOTH_LUNGE2_B__T_,//# + BOTH_CROUCHATTACKBACK1,//# BOTH_ARIAL_LEFT, //# BOTH_ARIAL_RIGHT, //# BOTH_CARTWHEEL_LEFT, //# @@ -996,20 +949,23 @@ typedef enum //# animNumber_e BOTH_WALL_FLIP_BACK1, //# BOTH_WALL_FLIP_BACK2, //# BOTH_SPIN1, //# + BOTH_CEILING_CLING, //# clinging to ceiling + BOTH_CEILING_DROP, //# dropping from ceiling cling //TESTING + BOTH_FJSS_TR_BL, //# jump spin slash tr to bl + BOTH_FJSS_TL_BR, //# jump spin slash bl to tr BOTH_DEATHFROMBACKSLASH,//# - BOTH_DEFLECTSLASH__R__L_FIN,//# BOTH_RIGHTHANDCHOPPEDOFF,//# - BOTH_JUMPFLIPSLASHDOWN1,//# - BOTH_JUMPFLIPSTABDOWN,//# - BOTH_FORCELEAP2_T__B_,//# - BOTH_LUNGE2_B__T_,//# + BOTH_DEFLECTSLASH__R__L_FIN,//# BOTH_BASHED1,//# BOTH_ARIAL_F1,//# BOTH_BUTTERFLY_FR1,//# BOTH_BUTTERFLY_FL1,//# - BOTH_CROUCHATTACKBACK1,//# + BOTH_POSE1,//# + BOTH_POSE2,//# + BOTH_POSE3,//# + BOTH_POSE4,//# //# #sep BOTH_ MISC MOVEMENT BOTH_HIT1, //# Kyle hit by crate in cin #9 @@ -1070,28 +1026,9 @@ typedef enum //# animNumber_e BOTH_INJURED6POINT, //# Chang points to door while in injured state BOTH_INJUREDTOSTAND1, //# Runinjured to stand1 + BOTH_PROPUP1, //# Kyle getting up from having been knocked down (cin #9 end) BOTH_CRAWLBACK1, //# Lying on back, crawling backwards with elbows BOTH_SITWALL1, //# Sitting against a wall - BOTH_SLEEP1, //# laying on back-rknee up-rhand on torso - BOTH_SLEEP2, //# on floor-back against wall-arms crossed - BOTH_SLEEP3, //# Sleeping in a chair - BOTH_SLEEP4, //# Sleeping slumped over table - BOTH_SLEEP5, //# Laying on side sleeping on flat sufrace - BOTH_SLEEP6START, //# Kyle leaning back to sleep (cin 20) - BOTH_SLEEP6STOP, //# Kyle waking up and shaking his head (cin 21) - BOTH_SLEEP1GETUP, //# alarmed and getting up out of sleep1 pose to stand - BOTH_SLEEP1GETUP2, //# - BOTH_SLEEP2GETUP, //# alarmed and getting up out of sleep2 pose to stand - BOTH_SLEEP3GETUP, //# alarmed and getting up out of sleep3 pose to stand - BOTH_SLEEP3DEATH, //# death in chair, from sleep3 idle - BOTH_SLEEP3DEAD, //# death in chair, from sleep3 idle - - BOTH_SLEEP_IDLE1, //# rub face and nose while asleep from sleep pose 1 - BOTH_SLEEP_IDLE2, //# shift position while asleep - stays in sleep2 - BOTH_SLEEP_IDLE3, //# Idle anim from sleep pose 3 - BOTH_SLEEP_IDLE4, //# Idle anim from sleep pose 4 - BOTH_SLEEP1_NOSE, //# Scratch nose from SLEEP1 pose - BOTH_SLEEP2_SHIFT, //# Shift in sleep from SLEEP2 pose BOTH_RESTRAINED1, //# Telsia tied to medical table BOTH_RESTRAINED1POINT, //# Telsia tied to medical table pointing at Munro BOTH_LIFTED1, //# Fits with BOTH_LIFT1, lifted on shoulder @@ -1113,6 +1050,8 @@ typedef enum //# animNumber_e BOTH_BUTTON1, //# Single button push with right hand BOTH_BUTTON2, //# Single button push with left finger + BOTH_BUTTON_HOLD, //# Single button hold with left hand + BOTH_BUTTON_RELEASE, //# Single button release with left hand //# JEDI-SPECIFIC BOTH_RESISTPUSH, //# plant yourself to resist force push/pulls. @@ -1121,11 +1060,17 @@ typedef enum //# animNumber_e BOTH_MINDTRICK1, //# Use off-hand to do mind trick BOTH_MINDTRICK2, //# Use off-hand to do distraction BOTH_FORCELIGHTNING, //# Use off-hand to do lightning + BOTH_FORCELIGHTNING_HOLD, //# Use off-hand to do lightning - hold + BOTH_FORCELIGHTNING_RELEASE,//# Use off-hand to do lightning - release BOTH_FORCEHEAL_START, //# Healing meditation pose start BOTH_FORCEHEAL_STOP, //# Healing meditation pose end BOTH_FORCEHEAL_QUICK, //# Healing meditation gesture BOTH_SABERPULL, //# Use off-hand to do force power. - BOTH_FORCEGRIP3, //# force-gripping + BOTH_FORCEGRIP1, //# force-gripping (no anim?) + BOTH_FORCEGRIP2, //# force-gripping (?) + BOTH_FORCEGRIP3, //# force-gripping (right hand) + BOTH_FORCEGRIP_HOLD, //# Use off-hand to do grip - hold + BOTH_FORCEGRIP_RELEASE,//# Use off-hand to do grip - release BOTH_TOSS1, //# throwing to left after force gripping BOTH_TOSS2, //# throwing to right after force gripping @@ -1204,8 +1149,6 @@ typedef enum //# animNumber_e TORSO_SURRENDER_START, //# arms up TORSO_SURRENDER_STOP, //# arms back down - TORSO_FORCEGRIP1, //# force-gripping - TORSO_FORCEGRIP2, //# force-gripping TORSO_CHOKING1, //# TEMP @@ -1236,7 +1179,46 @@ typedef enum //# animNumber_e LEGS_RIGHTUP3, //# On a slope with RIGHT foot 12 higher than left LEGS_RIGHTUP4, //# On a slope with RIGHT foot 16 higher than left LEGS_RIGHTUP5, //# On a slope with RIGHT foot 20 higher than left - + LEGS_S1_LUP1, + LEGS_S1_LUP2, + LEGS_S1_LUP3, + LEGS_S1_LUP4, + LEGS_S1_LUP5, + LEGS_S1_RUP1, + LEGS_S1_RUP2, + LEGS_S1_RUP3, + LEGS_S1_RUP4, + LEGS_S1_RUP5, + LEGS_S3_LUP1, + LEGS_S3_LUP2, + LEGS_S3_LUP3, + LEGS_S3_LUP4, + LEGS_S3_LUP5, + LEGS_S3_RUP1, + LEGS_S3_RUP2, + LEGS_S3_RUP3, + LEGS_S3_RUP4, + LEGS_S3_RUP5, + LEGS_S4_LUP1, + LEGS_S4_LUP2, + LEGS_S4_LUP3, + LEGS_S4_LUP4, + LEGS_S4_LUP5, + LEGS_S4_RUP1, + LEGS_S4_RUP2, + LEGS_S4_RUP3, + LEGS_S4_RUP4, + LEGS_S4_RUP5, + LEGS_S5_LUP1, + LEGS_S5_LUP2, + LEGS_S5_LUP3, + LEGS_S5_LUP4, + LEGS_S5_LUP5, + LEGS_S5_RUP1, + LEGS_S5_RUP2, + LEGS_S5_RUP3, + LEGS_S5_RUP4, + LEGS_S5_RUP5, //================================================= //HEAD ANIMS //================================================= diff --git a/CODEmp/game/be_aas.h b/CODE-mp/game/be_aas.h similarity index 100% rename from CODEmp/game/be_aas.h rename to CODE-mp/game/be_aas.h diff --git a/CODEmp/game/be_ai_char.h b/CODE-mp/game/be_ai_char.h similarity index 100% rename from CODEmp/game/be_ai_char.h rename to CODE-mp/game/be_ai_char.h diff --git a/CODEmp/game/be_ai_chat.h b/CODE-mp/game/be_ai_chat.h similarity index 100% rename from CODEmp/game/be_ai_chat.h rename to CODE-mp/game/be_ai_chat.h diff --git a/CODEmp/game/be_ai_gen.h b/CODE-mp/game/be_ai_gen.h similarity index 100% rename from CODEmp/game/be_ai_gen.h rename to CODE-mp/game/be_ai_gen.h diff --git a/CODEmp/game/be_ai_goal.h b/CODE-mp/game/be_ai_goal.h similarity index 100% rename from CODEmp/game/be_ai_goal.h rename to CODE-mp/game/be_ai_goal.h diff --git a/CODEmp/game/be_ai_move.h b/CODE-mp/game/be_ai_move.h similarity index 100% rename from CODEmp/game/be_ai_move.h rename to CODE-mp/game/be_ai_move.h diff --git a/CODEmp/game/be_ai_weap.h b/CODE-mp/game/be_ai_weap.h similarity index 100% rename from CODEmp/game/be_ai_weap.h rename to CODE-mp/game/be_ai_weap.h diff --git a/CODEmp/game/be_ea.h b/CODE-mp/game/be_ea.h similarity index 100% rename from CODEmp/game/be_ea.h rename to CODE-mp/game/be_ea.h diff --git a/CODEmp/game/bg_lib.c b/CODE-mp/game/bg_lib.c similarity index 100% rename from CODEmp/game/bg_lib.c rename to CODE-mp/game/bg_lib.c diff --git a/CODEmp/game/bg_lib.h b/CODE-mp/game/bg_lib.h similarity index 100% rename from CODEmp/game/bg_lib.h rename to CODE-mp/game/bg_lib.h diff --git a/CODEmp/game/bg_local.h b/CODE-mp/game/bg_local.h similarity index 71% rename from CODEmp/game/bg_local.h rename to CODE-mp/game/bg_local.h index 1fb829e..54cf071 100644 --- a/CODEmp/game/bg_local.h +++ b/CODE-mp/game/bg_local.h @@ -6,8 +6,6 @@ #define STEPSIZE 18 -#define JUMP_VELOCITY 225//270 - #define TIMER_LAND 130 #define TIMER_GESTURE (34*66+50) @@ -61,6 +59,26 @@ void trap_FS_Read( void *buffer, int len, fileHandle_t f ); void trap_FS_Write( const void *buffer, int len, fileHandle_t f ); void trap_FS_FCloseFile( fileHandle_t f ); +//PM anim utility functions: +qboolean PM_SaberInParry( int move ); +qboolean PM_SaberInReflect( int move ); +qboolean PM_SaberInStart( int move ); +qboolean PM_InSaberAnim( int anim ); +qboolean PM_InKnockDown( playerState_t *ps ); +qboolean PM_PainAnim( int anim ); +qboolean PM_JumpingAnim( int anim ); +qboolean PM_LandingAnim( int anim ); +qboolean PM_SpinningAnim( int anim ); +qboolean PM_InOnGroundAnim ( int anim ); +qboolean PM_InRollComplete( playerState_t *ps, int anim ); +int PM_AnimLength( int index, animNumber_t anim ); + +int PM_GetSaberStance(void); +float PM_GroundDistance(void); +qboolean PM_SomeoneInFront(trace_t *tr); +saberMoveName_t PM_SaberFlipOverAttackMove(trace_t *tr); +saberMoveName_t PM_SaberJumpAttackMove( void ); + void PM_ClipVelocity( vec3_t in, vec3_t normal, vec3_t out, float overbounce ); void PM_AddTouchEnt( int entityNum ); void PM_AddEvent( int newEvent ); @@ -73,7 +91,6 @@ void BG_CycleInven(playerState_t *ps, int direction); void PM_StartTorsoAnim( int anim ); void PM_ContinueLegsAnim( int anim ); void PM_ForceLegsAnim( int anim ); -void PM_TorsoAnimation( void ); void PM_BeginWeaponChange( int weapon ); void PM_FinishWeaponChange( void ); diff --git a/CODEmp/game/bg_misc.c b/CODE-mp/game/bg_misc.c similarity index 93% rename from CODEmp/game/bg_misc.c rename to CODE-mp/game/bg_misc.c index 7cdb6f6..0b98442 100644 --- a/CODEmp/game/bg_misc.c +++ b/CODE-mp/game/bg_misc.c @@ -182,11 +182,11 @@ Instant shield pickup, restores 25 { "models/map_objects/mp/psd_sm.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Shield Small", 25, IT_ARMOR, - 0, + 1, //special for shield - max on pickup is maxhealth*tag, thus small shield goes up to 100 shield /* precache */ "", /* sounds */ "" }, @@ -200,11 +200,11 @@ Instant shield pickup, restores 100 { "models/map_objects/mp/psd.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Shield Large", 100, IT_ARMOR, - 0, + 2, //special for shield - max on pickup is maxhealth*tag, thus large shield goes up to 200 shield /* precache */ "", /* sounds */ "" }, @@ -218,7 +218,7 @@ Instant medpack pickup, heals 25 { "models/map_objects/mp/medpac.md3", 0, 0, 0 }, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/i_icon_medkit", /* pickup */ "Medpack", 25, IT_HEALTH, @@ -461,7 +461,7 @@ Don't place this { "models/weapons2/briar_pistol/briar_pistol_w.glm", 0, 0, 0}, /* view */ "models/weapons2/briar_pistol/briar_pistol.md3", -/* icon */ "icons/w_icon_rifle", +/* icon */ "gfx/hud/w_icon_rifle", /* pickup */ "Bryar Pistol", 50, IT_WEAPON, @@ -478,7 +478,7 @@ Don't place this { "models/weapons2/blaster_r/blaster_w.glm", 0, 0, 0}, /* view */ "models/weapons2/blaster_r/blaster.md3", -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "E11 Blaster Rifle", 50, IT_WEAPON, @@ -495,7 +495,7 @@ Don't place this { "models/weapons2/disruptor/disruptor_w.glm", 0, 0, 0}, /* view */ "models/weapons2/disruptor/disruptor.md3", -/* icon */ "icons/w_icon_disruptor", +/* icon */ "gfx/hud/w_icon_disruptor", /* pickup */ "Tenloss Disruptor Rifle", 50, IT_WEAPON, @@ -512,7 +512,7 @@ Don't place this { "models/weapons2/bowcaster/bowcaster_w.glm", 0, 0, 0}, /* view */ "models/weapons2/bowcaster/bowcaster.md3", -/* icon */ "icons/w_icon_bowcaster", +/* icon */ "gfx/hud/w_icon_bowcaster", /* pickup */ "Wookiee Bowcaster", 50, IT_WEAPON, @@ -529,7 +529,7 @@ Don't place this { "models/weapons2/heavy_repeater/heavy_repeater_w.glm", 0, 0, 0}, /* view */ "models/weapons2/heavy_repeater/heavy_repeater.md3", -/* icon */ "icons/w_icon_repeater", +/* icon */ "gfx/hud/w_icon_repeater", /* pickup */ "Imperial Heavy Repeater", 50, IT_WEAPON, @@ -547,7 +547,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/demp2/demp2_w.glm", 0, 0, 0}, /* view */ "models/weapons2/demp2/demp2.md3", -/* icon */ "icons/w_icon_demp2", +/* icon */ "gfx/hud/w_icon_demp2", /* pickup */ "DEMP2", 50, IT_WEAPON, @@ -564,7 +564,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/golan_arms/golan_arms_w.glm", 0, 0, 0}, /* view */ "models/weapons2/golan_arms/golan_arms.md3", -/* icon */ "icons/w_icon_flechette", +/* icon */ "gfx/hud/w_icon_flechette", /* pickup */ "Golan Arms Flechette", 50, IT_WEAPON, @@ -581,7 +581,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/merr_sonn/merr_sonn_w.glm", 0, 0, 0}, /* view */ "models/weapons2/merr_sonn/merr_sonn.md3", -/* icon */ "icons/w_icon_launcher", +/* icon */ "gfx/hud/w_icon_merrsonn", /* pickup */ "Merr-Sonn Missile System", 50, IT_WEAPON, @@ -598,7 +598,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/thermal/thermal_w.glm", 0, 0, 0}, /* view */ "models/weapons2/thermal/thermal.md3", -/* icon */ "icons/w_icon_thermal", +/* icon */ "gfx/hud/w_icon_thermal", /* pickup */ "Thermal Detonator", 1, IT_WEAPON, @@ -615,7 +615,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/laser_trap/laser_trap_w.glm", 0, 0, 0}, /* view */ "models/weapons2/laser_trap/laser_trap.md3", -/* icon */ "icons/w_icon_trip_mine", +/* icon */ "gfx/hud/w_icon_tripmine", /* pickup */ "Trip Mine", 1, IT_WEAPON, @@ -629,10 +629,9 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "weapon_det_pack", "sound/weapons/w_pkup.wav", - { "models/weapons2/detpack/det_pack_w.glm", - 0, 0, 0}, + { "models/weapons2/detpack/det_pack_proj.glm", "models/weapons2/detpack/det_pack_w.glm", 0, 0}, /* view */ "models/weapons2/detpack/det_pack.md3", -/* icon */ "icons/w_icon_det_pack", +/* icon */ "gfx/hud/w_icon_detpack", /* pickup */ "Det Pack", 1, IT_WEAPON, @@ -649,7 +648,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/blaster_r/blaster_w.glm", 0, 0, 0}, /* view */ "models/weapons2/blaster_r/blaster.md3", -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Emplaced Gun", 50, IT_WEAPON, @@ -666,7 +665,7 @@ NOTENOTE This weapon is not yet complete. Don't place it. { "models/weapons2/blaster_r/blaster_w.glm", 0, 0, 0}, /* view */ "models/weapons2/blaster_r/blaster.md3", -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Turret Gun", 50, IT_WEAPON, @@ -688,7 +687,7 @@ Don't place this { "models/items/energy_cell.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Force??", 100, IT_AMMO, @@ -706,7 +705,7 @@ Ammo for the Bryar and Blaster pistols. { "models/items/energy_cell.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/i_icon_battery", /* pickup */ "Blaster Pack", 100, IT_AMMO, @@ -724,7 +723,7 @@ Ammo for Tenloss Disruptor, Wookie Bowcaster, and the Destructive Electro Magnet { "models/items/power_cell.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Power Cell", 100, IT_AMMO, @@ -742,7 +741,7 @@ Ammo for Imperial Heavy Repeater and the Golan Arms Flechette { "models/items/metallic_bolts.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Metallic Bolts", 100, IT_AMMO, @@ -760,7 +759,7 @@ Ammo for Merr-Sonn portable missile launcher { "models/items/rockets.md3", 0, 0, 0}, /* view */ NULL, -/* icon */ "icons/w_icon_blaster", +/* icon */ "gfx/hud/w_icon_blaster", /* pickup */ "Rockets", 100, IT_AMMO, @@ -910,6 +909,11 @@ qboolean BG_CanUseFPNow(int gametype, playerState_t *ps, int time, forcePowers_t } } + if (ps->fallingToDeath) + { + return qfalse; + } + return qtrue; } @@ -1215,7 +1219,7 @@ qboolean BG_CanItemBeGrabbed( int gametype, const entityState_t *ent, const play return qtrue; case IT_ARMOR: - if ( ps->stats[STAT_ARMOR] >= ps->stats[STAT_MAX_HEALTH]/* * 2*/ ) { + if ( ps->stats[STAT_ARMOR] >= ps->stats[STAT_MAX_HEALTH] * item->giTag ) { return qfalse; } return qtrue; @@ -1699,6 +1703,8 @@ void BG_PlayerStateToEntityState( playerState_t *ps, entityState_t *s, qboolean VectorCopy(ps->lastHitLoc, s->origin2); s->isJediMaster = ps->isJediMaster; + + s->time2 = ps->holocronBits; } /* @@ -1835,6 +1841,8 @@ void BG_PlayerStateToEntityStateExtraPolate( playerState_t *ps, entityState_t *s VectorCopy(ps->lastHitLoc, s->origin2); s->isJediMaster = ps->isJediMaster; + + s->time2 = ps->holocronBits; } /* diff --git a/CODE-mp/game/bg_panimate.c b/CODE-mp/game/bg_panimate.c new file mode 100644 index 0000000..a2ee725 --- /dev/null +++ b/CODE-mp/game/bg_panimate.c @@ -0,0 +1,1012 @@ +// BG_PAnimate.c + +#include "q_shared.h" +#include "bg_public.h" +#include "bg_local.h" +#include "anims.h" +#include "../cgame/animtable.h" + +/* +============================================================================== +BEGIN: Animation utility functions (sequence checking) +============================================================================== +*/ +//Called regardless of pm validity: +qboolean BG_InSpecialJump( int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_WALL_RUN_RIGHT: + case BOTH_WALL_RUN_RIGHT_FLIP: + case BOTH_WALL_RUN_LEFT: + case BOTH_WALL_RUN_LEFT_FLIP: + case BOTH_WALL_FLIP_RIGHT: + case BOTH_WALL_FLIP_LEFT: + case BOTH_FLIP_BACK1: + case BOTH_FLIP_BACK2: + case BOTH_FLIP_BACK3: + case BOTH_WALL_FLIP_BACK1: + case BOTH_BUTTERFLY_LEFT: + case BOTH_BUTTERFLY_RIGHT: + return qtrue; + } + return qfalse; +} + +qboolean BG_InSaberStandAnim( int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_SABERFAST_STANCE: + case BOTH_STAND2: + case BOTH_SABERSLOW_STANCE: + return qtrue; + default: + return qfalse; + } +} + +qboolean BG_DirectFlippingAnim( int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_FLIP_F: //# Flip forward + case BOTH_FLIP_B: //# Flip backwards + case BOTH_FLIP_L: //# Flip left + case BOTH_FLIP_R: //# Flip right + return qtrue; + break; + } + + return qfalse; +} + +qboolean BG_SaberInAttack( int move ) +{ + if ( move >= LS_A_TL2BR && move <= LS_A_T2B ) + { + return qtrue; + } + switch ( move ) + { + case LS_A_BACK: + case LS_A_BACK_CR: + case LS_A_BACKSTAB: + case LS_A_LUNGE: + case LS_A_JUMP_T__B_: + case LS_A_FLIP_STAB: + case LS_A_FLIP_SLASH: + return qtrue; + break; + } + return qfalse; +} + +qboolean BG_SaberInSpecial( int move ) +{ + switch( move ) + { + case LS_A_BACK: + case LS_A_BACK_CR: + case LS_A_BACKSTAB: + case LS_A_LUNGE: + case LS_A_JUMP_T__B_: + case LS_A_FLIP_STAB: + case LS_A_FLIP_SLASH: + return qtrue; + } + return qfalse; +} + +qboolean BG_SaberInIdle( int move ) +{ + switch ( move ) + { + case LS_NONE: + case LS_READY: + case LS_DRAW: + case LS_PUTAWAY: + return qtrue; + break; + } + return qfalse; +} + +qboolean BG_FlippingAnim( int anim ) +{ + switch ( anim ) + { + case BOTH_FLIP_F: //# Flip forward + case BOTH_FLIP_B: //# Flip backwards + case BOTH_FLIP_L: //# Flip left + case BOTH_FLIP_R: //# Flip right + case BOTH_WALL_RUN_RIGHT_FLIP: + case BOTH_WALL_RUN_LEFT_FLIP: + case BOTH_WALL_FLIP_RIGHT: + case BOTH_WALL_FLIP_LEFT: + case BOTH_FLIP_BACK1: + case BOTH_FLIP_BACK2: + case BOTH_FLIP_BACK3: + case BOTH_WALL_FLIP_BACK1: + //Not really flips, but... + case BOTH_WALL_RUN_RIGHT: + case BOTH_WALL_RUN_LEFT: + case BOTH_WALL_RUN_RIGHT_STOP: + case BOTH_WALL_RUN_LEFT_STOP: + case BOTH_BUTTERFLY_LEFT: + case BOTH_BUTTERFLY_RIGHT: + // + case BOTH_ARIAL_LEFT: + case BOTH_ARIAL_RIGHT: + case BOTH_ARIAL_F1: + case BOTH_CARTWHEEL_LEFT: + case BOTH_CARTWHEEL_RIGHT: + case BOTH_JUMPFLIPSLASHDOWN1: + case BOTH_JUMPFLIPSTABDOWN: + return qtrue; + break; + } + return qfalse; +} + +qboolean BG_SpinningSaberAnim( int anim ) +{ + switch ( anim ) + { + //level 1 - FIXME: level 1 will have *no* spins + case BOTH_T1_BR_BL: + case BOTH_T1__R__L: + case BOTH_T1__R_BL: + case BOTH_T1_TR_BL: + case BOTH_T1_BR_TL: + case BOTH_T1_BR__L: + case BOTH_T1_TL_BR: + case BOTH_T1__L_BR: + case BOTH_T1__L__R: + case BOTH_T1_BL_BR: + case BOTH_T1_BL__R: + case BOTH_T1_BL_TR: + //level 2 + case BOTH_T2_BR__L: + case BOTH_T2_BR_BL: + case BOTH_T2__R_BL: + case BOTH_T2__L_BR: + case BOTH_T2_BL_BR: + case BOTH_T2_BL__R: + //level 3 + case BOTH_T3_BR__L: + case BOTH_T3_BR_BL: + case BOTH_T3__R_BL: + case BOTH_T3__L_BR: + case BOTH_T3_BL_BR: + case BOTH_T3_BL__R: + //level 4 + case BOTH_T4_BR__L: + case BOTH_T4_BR_BL: + case BOTH_T4__R_BL: + case BOTH_T4__L_BR: + case BOTH_T4_BL_BR: + case BOTH_T4_BL__R: + //level 5 + case BOTH_T5_BR_BL: + case BOTH_T5__R__L: + case BOTH_T5__R_BL: + case BOTH_T5_TR_BL: + case BOTH_T5_BR_TL: + case BOTH_T5_BR__L: + case BOTH_T5_TL_BR: + case BOTH_T5__L_BR: + case BOTH_T5__L__R: + case BOTH_T5_BL_BR: + case BOTH_T5_BL__R: + case BOTH_T5_BL_TR: + //special + //case BOTH_A2_STABBACK1: + case BOTH_ATTACK_BACK: + case BOTH_CROUCHATTACKBACK1: + case BOTH_BUTTERFLY_LEFT: + case BOTH_BUTTERFLY_RIGHT: + case BOTH_FJSS_TR_BL: + case BOTH_FJSS_TL_BR: + case BOTH_JUMPFLIPSLASHDOWN1: + case BOTH_JUMPFLIPSTABDOWN: + return qtrue; + break; + } + return qfalse; +} + +qboolean BG_SaberInSpecialAttack( int anim ) +{ + switch ( anim&~ANIM_TOGGLEBIT ) + { + case BOTH_A2_STABBACK1: + case BOTH_ATTACK_BACK: + case BOTH_CROUCHATTACKBACK1: + case BOTH_BUTTERFLY_LEFT: + case BOTH_BUTTERFLY_RIGHT: + case BOTH_FJSS_TR_BL: + case BOTH_FJSS_TL_BR: + case BOTH_LUNGE2_B__T_: + case BOTH_FORCELEAP2_T__B_: + case BOTH_JUMPFLIPSLASHDOWN1://# + case BOTH_JUMPFLIPSTABDOWN://# + return qtrue; + } + return qfalse; +} + +qboolean BG_InRoll( playerState_t *ps, int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_ROLL_F: + case BOTH_ROLL_B: + case BOTH_ROLL_R: + case BOTH_ROLL_L: + if ( ps->legsTimer > 0 ) + { + return qtrue; + } + break; + } + return qfalse; +} + +qboolean BG_InDeathAnim( int anim ) +{ + switch((anim&~ANIM_TOGGLEBIT)) + { + case BOTH_DIVE1: + case BOTH_DEATHBACKWARD1: + case BOTH_DEATHBACKWARD2: + case BOTH_DEATHFORWARD1: + case BOTH_DEATHFORWARD2: + case BOTH_DEATH1: + case BOTH_DEATH2: + case BOTH_DEATH3: + case BOTH_DEATH4: + case BOTH_DEATH5: + case BOTH_DEATH6: + case BOTH_DEATH7: + + case BOTH_DEATH1IDLE: + case BOTH_LYINGDEATH1: + case BOTH_STUMBLEDEATH1: + case BOTH_FALLDEATH1: + case BOTH_FALLDEATH1INAIR: + case BOTH_FALLDEATH1LAND: + return qtrue; + break; + default: + return qfalse; + break; + } +} + +//Called only where pm is valid (not all require pm, but some do): +qboolean PM_SaberInParry( int move ) +{ + if ( move >= LS_PARRY_UP && move <= LS_PARRY_LL ) + { + return qtrue; + } + return qfalse; +} + +qboolean PM_SaberInReflect( int move ) +{ + if ( move >= LS_REFLECT_UP && move <= LS_REFLECT_LL ) + { + return qtrue; + } + return qfalse; +} + +qboolean PM_SaberInStart( int move ) +{ + if ( move >= LS_S_TL2BR && move <= LS_S_T2B ) + { + return qtrue; + } + return qfalse; +} + +qboolean PM_InSaberAnim( int anim ) +{ + if ( (anim&~ANIM_TOGGLEBIT) >= BOTH_A1_T__B_ && (anim&~ANIM_TOGGLEBIT) <= BOTH_H1_S1_BR ) + { + return qtrue; + } + return qfalse; +} + +qboolean PM_InKnockDown( playerState_t *ps ) +{ + switch ( (ps->legsAnim&~ANIM_TOGGLEBIT) ) + { + case BOTH_KNOCKDOWN1: + case BOTH_KNOCKDOWN2: + case BOTH_KNOCKDOWN3: + case BOTH_KNOCKDOWN4: + case BOTH_KNOCKDOWN5: + return qtrue; + break; + case BOTH_GETUP1: + case BOTH_GETUP2: + case BOTH_GETUP3: + case BOTH_GETUP4: + case BOTH_GETUP5: + case BOTH_FORCE_GETUP_F1: + case BOTH_FORCE_GETUP_F2: + case BOTH_FORCE_GETUP_B1: + case BOTH_FORCE_GETUP_B2: + case BOTH_FORCE_GETUP_B3: + case BOTH_FORCE_GETUP_B4: + case BOTH_FORCE_GETUP_B5: + if ( ps->legsTimer ) + { + return qtrue; + } + break; + } + return qfalse; +} + +qboolean PM_PainAnim( int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_PAIN1: //# First take pain anim + case BOTH_PAIN2: //# Second take pain anim + case BOTH_PAIN3: //# Third take pain anim + case BOTH_PAIN4: //# Fourth take pain anim + case BOTH_PAIN5: //# Fifth take pain anim - from behind + case BOTH_PAIN6: //# Sixth take pain anim - from behind + case BOTH_PAIN7: //# Seventh take pain anim - from behind + case BOTH_PAIN8: //# Eigth take pain anim - from behind + case BOTH_PAIN9: //# + case BOTH_PAIN10: //# + case BOTH_PAIN11: //# + case BOTH_PAIN12: //# + case BOTH_PAIN13: //# + case BOTH_PAIN14: //# + case BOTH_PAIN15: //# + case BOTH_PAIN16: //# + case BOTH_PAIN17: //# + case BOTH_PAIN18: //# + case BOTH_PAIN19: //# + return qtrue; + break; + } + return qfalse; +} + +qboolean PM_JumpingAnim( int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_JUMP1: //# Jump - wind-up and leave ground + case BOTH_INAIR1: //# In air loop (from jump) + case BOTH_LAND1: //# Landing (from in air loop) + case BOTH_LAND2: //# Landing Hard (from a great height) + case BOTH_JUMPBACK1: //# Jump backwards - wind-up and leave ground + case BOTH_INAIRBACK1: //# In air loop (from jump back) + case BOTH_LANDBACK1: //# Landing backwards(from in air loop) + case BOTH_JUMPLEFT1: //# Jump left - wind-up and leave ground + case BOTH_INAIRLEFT1: //# In air loop (from jump left) + case BOTH_LANDLEFT1: //# Landing left(from in air loop) + case BOTH_JUMPRIGHT1: //# Jump right - wind-up and leave ground + case BOTH_INAIRRIGHT1: //# In air loop (from jump right) + case BOTH_LANDRIGHT1: //# Landing right(from in air loop) + case BOTH_FORCEJUMP1: //# Jump - wind-up and leave ground + case BOTH_FORCEINAIR1: //# In air loop (from jump) + case BOTH_FORCELAND1: //# Landing (from in air loop) + case BOTH_FORCEJUMPBACK1: //# Jump backwards - wind-up and leave ground + case BOTH_FORCEINAIRBACK1: //# In air loop (from jump back) + case BOTH_FORCELANDBACK1: //# Landing backwards(from in air loop) + case BOTH_FORCEJUMPLEFT1: //# Jump left - wind-up and leave ground + case BOTH_FORCEINAIRLEFT1: //# In air loop (from jump left) + case BOTH_FORCELANDLEFT1: //# Landing left(from in air loop) + case BOTH_FORCEJUMPRIGHT1: //# Jump right - wind-up and leave ground + case BOTH_FORCEINAIRRIGHT1: //# In air loop (from jump right) + case BOTH_FORCELANDRIGHT1: //# Landing right(from in air loop) + return qtrue; + break; + } + return qfalse; +} + +qboolean PM_LandingAnim( int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_LAND1: //# Landing (from in air loop) + case BOTH_LAND2: //# Landing Hard (from a great height) + case BOTH_LANDBACK1: //# Landing backwards(from in air loop) + case BOTH_LANDLEFT1: //# Landing left(from in air loop) + case BOTH_LANDRIGHT1: //# Landing right(from in air loop) + case BOTH_FORCELAND1: //# Landing (from in air loop) + case BOTH_FORCELANDBACK1: //# Landing backwards(from in air loop) + case BOTH_FORCELANDLEFT1: //# Landing left(from in air loop) + case BOTH_FORCELANDRIGHT1: //# Landing right(from in air loop) + return qtrue; + break; + } + return qfalse; +} + +qboolean PM_SpinningAnim( int anim ) +{ + /* + switch ( anim ) + { + //FIXME: list any other spinning anims + default: + break; + } + */ + return BG_SpinningSaberAnim( anim ); +} + +qboolean PM_InOnGroundAnim ( int anim ) +{ + switch( anim&~ANIM_TOGGLEBIT ) + { + case BOTH_DEAD1: + case BOTH_DEAD2: + case BOTH_DEAD3: + case BOTH_DEAD4: + case BOTH_DEAD5: + case BOTH_DEADFORWARD1: + case BOTH_DEADBACKWARD1: + case BOTH_DEADFORWARD2: + case BOTH_DEADBACKWARD2: + case BOTH_LYINGDEATH1: + case BOTH_LYINGDEAD1: + case BOTH_PAIN2WRITHE1: //# Transition from upright position to writhing on ground anim + case BOTH_WRITHING1: //# Lying on ground writhing in pain + case BOTH_WRITHING1RLEG: //# Lying on ground writhing in pain: holding right leg + case BOTH_WRITHING1LLEG: //# Lying on ground writhing in pain: holding left leg + case BOTH_WRITHING2: //# Lying on stomache writhing in pain + case BOTH_INJURED1: //# Lying down: against wall - can also be sleeping + case BOTH_CRAWLBACK1: //# Lying on back: crawling backwards with elbows + case BOTH_INJURED2: //# Injured pose 2 + case BOTH_INJURED3: //# Injured pose 3 + case BOTH_INJURED6: //# Injured pose 6 + case BOTH_INJURED6ATTACKSTART: //# Start attack while in injured 6 pose + case BOTH_INJURED6ATTACKSTOP: //# End attack while in injured 6 pose + case BOTH_INJURED6COMBADGE: //# Hit combadge while in injured 6 pose + case BOTH_INJURED6POINT: //# Chang points to door while in injured state + case BOTH_KNOCKDOWN1: //# + case BOTH_KNOCKDOWN2: //# + return qtrue; + break; + } + + return qfalse; +} + +qboolean PM_InRollComplete( playerState_t *ps, int anim ) +{ + switch ( (anim&~ANIM_TOGGLEBIT) ) + { + case BOTH_ROLL_F: + case BOTH_ROLL_B: + case BOTH_ROLL_R: + case BOTH_ROLL_L: + if ( ps->legsTimer < 1 ) + { + return qtrue; + } + break; + } + return qfalse; +} + +int PM_AnimLength( int index, animNumber_t anim ) +{ + if (anim >= MAX_ANIMATIONS) + { + return -1; + } + return pm->animations[anim].numFrames * fabs(pm->animations[anim].frameLerp); +} + +void PM_DebugLegsAnim(int anim) +{ + int oldAnim = (pm->ps->legsAnim & ~ANIM_TOGGLEBIT); + int newAnim = (anim & ~ANIM_TOGGLEBIT); + + if (oldAnim < MAX_TOTALANIMATIONS && oldAnim >= BOTH_DEATH1 && + newAnim < MAX_TOTALANIMATIONS && newAnim >= BOTH_DEATH1) + { + Com_Printf("OLD: %s\n", animTable[oldAnim]); + Com_Printf("NEW: %s\n", animTable[newAnim]); + } +} +/* +============================================================================== +END: Animation utility functions (sequence checking) +============================================================================== +*/ + +/* +====================== +BG_ParseAnimationFile + +Read a configuration file containing animation coutns and rates +models/players/visor/animation.cfg, etc + +====================== +*/ +char BGPAFtext[40000]; +qboolean BGPAFtextLoaded = qfalse; +animation_t bgGlobalAnimations[MAX_TOTALANIMATIONS]; + +qboolean BG_ParseAnimationFile( const char *filename, animation_t *animations) +{ + char *text_p; + int len; + int i; + char *token; + float fps; + int skip; + + fileHandle_t f; + int animNum; + + + // load the file + if (!BGPAFtextLoaded) + { //rww - We are always using the same animation config now. So only load it once. + len = trap_FS_FOpenFile( filename, &f, FS_READ ); + if ( len <= 0 ) + { + return qfalse; + } + if ( len >= sizeof( BGPAFtext ) - 1 ) + { + // gi.Printf( "File %s too long\n", filename ); + return qfalse; + } + + trap_FS_Read( BGPAFtext, len, f ); + BGPAFtext[len] = 0; + trap_FS_FCloseFile( f ); + } + else + { + for(i = 0; i < MAX_ANIMATIONS; i++) + { + animations[i].firstFrame = bgGlobalAnimations[i].firstFrame; + animations[i].flipflop = bgGlobalAnimations[i].flipflop; + animations[i].frameLerp = bgGlobalAnimations[i].frameLerp; + animations[i].initialLerp = bgGlobalAnimations[i].initialLerp; + animations[i].loopFrames = bgGlobalAnimations[i].loopFrames; + animations[i].numFrames = bgGlobalAnimations[i].numFrames; + animations[i].reversed = bgGlobalAnimations[i].reversed; + } + + return qtrue; + } + + // parse the text + text_p = BGPAFtext; + skip = 0; // quiet the compiler warning + + //FIXME: have some way of playing anims backwards... negative numFrames? + + //initialize anim array so that from 0 to MAX_ANIMATIONS, set default values of 0 1 0 100 + for(i = 0; i < MAX_ANIMATIONS; i++) + { + animations[i].firstFrame = 0; + animations[i].numFrames = 0; + animations[i].loopFrames = -1; + animations[i].frameLerp = 100; + animations[i].initialLerp = 100; + } + + // read information for each frame + while(1) + { + token = COM_Parse( (const char **)(&text_p) ); + + if ( !token || !token[0]) + { + break; + } + + animNum = GetIDForString(animTable, token); + if(animNum == -1) + { +//#ifndef FINAL_BUILD +#ifdef _DEBUG + Com_Printf(S_COLOR_RED"WARNING: Unknown token %s in %s\n", token, filename); +#endif + continue; + } + + token = COM_Parse( (const char **)(&text_p) ); + if ( !token ) + { + break; + } + animations[animNum].firstFrame = atoi( token ); + + token = COM_Parse( (const char **)(&text_p) ); + if ( !token ) + { + break; + } + animations[animNum].numFrames = atoi( token ); + + token = COM_Parse( (const char **)(&text_p) ); + if ( !token ) + { + break; + } + animations[animNum].loopFrames = atoi( token ); + + token = COM_Parse( (const char **)(&text_p) ); + if ( !token ) + { + break; + } + fps = atof( token ); + if ( fps == 0 ) + { + fps = 1;//Don't allow divide by zero error + } + if ( fps < 0 ) + {//backwards + animations[animNum].frameLerp = floor(1000.0f / fps); + } + else + { + animations[animNum].frameLerp = ceil(1000.0f / fps); + } + + animations[animNum].initialLerp = ceil(1000.0f / fabs(fps)); + } + + for(i = 0; i < MAX_ANIMATIONS; i++) + { + bgGlobalAnimations[i].firstFrame = animations[i].firstFrame; + bgGlobalAnimations[i].flipflop = animations[i].flipflop; + bgGlobalAnimations[i].frameLerp = animations[i].frameLerp; + bgGlobalAnimations[i].initialLerp = animations[i].initialLerp; + bgGlobalAnimations[i].loopFrames = animations[i].loopFrames; + bgGlobalAnimations[i].numFrames = animations[i].numFrames; + bgGlobalAnimations[i].reversed = animations[i].reversed; + } + + BGPAFtextLoaded = qtrue; + return qtrue; +} + + + +/* +=================== +LEGS Animations +Base animation for overall body +=================== +*/ +static void PM_StartLegsAnim( int anim ) { + if ( pm->ps->pm_type >= PM_DEAD ) { + return; + } + if ( pm->ps->legsTimer > 0 ) { + return; // a high priority animation is running + } + + if (pm->ps->usingATST) + { //animation is handled mostly client-side with only a few exceptions + return; + } + + if (BG_InSaberStandAnim(anim) && pm->ps->weapon == WP_SABER && pm->ps->dualBlade) + { //a bit of a hack, but dualblade is cheat-only anyway + anim = BOTH_STAND1; + } + + pm->ps->legsAnim = ( ( pm->ps->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) + | anim; + + if ( pm->debugLevel ) { + Com_Printf("%d: StartLegsAnim %d, on client#%d\n", pm->cmd.serverTime, anim, pm->ps->clientNum); + } +} + +void PM_ContinueLegsAnim( int anim ) { + if ( ( pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) { + return; + } + if ( pm->ps->legsTimer > 0 ) { + return; // a high priority animation is running + } + + PM_StartLegsAnim( anim ); +} + +void PM_ForceLegsAnim( int anim) { + if (BG_InSpecialJump(pm->ps->legsAnim) && + pm->ps->legsTimer > 0 && + !BG_InSpecialJump(anim)) + { + return; + } + + if (BG_InRoll(pm->ps, pm->ps->legsAnim) && + pm->ps->legsTimer > 0 && + !BG_InRoll(pm->ps, anim)) + { + return; + } + + pm->ps->legsTimer = 0; + PM_StartLegsAnim( anim ); +} + + + +/* +=================== +TORSO Animations +Override animations for upper body +=================== +*/ +void PM_StartTorsoAnim( int anim ) { + if ( pm->ps->pm_type >= PM_DEAD ) { + return; + } + + if (pm->ps->usingATST) + { //animation is handled mostly client-side with only a few exceptions + return; + } + + if (BG_InSaberStandAnim(anim) && pm->ps->weapon == WP_SABER && pm->ps->dualBlade) + { //a bit of a hack, but dualblade is cheat-only anyway + anim = BOTH_STAND1; + } + + pm->ps->torsoAnim = ( ( pm->ps->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) + | anim; +} + +static void PM_ContinueTorsoAnim( int anim ) { + if ( ( pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) == anim ) { + return; + } + if ( pm->ps->torsoTimer > 0 ) { + return; // a high priority animation is running + } + PM_StartTorsoAnim( anim); +} + + +/* +------------------------- +PM_SetLegsAnimTimer +------------------------- +*/ + +void PM_SetLegsAnimTimer(int time ) +{ + pm->ps->legsTimer = time; + + if (pm->ps->legsTimer < 0 && time != -1 ) + {//Cap timer to 0 if was counting down, but let it be -1 if that was intentional. NOTENOTE Yeah this seems dumb, but it mirrors SP. + pm->ps->legsTimer = 0; + } +} + +/* +------------------------- +PM_SetTorsoAnimTimer +------------------------- +*/ + +void PM_SetTorsoAnimTimer(int time ) +{ + pm->ps->torsoTimer = time; + + if (pm->ps->torsoTimer < 0 && time != -1 ) + {//Cap timer to 0 if was counting down, but let it be -1 if that was intentional. NOTENOTE Yeah this seems dumb, but it mirrors SP. + pm->ps->torsoTimer = 0; + } +} + +void BG_SaberStartTransAnim( int saberAnimLevel, int anim, float *animSpeed ) +{ + if ( ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T1_BR__R && + (anim&~ANIM_TOGGLEBIT) <= BOTH_T1_BL_TL ) || + ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T2_BR__R && + (anim&~ANIM_TOGGLEBIT) <= BOTH_T2_BL_TL ) || + ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T3_BR__R && + (anim&~ANIM_TOGGLEBIT) <= BOTH_T3_BL_TL ) ) + { + if ( saberAnimLevel == FORCE_LEVEL_1 ) + { + *animSpeed *= 1.5; + } + else if ( saberAnimLevel == FORCE_LEVEL_3 ) + { + *animSpeed *= 0.75; + } + } +} + +/* +------------------------- +PM_SetAnimFinal +------------------------- +*/ +void PM_SetAnimFinal(int setAnimParts,int anim,int setAnimFlags, + int blendTime) // default blendTime=350 +{ + animation_t *animations = pm->animations; + + float editAnimSpeed = 0; + + if (!animations) + { + return; + } + + //NOTE: Setting blendTime here breaks actual blending.. + blendTime = 0; + + BG_SaberStartTransAnim(pm->ps->fd.saberAnimLevel, anim, &editAnimSpeed); + + // Set torso anim + if (setAnimParts & SETANIM_TORSO) + { + // Don't reset if it's already running the anim + if( !(setAnimFlags & SETANIM_FLAG_RESTART) && (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) == anim ) + { + goto setAnimLegs; + } + // or if a more important anim is running + if( !(setAnimFlags & SETANIM_FLAG_OVERRIDE) && ((pm->ps->torsoTimer > 0)||(pm->ps->torsoTimer == -1)) ) + { + goto setAnimLegs; + } + + PM_StartTorsoAnim( anim ); + + if (setAnimFlags & SETANIM_FLAG_HOLD) + {//FIXME: allow to set a specific time? + if (setAnimFlags & SETANIM_FLAG_HOLDLESS) + { // Make sure to only wait in full 1/20 sec server frame intervals. + int dur; + + dur = (animations[anim].numFrames ) * fabs(animations[anim].frameLerp); + //dur = ((int)(dur/50.0)) * 50 / timeScaleMod; + dur -= blendTime+fabs(animations[anim].frameLerp)*2; + if (dur > 1) + { + pm->ps->torsoTimer = dur-1; + } + else + { + pm->ps->torsoTimer = fabs(animations[anim].frameLerp); + } + } + else + { + pm->ps->torsoTimer = ((animations[anim].numFrames ) * fabs(animations[anim].frameLerp)); + } + + if (pm->ps->fd.forcePowersActive & (1 << FP_RAGE)) + { + pm->ps->torsoTimer /= 1.7; + } + + if (editAnimSpeed) + { + pm->ps->torsoTimer /= editAnimSpeed; + } + } + } + +setAnimLegs: + // Set legs anim + if (setAnimParts & SETANIM_LEGS) + { + // Don't reset if it's already running the anim + if( !(setAnimFlags & SETANIM_FLAG_RESTART) && (pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) + { + goto setAnimDone; + } + // or if a more important anim is running + if( !(setAnimFlags & SETANIM_FLAG_OVERRIDE) && ((pm->ps->legsTimer > 0)||(pm->ps->legsTimer == -1)) ) + { + goto setAnimDone; + } + + PM_StartLegsAnim(anim); + + if (setAnimFlags & SETANIM_FLAG_HOLD) + {//FIXME: allow to set a specific time? + if (setAnimFlags & SETANIM_FLAG_HOLDLESS) + { // Make sure to only wait in full 1/20 sec server frame intervals. + int dur; + + dur = (animations[anim].numFrames -1) * fabs(animations[anim].frameLerp); + //dur = ((int)(dur/50.0)) * 50 / timeScaleMod; + dur -= blendTime+fabs(animations[anim].frameLerp)*2; + if (dur > 1) + { + pm->ps->legsTimer = dur-1; + } + else + { + pm->ps->legsTimer = fabs(animations[anim].frameLerp); + } + } + else + { + pm->ps->legsTimer = ((animations[anim].numFrames ) * fabs(animations[anim].frameLerp)); + } + + /* + PM_DebugLegsAnim(anim); + Com_Printf("%i\n", pm->ps->legsTimer); + */ + + if (pm->ps->fd.forcePowersActive & (1 << FP_RAGE)) + { + pm->ps->legsTimer /= 1.3; + } + else if (pm->ps->fd.forcePowersActive & (1 << FP_SPEED)) + { + pm->ps->legsTimer /= 1.7; + } + } + } + +setAnimDone: + return; +} + + + +// Imported from single-player, this function is mainly intended to make porting from SP easier. +void PM_SetAnim(int setAnimParts,int anim,int setAnimFlags, int blendTime) +{ + if (BG_InSpecialJump(anim)) + { + setAnimFlags |= SETANIM_FLAG_RESTART; + } + + if (BG_InRoll(pm->ps, pm->ps->legsAnim)) + { + //setAnimFlags |= SETANIM_FLAG_RESTART; + return; + } + + if (setAnimFlags&SETANIM_FLAG_OVERRIDE) + { + if (setAnimParts & SETANIM_TORSO) + { + if( (setAnimFlags & SETANIM_FLAG_RESTART) || (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) != anim ) + { + PM_SetTorsoAnimTimer(0); + } + } + if (setAnimParts & SETANIM_LEGS) + { + if( (setAnimFlags & SETANIM_FLAG_RESTART) || (pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) != anim ) + { + PM_SetLegsAnimTimer(0); + } + } + } + + PM_SetAnimFinal(setAnimParts, anim, setAnimFlags, blendTime); +} + + diff --git a/CODEmp/game/bg_pmove.c b/CODE-mp/game/bg_pmove.c similarity index 82% rename from CODEmp/game/bg_pmove.c rename to CODE-mp/game/bg_pmove.c index 1ffc47e..2299bb5 100644 --- a/CODEmp/game/bg_pmove.c +++ b/CODE-mp/game/bg_pmove.c @@ -142,6 +142,21 @@ float forceJumpStrength[NUM_FORCE_POWER_LEVELS] = 840 }; +int PM_GetSaberStance(void) +{ + if (pm->ps->fd.saberAnimLevel == FORCE_LEVEL_2) + { //medium + return BOTH_STAND2; + } + if (pm->ps->fd.saberAnimLevel == FORCE_LEVEL_3) + { //strong + return BOTH_SABERSLOW_STANCE; + } + + //fast + return BOTH_SABERFAST_STANCE; +} + /* =============== PM_AddEvent @@ -407,9 +422,6 @@ static void PM_SetMovementDir( void ) { #define METROID_JUMP 1 -qboolean PM_SaberInSpecialAttack( int anim ); -qboolean PM_SaberInSpecial( int move ); - qboolean PM_ForceJumpingUp(void) { if ( !(pm->ps->fd.forcePowersActive&(1<ps->fd.forceJumpCharge ) @@ -422,12 +434,12 @@ qboolean PM_ForceJumpingUp(void) return qfalse; } - if (PM_SaberInSpecial(pm->ps->saberMove)) + if (BG_SaberInSpecial(pm->ps->saberMove)) { return qfalse; } - if (PM_SaberInSpecialAttack(pm->ps->legsAnim)) + if (BG_SaberInSpecialAttack(pm->ps->legsAnim)) { return qfalse; } @@ -452,187 +464,6 @@ qboolean PM_ForceJumpingUp(void) return qfalse; } - -qboolean PM_InSaberAnim( int anim ) -{ - if ( (anim&~ANIM_TOGGLEBIT) >= BOTH_A1_T__B_ && (anim&~ANIM_TOGGLEBIT) <= BOTH_H1_S1_BR ) - { - return qtrue; - } - return qfalse; -} - -qboolean PM_InKnockDown( playerState_t *ps ) -{ - switch ( (ps->legsAnim&~ANIM_TOGGLEBIT) ) - { - case BOTH_KNOCKDOWN1: - case BOTH_KNOCKDOWN2: - case BOTH_KNOCKDOWN3: - case BOTH_KNOCKDOWN4: - case BOTH_KNOCKDOWN5: - return qtrue; - break; - case BOTH_GETUP1: - case BOTH_GETUP2: - case BOTH_GETUP3: - case BOTH_GETUP4: - case BOTH_GETUP5: - case BOTH_FORCE_GETUP_F1: - case BOTH_FORCE_GETUP_F2: - case BOTH_FORCE_GETUP_B1: - case BOTH_FORCE_GETUP_B2: - case BOTH_FORCE_GETUP_B3: - case BOTH_FORCE_GETUP_B4: - case BOTH_FORCE_GETUP_B5: - if ( ps->legsTimer ) - { - return qtrue; - } - break; - } - return qfalse; -} - -qboolean PM_InRoll( playerState_t *ps, int anim ) -{ - switch ( (anim&~ANIM_TOGGLEBIT) ) - { - case BOTH_ROLL_F: - case BOTH_ROLL_B: - case BOTH_ROLL_R: - case BOTH_ROLL_L: - if ( ps->legsTimer > 0 ) - { - return qtrue; - } - break; - } - return qfalse; -} - -qboolean PM_PainAnim( int anim ) -{ - switch ( (anim&~ANIM_TOGGLEBIT) ) - { - case BOTH_PAIN1: //# First take pain anim - case BOTH_PAIN2: //# Second take pain anim - case BOTH_PAIN3: //# Third take pain anim - case BOTH_PAIN4: //# Fourth take pain anim - case BOTH_PAIN5: //# Fifth take pain anim - from behind - case BOTH_PAIN6: //# Sixth take pain anim - from behind - case BOTH_PAIN7: //# Seventh take pain anim - from behind - case BOTH_PAIN8: //# Eigth take pain anim - from behind - case BOTH_PAIN9: //# - case BOTH_PAIN10: //# - case BOTH_PAIN11: //# - case BOTH_PAIN12: //# - case BOTH_PAIN13: //# - case BOTH_PAIN14: //# - case BOTH_PAIN15: //# - case BOTH_PAIN16: //# - case BOTH_PAIN17: //# - case BOTH_PAIN18: //# - case BOTH_PAIN19: //# - return qtrue; - break; - } - return qfalse; -} -qboolean PM_JumpingAnim( int anim ) -{ - switch ( (anim&~ANIM_TOGGLEBIT) ) - { - case BOTH_JUMP1: //# Jump - wind-up and leave ground - case BOTH_INAIR1: //# In air loop (from jump) - case BOTH_LAND1: //# Landing (from in air loop) - case BOTH_LAND2: //# Landing Hard (from a great height) - case BOTH_JUMPBACK1: //# Jump backwards - wind-up and leave ground - case BOTH_INAIRBACK1: //# In air loop (from jump back) - case BOTH_LANDBACK1: //# Landing backwards(from in air loop) - case BOTH_JUMPLEFT1: //# Jump left - wind-up and leave ground - case BOTH_INAIRLEFT1: //# In air loop (from jump left) - case BOTH_LANDLEFT1: //# Landing left(from in air loop) - case BOTH_JUMPRIGHT1: //# Jump right - wind-up and leave ground - case BOTH_INAIRRIGHT1: //# In air loop (from jump right) - case BOTH_LANDRIGHT1: //# Landing right(from in air loop) - case BOTH_FORCEJUMP1: //# Jump - wind-up and leave ground - case BOTH_FORCEINAIR1: //# In air loop (from jump) - case BOTH_FORCELAND1: //# Landing (from in air loop) - case BOTH_FORCEJUMPBACK1: //# Jump backwards - wind-up and leave ground - case BOTH_FORCEINAIRBACK1: //# In air loop (from jump back) - case BOTH_FORCELANDBACK1: //# Landing backwards(from in air loop) - case BOTH_FORCEJUMPLEFT1: //# Jump left - wind-up and leave ground - case BOTH_FORCEINAIRLEFT1: //# In air loop (from jump left) - case BOTH_FORCELANDLEFT1: //# Landing left(from in air loop) - case BOTH_FORCEJUMPRIGHT1: //# Jump right - wind-up and leave ground - case BOTH_FORCEINAIRRIGHT1: //# In air loop (from jump right) - case BOTH_FORCELANDRIGHT1: //# Landing right(from in air loop) - return qtrue; - break; - } - return qfalse; -} - -qboolean PM_LandingAnim( int anim ) -{ - switch ( (anim&~ANIM_TOGGLEBIT) ) - { - case BOTH_LAND1: //# Landing (from in air loop) - case BOTH_LAND2: //# Landing Hard (from a great height) - case BOTH_LANDBACK1: //# Landing backwards(from in air loop) - case BOTH_LANDLEFT1: //# Landing left(from in air loop) - case BOTH_LANDRIGHT1: //# Landing right(from in air loop) - case BOTH_FORCELAND1: //# Landing (from in air loop) - case BOTH_FORCELANDBACK1: //# Landing backwards(from in air loop) - case BOTH_FORCELANDLEFT1: //# Landing left(from in air loop) - case BOTH_FORCELANDRIGHT1: //# Landing right(from in air loop) - return qtrue; - break; - } - return qfalse; -} - -int PM_AnimLength( int index, animNumber_t anim ) -{ - if (anim >= MAX_ANIMATIONS) - { - return -1; - } - return pm->animations[anim].numFrames * fabs(pm->animations[anim].frameLerp); -} - -qboolean PM_InDeathAnim( int anim ) -{ - switch((anim&~ANIM_TOGGLEBIT)) - { - case BOTH_DIVE1: - case BOTH_DEATHBACKWARD1: - case BOTH_DEATHBACKWARD2: - case BOTH_DEATHFORWARD1: - case BOTH_DEATHFORWARD2: - case BOTH_DEATH1: - case BOTH_DEATH2: - case BOTH_DEATH3: - case BOTH_DEATH4: - case BOTH_DEATH5: - case BOTH_DEATH6: - case BOTH_DEATH7: - - case BOTH_DEATH1IDLE: - case BOTH_LYINGDEATH1: - case BOTH_STUMBLEDEATH1: - case BOTH_FALLDEATH1: - case BOTH_FALLDEATH1INAIR: - case BOTH_FALLDEATH1LAND: - return qtrue; - break; - default: - return qfalse; - break; - } -} - static void PM_JumpForDir( void ) { int anim = BOTH_JUMP1; @@ -661,135 +492,12 @@ static void PM_JumpForDir( void ) anim = BOTH_JUMP1; pm->ps->pm_flags &= ~PMF_BACKWARDS_JUMP; } - if(!PM_InDeathAnim(pm->ps->legsAnim)) + if(!BG_InDeathAnim(pm->ps->legsAnim)) { PM_SetAnim(SETANIM_LEGS,anim,SETANIM_FLAG_OVERRIDE, 100); // Only blend over 100ms } } -qboolean PM_FlippingAnim( int anim ) -{ - switch ( anim ) - { - case BOTH_FLIP_F: //# Flip forward - case BOTH_FLIP_B: //# Flip backwards - case BOTH_FLIP_L: //# Flip left - case BOTH_FLIP_R: //# Flip right - case BOTH_WALL_RUN_RIGHT_FLIP: - case BOTH_WALL_RUN_LEFT_FLIP: - case BOTH_WALL_FLIP_RIGHT: - case BOTH_WALL_FLIP_LEFT: - case BOTH_FLIP_BACK1: - case BOTH_FLIP_BACK2: - case BOTH_FLIP_BACK3: - case BOTH_WALL_FLIP_BACK1: - //Not really flips, but... - case BOTH_WALL_RUN_RIGHT: - case BOTH_WALL_RUN_LEFT: - case BOTH_WALL_RUN_RIGHT_STOP: - case BOTH_WALL_RUN_LEFT_STOP: - case BOTH_BUTTERFLY_LEFT: - case BOTH_BUTTERFLY_RIGHT: - // - case BOTH_ARIAL_LEFT: - case BOTH_ARIAL_RIGHT: - case BOTH_ARIAL_F1: - case BOTH_CARTWHEEL_LEFT: - case BOTH_CARTWHEEL_RIGHT: - case BOTH_JUMPFLIPSLASHDOWN1: - case BOTH_JUMPFLIPSTABDOWN: - return qtrue; - break; - } - return qfalse; -} - -qboolean PM_SpinningSaberAnim( int anim ) -{ - switch ( anim ) - { - //level 1 - FIXME: level 1 will have *no* spins - case BOTH_T1_BR_BL: - case BOTH_T1__R__L: - case BOTH_T1__R_BL: - case BOTH_T1_TR_BL: - case BOTH_T1_BR_TL: - case BOTH_T1_BR__L: - case BOTH_T1_TL_BR: - case BOTH_T1__L_BR: - case BOTH_T1__L__R: - case BOTH_T1_BL_BR: - case BOTH_T1_BL__R: - case BOTH_T1_BL_TR: - //level 2 - case BOTH_T2_BR__L: - case BOTH_T2_BR_BL: - case BOTH_T2__R_BL: - case BOTH_T2__L_BR: - case BOTH_T2_BL_BR: - case BOTH_T2_BL__R: - //level 3 - case BOTH_T3_BR__L: - case BOTH_T3_BR_BL: - case BOTH_T3__R_BL: - case BOTH_T3__L_BR: - case BOTH_T3_BL_BR: - case BOTH_T3_BL__R: - //level 4 - case BOTH_T4_BR__L: - case BOTH_T4_BR_BL: - case BOTH_T4__R_BL: - case BOTH_T4__L_BR: - case BOTH_T4_BL_BR: - case BOTH_T4_BL__R: - //level 5 - case BOTH_T5_BR_BL: - case BOTH_T5__R__L: - case BOTH_T5__R_BL: - case BOTH_T5_TR_BL: - case BOTH_T5_BR_TL: - case BOTH_T5_BR__L: - case BOTH_T5_TL_BR: - case BOTH_T5__L_BR: - case BOTH_T5__L__R: - case BOTH_T5_BL_BR: - case BOTH_T5_BL__R: - case BOTH_T5_BL_TR: - //special - //case BOTH_A2_STABBACK1: - case BOTH_ATTACK_BACK: - case BOTH_CROUCHATTACKBACK1: - case BOTH_BUTTERFLY_LEFT: - case BOTH_BUTTERFLY_RIGHT: - case BOTH_FJSS_TR_BL: - case BOTH_FJSS_TL_BR: - case BOTH_JUMPFLIPSLASHDOWN1: - case BOTH_JUMPFLIPSTABDOWN: - return qtrue; - break; - } - return qfalse; -} - -qboolean PM_SpinningAnim( int anim ) -{ - /* - switch ( anim ) - { - //FIXME: list any other spinning anims - default: - break; - } - */ - return PM_SpinningSaberAnim( anim ); -} - -qboolean PM_SomeoneInFront(trace_t *tr); -qboolean PM_SaberInAttack( int move ); -float PM_GroundDistance(void); -saberMoveName_t PM_SaberFlipOverAttackMove(trace_t *tr); -saberMoveName_t PM_SaberJumpAttackMove( void ); - /* ============= PM_CheckJump @@ -813,7 +521,7 @@ static qboolean PM_CheckJump( void ) return qfalse; } - if ( PM_InKnockDown( pm->ps ) || PM_InRoll( pm->ps, pm->ps->legsAnim ) ) + if ( PM_InKnockDown( pm->ps ) || BG_InRoll( pm->ps, pm->ps->legsAnim ) ) {//in knockdown return qfalse; } @@ -1353,13 +1061,13 @@ static qboolean PM_CheckJump( void ) && pm->ps->weapon == WP_SABER && (pm->ps->weaponTime > 0||pm->cmd.buttons&BUTTON_ATTACK) ) {//okay, we just jumped and we're in an attack - if ( !PM_InRoll( pm->ps, pm->ps->legsAnim ) + if ( !BG_InRoll( pm->ps, pm->ps->legsAnim ) && !PM_InKnockDown( pm->ps ) - && !PM_InDeathAnim(pm->ps->legsAnim) - && !PM_FlippingAnim( pm->ps->legsAnim ) //SAFASFASF - && !PM_SpinningAnim( pm->ps->legsAnim ) //SDGSDGGDSG - && !PM_SaberInSpecialAttack( pm->ps->torsoAnim ) - && ( PM_SaberInAttack( pm->ps->saberMove ) ) + && !BG_InDeathAnim(pm->ps->legsAnim) + && !BG_FlippingAnim( pm->ps->legsAnim ) + && !PM_SpinningAnim( pm->ps->legsAnim ) + && !BG_SaberInSpecialAttack( pm->ps->torsoAnim ) + && ( BG_SaberInAttack( pm->ps->saberMove ) ) /*&& PM_InAnimForSaberMove( pm->ps->torsoAnim, pm->ps->saberMove )*/ ) {//not in an anim we shouldn't interrupt //see if it's not too late to start a special jump-attack @@ -1958,44 +1666,13 @@ static int PM_FootstepForSurface( void ) { return EV_FOOTSTEP; } -qboolean PM_SaberInSpecialAttack( int anim ) -{ - switch ( anim&~ANIM_TOGGLEBIT ) - { - case BOTH_A2_STABBACK1: - case BOTH_ATTACK_BACK: - case BOTH_CROUCHATTACKBACK1: - case BOTH_BUTTERFLY_LEFT: - case BOTH_BUTTERFLY_RIGHT: - case BOTH_FJSS_TR_BL: - case BOTH_FJSS_TL_BR: - case BOTH_LUNGE2_B__T_: - case BOTH_FORCELEAP2_T__B_: - case BOTH_JUMPFLIPSLASHDOWN1://# - case BOTH_JUMPFLIPSTABDOWN://# - return qtrue; - } - return qfalse; -} - -qboolean PM_SaberInStart( int move ) -{ - if ( move >= LS_S_TL2BR && move <= LS_S_T2B ) - { - return qtrue; - } - return qfalse; -} - -qboolean PM_SaberInAttack( int move ); - static int PM_TryRoll( void ) { trace_t trace; int anim = -1; vec3_t fwd, right, traceto, mins, maxs, fwdAngles; - if ( PM_SaberInAttack( pm->ps->saberMove ) || PM_SaberInSpecialAttack( pm->ps->torsoAnim ) + if ( BG_SaberInAttack( pm->ps->saberMove ) || BG_SaberInSpecialAttack( pm->ps->torsoAnim ) || BG_SpinningSaberAnim( pm->ps->legsAnim ) || (!pm->ps->clientNum&&PM_SaberInStart( pm->ps->saberMove )) ) {//attacking or spinning (or, if player, starting an attack) @@ -2058,68 +1735,6 @@ static int PM_TryRoll( void ) return 0; } -qboolean PM_InOnGroundAnim ( int anim ) -{ - switch( anim&~ANIM_TOGGLEBIT ) - { - case BOTH_DEAD1: - case BOTH_DEAD2: - case BOTH_DEAD3: - case BOTH_DEAD4: - case BOTH_DEAD5: - case BOTH_DEADFORWARD1: - case BOTH_DEADBACKWARD1: - case BOTH_DEADFORWARD2: - case BOTH_DEADBACKWARD2: - case BOTH_LYINGDEATH1: - case BOTH_LYINGDEAD1: - case BOTH_PAIN2WRITHE1: //# Transition from upright position to writhing on ground anim - case BOTH_WRITHING1: //# Lying on ground writhing in pain - case BOTH_WRITHING1RLEG: //# Lying on ground writhing in pain: holding right leg - case BOTH_WRITHING1LLEG: //# Lying on ground writhing in pain: holding left leg - case BOTH_WRITHING2: //# Lying on stomache writhing in pain - case BOTH_INJURED1: //# Lying down: against wall - can also be sleeping - case BOTH_CRAWLBACK1: //# Lying on back: crawling backwards with elbows - case BOTH_INJURED2: //# Injured pose 2 - case BOTH_INJURED3: //# Injured pose 3 - case BOTH_INJURED6: //# Injured pose 6 - case BOTH_INJURED6ATTACKSTART: //# Start attack while in injured 6 pose - case BOTH_INJURED6ATTACKSTOP: //# End attack while in injured 6 pose - case BOTH_INJURED6COMBADGE: //# Hit combadge while in injured 6 pose - case BOTH_INJURED6POINT: //# Chang points to door while in injured state - case BOTH_SLEEP1: //# laying on back-rknee up-rhand on torso - case BOTH_SLEEP2: //# on floor-back against wall-arms crossed - case BOTH_SLEEP5: //# Laying on side sleeping on flat sufrace - case BOTH_SLEEP_IDLE1: //# rub face and nose while asleep from sleep pose 1 - case BOTH_SLEEP_IDLE2: //# shift position while asleep - stays in sleep2 - case BOTH_SLEEP1_NOSE: //# Scratch nose from SLEEP1 pose - case BOTH_SLEEP2_SHIFT: //# Shift in sleep from SLEEP2 pose - case BOTH_KNOCKDOWN1: //# - case BOTH_KNOCKDOWN2: //# - return qtrue; - break; - } - - return qfalse; -} - -qboolean PM_InRollComplete( playerState_t *ps, int anim ) -{ - switch ( (anim&~ANIM_TOGGLEBIT) ) - { - case BOTH_ROLL_F: - case BOTH_ROLL_B: - case BOTH_ROLL_R: - case BOTH_ROLL_L: - if ( ps->legsTimer < 1 ) - { - return qtrue; - } - break; - } - return qfalse; -} - /* ================= PM_CrashLand @@ -2160,9 +1775,9 @@ static void PM_CrashLand( void ) { } // decide which landing animation to use - if (!PM_InRoll(pm->ps, pm->ps->legsAnim) && pm->ps->inAirAnim) + if (!BG_InRoll(pm->ps, pm->ps->legsAnim) && pm->ps->inAirAnim) { //only play a land animation if we transitioned into an in-air animation while off the ground - if (!PM_SaberInSpecial(pm->ps->saberMove)) + if (!BG_SaberInSpecial(pm->ps->saberMove)) { if ( pm->ps->pm_flags & PMF_BACKWARDS_JUMP ) { PM_ForceLegsAnim( BOTH_LANDBACK1 ); @@ -2183,9 +1798,9 @@ static void PM_CrashLand( void ) { (pm->ps->legsAnim&~ANIM_TOGGLEBIT) == BOTH_WALL_RUN_LEFT || (pm->ps->legsAnim&~ANIM_TOGGLEBIT) == BOTH_WALL_RUN_RIGHT) { - if (!PM_InRoll(pm->ps, pm->ps->legsAnim) && pm->ps->inAirAnim) + if (!BG_InRoll(pm->ps, pm->ps->legsAnim) && pm->ps->inAirAnim) { - if (!PM_SaberInSpecial(pm->ps->saberMove) || pm->ps->weapon != WP_SABER) + if (!BG_SaberInSpecial(pm->ps->saberMove) || pm->ps->weapon != WP_SABER) { pm->ps->legsTimer = TIMER_LAND; } @@ -2213,7 +1828,7 @@ static void PM_CrashLand( void ) { if ( pm->ps->pm_flags & PMF_DUCKED ) { - if( delta >= 2 && !PM_InOnGroundAnim( pm->ps->legsAnim ) && !PM_InKnockDown( pm->ps ) && !PM_InRoll(pm->ps, pm->ps->legsAnim) ) + if( delta >= 2 && !PM_InOnGroundAnim( pm->ps->legsAnim ) && !PM_InKnockDown( pm->ps ) && !BG_InRoll(pm->ps, pm->ps->legsAnim) ) {//roll! int anim = PM_TryRoll(); @@ -2625,7 +2240,7 @@ static void PM_CheckDuck (void) } } - if (PM_InRoll(pm->ps, pm->ps->legsAnim)) + if (BG_InRoll(pm->ps, pm->ps->legsAnim)) { pm->maxs[2] = CROUCH_MAXS_2; pm->ps->viewheight = DEFAULT_VIEWHEIGHT; @@ -2797,7 +2412,7 @@ static void PM_Footsteps( void ) { bobmove = 0.5; // ducked characters bob much faster - if ( PM_RunningAnim( pm->ps->legsAnim ) && !PM_InRoll(pm->ps, pm->ps->legsAnim) ) + if ( PM_RunningAnim( pm->ps->legsAnim ) && !BG_InRoll(pm->ps, pm->ps->legsAnim) ) {//roll! rolled = PM_TryRoll(); } @@ -2877,7 +2492,6 @@ static void PM_Footsteps( void ) { PM_AddEvent( EV_SWIM ); } else if ( pm->waterlevel == 3 ) { // no sound when completely underwater - } } } @@ -3131,7 +2745,6 @@ static qboolean PM_DoChargedWeapons( void ) #ifdef _DEBUG Com_Printf("Starting charge\n"); #endif -// G_SoundOnEnt( pm->gent, CHAN_WEAPON, weaponData[pm->ps->weapon].altChargeSnd ); assert(pm->ps->weapon > WP_NONE); BG_AddPredictableEventToPlayerstate(EV_WEAPON_CHARGE_ALT, pm->ps->weapon, pm->ps); } @@ -3163,8 +2776,6 @@ static qboolean PM_DoChargedWeapons( void ) #ifdef _DEBUG Com_Printf("Starting charge\n"); #endif - -// G_SoundOnEnt( pm->gent, CHAN_WEAPON, weaponData[pm->ps->weapon].chargeSnd ); BG_AddPredictableEventToPlayerstate(EV_WEAPON_CHARGE, pm->ps->weapon, pm->ps); } @@ -3219,101 +2830,6 @@ rest: #define BOWCASTER_CHARGE_UNIT 200.0f // bowcaster charging gives us one more unit every 200ms--if you change this, you'll have to do the same in g_weapon #define BRYAR_CHARGE_UNIT 200.0f // bryar charging gives us one more unit every 200ms--if you change this, you'll have to do the same in g_weapon -// Specific weapons can opt to modify the ammo usage based on charges, otherwise if no special case code -// is handled below, regular ammo usage will happen -//--------------------------------------- -static void PM_DoChargingAmmoUsage( int *amount ) -//--------------------------------------- -{ -// NOTENOTE No charging weapons yet. -/* - int count; - - if ( pm->ps->weapon == WP_BOWCASTER && pm->cmd.buttons & BUTTON_ALT_ATTACK ) - { - // this code is duplicated ( I know, I know ) in G_weapon.cpp for the bowcaster alt-fire - count = ( pm->cmd.serverTime - pm->ps->weaponChargeTime ) / BOWCASTER_CHARGE_UNIT; - - if ( count < 1 ) - { - count = 1; - } - else if ( count > 5 ) - { - count = 5; - } - - if ( !(count & 1 )) - { - // if we aren't odd, knock us down a level - count--; - } - - // Only bother with these checks if we don't have infinite ammo - if ( pm->ps->ammo[ weaponData[pm->ps->weapon].ammoIndex ] != -1 ) - { - int dif = pm->ps->ammo[weaponData[pm->ps->weapon].ammoIndex] - *amount * count; - - // If we have enough ammo to do the full charged shot, we are ok - if ( dif < 0 ) - { - // we are not ok, so hack our chargetime and ammo usage, note that DIF is going to be negative - count += floor(dif / (float)*amount); - - if ( count < 1 ) - { - count = 1; - } - - // now get a real chargeTime so the duplicated code in g_weapon doesn't get freaked - pm->ps->weaponChargeTime = pm->cmd.serverTime - ( count * BOWCASTER_CHARGE_UNIT ); - } - } - - // now that count is cool, get the real ammo usage - *amount *= count; - } - else if ( pm->ps->weapon == WP_BRYAR_PISTOL && pm->cmd.buttons & BUTTON_ALT_ATTACK ) - { - // this code is duplicated ( I know, I know ) in G_weapon.cpp for the bryar alt-fire - count = ( pm->cmd.serverTime - pm->ps->weaponChargeTime ) / BRYAR_CHARGE_UNIT; - - if ( count < 1 ) - { - count = 1; - } - else if ( count > 5 ) - { - count = 5; - } - - // Only bother with these checks if we don't have infinite ammo - if ( pm->ps->ammo[ weaponData[pm->ps->weapon].ammoIndex ] != -1 ) - { - int dif = pm->ps->ammo[weaponData[pm->ps->weapon].ammoIndex] - *amount * count; - - // If we have enough ammo to do the full charged shot, we are ok - if ( dif < 0 ) - { - // we are not ok, so hack our chargetime and ammo usage, note that DIF is going to be negative - count += floor(dif / (float)*amount); - - if ( count < 1 ) - { - count = 1; - } - - // now get a real chargeTime so the duplicated code in g_weapon doesn't get freaked - pm->ps->weaponChargeTime = pm->cmd.serverTime - ( count * BRYAR_CHARGE_UNIT ); - } - } - - // now that count is cool, get the real ammo usage - *amount *= count; - } - */ -} - int PM_ItemUsable(playerState_t *ps, int forcedUse) { vec3_t fwd, fwdorg, dest, pos; @@ -3344,6 +2860,11 @@ int PM_ItemUsable(playerState_t *ps, int forcedUse) { return 0; } + if (ps->stats[STAT_HEALTH] <= 0 || + (ps->eFlags & EF_DEAD)) + { + return 0; + } return 1; case HI_SEEKER: @@ -3513,7 +3034,7 @@ static void PM_Weapon( void ) { desiredAnim = BOTH_FORCEPULL; break; case HANDEXTEND_FORCEGRIP: - desiredAnim = TORSO_FORCEGRIP1; + desiredAnim = BOTH_FORCEGRIP_HOLD; break; case HANDEXTEND_SABERPULL: desiredAnim = BOTH_SABERPULL; @@ -3531,6 +3052,10 @@ static void PM_Weapon( void ) { { desiredAnim = BOTH_FORCE_GETUP_B1; } + else if (pm->ps->forceDodgeAnim == 3) + { + desiredAnim = BOTH_FORCE_GETUP_B3; + } else { desiredAnim = BOTH_GETUP1; @@ -3542,7 +3067,7 @@ static void PM_Weapon( void ) { } break; case HANDEXTEND_DUELCHALLENGE: - desiredAnim = BOTH_FORCEGRIP3; + desiredAnim = BOTH_ENGAGETAUNT; break; case HANDEXTEND_TAUNT: desiredAnim = pm->ps->forceDodgeAnim; @@ -3566,7 +3091,7 @@ static void PM_Weapon( void ) { } if (BG_InSpecialJump(pm->ps->legsAnim) || - PM_InRoll(pm->ps, pm->ps->legsAnim) || + BG_InRoll(pm->ps, pm->ps->legsAnim) || PM_InRollComplete(pm->ps, pm->ps->legsAnim)) { pm->cmd.weapon = WP_SABER; @@ -3591,8 +3116,8 @@ static void PM_Weapon( void ) { pm->cmd.weapon = WP_SABER; //don't allow switching out mid-attack } - if (pm->ps->weapon == WP_SABER /* && !cg.zoomMode */) // WP_LIGHTSABER - { // Separate logic for lightsaber, but not when zoomed + if (pm->ps->weapon == WP_SABER) + { //rww - we still need the item stuff, so we won't return immediately PM_WeaponLightsaber(); killAfterItem = 1; @@ -3627,9 +3152,6 @@ static void PM_Weapon( void ) { return; } -//if(0) // if ( bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_MEDKIT -//{ // && pm->ps->stats[STAT_HEALTH] >= (pm->ps->stats[STAT_MAX_HEALTH] + 25) ) { - // don't use medkit if at max health if (!PM_ItemUsable(pm->ps, 0)) { pm->ps->pm_flags |= PMF_USE_ITEM_HELD; @@ -3731,6 +3253,17 @@ static void PM_Weapon( void ) { } return; } + + if (pm->ps->weapon == WP_DET_PACK && !pm->ps->hasDetPackPlanted && pm->ps->ammo[weaponData[pm->ps->weapon].ammoIndex] < 1) + { + PM_AddEventWithParm( EV_NOAMMO, WP_NUM_WEAPONS+pm->ps->weapon ); + + if (pm->ps->weaponTime < 500) + { + pm->ps->weaponTime += 500; + } + return; + } } } @@ -3756,7 +3289,7 @@ static void PM_Weapon( void ) { if ( pm->ps->weaponstate == WEAPON_RAISING ) { pm->ps->weaponstate = WEAPON_READY; if ( pm->ps->weapon == WP_SABER ) { - PM_StartTorsoAnim( BOTH_STAND2 ); + PM_StartTorsoAnim( PM_GetSaberStance() ); } else { if (pm->ps->weapon == WP_DISRUPTOR && pm->ps->zoomMode == 1) { @@ -3934,9 +3467,9 @@ static void PM_Animate( void ) { pm->ps->forceHandExtend = HANDEXTEND_TAUNT; //FIXME: random taunt anims? - pm->ps->forceDodgeAnim = BOTH_TALKGESTURE3; + pm->ps->forceDodgeAnim = BOTH_ENGAGETAUNT; - pm->ps->forceHandExtendTime = pm->cmd.serverTime + 2000; + pm->ps->forceHandExtendTime = pm->cmd.serverTime + 1000; PM_AddEvent( EV_TAUNT ); } @@ -4065,16 +3598,6 @@ void PM_AdjustAttackStates( pmove_t *pm ) amount = pm->ps->ammo[weaponData[ pm->ps->weapon ].ammoIndex] - weaponData[pm->ps->weapon].energyPerShot; } - /*if ( pm->ps->weapon == WP_SABER && !pm->ps->zoomMode) - { - //saber alt-attack does a normal swing, too - pm->cmd.buttons &= ~BUTTON_ALT_ATTACK; - if ( pm->ps->saberInFlight ) - {//saber not in hand, can't swing it - pm->cmd.buttons &= ~BUTTON_ATTACK; - } - }*/ - // disruptor alt-fire should toggle the zoom mode, but only bother doing this for the player? if ( pm->ps->weapon == WP_DISRUPTOR) { @@ -4121,6 +3644,12 @@ void PM_AdjustAttackStates( pmove_t *pm ) pm->ps->zoomLocked = qtrue; } } + else if (!(pm->ps->eFlags & EF_ALT_FIRING) && (pm->cmd.buttons & BUTTON_ALT_ATTACK) && + (pm->cmd.upmove > 0 || pm->cmd.forwardmove || pm->cmd.rightmove)) + { //if you try to zoom while moving, just convert it into a primary attack + pm->cmd.buttons &= ~BUTTON_ALT_ATTACK; + pm->cmd.buttons |= BUTTON_ATTACK; + } if (pm->cmd.upmove > 0 || pm->cmd.forwardmove || pm->cmd.rightmove) { @@ -4135,10 +3664,6 @@ void PM_AdjustAttackStates( pmove_t *pm ) if ( pm->cmd.buttons & BUTTON_ATTACK ) { - if ( pm->ps->weapon == WP_DISRUPTOR && pm->ps->zoomTime+1500 > pm->cmd.serverTime) - { //make it so we can't fire in zoomed mode until we've been zoomed for a moment - pm->cmd.buttons &= ~BUTTON_ATTACK; - } // If we are zoomed, we should switch the ammo usage to the alt-fire, otherwise, we'll // just use whatever ammo was selected from above if ( pm->ps->zoomMode ) @@ -4303,7 +3828,8 @@ void BG_AdjustClientSpeed(playerState_t *ps, usercmd_t *cmd, int svTime) else if ((svTime - ps->holdMoveTime) < 1700) { ps->speed *= 0.7; - } else if ((svTime - ps->holdMoveTime) < 1900) + } + else if ((svTime - ps->holdMoveTime) < 1900) { ps->speed *= 0.8; } @@ -4318,7 +3844,6 @@ void BG_AdjustClientSpeed(playerState_t *ps, usercmd_t *cmd, int svTime) { ps->torsoAnim = ( ( ps->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | BOTH_RUN1; - //ps->speed *= 0.8; } } @@ -4361,7 +3886,7 @@ void BG_AdjustClientSpeed(playerState_t *ps, usercmd_t *cmd, int svTime) } } - if ( PM_SaberInAttack( ps->saberMove ) && cmd->forwardmove < 0 ) + if ( BG_SaberInAttack( ps->saberMove ) && cmd->forwardmove < 0 ) {//if running backwards while attacking, don't run as fast. switch( ps->fd.saberAnimLevel ) { @@ -4382,7 +3907,7 @@ void BG_AdjustClientSpeed(playerState_t *ps, usercmd_t *cmd, int svTime) { ps->speed *= 0.5f; } - else if ( ps->weapon == WP_SABER && PM_SaberInAttack( ps->saberMove ) ) + else if ( ps->weapon == WP_SABER && BG_SaberInAttack( ps->saberMove ) ) {//if attacking with saber while running, drop your speed switch( ps->fd.saberAnimLevel ) { @@ -4398,7 +3923,7 @@ void BG_AdjustClientSpeed(playerState_t *ps, usercmd_t *cmd, int svTime) } - if ( PM_InRoll( ps, ps->legsAnim ) && ps->speed > 200 ) + if ( BG_InRoll( ps, ps->legsAnim ) && ps->speed > 200 ) { //can't roll unless you're able to move normally BG_CmdForRoll( ps->legsAnim, cmd ); ps->speed = ps->legsTimer/1.5;//450; @@ -4524,13 +4049,6 @@ void PmoveSingle (pmove_t *pmove) { pm->cmd.buttons &= ~BUTTON_WALKING; } - // set the talk balloon flag -// if ( pm->cmd.buttons & BUTTON_TALK ) { -// pm->ps->eFlags |= EF_TALK; -// } else { -// pm->ps->eFlags &= ~EF_TALK; -// } - // In certain situations, we may want to control which attack buttons are pressed and what kind of functionality // is attached to them PM_AdjustAttackStates( pm ); @@ -4541,18 +4059,6 @@ void PmoveSingle (pmove_t *pmove) { pm->ps->pm_flags &= ~PMF_RESPAWNED; } - // if talk button is down, dissallow all other input - // this is to prevent any possible intercept proxy from - // adding fake talk balloons -// if ( pmove->cmd.buttons & BUTTON_TALK ) { - // keep the talk button set tho for when the cmd.serverTime > 66 msec - // and the same cmd is used multiple times in Pmove -// pmove->cmd.buttons = BUTTON_TALK; -// pmove->cmd.forwardmove = 0; -// pmove->cmd.rightmove = 0; -// pmove->cmd.upmove = 0; -// } - // clear all pmove local vars memset (&pml, 0, sizeof(pml)); @@ -4583,12 +4089,6 @@ void PmoveSingle (pmove_t *pmove) { pm->ps->pm_flags &= ~PMF_JUMP_HELD; } -// if (pm->ps->groundEntityNum == ENTITYNUM_NONE || pml.groundTrace.fraction == 1) -// { //No holding jump in air to jump upon land -// pm->cmd.upmove = 0; -// pm->ps->pm_flags |= PMF_JUMP_HELD; -// } - // decide if backpedaling animations should be used if ( pm->cmd.forwardmove < 0 ) { pm->ps->pm_flags |= PMF_BACKWARDS_RUN; @@ -4696,10 +4196,6 @@ void PmoveSingle (pmove_t *pmove) { // PM_UpdateGhoul2AnimFromState(); } - // torso animation -// rww - This didn't seem to do anything at all.. -// PM_TorsoAnimation(); - // footstep events / legs animations PM_Footsteps(); diff --git a/CODEmp/game/bg_public.h b/CODE-mp/game/bg_public.h similarity index 94% rename from CODEmp/game/bg_public.h rename to CODE-mp/game/bg_public.h index 3eba615..5e84952 100644 --- a/CODEmp/game/bg_public.h +++ b/CODE-mp/game/bg_public.h @@ -18,6 +18,8 @@ #define ARMOR_PROTECTION 0.50 // Shields only stop 50% of armor-piercing dmg #define ARMOR_REDUCTION_FACTOR 0.50 // Certain damage doesn't take off armor as efficiently +#define JUMP_VELOCITY 225//270 + #define MAX_ITEMS 256 #define RANK_TIED_FLAG 0x4000 @@ -352,6 +354,7 @@ typedef enum { #define EF_SOUNDTRACKER 0x00800000 // sound position needs to be updated in relation to another entity #define EF_DROPPEDWEAPON 0x01000000 // it's a dropped weapon #define EF_DISINTEGRATION 0x02000000 // being disintegrated by the disruptor +#define EF_INVULNERABLE 0x04000000 // just spawned in or whatever, so is protected @@ -955,9 +958,20 @@ typedef struct extern saberMoveData_t saberMoveData[LS_MOVE_MAX]; +//BG anim utility functions: qboolean BG_InSpecialJump( int anim ); +qboolean BG_InSaberStandAnim( int anim ); +qboolean BG_DirectFlippingAnim( int anim ); +qboolean BG_SaberInAttack( int move ); +qboolean BG_SaberInSpecial( int move ); +qboolean BG_SaberInIdle( int move ); qboolean BG_FlippingAnim( int anim ); qboolean BG_SpinningSaberAnim( int anim ); +qboolean BG_SaberInSpecialAttack( int anim ); +qboolean BG_InRoll( playerState_t *ps, int anim ); +qboolean BG_InDeathAnim( int anim ); + +void BG_SaberStartTransAnim( int saberAnimLevel, int anim, float *animSpeed ); void BG_EvaluateTrajectory( const trajectory_t *tr, int atTime, vec3_t result ); void BG_EvaluateTrajectoryDelta( const trajectory_t *tr, int atTime, vec3_t result ); diff --git a/CODEmp/game/bg_saber.c b/CODE-mp/game/bg_saber.c similarity index 84% rename from CODEmp/game/bg_saber.c rename to CODE-mp/game/bg_saber.c index 01b60cb..ec258db 100644 --- a/CODEmp/game/bg_saber.c +++ b/CODE-mp/game/bg_saber.c @@ -278,7 +278,7 @@ saberMoveName_t PM_AttackMoveForQuad( int quad ) int PM_SaberAnimTransitionAnim( int curmove, int newmove ) { - //FIXME: take FP_SABER_OFFENSE into account here somehow? + //FIXME: take FP_SABERATTACK into account here somehow? int retmove = newmove; if ( curmove == LS_READY ) {//just standing there @@ -620,11 +620,6 @@ void PM_SaberLockBreak( playerState_t *genemy, qboolean victory ) { BG_AddPredictableEventToPlayerstate(EV_JUMP, PM_irand_timesync( 0, 75 ), genemy); } - else - { - //G_AddVoiceEvent( genemy, Q_irand( EV_PUSHED1, EV_PUSHED3 ), 500 ); - } - //FIXME: possibly knock saber out of hand? } } @@ -743,13 +738,6 @@ void PM_SaberLocked( void ) } } } - else - {//FIXME: other ways out of a saberlock? - //force-push? (requires more force power?) - //kick? (requires anim ... hit jump key?) - //roll? - //backflip? - } } else {//something broke us out of it @@ -863,7 +851,6 @@ saberMoveName_t PM_SaberFlipOverAttackMove(trace_t *tr) } pm->ps->fd.forceJumpZStart = pm->ps->origin[2];//so we don't take damage if we land at same height - //pm->ps->pm_flags |= PMF_JUMPING; PM_AddEvent( EV_JUMP ); pm->ps->fd.forceJumpSound = 1; @@ -1077,7 +1064,6 @@ void PM_WeaponLightsaber(void) { int addTime,amount; qboolean delayed_fire = qfalse; -// weaponInfo_t *weapon; int anim=-1, curmove, newmove=LS_NONE; qboolean saberInAir = qtrue; @@ -1138,7 +1124,7 @@ void PM_WeaponLightsaber(void) PM_SetAnim(SETANIM_TORSO,(pm->ps->legsAnim & ~ANIM_TOGGLEBIT),SETANIM_FLAG_OVERRIDE, 100); } - if ((pm->ps->torsoAnim & ~ANIM_TOGGLEBIT) == BOTH_STAND2) + if (BG_InSaberStandAnim(pm->ps->torsoAnim)) { PM_SetAnim(SETANIM_TORSO,BOTH_STAND1,SETANIM_FLAG_OVERRIDE, 100); } @@ -1185,20 +1171,6 @@ void PM_WeaponLightsaber(void) return; } - // NOTENOTE Still have to ferret out the difference between this and the weaponTime - /* - if(pm->gent && pm->gent->client && pm->gent->client->fireDelay > 0) - {//FIXME: this is going to fire off one frame before you expect, actually - pm->gent->client->fireDelay -= pml.msec; - if(pm->gent->client->fireDelay <= 0) - {//just finished delay timer - pm->gent->client->fireDelay = 0; - delayed_fire = qtrue; - } - } - */ - - // don't allow attack until all buttons are up if ( pm->ps->pm_flags & PMF_RESPAWNED ) { return; @@ -1206,15 +1178,6 @@ void PM_WeaponLightsaber(void) // check for dead player if ( pm->ps->stats[STAT_HEALTH] <= 0 ) { -// pm->ps->weapon = WP_NONE; - - // NOTENOTE Loopsound must be controlled, but not this way. - /* - if ( pm->gent ) - { - pm->gent->s.loopSound = 0; - } - */ return; } @@ -1245,10 +1208,6 @@ void PM_WeaponLightsaber(void) PM_SetAnim(SETANIM_TORSO,saberMoveData[pm->ps->saberMove].animToUse,saberMoveData[pm->ps->saberMove].animSetFlags|SETANIM_FLAG_HOLD, saberMoveData[pm->ps->saberMove].blendTime); return; } - else if (pm->ps->saberBlocked) - { - //return; - } } else { @@ -1260,21 +1219,11 @@ void PM_WeaponLightsaber(void) { int firstSet = 0; - /* - if ( pm->ps->saberMove > LS_PUTAWAY && pm->ps->saberMove <= LS_A_BL2TR && - (pm->ps->saberBlocked < BLOCKED_UPPER_RIGHT_PROJ || pm->ps->saberBlocked > BLOCKED_TOP_PROJ))//&& Q_irand( 0, 2 ) - {//we parried another lightsaber while attacking, so treat it as a bounce - pm->ps->saberBlocked = BLOCKED_ATK_BOUNCE; - } - */ - if (!pm->ps->weaponTime) { firstSet = 1; } - // pm->ps->weaponTime = 0;//SABER_BLOCK_DUR; - switch ( pm->ps->saberBlocked ) { case BLOCKED_PARRY_BROKEN: @@ -1303,14 +1252,6 @@ void PM_WeaponLightsaber(void) case BLOCKED_ATK_BOUNCE: // If there is absolutely no blocked move in the chart, don't even mess with the animation. // OR if we are already in a block or parry. - -/* - if ( !pm->ps->clientNum ) - { - G_DynaMixEvent( DM_BOUNCE ); - } -*/ - if (pm->ps->saberMove >= LS_T1_BR__R/*LS_BOUNCE_TOP*/ )//|| saberMoveData[pm->ps->saberMove].bounceMove == LS_NONE ) {//an actual bounce? Other bounces before this are actually transitions? pm->ps->saberBlocked = BLOCKED_NONE; @@ -1395,8 +1336,6 @@ void PM_WeaponLightsaber(void) if (firstSet) { - // PM_SetAnim(SETANIM_TORSO,saberMoveData[pm->ps->saberMove].animToUse,saberMoveData[pm->ps->saberMove].animSetFlags|SETANIM_FLAG_HOLD, saberMoveData[pm->ps->saberMove].blendTime); - // pm->ps->torsoAnim = saberMoveData[pm->ps->saberMove].animToUse; return; } @@ -1452,7 +1391,7 @@ weapChecks: } else { - PM_SetAnim(SETANIM_TORSO,BOTH_STAND2,SETANIM_FLAG_NORMAL, 100); + PM_SetAnim(SETANIM_TORSO,PM_GetSaberStance(),SETANIM_FLAG_NORMAL, 100); } if (pm->ps->weaponstate == WEAPON_RAISING) @@ -1472,7 +1411,6 @@ weapChecks: // ********************************************************* // NOTENOTE This is simply a client-side struct. Anything that is needed client and server should be moved to bg_weapon. -// weapon = &cg_weapons[pm->ps->weapon]; if(!delayed_fire) { @@ -1488,12 +1426,6 @@ weapChecks: // check for fire if ( !(pm->cmd.buttons & (BUTTON_ATTACK/*|BUTTON_ALT_ATTACK*/)) ) { - // pm->ps->weaponTime = 0; - - // NOTENOTE There is no fireDelay maintained as of yet. - /* - if ( pm->gent && pm->gent->client && pm->gent->client->fireDelay > 0 ) - */ if (pm->ps->weaponTime != 0) {//Still firing pm->ps->weaponstate = WEAPON_FIRING; @@ -1503,11 +1435,7 @@ weapChecks: pm->ps->weaponstate = WEAPON_IDLE; } //Check for finishing an anim if necc. - /*if (!pm->ps->weaponTime) - { - return; - } - else */if ( curmove >= LS_S_TL2BR && curmove <= LS_S_T2B ) + if ( curmove >= LS_S_TL2BR && curmove <= LS_S_T2B ) {//started a swing, must continue from here newmove = LS_A_TL2BR + (curmove-LS_S_TL2BR); } @@ -1515,12 +1443,6 @@ weapChecks: {//finished an attack, must continue from here newmove = LS_R_TL2BR + (curmove-LS_A_TL2BR); } - /* - else if ( curmove >= LS_T1_BR__R && curmove <= LS_T1_BL__L ) - {//in a transition, must play sequential attack - newmove = saberMoveData[curmove].chain_attack; - } - */ else if ( PM_SaberInTransition( curmove ) ) {//in a transition, must play sequential attack newmove = saberMoveData[curmove].chain_attack; @@ -1541,26 +1463,6 @@ weapChecks: saberInAir = qtrue; - // NOTENOTE Currently there is no support for sabers in flight. - /* - if ( pm->ps->saberInFlight ) - {//guiding saber - if ( pm->ps->saberEntityNum < ENTITYNUM_NONE && pm->ps->saberEntityNum > 0 )//player is 0 - {// - if ( &g_entities[pm->ps->saberEntityNum] != NULL && g_entities[pm->ps->saberEntityNum].s.pos.trType == TR_STATIONARY ) - {//fell to the ground and we're not trying to pull it back - saberInAir = qfalse; - } - } - } - - if ( pm->ps->weapon == WP_SABER && pm->ps->saberInFlight && saberInAir ) - {//guiding saber - PM_SetAnim(SETANIM_TORSO,BOTH_SABERPULL,SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100); - } - else - */ - if ( pm->ps->weaponTime > 0 ) { // Last attack is not yet complete. pm->ps->weaponstate = WEAPON_FIRING; @@ -1595,15 +1497,7 @@ weapChecks: if ( newmove != LS_NONE ) {//have a valid, final LS_ move picked, so skip findingt he transition move and just get the anim - - // NOTENOTE Had to remove this concept since there is no gent in pmove. - /* - if (PM_HasAnimation( pm->gent, saberMoveData[newmove].animToUse)) - */ - if (1) - { - anim = saberMoveData[newmove].animToUse; - } + anim = saberMoveData[newmove].animToUse; } //FIXME: diagonal dirs use the figure-eight attacks from ready pose? @@ -1659,21 +1553,9 @@ weapChecks: {//not side-stepping, pick neutral anim // Add randomness for prototype? newmove = saberMoveData[curmove].chain_attack; - // NOTENOTE Had to remove this concept since there is no gent in pmove. - /* - if (PM_HasAnimation( pm->gent, saberMoveData[newmove].animToUse)) - */ - if (1) - { - anim= saberMoveData[newmove].animToUse; - } -/* - anim = PM_PickAnim( pm->gent, BOTH_MELEE3, BOTH_MELEE4 ); - if ( anim == -1 ) - { - anim = PM_PickAnim( pm->gent, BOTH_MELEE1, BOTH_MELEE2 ); - } -*/ + + anim= saberMoveData[newmove].animToUse; + if ( !pm->cmd.forwardmove && !pm->cmd.rightmove && pm->cmd.upmove >= 0 && pm->ps->groundEntityNum != ENTITYNUM_NONE ) {//not moving at all, so set the anim on entire body both = qtrue; @@ -1697,8 +1579,7 @@ weapChecks: } else { - //FIXME: play both_stand2_random1 when you've been idle for a while - anim = BOTH_STAND2; + anim = PM_GetSaberStance(); } newmove = LS_READY; } @@ -1715,25 +1596,8 @@ weapChecks: PM_SetAnim(SETANIM_LEGS,anim,SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 100); } - // NOTENOTE Had to remove this concept since there is no gent in pmove. - /* - if ( pm->gent && pm->gent->client ) - { -// pm->gent->client->saberTrail.inAction = qtrue; -// pm->gent->client->saberTrail.duration = 75; // saber trail lasts for 75ms...feel free to change this if you want it longer or shorter - } - */ - //don't fire again until anim is done pm->ps->weaponTime = pm->ps->torsoTimer; - - /* - //FIXME: this may be making it so sometimes you can't swing again right away... - if ( newmove == LS_READY ) - { - pm->ps->weaponTime = 500; - } - */ } } @@ -1743,116 +1607,18 @@ weapChecks: pm->ps->weaponstate = WEAPON_FIRING; -// if ( pm->cmd.buttons & BUTTON_ALT_ATTACK ) -// amount = weaponData[pm->ps->weapon].altEnergyPerShot; -// else - amount = weaponData[pm->ps->weapon].energyPerShot; - - // NOTENOTE Silly usage of gents everywhere!!! Must... deal... with... them... - /* - if ( pm->gent && pm->gent->client && pm->gent->client->fireDelay > 0 ) - */ - if (0) - {//FIXME: this is going to fire off one frame before you expect, actually - // Clear these out since we're not actually firing yet - pm->ps->eFlags &= ~EF_FIRING; - pm->ps->eFlags &= ~EF_ALT_FIRING; - return; - } + amount = weaponData[pm->ps->weapon].energyPerShot; addTime = pm->ps->weaponTime; - /* - if ( pm->cmd.buttons & BUTTON_ALT_ATTACK ) { - pm->ps->saberAttackSequence = pm->ps->torsoAnim; - if ( !addTime ) - { - addTime = weaponData[pm->ps->weapon].altFireTime; - } + pm->ps->saberAttackSequence = pm->ps->torsoAnim; + if ( !addTime ) + { + addTime = weaponData[pm->ps->weapon].fireTime; } - else {*/ - pm->ps->saberAttackSequence = pm->ps->torsoAnim; - if ( !addTime ) - { - addTime = weaponData[pm->ps->weapon].fireTime; - } - //} - - //pm->ps->weaponTime += addTime; pm->ps->weaponTime = addTime; } -qboolean PM_SaberInAttack( int move ) -{ - if ( move >= LS_A_TL2BR && move <= LS_A_T2B ) - { - return qtrue; - } - switch ( move ) - { - case LS_A_BACK: - case LS_A_BACK_CR: - case LS_A_BACKSTAB: - case LS_A_LUNGE: - case LS_A_JUMP_T__B_: - case LS_A_FLIP_STAB: - case LS_A_FLIP_SLASH: - return qtrue; - break; - } - return qfalse; -} - -qboolean PM_SaberInSpecial( int move ) -{ - switch( move ) - { - case LS_A_BACK: - case LS_A_BACK_CR: - case LS_A_BACKSTAB: - case LS_A_LUNGE: - case LS_A_JUMP_T__B_: - case LS_A_FLIP_STAB: - case LS_A_FLIP_SLASH: - return qtrue; - } - return qfalse; -} - -qboolean PM_SaberInIdle( int move ) -{ - switch ( move ) - { - case LS_NONE: - case LS_READY: - case LS_DRAW: - case LS_PUTAWAY: - return qtrue; - break; - } - return qfalse; -} - -qboolean PM_SaberInParry( int move ) -{ - if ( move >= LS_PARRY_UP && move <= LS_PARRY_LL ) - { - return qtrue; - } - return qfalse; -} - -qboolean PM_SaberInReflect( int move ) -{ - if ( move >= LS_REFLECT_UP && move <= LS_REFLECT_LL ) - { - return qtrue; - } - return qfalse; -} - -qboolean PM_SaberInSpecialAttack( int anim ); - void PM_SetSaberMove(short newMove) { unsigned int setflags = saberMoveData[newMove].animSetFlags; @@ -1863,13 +1629,13 @@ void PM_SetSaberMove(short newMove) {//finished with a kata, reset attack counter pm->ps->saberAttackChainCount = 0; } - else if ( PM_SaberInAttack( newMove ) ) + else if ( BG_SaberInAttack( newMove ) ) {//continuing with a kata, increment attack counter pm->ps->saberAttackChainCount++; } if ( pm->ps->fd.saberAnimLevel > FORCE_LEVEL_1 && - !PM_SaberInIdle( newMove ) && !PM_SaberInParry( newMove ) && !PM_SaberInReflect( newMove ) && !PM_SaberInSpecial(newMove)) + !BG_SaberInIdle( newMove ) && !PM_SaberInParry( newMove ) && !PM_SaberInReflect( newMove ) && !BG_SaberInSpecial(newMove)) {//readies, parries and reflections have only 1 level //increment the anim to the next level of saber anims if ( !PM_SaberInTransition( newMove ) ) @@ -1887,49 +1653,24 @@ void PM_SetSaberMove(short newMove) //saber torso anims should always be highest priority setflags |= SETANIM_FLAG_OVERRIDE; - // NOTENOTE Had to remove this concept since there is no gent in pmove. - /* - if ( cg_debugAnim.integer > 0 && pm->gent ) + if ( BG_InSaberStandAnim(anim) || anim == BOTH_STAND1 ) { - if ( !PM_HasAnimation( pm->gent, anim ) ) - { - Com_Printf( S_COLOR_RED"ERROR: No saber anim %s!\n", animTable[anim].name ); - } - } - */ - - if ( anim == BOTH_STAND2 || anim == BOTH_STAND1 ) - { - //FIXME: play both_stand2_random1 when you've been idle for a while - /*if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK1 ) - { - anim = BOTH_WALK1; - } - else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_RUN1 ) - { - anim = BOTH_RUN1; - } - else if((pm->ps->legsAnim & ~ANIM_TOGGLEBIT) == BOTH_WALK2 ) - { - anim = BOTH_WALK2; - }*/ - anim = (pm->ps->legsAnim & ~ANIM_TOGGLEBIT); if ((anim >= BOTH_STAND1 && anim <= BOTH_STAND4TOATTACK2) || (anim >= TORSO_DROPWEAP1 && anim <= TORSO_WEAPONIDLE12)) { //If standing then use the special saber stand anim - anim = BOTH_STAND2; + anim = PM_GetSaberStance(); } if (pm->ps->pm_flags & PMF_DUCKED) { //Playing torso walk anims while crouched makes you look like a monkey - anim = BOTH_STAND2; + anim = PM_GetSaberStance(); } if (anim == BOTH_WALKBACK1 || anim == BOTH_WALKBACK2) { //normal stance when walking backward so saber doesn't look like it's cutting through leg - anim = BOTH_STAND2; + anim = PM_GetSaberStance(); } parts = SETANIM_TORSO; @@ -1955,7 +1696,7 @@ void PM_SetSaberMove(short newMove) {//successfully changed anims //special check for *starting* a saber swing //playing at attack - if ( PM_SaberInAttack( newMove ) || PM_SaberInSpecialAttack( anim ) ) + if ( BG_SaberInAttack( newMove ) || BG_SaberInSpecialAttack( anim ) ) { if ( pm->ps->saberMove != newMove ) {//wasn't playing that attack before @@ -1968,28 +1709,10 @@ void PM_SetSaberMove(short newMove) pm->ps->torsoAnim = anim;//saberMoveData[newMove].animToUse; - // NOTENOTE All clients are players, so clientnum=0 should mean always in MP -// if ( pm->ps->saberBlocked <= BLOCKED_ATK_BOUNCE || pm->ps->clientNum == 0 || !pm->ps->saberActive || (newMove < LS_PARRY_UR || newMove > LS_DEFLECT_LL) ) if (pm->ps->weaponTime <= 0) - {//NPCs only clear blocked if not blocking? + { pm->ps->saberBlocked = BLOCKED_NONE; } - - // NOTENOTE Had to remove this concept since there is no gent in pmove. - /* - if ( pm->gent && pm->gent->client ) - { - if ( saberMoveData[newMove].trailLength > 0 ) - { - pm->gent->client->saberTrail.inAction = qtrue; - pm->gent->client->saberTrail.duration = saberMoveData[newMove].trailLength; // saber trail lasts for 75ms...feel free to change this if you want it longer or shorter - } - else - { - pm->gent->client->saberTrail.inAction = qfalse; - } - } - */ } } diff --git a/CODEmp/game/bg_saga.h b/CODE-mp/game/bg_saga.h similarity index 100% rename from CODEmp/game/bg_saga.h rename to CODE-mp/game/bg_saga.h diff --git a/CODEmp/game/bg_slidemove.c b/CODE-mp/game/bg_slidemove.c similarity index 100% rename from CODEmp/game/bg_slidemove.c rename to CODE-mp/game/bg_slidemove.c diff --git a/CODEmp/game/bg_weapons.c b/CODE-mp/game/bg_weapons.c similarity index 100% rename from CODEmp/game/bg_weapons.c rename to CODE-mp/game/bg_weapons.c diff --git a/CODEmp/game/bg_weapons.h b/CODE-mp/game/bg_weapons.h similarity index 100% rename from CODEmp/game/bg_weapons.h rename to CODE-mp/game/bg_weapons.h diff --git a/CODEmp/game/botlib.h b/CODE-mp/game/botlib.h similarity index 97% rename from CODEmp/game/botlib.h rename to CODE-mp/game/botlib.h index 281a6f4..0d77769 100644 --- a/CODEmp/game/botlib.h +++ b/CODE-mp/game/botlib.h @@ -408,6 +408,8 @@ typedef struct botlib_export_s int (*PC_FreeSourceHandle)(int handle); int (*PC_ReadTokenHandle)(int handle, pc_token_t *pc_token); int (*PC_SourceFileAndLine)(int handle, char *filename, int *line); + int (*PC_LoadGlobalDefines)(const char* filename ); + void (*PC_RemoveAllGlobalDefines) ( void ); //start a frame in the bot library int (*BotLibStartFrame)(float time); diff --git a/CODEmp/game/chars.h b/CODE-mp/game/chars.h similarity index 100% rename from CODEmp/game/chars.h rename to CODE-mp/game/chars.h diff --git a/CODEmp/game/g_active.c b/CODE-mp/game/g_active.c similarity index 86% rename from CODEmp/game/g_active.c rename to CODE-mp/game/g_active.c index 8e24980..4473d7b 100644 --- a/CODEmp/game/g_active.c +++ b/CODE-mp/game/g_active.c @@ -762,15 +762,21 @@ void ClientEvents( gentity_t *ent, int oldEventSequence ) { case EV_FIRE_WEAPON: FireWeapon( ent, qfalse ); ent->client->dangerTime = level.time; + ent->client->ps.eFlags &= ~EF_INVULNERABLE; + ent->client->invulnerableTimer = 0; break; case EV_ALT_FIRE: FireWeapon( ent, qtrue ); ent->client->dangerTime = level.time; + ent->client->ps.eFlags &= ~EF_INVULNERABLE; + ent->client->invulnerableTimer = 0; break; case EV_SABER_ATTACK: ent->client->dangerTime = level.time; + ent->client->ps.eFlags &= ~EF_INVULNERABLE; + ent->client->invulnerableTimer = 0; break; //rww - Note that these must be in the same order (ITEM#-wise) as they are in holdable_t @@ -881,6 +887,128 @@ void SendPendingPredictableEvents( playerState_t *ps ) { extern int saberOffSound; extern int saberOnSound; +/* +================== +G_UpdateClientBroadcasts + +Determines whether this client should be broadcast to any other clients. +A client is broadcast when another client is using force sight or is +================== +*/ +#define MAX_JEDIMASTER_DISTANCE 2500 +#define MAX_JEDIMASTER_FOV 100 + +#define MAX_SIGHT_DISTANCE 1500 +#define MAX_SIGHT_FOV 100 + +static void G_UpdateForceSightBroadcasts ( gentity_t *self ) +{ + int i; + + // Any clients with force sight on should see this client + for ( i = 0; i < level.numConnectedClients; i ++ ) + { + gentity_t *ent = &g_entities[level.sortedClients[i]]; + float dist; + vec3_t angles; + + if ( ent == self ) + { + continue; + } + + // Not using force sight so we shouldnt broadcast to this one + if ( !(ent->client->ps.fd.forcePowersActive & (1<client->ps.origin, ent->client->ps.origin, angles ); + dist = VectorLengthSquared ( angles ); + vectoangles ( angles, angles ); + + // Too far away then just forget it + if ( dist > MAX_SIGHT_DISTANCE * MAX_SIGHT_DISTANCE ) + { + continue; + } + + // If not within the field of view then forget it + if ( !InFieldOfVision ( ent->client->ps.viewangles, MAX_SIGHT_FOV, angles ) ) + { + break; + } + + // Turn on the broadcast bit for the master and since there is only one + // master we are done + self->r.broadcastClients[ent->s.clientNum/32] |= (1 << (ent->s.clientNum%32)); + + break; + } +} + +static void G_UpdateJediMasterBroadcasts ( gentity_t *self ) +{ + int i; + + // Not jedi master mode then nothing to do + if ( g_gametype.integer != GT_JEDIMASTER ) + { + return; + } + + // This client isnt the jedi master so it shouldnt broadcast + if ( !self->client->ps.isJediMaster ) + { + return; + } + + // Broadcast ourself to all clients within range + for ( i = 0; i < level.numConnectedClients; i ++ ) + { + gentity_t *ent = &g_entities[level.sortedClients[i]]; + float dist; + vec3_t angles; + + if ( ent == self ) + { + continue; + } + + VectorSubtract( self->client->ps.origin, ent->client->ps.origin, angles ); + dist = VectorLengthSquared ( angles ); + vectoangles ( angles, angles ); + + // Too far away then just forget it + if ( dist > MAX_JEDIMASTER_DISTANCE * MAX_JEDIMASTER_DISTANCE ) + { + continue; + } + + // If not within the field of view then forget it + if ( !InFieldOfVision ( ent->client->ps.viewangles, MAX_JEDIMASTER_FOV, angles ) ) + { + continue; + } + + // Turn on the broadcast bit for the master and since there is only one + // master we are done + self->r.broadcastClients[ent->s.clientNum/32] |= (1 << (ent->s.clientNum%32)); + } +} + +void G_UpdateClientBroadcasts ( gentity_t *self ) +{ + // Clear all the broadcast bits for this client + memset ( self->r.broadcastClients, 0, sizeof ( self->r.broadcastClients ) ); + + // The jedi master is broadcast to everyone in range + G_UpdateJediMasterBroadcasts ( self ); + + // Anyone with force sight on should see this client + G_UpdateForceSightBroadcasts ( self ); +} + /* ============== ClientThink @@ -959,6 +1087,14 @@ void ClientThink_real( gentity_t *ent ) { return; } + if (ent && ent->client && (ent->client->ps.eFlags & EF_INVULNERABLE)) + { + if (ent->client->invulnerableTimer <= level.time) + { + ent->client->ps.eFlags &= ~EF_INVULNERABLE; + } + } + // check for inactivity timer, but never drop the local client of a non-dedicated server if ( !ClientInactivityTimer( client ) ) { return; @@ -1065,7 +1201,16 @@ void ClientThink_real( gentity_t *ent ) { //Winner gets full health.. providing he's still alive if (ent->health > 0 && ent->client->ps.stats[STAT_HEALTH] > 0) { - ent->client->ps.stats[STAT_HEALTH] = ent->health = ent->client->ps.stats[STAT_MAX_HEALTH]; + if (ent->health < ent->client->ps.stats[STAT_MAX_HEALTH]) + { + ent->client->ps.stats[STAT_HEALTH] = ent->health = ent->client->ps.stats[STAT_MAX_HEALTH]; + } + + if (g_spawnInvulnerability.integer) + { + ent->client->ps.eFlags |= EF_INVULNERABLE; + ent->client->invulnerableTimer = level.time + g_spawnInvulnerability.integer; + } } /* @@ -1075,7 +1220,7 @@ void ClientThink_real( gentity_t *ent ) { //Private duel announcements are now made globally because we only want one duel at a time. if (ent->health > 0 && ent->client->ps.stats[STAT_HEALTH] > 0) { - trap_SendServerCommand( -1, va("cp \"%s %s\n\"", ent->client->pers.netname, G_GetStripEdString("SVINGAME", "PLDUELWINNER")) ); + trap_SendServerCommand( -1, va("cp \"%s %s %s!\n\"", ent->client->pers.netname, G_GetStripEdString("SVINGAME", "PLDUELWINNER"), duelAgainst->client->pers.netname) ); } else { //it was a draw, because we both managed to die in the same frame @@ -1375,6 +1520,37 @@ void ClientThink_real( gentity_t *ent ) { // perform once-a-second actions ClientTimerActions( ent, msec ); + + G_UpdateClientBroadcasts ( ent ); +} + +/* +================== +G_CheckClientTimeouts + +Checks whether a client has exceded any timeouts and act accordingly +================== +*/ +void G_CheckClientTimeouts ( gentity_t *ent ) +{ + // Only timeout supported right now is the timeout to spectator mode + if ( !g_timeouttospec.integer ) + { + return; + } + + // Already a spectator, no need to boot them to spectator + if ( ent->client->sess.sessionTeam == TEAM_SPECTATOR ) + { + return; + } + + // See how long its been since a command was received by the client and if its + // longer than the timeout to spectator then force this client into spectator mode + if ( level.time - ent->client->pers.cmd.serverTime > g_timeouttospec.integer * 1000 ) + { + SetTeam ( ent, "spectator" ); + } } /* diff --git a/CODEmp/game/g_arenas.c b/CODE-mp/game/g_arenas.c similarity index 100% rename from CODEmp/game/g_arenas.c rename to CODE-mp/game/g_arenas.c diff --git a/CODEmp/game/g_bot.c b/CODE-mp/game/g_bot.c similarity index 100% rename from CODEmp/game/g_bot.c rename to CODE-mp/game/g_bot.c diff --git a/CODEmp/game/g_client.c b/CODE-mp/game/g_client.c similarity index 94% rename from CODEmp/game/g_client.c rename to CODE-mp/game/g_client.c index 40948b3..f54bc57 100644 --- a/CODEmp/game/g_client.c +++ b/CODE-mp/game/g_client.c @@ -67,7 +67,7 @@ void SP_info_player_intermission( gentity_t *ent ) { } -#define JMSABER_RESPAWN_TIME 60000 //in case it gets stuck somewhere no one can reach +#define JMSABER_RESPAWN_TIME 20000 //in case it gets stuck somewhere no one can reach void ThrowSaberToAttacker(gentity_t *self, gentity_t *attacker) @@ -211,14 +211,25 @@ void JMSaberTouch(gentity_t *self, gentity_t *other, trace_t *trace) other->s.weapon = WP_SABER; G_AddEvent(other, EV_BECOME_JEDIMASTER, 0); + if (g_spawnInvulnerability.integer) + { + other->client->ps.eFlags |= EF_INVULNERABLE; + other->client->invulnerableTimer = level.time + g_spawnInvulnerability.integer; + } + trap_SendServerCommand( -1, va("cp \"%s %s\n\"", other->client->pers.netname, G_GetStripEdString("SVINGAME", "BECOMEJM")) ); other->client->ps.isJediMaster = qtrue; other->client->ps.saberIndex = self->s.number; - if (other->health < 100) + if (other->health < 200 && other->health > 0) { //full health when you become the Jedi Master - other->client->ps.stats[STAT_HEALTH] = other->health = 100; + other->client->ps.stats[STAT_HEALTH] = other->health = 200; + } + + if (other->client->ps.fd.forcePower < 100) + { + other->client->ps.fd.forcePower = 100; } while (i < NUM_FORCE_POWERS) @@ -277,6 +288,8 @@ void SP_info_jedimaster_start(gentity_t *ent) ent->bounceCount = -5; + ent->physicsObject = qtrue; + VectorCopy(ent->s.pos.trBase, ent->s.origin2); //remember the spawn spot ent->touch = JMSaberTouch; @@ -1238,7 +1251,6 @@ char *ClientConnect( int clientNum, qboolean firstTime, qboolean isBot ) { char userinfo[MAX_INFO_STRING]; gentity_t *ent; gentity_t *te; - const char *selFP = NULL; ent = &g_entities[ clientNum ]; @@ -1250,7 +1262,7 @@ char *ClientConnect( int clientNum, qboolean firstTime, qboolean isBot ) { return "Banned."; } - if ( !( ent->r.svFlags & SVF_BOT ) ) { + if ( !( ent->r.svFlags & SVF_BOT ) && !isBot && g_needpass.integer ) { // check for a password value = Info_ValueForKey (userinfo, "password"); if ( g_password.string[0] && Q_stricmp( g_password.string, "none" ) && @@ -1269,17 +1281,6 @@ char *ClientConnect( int clientNum, qboolean firstTime, qboolean isBot ) { client->pers.connected = CON_CONNECTING; - selFP = Info_ValueForKey (userinfo, "sfp"); // "sfp" == "selected force power" - if (selFP && selFP[0]) - { - client->sess.selectedFP = atoi(selFP)+1; - } - selFP = Info_ValueForKey (userinfo, "sal"); // "sal" == "saber attack level" - if (selFP && selFP[0]) - { - client->sess.saberLevel = atoi(selFP)+1; - } - // read or initialize the session data if ( firstTime || level.newSession ) { G_InitSessionData( client, userinfo, isBot ); @@ -1640,15 +1641,32 @@ void ClientSpawn(gentity_t *ent) { client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_BRYAR_PISTOL ); } - if (g_gametype.integer == GT_JEDIMASTER) { client->ps.stats[STAT_WEAPONS] &= ~(1 << WP_SABER); client->ps.stats[STAT_WEAPONS] |= (1 << WP_STUN_BATON); } + if (client->ps.stats[STAT_WEAPONS] & (1 << WP_BRYAR_PISTOL)) + { + client->ps.weapon = WP_BRYAR_PISTOL; + } + else if (client->ps.stats[STAT_WEAPONS] & (1 << WP_SABER)) + { + client->ps.weapon = WP_SABER; + } + else + { + client->ps.weapon = WP_STUN_BATON; + } + + /* client->ps.stats[STAT_HOLDABLE_ITEMS] |= ( 1 << HI_BINOCULARS ); client->ps.stats[STAT_HOLDABLE_ITEM] = BG_GetItemIndexByTag(HI_BINOCULARS, IT_HOLDABLE); + */ + + client->ps.stats[STAT_HOLDABLE_ITEMS] = 0; + client->ps.stats[STAT_HOLDABLE_ITEM] = 0; if ( client->sess.sessionTeam == TEAM_SPECTATOR ) { @@ -1760,6 +1778,12 @@ void ClientSpawn(gentity_t *ent) { trap_LinkEntity( ent ); } + if (g_spawnInvulnerability.integer) + { + ent->client->ps.eFlags |= EF_INVULNERABLE; + ent->client->invulnerableTimer = level.time + g_spawnInvulnerability.integer; + } + // run the presend to set anything else ClientEndFrame( ent ); diff --git a/CODEmp/game/g_cmds.c b/CODE-mp/game/g_cmds.c similarity index 95% rename from CODEmp/game/g_cmds.c rename to CODE-mp/game/g_cmds.c index 5547a1c..2ee03df 100644 --- a/CODEmp/game/g_cmds.c +++ b/CODE-mp/game/g_cmds.c @@ -556,6 +556,11 @@ void BroadcastTeamChange( gclient_t *client, int oldTeam ) client->pers.netname, G_GetStripEdString("SVINGAME", "JOINEDTHEBATTLE"))); } } + + G_LogPrintf ( "setteam: %i %s %s\n", + client - &level.clients[0], + TeamName ( oldTeam ), + TeamName ( client->sess.sessionTeam ) ); } /* diff --git a/CODEmp/game/g_combat.c b/CODE-mp/game/g_combat.c similarity index 94% rename from CODEmp/game/g_combat.c rename to CODE-mp/game/g_combat.c index d503dc2..91d0edc 100644 --- a/CODEmp/game/g_combat.c +++ b/CODE-mp/game/g_combat.c @@ -1180,6 +1180,7 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int int killer; int i; char *killerName, *obit; + qboolean wasJediMaster = qfalse; if ( self->client->ps.pm_type == PM_DEAD ) { return; @@ -1196,6 +1197,11 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int attacker = inflictor->activator; } + if (self->client && self->client->ps.isJediMaster) + { + wasJediMaster = qtrue; + } + //if he was charging or anything else, kill the sound G_MuteSound(self->s.number, CHAN_WEAPON); @@ -1255,6 +1261,7 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int ent->s.otherEntityNum = self->s.number; ent->s.otherEntityNum2 = killer; ent->r.svFlags = SVF_BROADCAST; // send to everyone + ent->s.isJediMaster = wasJediMaster; self->enemy = attacker; @@ -1474,7 +1481,15 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int //rww - do this on respawn, not death //CopyToBodyQue (self); - G_AddEvent( self, EV_DEATH1 + i, killer ); + //G_AddEvent( self, EV_DEATH1 + i, killer ); + if (wasJediMaster) + { + G_AddEvent( self, EV_DEATH1 + i, 1 ); + } + else + { + G_AddEvent( self, EV_DEATH1 + i, 0 ); + } // the body can still be gibbed self->die = body_die; @@ -2154,10 +2169,37 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, } } + if (targ->client && targ->s.shouldtarget && targ->s.teamowner && + attacker && attacker->inuse && attacker->client && targ->s.owner >= 0 && targ->s.owner < MAX_CLIENTS) + { + gentity_t *targown = &g_entities[targ->s.owner]; + + if (targown && targown->inuse && targown->client && OnSameTeam(targown, attacker)) + { + if (!g_friendlyFire.integer) + { + return; + } + } + } + // check for godmode if ( targ->flags & FL_GODMODE ) { return; } + + if (targ && targ->client && (targ->client->ps.eFlags & EF_INVULNERABLE) && + attacker && attacker->client && targ != attacker) + { + if (targ->client->invulnerableTimer <= level.time) + { + targ->client->ps.eFlags &= ~EF_INVULNERABLE; + } + else + { + return; + } + } } if (attacker && attacker->client) @@ -2370,7 +2412,7 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, if (take) { if (targ->client && (targ->client->ps.fd.forcePowersActive & (1 << FP_RAGE)) && (inflictor->client || attacker->client)) { - take /= (targ->client->ps.fd.forcePowerLevel[FP_RAGE]*2); + take /= (targ->client->ps.fd.forcePowerLevel[FP_RAGE]); } targ->health = targ->health - take; if ( targ->client ) { diff --git a/CODEmp/game/g_items.c b/CODE-mp/game/g_items.c similarity index 89% rename from CODEmp/game/g_items.c rename to CODE-mp/game/g_items.c index a44acfa..9c28744 100644 --- a/CODEmp/game/g_items.c +++ b/CODE-mp/game/g_items.c @@ -16,11 +16,12 @@ */ -#define RESPAWN_ARMOR 25 -#define RESPAWN_HEALTH 35 +#define RESPAWN_ARMOR 20 +#define RESPAWN_TEAM_WEAPON 30 +#define RESPAWN_HEALTH 30 #define RESPAWN_AMMO 40 #define RESPAWN_HOLDABLE 60 -#define RESPAWN_MEGAHEALTH 35//120 +#define RESPAWN_MEGAHEALTH 120 #define RESPAWN_POWERUP 120 extern gentity_t *droppedRedFlag; @@ -30,6 +31,39 @@ extern gentity_t *droppedBlueFlag; #define MAX_MEDPACK_HEAL_AMOUNT 100 #define MAX_SENTRY_DISTANCE 256 +// For more than four players, adjust the respawn times, up to 1/4. +int adjustRespawnTime(float respawnTime) +{ + if (!g_adaptRespawn.integer) + { + return((int)respawnTime); + } + + if (level.numPlayingClients > 4) + { // Start scaling the respawn times. + if (level.numPlayingClients > 32) + { // 1/4 time minimum. + respawnTime *= 0.25; + } + else if (level.numPlayingClients > 12) + { // From 12-32, scale from 0.5 to 0.25; + respawnTime *= 20.0 / (float)(level.numPlayingClients + 8); + } + else + { // From 4-12, scale from 1.0 to 0.5; + respawnTime *= 8.0 / (float)(level.numPlayingClients + 4); + } + } + + if (respawnTime < 1.0) + { // No matter what, don't go lower than 1 second, or the pickups become very noisy! + respawnTime = 1.0; + } + + return ((int)respawnTime); +} + + #define SHIELD_HEALTH 250 #define SHIELD_HEALTH_DEC 10 // 25 seconds #define MAX_SHIELD_HEIGHT 254 @@ -37,7 +71,7 @@ extern gentity_t *droppedBlueFlag; #define SHIELD_HALFTHICKNESS 4 #define SHIELD_PLACEDIST 64 - +static qhandle_t shieldLoopSound=0; static qhandle_t shieldAttachSound=0; static qhandle_t shieldActivateSound=0; static qhandle_t shieldDeactivateSound=0; @@ -49,8 +83,9 @@ void ShieldRemove(gentity_t *self) self->think = G_FreeEntity; self->nextthink = level.time + 100; - // Play raising sound... - G_AddEvent(self, EV_GENERAL_SOUND, shieldActivateSound); + // Play kill sound... + G_AddEvent(self, EV_GENERAL_SOUND, shieldDeactivateSound); + self->s.loopSound = 0; return; } @@ -129,6 +164,7 @@ void ShieldGoSolid(gentity_t *self) // Play raising sound... G_AddEvent(self, EV_GENERAL_SOUND, shieldActivateSound); + self->s.loopSound = shieldLoopSound; } return; @@ -147,8 +183,9 @@ void ShieldGoNotSolid(gentity_t *self) self->takedamage = qfalse; trap_LinkEntity(self); - // Play raising sound... + // Play kill sound... G_AddEvent(self, EV_GENERAL_SOUND, shieldDeactivateSound); + self->s.loopSound = 0; } @@ -289,6 +326,7 @@ void CreateShield(gentity_t *ent) // Play raising sound... G_AddEvent(ent, EV_GENERAL_SOUND, shieldActivateSound); + ent->s.loopSound = shieldLoopSound; } ShieldGoSolid(ent); @@ -305,6 +343,7 @@ qboolean PlaceShield(gentity_t *playerent) if (shieldAttachSound==0) { + shieldLoopSound = G_SoundIndex("sound/movers/doors/forcefield_lp.wav"); shieldAttachSound = G_SoundIndex("sound/weapons/detpack/stick.wav"); shieldActivateSound = G_SoundIndex("sound/movers/doors/forcefield_on.wav"); shieldDeactivateSound = G_SoundIndex("sound/movers/doors/forcefield_off.wav"); @@ -613,6 +652,7 @@ void pas_adjust_enemy( gentity_t *ent ) } #define TURRET_DEATH_DELAY 2000 +#define TURRET_LIFETIME 60000 void turret_die(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod); @@ -648,6 +688,17 @@ void pas_think( gentity_t *ent ) return; } + if ((ent->bolt_LLeg+TURRET_LIFETIME) < level.time) + { + G_Sound( ent, CHAN_BODY, G_SoundIndex( "sound/chars/turret/shutdown.wav" )); + ent->s.bolt2 = ENTITYNUM_NONE; + ent->s.fireflag = 2; + + ent->think = sentryExpire; + ent->nextthink = level.time + TURRET_DEATH_DELAY; + return; + } + ent->nextthink = level.time + FRAMETIME; if ( ent->enemy ) @@ -922,6 +973,8 @@ void ItemUse_Sentry( gentity_t *ent ) sentry->bolt_Head = 1000; + sentry->bolt_LLeg = level.time; + sentry->noDamageTeam = ent->client->sess.sessionTeam; ent->client->ps.fd.sentryDeployed = qtrue; @@ -958,6 +1011,13 @@ void ItemUse_MedPack(gentity_t *ent) return; } + if (ent->health <= 0 || + ent->client->ps.stats[STAT_HEALTH] <= 0 || + (ent->client->ps.eFlags & EF_DEAD)) + { + return; + } + if (ent->health >= ent->client->ps.stats[STAT_MAX_HEALTH]) { return; @@ -1052,7 +1112,7 @@ int Pickup_Holdable( gentity_t *ent, gentity_t *other ) { G_LogWeaponItem(other->s.number, ent->item->giTag); - return RESPAWN_HOLDABLE; + return adjustRespawnTime(RESPAWN_HOLDABLE); } @@ -1078,7 +1138,7 @@ int Pickup_Ammo (gentity_t *ent, gentity_t *other) Add_Ammo (other, ent->item->giTag, quantity); - return RESPAWN_AMMO; + return adjustRespawnTime(RESPAWN_AMMO); } //====================================================================== @@ -1099,28 +1159,43 @@ int Pickup_Weapon (gentity_t *ent, gentity_t *other) { // dropped items and teamplay weapons always have full ammo if ( ! (ent->flags & FL_DROPPED_ITEM) && g_gametype.integer != GT_TEAM ) { // respawning rules + + // New method: If the player has less than half the minimum, give them the minimum, else add 1/2 the min. + // drop the quantity if the already have over the minimum - if ( other->client->ps.ammo[weaponData[ ent->item->giTag ].ammoIndex] < quantity ) { - quantity = quantity - other->client->ps.ammo[weaponData[ ent->item->giTag ].ammoIndex]; + if ( other->client->ps.ammo[ ent->item->giTag ] < quantity*0.5 ) { + quantity = quantity - other->client->ps.ammo[ ent->item->giTag ]; + } else { + quantity = quantity*0.5; // only add half the value. + } + + // Old method: If the player has less than the minimum, give them the minimum, else just add 1. +/* + // drop the quantity if the already have over the minimum + if ( other->client->ps.ammo[ ent->item->giTag ] < quantity ) { + quantity = quantity - other->client->ps.ammo[ ent->item->giTag ]; } else { quantity = 1; // only add a single shot } + */ } } // add the weapon other->client->ps.stats[STAT_WEAPONS] |= ( 1 << ent->item->giTag ); + //Add_Ammo( other, ent->item->giTag, quantity ); Add_Ammo( other, weaponData[ent->item->giTag].ammoIndex, quantity ); G_LogWeaponPickup(other->s.number, ent->item->giTag); - + // team deathmatch has slow weapon respawns - if ( g_gametype.integer == GT_TEAM ) { - return g_weaponTeamRespawn.integer; + if ( g_gametype.integer == GT_TEAM ) + { + return adjustRespawnTime(RESPAWN_TEAM_WEAPON); } - return g_weaponRespawn.integer; + return adjustRespawnTime(g_weaponRespawn.integer); } @@ -1154,7 +1229,7 @@ int Pickup_Health (gentity_t *ent, gentity_t *other) { return RESPAWN_MEGAHEALTH; } - return RESPAWN_HEALTH; + return adjustRespawnTime(RESPAWN_HEALTH); } //====================================================================== @@ -1162,12 +1237,12 @@ int Pickup_Health (gentity_t *ent, gentity_t *other) { int Pickup_Armor( gentity_t *ent, gentity_t *other ) { other->client->ps.stats[STAT_ARMOR] += ent->item->quantity; - if ( other->client->ps.stats[STAT_ARMOR] > other->client->ps.stats[STAT_MAX_HEALTH]/* * 2*/ ) + if ( other->client->ps.stats[STAT_ARMOR] > other->client->ps.stats[STAT_MAX_HEALTH] * ent->item->giTag ) { - other->client->ps.stats[STAT_ARMOR] = other->client->ps.stats[STAT_MAX_HEALTH]/* * 2*/; + other->client->ps.stats[STAT_ARMOR] = other->client->ps.stats[STAT_MAX_HEALTH] * ent->item->giTag; } - return RESPAWN_ARMOR; + return adjustRespawnTime(RESPAWN_ARMOR); } //====================================================================== @@ -1586,6 +1661,25 @@ void FinishSpawningItem( gentity_t *ent ) { } } } + else + { //no powerups in jedi master + if (ent->item->giType == IT_POWERUP) + { + G_FreeEntity(ent); + return; + } + } + + if (g_gametype.integer == GT_TOURNAMENT) + { + if ( ent->item->giType == IT_ARMOR || + ent->item->giType == IT_HEALTH || + (ent->item->giType == IT_HOLDABLE && ent->item->giTag == HI_MEDPAC) ) + { + G_FreeEntity(ent); + return; + } + } if (g_gametype.integer != GT_CTF && g_gametype.integer != GT_CTY && @@ -1726,6 +1820,7 @@ void ClearRegisteredItems( void ) { // players always start with the base weapon RegisterItem( BG_FindItemForWeapon( WP_BRYAR_PISTOL ) ); RegisterItem( BG_FindItemForWeapon( WP_STUN_BATON ) ); + RegisterItem( BG_FindItemForWeapon( WP_SABER ) ); } /* diff --git a/CODEmp/game/g_local.h b/CODE-mp/game/g_local.h similarity index 96% rename from CODEmp/game/g_local.h rename to CODE-mp/game/g_local.h index 1527e23..60d7e18 100644 --- a/CODEmp/game/g_local.h +++ b/CODE-mp/game/g_local.h @@ -334,6 +334,8 @@ struct gclient_s { clientPersistant_t pers; clientSession_t sess; + int invulnerableTimer; + int saberCycleQueue; qboolean readyToExit; // wishes to leave the intermission @@ -781,9 +783,10 @@ void ClientCommand( int clientNum ); // // g_active.c // -void ClientThink( int clientNum ); -void ClientEndFrame( gentity_t *ent ); -void G_RunClient( gentity_t *ent ); +void G_CheckClientTimeouts ( gentity_t *ent ); +void ClientThink ( int clientNum ); +void ClientEndFrame ( gentity_t *ent ); +void G_RunClient ( gentity_t *ent ); // // g_team.c @@ -871,8 +874,10 @@ void InitSagaMode(void); // ai_main.c #define MAX_FILEPATH 144 -int OrgVisible(vec3_t org1, vec3_t org2, int ignore); -void BotOrder(gentity_t *ent, int clientnum, int ordernum); + +int OrgVisible ( vec3_t org1, vec3_t org2, int ignore); +void BotOrder ( gentity_t *ent, int clientnum, int ordernum); +int InFieldOfVision ( vec3_t viewangles, float fov, vec3_t angles); // ai_util.c void B_InitAlloc(void); @@ -913,7 +918,9 @@ extern vmCvar_t g_dmflags; extern vmCvar_t g_maxForceRank; extern vmCvar_t g_forceBasedTeams; extern vmCvar_t g_privateDuel; +extern vmCvar_t g_saberLocking; extern vmCvar_t g_forceRegenTime; +extern vmCvar_t g_spawnInvulnerability; extern vmCvar_t g_forcePowerDisable; extern vmCvar_t g_weaponDisable; extern vmCvar_t g_fraglimit; @@ -936,6 +943,7 @@ extern vmCvar_t g_debugAlloc; extern vmCvar_t g_debugDamage; extern vmCvar_t g_weaponRespawn; extern vmCvar_t g_weaponTeamRespawn; +extern vmCvar_t g_adaptRespawn; extern vmCvar_t g_synchronousClients; extern vmCvar_t g_motd; extern vmCvar_t g_warmup; @@ -960,6 +968,7 @@ extern vmCvar_t g_enableBreath; extern vmCvar_t g_singlePlayer; extern vmCvar_t g_dismember; extern vmCvar_t g_forceDodge; +extern vmCvar_t g_timeouttospec; void trap_Printf( const char *fmt ); void trap_Error( const char *fmt ); diff --git a/CODEmp/game/g_log.c b/CODE-mp/game/g_log.c similarity index 100% rename from CODEmp/game/g_log.c rename to CODE-mp/game/g_log.c diff --git a/CODEmp/game/g_main.c b/CODE-mp/game/g_main.c similarity index 93% rename from CODEmp/game/g_main.c rename to CODE-mp/game/g_main.c index f8ba7ba..78f9030 100644 --- a/CODEmp/game/g_main.c +++ b/CODE-mp/game/g_main.c @@ -26,7 +26,9 @@ vmCvar_t g_dmflags; vmCvar_t g_maxForceRank; vmCvar_t g_forceBasedTeams; vmCvar_t g_privateDuel; +vmCvar_t g_saberLocking; vmCvar_t g_forceRegenTime; +vmCvar_t g_spawnInvulnerability; vmCvar_t g_forcePowerDisable; vmCvar_t g_weaponDisable; vmCvar_t g_fraglimit; @@ -53,6 +55,7 @@ vmCvar_t g_debugDamage; vmCvar_t g_debugAlloc; vmCvar_t g_weaponRespawn; vmCvar_t g_weaponTeamRespawn; +vmCvar_t g_adaptRespawn; vmCvar_t g_motd; vmCvar_t g_synchronousClients; vmCvar_t g_warmup; @@ -85,6 +88,7 @@ vmCvar_t g_enableDust; vmCvar_t g_enableBreath; vmCvar_t g_dismember; vmCvar_t g_forceDodge; +vmCvar_t g_timeouttospec; // bk001129 - made static to avoid aliasing static cvarTable_t gameCvarTable[] = { @@ -99,7 +103,7 @@ static cvarTable_t gameCvarTable[] = { // latched vars { &g_gametype, "g_gametype", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse }, - { &g_MaxHolocronCarry, "g_MaxHolocronCarry", "5", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse }, + { &g_MaxHolocronCarry, "g_MaxHolocronCarry", "3", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse }, { &g_maxclients, "sv_maxclients", "8", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse }, { &g_maxGameClients, "g_maxGameClients", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse }, @@ -113,7 +117,10 @@ static cvarTable_t gameCvarTable[] = { { &g_maxForceRank, "g_maxForceRank", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse }, { &g_forceBasedTeams, "g_forceBasedTeams", "0", CVAR_SERVERINFO | CVAR_USERINFO | CVAR_LATCH, 0, qfalse }, { &g_privateDuel, "g_privateDuel", "0", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue }, - { &g_forceRegenTime, "g_forceRegenTime", "500", CVAR_ARCHIVE, 0, qtrue }, + { &g_saberLocking, "g_saberLocking", "1", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue }, + { &g_forceRegenTime, "g_forceRegenTime", "200", CVAR_ARCHIVE, 0, qtrue }, + + { &g_spawnInvulnerability, "g_spawnInvulnerability", "3000", CVAR_ARCHIVE, 0, qtrue }, { &g_forcePowerDisable, "g_forcePowerDisable", "0", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue }, { &g_weaponDisable, "g_weaponDisable", "0", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue }, @@ -154,8 +161,9 @@ static cvarTable_t gameCvarTable[] = { { &g_gravity, "g_gravity", "800", 0, 0, qtrue }, { &g_knockback, "g_knockback", "1000", 0, 0, qtrue }, { &g_quadfactor, "g_quadfactor", "3", 0, 0, qtrue }, - { &g_weaponRespawn, "g_weaponrespawn", "30", 0, 0, qtrue }, - { &g_weaponTeamRespawn, "g_weaponTeamRespawn", "30", 0, 0, qtrue }, + { &g_weaponRespawn, "g_weaponrespawn", "5", 0, 0, qtrue }, + { &g_weaponTeamRespawn, "g_weaponTeamRespawn", "5", 0, 0, qtrue }, + { &g_adaptRespawn, "g_adaptrespawn", "1", 0, 0, qtrue }, // Make weapons respawn faster with a lot of players. { &g_forcerespawn, "g_forcerespawn", "20", 0, 0, qtrue }, { &g_inactivity, "g_inactivity", "0", 0, 0, qtrue }, { &g_debugMove, "g_debugMove", "0", 0, 0, qfalse }, @@ -189,18 +197,20 @@ static cvarTable_t gameCvarTable[] = { { &g_rankings, "g_rankings", "0", 0, 0, qfalse}, { &g_dismember, "g_dismember", "0", 0, 0, qtrue }, - { &g_forceDodge, "g_forceDodge", "1", 0, 0, qtrue } + { &g_forceDodge, "g_forceDodge", "1", 0, 0, qtrue }, + + { &g_timeouttospec, "g_timeouttospec", "15", CVAR_ARCHIVE, 0, qfalse }, }; // bk001129 - made static to avoid aliasing static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[0] ); -void G_InitGame( int levelTime, int randomSeed, int restart ); -void G_RunFrame( int levelTime ); -void G_ShutdownGame( int restart ); -void CheckExitRules( void ); -void G_ROFF_NotetrackCallback( gentity_t *cent, const char *notetrack); +void G_InitGame ( int levelTime, int randomSeed, int restart ); +void G_RunFrame ( int levelTime ); +void G_ShutdownGame ( int restart ); +void CheckExitRules ( void ); +void G_ROFF_NotetrackCallback ( gentity_t *cent, const char *notetrack); /* @@ -1117,6 +1127,9 @@ void ExitLevel (void) { } //this means we hit the duel limit so reset the wins/losses + //but still push the loser to the back of the line, and retain the order for + //the map change + RemoveTournamentLoser(); DuelResetWinsLosses(); } @@ -1421,7 +1434,7 @@ void CheckExitRules( void ) { continue; } - if ( g_gametype.integer == GT_TOURNAMENT && g_duel_fraglimit.integer && cl->sess.wins >= g_duel_fraglimit.integer-1 ) + if ( g_gametype.integer == GT_TOURNAMENT && g_duel_fraglimit.integer && cl->sess.wins >= g_duel_fraglimit.integer ) { LogExit( "Duel limit hit." ); trap_SendServerCommand( -1, va("print \"%s" S_COLOR_WHITE " hit the win limit.\n\"", @@ -1891,7 +1904,10 @@ int start, end; continue; } - if ( i < MAX_CLIENTS ) { + if ( i < MAX_CLIENTS ) + { + G_CheckClientTimeouts ( ent ); + G_RunClient( ent ); continue; } diff --git a/CODEmp/game/g_mem.c b/CODE-mp/game/g_mem.c similarity index 100% rename from CODEmp/game/g_mem.c rename to CODE-mp/game/g_mem.c diff --git a/CODEmp/game/g_misc.c b/CODE-mp/game/g_misc.c similarity index 93% rename from CODEmp/game/g_misc.c rename to CODE-mp/game/g_misc.c index 467a5bf..8a742a0 100644 --- a/CODEmp/game/g_misc.c +++ b/CODE-mp/game/g_misc.c @@ -323,6 +323,11 @@ void HolocronTouch(gentity_t *self, gentity_t *other, trace_t *trace) int hasall = 1; int forceReselect = WP_NONE; + if (trace) + { + self->s.groundEntityNum = trace->entityNum; + } + if (!other || !other->client || other->health < 1) { return; @@ -470,6 +475,28 @@ void HolocronThink(gentity_t *ent) goto justthink; } + + if (!ent->enemy->inuse || (ent->enemy->client && ent->enemy->client->ps.fallingToDeath)) + { + if (ent->enemy->inuse && ent->enemy->client) + { + ent->enemy->client->ps.holocronBits &= ~(1 << ent->count); + ent->enemy->client->ps.holocronsCarried[ent->count] = 0; + } + ent->enemy = NULL; + HolocronRespawn(ent); + VectorCopy(ent->s.origin2, ent->s.pos.trBase); + VectorCopy(ent->s.origin2, ent->s.origin); + VectorCopy(ent->s.origin2, ent->r.currentOrigin); + + ent->s.pos.trTime = level.time; + + ent->pos2[0] = 0; + + trap_LinkEntity(ent); + + goto justthink; + } } if (ent->pos2[0] && ent->pos2[1] < level.time) @@ -580,6 +607,8 @@ void SP_misc_holocron(gentity_t *ent) ent->s.trickedentindex3 = 3; } + ent->physicsObject = qtrue; + VectorCopy(ent->s.pos.trBase, ent->s.origin2); //remember the spawn spot ent->touch = HolocronTouch; diff --git a/CODEmp/game/g_missile.c b/CODE-mp/game/g_missile.c similarity index 91% rename from CODEmp/game/g_missile.c rename to CODE-mp/game/g_missile.c index 6764be4..90a5f8b 100644 --- a/CODEmp/game/g_missile.c +++ b/CODE-mp/game/g_missile.c @@ -361,18 +361,30 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) { { //only block one projectile per 200ms (to prevent giant swarms of projectiles being blocked) vec3_t fwd; gentity_t *te; + int otherDefLevel = other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND]; te = G_TempEntity( ent->r.currentOrigin, EV_SABER_BLOCK ); VectorCopy(ent->r.currentOrigin, te->s.origin); VectorCopy(trace->plane.normal, te->s.angles); te->s.eventParm = 0; + if (other->client->ps.velocity[2] > 0 || + other->client->pers.cmd.forwardmove || + other->client->pers.cmd.rightmove) + { + otherDefLevel -= 1; + if (otherDefLevel < 0) + { + otherDefLevel = 0; + } + } + AngleVectors(other->client->ps.viewangles, fwd, NULL, NULL); - if (other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_1) + if (otherDefLevel == FORCE_LEVEL_1) { //if def is only level 1, instead of deflecting the shot it should just die here } - else if (other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_2) + else if (otherDefLevel == FORCE_LEVEL_2) { G_DeflectMissile(other, ent, fwd); } @@ -380,14 +392,14 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) { { G_ReflectMissile(other, ent, fwd); } - other->client->ps.saberBlockTime = level.time + (350 - (other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND]*100)); //200; + other->client->ps.saberBlockTime = level.time + (350 - (otherDefLevel*100)); //200; - if (other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_3) + if (otherDefLevel == FORCE_LEVEL_3) { other->client->ps.saberBlockTime = 0; //^_^ } - if (other->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_1) + if (otherDefLevel == FORCE_LEVEL_1) { goto killProj; } @@ -409,6 +421,7 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) { { //for now still deflect even if saberBlockTime >= level.time because it hit the actual saber vec3_t fwd; gentity_t *te; + int otherDefLevel = otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND]; //in this case, deflect it even if we can't actually block it because it hit our saber WP_SaberCanBlock(otherOwner, ent->r.currentOrigin, 0, 0, qtrue, 0); @@ -418,13 +431,24 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) { VectorCopy(trace->plane.normal, te->s.angles); te->s.eventParm = 0; + if (otherOwner->client->ps.velocity[2] > 0 || + otherOwner->client->pers.cmd.forwardmove || + otherOwner->client->pers.cmd.rightmove) + { + otherDefLevel -= 1; + if (otherDefLevel < 0) + { + otherDefLevel = 0; + } + } + AngleVectors(otherOwner->client->ps.viewangles, fwd, NULL, NULL); - if (otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_1) + if (otherDefLevel == FORCE_LEVEL_1) { //if def is only level 1, instead of deflecting the shot it should just die here } - else if (otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_2) + else if (otherDefLevel == FORCE_LEVEL_2) { G_DeflectMissile(otherOwner, ent, fwd); } @@ -432,14 +456,14 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace ) { { G_ReflectMissile(otherOwner, ent, fwd); } - otherOwner->client->ps.saberBlockTime = level.time + (350 - (otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND]*100));//200; + otherOwner->client->ps.saberBlockTime = level.time + (350 - (otherDefLevel*100));//200; - if (otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_3) + if (otherDefLevel == FORCE_LEVEL_3) { otherOwner->client->ps.saberBlockTime = 0; //^_^ } - if (otherOwner->client->ps.fd.forcePowerLevel[FP_SABERDEFEND] == FORCE_LEVEL_1) + if (otherDefLevel == FORCE_LEVEL_1) { goto killProj; } diff --git a/CODEmp/game/g_mover.c b/CODE-mp/game/g_mover.c similarity index 100% rename from CODEmp/game/g_mover.c rename to CODE-mp/game/g_mover.c diff --git a/CODEmp/game/g_object.c b/CODE-mp/game/g_object.c similarity index 100% rename from CODEmp/game/g_object.c rename to CODE-mp/game/g_object.c diff --git a/CODEmp/game/g_public.h b/CODE-mp/game/g_public.h similarity index 95% rename from CODEmp/game/g_public.h rename to CODE-mp/game/g_public.h index cd8d6de..3823028 100644 --- a/CODEmp/game/g_public.h +++ b/CODE-mp/game/g_public.h @@ -61,6 +61,12 @@ typedef struct { // ent->s.ownerNum = passEntityNum (don't interact with your own missiles) // entity[ent->s.ownerNum].ownerNum = passEntityNum (don't interact with other missiles from owner) int ownerNum; + + // mask of clients that this entity should be broadcast too. The first 32 clients + // are represented by the first array index and the latter 32 clients are represented + // by the second array index. + int broadcastClients[2]; + } entityShared_t; diff --git a/CODEmp/game/g_saga.c b/CODE-mp/game/g_saga.c similarity index 100% rename from CODEmp/game/g_saga.c rename to CODE-mp/game/g_saga.c diff --git a/CODEmp/game/g_session.c b/CODE-mp/game/g_session.c similarity index 86% rename from CODEmp/game/g_session.c rename to CODE-mp/game/g_session.c index 5f1da0d..aaa32b9 100644 --- a/CODEmp/game/g_session.c +++ b/CODE-mp/game/g_session.c @@ -24,14 +24,17 @@ void G_WriteClientSessionData( gclient_t *client ) { const char *s; const char *var; - s = va("%i %i %i %i %i %i %i", + s = va("%i %i %i %i %i %i %i %i %i %i", client->sess.sessionTeam, client->sess.spectatorTime, client->sess.spectatorState, client->sess.spectatorClient, client->sess.wins, client->sess.losses, - client->sess.teamLeader + client->sess.teamLeader, + client->sess.setForce, + client->sess.saberLevel, + client->sess.selectedFP ); var = va( "session%i", client - level.clients ); @@ -58,20 +61,26 @@ void G_ReadSessionData( gclient_t *client ) { var = va( "session%i", client - level.clients ); trap_Cvar_VariableStringBuffer( var, s, sizeof(s) ); - sscanf( s, "%i %i %i %i %i %i %i", + sscanf( s, "%i %i %i %i %i %i %i %i %i %i", &sessionTeam, // bk010221 - format &client->sess.spectatorTime, &spectatorState, // bk010221 - format &client->sess.spectatorClient, &client->sess.wins, &client->sess.losses, - &teamLeader // bk010221 - format + &teamLeader, // bk010221 - format + &client->sess.setForce, + &client->sess.saberLevel, + &client->sess.selectedFP ); // bk001205 - format issues client->sess.sessionTeam = (team_t)sessionTeam; client->sess.spectatorState = (spectatorState_t)spectatorState; client->sess.teamLeader = (qboolean)teamLeader; + + client->ps.fd.saberAnimLevel = client->sess.saberLevel; + client->ps.fd.forcePowerSelected = client->sess.selectedFP; } diff --git a/CODEmp/game/g_spawn.c b/CODE-mp/game/g_spawn.c similarity index 100% rename from CODEmp/game/g_spawn.c rename to CODE-mp/game/g_spawn.c diff --git a/CODEmp/game/g_svcmds.c b/CODE-mp/game/g_svcmds.c similarity index 100% rename from CODEmp/game/g_svcmds.c rename to CODE-mp/game/g_svcmds.c diff --git a/CODEmp/game/g_syscalls.c b/CODE-mp/game/g_syscalls.c similarity index 100% rename from CODEmp/game/g_syscalls.c rename to CODE-mp/game/g_syscalls.c diff --git a/CODEmp/game/g_target.c b/CODE-mp/game/g_target.c similarity index 100% rename from CODEmp/game/g_target.c rename to CODE-mp/game/g_target.c diff --git a/CODEmp/game/g_team.c b/CODE-mp/game/g_team.c similarity index 100% rename from CODEmp/game/g_team.c rename to CODE-mp/game/g_team.c diff --git a/CODEmp/game/g_team.h b/CODE-mp/game/g_team.h similarity index 100% rename from CODEmp/game/g_team.h rename to CODE-mp/game/g_team.h diff --git a/CODEmp/game/g_trigger.c b/CODE-mp/game/g_trigger.c similarity index 100% rename from CODEmp/game/g_trigger.c rename to CODE-mp/game/g_trigger.c diff --git a/CODEmp/game/g_utils.c b/CODE-mp/game/g_utils.c similarity index 100% rename from CODEmp/game/g_utils.c rename to CODE-mp/game/g_utils.c diff --git a/CODEmp/game/g_weapon.c b/CODE-mp/game/g_weapon.c similarity index 94% rename from CODEmp/game/g_weapon.c rename to CODE-mp/game/g_weapon.c index e2dacc9..0b38841 100644 --- a/CODEmp/game/g_weapon.c +++ b/CODE-mp/game/g_weapon.c @@ -72,7 +72,7 @@ static vec3_t muzzle; //--------- #define FLECHETTE_SHOTS 6 #define FLECHETTE_SPREAD 4.0f -#define FLECHETTE_DAMAGE 15 +#define FLECHETTE_DAMAGE 10//15 #define FLECHETTE_VEL 3500 #define FLECHETTE_SIZE 1 #define FLECHETTE_MINE_RADIUS_CHECK 256 @@ -549,9 +549,9 @@ void WP_DisruptorAltFire( gentity_t *ent ) { count = 1; } - else if ( count >= 30 ) + else if ( count >= 60 ) { - count = 30; + count = 60; fullCharge = qtrue; } @@ -644,7 +644,7 @@ void WP_DisruptorAltFire( gentity_t *ent ) if ( traceEnt->takedamage ) { G_Damage( traceEnt, ent, ent, forward, tr.endpos, damage, - DAMAGE_NO_KNOCKBACK|DAMAGE_HALF_ARMOR_REDUCTION, MOD_DISRUPTOR_SNIPER ); + DAMAGE_NO_KNOCKBACK/*|DAMAGE_HALF_ARMOR_REDUCTION*/, MOD_DISRUPTOR_SNIPER ); tent = G_TempEntity( tr.endpos, EV_DISRUPTOR_HIT ); tent->s.eventParm = DirToByte( tr.plane.normal ); @@ -958,10 +958,24 @@ void DEMP2_AltRadiusDamage( gentity_t *ent ) gentity_t *gent; int iEntityList[MAX_GENTITIES]; gentity_t *entityList[MAX_GENTITIES]; + gentity_t *myOwner = NULL; int numListedEntities, i, e; vec3_t mins, maxs; vec3_t v, dir; + if (ent->r.ownerNum >= 0 && + ent->r.ownerNum < MAX_CLIENTS) + { + myOwner = &g_entities[ent->r.ownerNum]; + } + + if (!myOwner || !myOwner->inuse || !myOwner->client) + { + ent->think = G_FreeEntity; + ent->nextthink = level.time; + return; + } + frac *= frac * frac; // yes, this is completely ridiculous...but it causes the shell to grow slowly then "explode" at the end radius = frac * 200.0f; // 200 is max radius...the model is aprox. 100 units tall...the fx draw code mults. this by 2. @@ -1040,7 +1054,7 @@ void DEMP2_AltRadiusDamage( gentity_t *ent ) // push the center of mass higher than the origin so players get knocked into the air more dir[2] += 12; - G_Damage( gent, NULL, ent, dir, ent->r.currentOrigin, ent->damage, DAMAGE_DEATH_KNOCKBACK, ent->splashMethodOfDeath ); + G_Damage( gent, myOwner, myOwner, dir, ent->r.currentOrigin, ent->damage, DAMAGE_DEATH_KNOCKBACK, ent->splashMethodOfDeath ); } // store the last fraction so that next time around we can test against those things that fall between that last point and where the current shockwave edge is @@ -1065,6 +1079,10 @@ void DEMP2_AltDetonate( gentity_t *ent ) gentity_t *efEnt; G_SetOrigin( ent, ent->r.currentOrigin ); + if (!ent->pos1[0] && !ent->pos1[1] && !ent->pos1[2]) + { //don't play effect with a 0'd out directional vector + ent->pos1[1] = 1; + } //Let's just save ourself some bandwidth and play both the effect and sphere spawn in 1 event efEnt = G_PlayEffect( EFFECT_EXPLOSION_DEMP2ALT, ent->r.currentOrigin, ent->pos1 ); @@ -1145,6 +1163,8 @@ static void WP_DEMP2_AltFire( gentity_t *ent ) missile->splashMethodOfDeath = missile->methodOfDeath = MOD_DEMP2; missile->splashRadius = DEMP2_ALT_SPLASHRADIUS; + missile->r.ownerNum = ent->s.number; + missile->dflags = DAMAGE_DEATH_KNOCKBACK; missile->clipmask = MASK_SHOT | CONTENTS_LIGHTSABER; @@ -2104,6 +2124,8 @@ void VectorNPos(vec3_t in, vec3_t out) if (in[2] < 0) { out[2] = -in[2]; } else { out[2] = in[2]; } } +void DetPackBlow(gentity_t *self); + void charge_stick (gentity_t *self, gentity_t *other, trace_t *trace) { gentity_t *tent; @@ -2150,8 +2172,8 @@ void charge_stick (gentity_t *self, gentity_t *other, trace_t *trace) //FIXME: once on ground, shouldn't explode if touched by someone? //FIXME: if owner touches it again, pick it up? Or if he "uses" it? self->touch = 0; - self->think = 0; - self->nextthink = 0; + self->think = DetPackBlow; + self->nextthink = level.time + 30000; VectorClear(self->s.apos.trDelta); self->s.apos.trType = TR_STATIONARY; @@ -2195,7 +2217,7 @@ void DetPackBlow(gentity_t *self) G_RadiusDamage( self->r.currentOrigin, self->parent, self->splashDamage, self->splashRadius, self, MOD_UNKNOWN ); v[0] = 0; v[1] = 0; - v[2] = 0; + v[2] = 1; if (self->count == -1) { @@ -2210,12 +2232,16 @@ void DetPackBlow(gentity_t *self) void DetPackPain(gentity_t *self, gentity_t *attacker, int damage) { - DetPackBlow(self); + self->think = DetPackBlow; + self->nextthink = level.time + Q_irand(50, 100); + self->takedamage = qfalse; } void DetPackDie(gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod) { - DetPackBlow(self); + self->think = DetPackBlow; + self->nextthink = level.time + Q_irand(50, 100); + self->takedamage = qfalse; } void drop_charge (gentity_t *self, vec3_t start, vec3_t dir) @@ -2306,6 +2332,15 @@ void BlowDetpacks(gentity_t *ent) } } +qboolean CheatsOn(void) +{ + if ( !g_cheats.integer ) + { + return qfalse; + } + return qtrue; +} + void WP_DropDetPack( gentity_t *ent, qboolean alt_fire ) { gentity_t *found = NULL; @@ -2360,7 +2395,10 @@ void WP_DropDetPack( gentity_t *ent, qboolean alt_fire ) } else { - G_FreeEntity( &g_entities[foundDetPacks[removeMe]] ); + if (!CheatsOn()) + { //Let them have unlimited if cheats are enabled + G_FreeEntity( &g_entities[foundDetPacks[removeMe]] ); + } } foundDetPacks[removeMe] = ENTITYNUM_NONE; trapcount--; diff --git a/CODE-mp/game/game.bat b/CODE-mp/game/game.bat new file mode 100644 index 0000000..8036ef4 --- /dev/null +++ b/CODE-mp/game/game.bat @@ -0,0 +1,99 @@ +del /q vm +mkdir vm +cd vm +set cc=lcc -A -DQ3_VM -DMISSIONPACK -S -Wf-target=bytecode -Wf-g -I..\..\cgame -I..\..\game -I..\..\ui %1 + +%cc% ../g_main.c +@if errorlevel 1 goto quit + +%cc% ../g_syscalls.c +@if errorlevel 1 goto quit + +%cc% ../bg_misc.c +@if errorlevel 1 goto quit +%cc% ../bg_lib.c +@if errorlevel 1 goto quit +%cc% ../bg_pmove.c +@if errorlevel 1 goto quit +%cc% ../bg_saber.c +@if errorlevel 1 goto quit +%cc% ../bg_slidemove.c +@if errorlevel 1 goto quit +%cc% ../bg_panimate.c +@if errorlevel 1 goto quit +%cc% ../bg_weapons.c +@if errorlevel 1 goto quit +%cc% ../q_math.c +@if errorlevel 1 goto quit +%cc% ../q_shared.c +@if errorlevel 1 goto quit + +%cc% ../ai_main.c +@if errorlevel 1 goto quit +%cc% ../ai_util.c +@if errorlevel 1 goto quit +%cc% ../ai_wpnav.c +@if errorlevel 1 goto quit + +%cc% ../g_active.c +@if errorlevel 1 goto quit + +%cc% ../g_arenas.c +@if errorlevel 1 goto quit +%cc% ../g_bot.c +@if errorlevel 1 goto quit +%cc% ../g_client.c +@if errorlevel 1 goto quit +%cc% ../g_cmds.c +@if errorlevel 1 goto quit +%cc% ../g_combat.c +@if errorlevel 1 goto quit +%cc% ../g_items.c +@if errorlevel 1 goto quit +%cc% ../g_log.c +@if errorlevel 1 goto quit +%cc% ../g_mem.c +@if errorlevel 1 goto quit +%cc% ../g_misc.c +@if errorlevel 1 goto quit +%cc% ../g_missile.c +@if errorlevel 1 goto quit +%cc% ../g_mover.c +@if errorlevel 1 goto quit +%cc% ../g_object.c +@if errorlevel 1 goto quit +%cc% ../g_saga.c +@if errorlevel 1 goto quit +%cc% ../g_session.c +@if errorlevel 1 goto quit +%cc% ../g_spawn.c +@if errorlevel 1 goto quit +%cc% ../g_svcmds.c +@if errorlevel 1 goto quit +%cc% ../g_target.c +@if errorlevel 1 goto quit +%cc% ../g_team.c +@if errorlevel 1 goto quit +%cc% ../g_trigger.c +@if errorlevel 1 goto quit +%cc% ../g_utils.c +@if errorlevel 1 goto quit +%cc% ../g_weapon.c +@if errorlevel 1 goto quit +%cc% ../w_force.c +@if errorlevel 1 goto quit +%cc% ../w_saber.c +@if errorlevel 1 goto quit + +sysmaker ../g_public.h ../g_syscalls.c ../g_syscalls.asm +@if errorlevel 1 goto quit + +q3asm -f ../game +@if errorlevel 1 goto quit + +mkdir "..\..\base\vm" +copy *.map "..\..\base\vm" +copy *.qvm "..\..\base\vm" + +:quit +cd .. diff --git a/CODE-mp/game/game.q3asm b/CODE-mp/game/game.q3asm new file mode 100644 index 0000000..a60a599 --- /dev/null +++ b/CODE-mp/game/game.q3asm @@ -0,0 +1,40 @@ +-o "jk2mpgame" + +g_main +ai_main +ai_util +ai_wpnav +bg_lib +bg_misc +bg_pmove +bg_panimate +bg_slidemove +bg_weapons +bg_saber +g_active +g_arenas +g_bot +g_client +g_cmds +g_combat +g_items +g_log +g_mem +g_misc +g_missile +g_mover +g_object +g_saga +g_session +g_spawn +g_svcmds +..\g_syscalls +g_target +g_team +g_trigger +g_utils +g_weapon +w_force +w_saber +q_math +q_shared diff --git a/CODEmp/game/inv.h b/CODE-mp/game/inv.h similarity index 100% rename from CODEmp/game/inv.h rename to CODE-mp/game/inv.h diff --git a/CODEmp/game/match.h b/CODE-mp/game/match.h similarity index 100% rename from CODEmp/game/match.h rename to CODE-mp/game/match.h diff --git a/CODE-mp/game/mssccprj.scc b/CODE-mp/game/mssccprj.scc new file mode 100644 index 0000000..5d4910b --- /dev/null +++ b/CODE-mp/game/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[JK2_game.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\jk2sof2MP" +SCC_Project_Name = "$/General/code/game", VPCAAAAA diff --git a/CODEmp/game/q_math.c b/CODE-mp/game/q_math.c similarity index 100% rename from CODEmp/game/q_math.c rename to CODE-mp/game/q_math.c diff --git a/CODEmp/game/q_shared.c b/CODE-mp/game/q_shared.c similarity index 100% rename from CODEmp/game/q_shared.c rename to CODE-mp/game/q_shared.c diff --git a/CODEmp/game/q_shared.h b/CODE-mp/game/q_shared.h similarity index 93% rename from CODEmp/game/q_shared.h rename to CODE-mp/game/q_shared.h index b7c62e0..76c7b0b 100644 --- a/CODEmp/game/q_shared.h +++ b/CODE-mp/game/q_shared.h @@ -6,7 +6,7 @@ // q_shared.h -- included first by ALL program modules. // A user mod should never modify this file -#define Q3_VERSION "JK2MP: v0.54" +#define Q3_VERSION "JK2MP: v0.55" #define MAX_TEAMNAME 32 @@ -413,7 +413,8 @@ typedef enum SABER_YELLOW, SABER_GREEN, SABER_BLUE, - SABER_PURPLE + SABER_PURPLE, + NUM_SABER_COLORS } saber_colors_t; @@ -1098,24 +1099,26 @@ default values. ========================================================== */ -#define CVAR_ARCHIVE 1 // set to cause it to be saved to vars.rc - // used for system variables, not for player - // specific configurations -#define CVAR_USERINFO 2 // sent to server on connect or change -#define CVAR_SERVERINFO 4 // sent in response to front end requests -#define CVAR_SYSTEMINFO 8 // these cvars will be duplicated on all clients -#define CVAR_INIT 16 // don't allow change from console at all, - // but can be set from the command line -#define CVAR_LATCH 32 // will only change when C code next does - // a Cvar_Get(), so it can't be changed - // without proper initialization. modified - // will be set, even though the value hasn't - // changed yet -#define CVAR_ROM 64 // display only, cannot be set by user at all -#define CVAR_USER_CREATED 128 // created by a set command -#define CVAR_TEMP 256 // can be set even when cheats are disabled, but is not archived -#define CVAR_CHEAT 512 // can not be changed if cheats are disabled -#define CVAR_NORESTART 1024 // do not clear when a cvar_restart is issued +#define CVAR_ARCHIVE 0x00000001 // set to cause it to be saved to vars.rc + // used for system variables, not for player + // specific configurations +#define CVAR_USERINFO 0x00000002 // sent to server on connect or change +#define CVAR_SERVERINFO 0x00000004 // sent in response to front end requests +#define CVAR_SYSTEMINFO 0x00000008 // these cvars will be duplicated on all clients +#define CVAR_INIT 0x00000010 // don't allow change from console at all, + // but can be set from the command line +#define CVAR_LATCH 0x00000020 // will only change when C code next does + // a Cvar_Get(), so it can't be changed + // without proper initialization. modified + // will be set, even though the value hasn't + // changed yet +#define CVAR_ROM 0x00000040 // display only, cannot be set by user at all (can be set by code) +#define CVAR_USER_CREATED 0x00000080 // created by a set command +#define CVAR_TEMP 0x00000100 // can be set even when cheats are disabled, but is not archived +#define CVAR_CHEAT 0x00000200 // can not be changed if cheats are disabled +#define CVAR_NORESTART 0x00000400 // do not clear when a cvar_restart is issued +#define CVAR_INTERNAL 0x00000800 // cvar won't be displayed, ever (for passwords and such) +#define CVAR_PARENTAL 0x00001000 // lets cvar system know that parental stuff needs to be updated // nothing outside the Cvar_*() functions should modify these fields! typedef struct cvar_s { @@ -1582,7 +1585,10 @@ typedef struct playerState_s { int forceHandExtend; int forceHandExtendTime; + int forceRageDrainTime; + int forceDodgeAnim; + qboolean quickerGetup; int groundTime; // time when first left ground @@ -1638,7 +1644,7 @@ typedef struct playerState_s { // #define BUTTON_ATTACK 1 //#define BUTTON_TALK 2 // displays talk balloon and disables actions -#define BUTTON_FORCEJUMP 2 //rww - might be better to just reassign this from button1 on the client.. +//#define BUTTON_FORCEJUMP 2 //rww - might be better to just reassign this from button1 on the client.. #define BUTTON_USE_HOLDABLE 4 #define BUTTON_GESTURE 8 #define BUTTON_WALKING 16 // walking can't just be infered from MOVE_RUN diff --git a/CODEmp/game/surfaceflags.h b/CODE-mp/game/surfaceflags.h similarity index 100% rename from CODEmp/game/surfaceflags.h rename to CODE-mp/game/surfaceflags.h diff --git a/CODEmp/game/syn.h b/CODE-mp/game/syn.h similarity index 100% rename from CODEmp/game/syn.h rename to CODE-mp/game/syn.h diff --git a/CODE-mp/game/vssver.scc b/CODE-mp/game/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..aa97145c5763f0b28c4c49e9b2b1dc9e1ba77ae0 GIT binary patch literal 1120 zcmW;Mc~BEq90%~tCcDXQI4qPDQIVs@cA$etrUHt=Xh0wy1mp}@QBW|&Xc+2X9K}%_ zF)&ilB9ZYHC}=y9wkoYK=zz7>Ybt{{DyAW%BdDoWTFZdnm;K|-`|LaR_j|`Gd<0aK z;^=Vv{0>VaPUOXx-~X!vh+hZ3ag}@biz)ou^wm++G6zv~}QQWGwBr3O<>mcpA(0 z3d#7T@a3W2cNt@2ZZCsXH!H#dtroY{uuoU#H9qW$P=x+*u(#7|cU!bxh$~YYQa3UPsJV{5}&2%W71b>_A@4Ccj=q6YL zKk;zL{l1tess65hQmMg>$&=G zIzzT78SZoxS_`s`49Qmu|FHjO$Eh1~CKFB}{xG~1 z9(^-Dq;Id~NqpO2L*&_>BZ>|lRmzB>rnOvsM%d&j!-Xw@^ZQKI7c471WoWk}h>y5q zkGuEnWXbt;!t=h<9SAt_J45n|z#Ir&vkTDW%0`hIgL!$-mI0k)+cg8%>k literal 0 HcmV?d00001 diff --git a/CODEmp/game/w_force.c b/CODE-mp/game/w_force.c similarity index 91% rename from CODEmp/game/w_force.c rename to CODE-mp/game/w_force.c index e0fb9a4..8b24949 100644 --- a/CODEmp/game/w_force.c +++ b/CODE-mp/game/w_force.c @@ -1,5 +1,4 @@ #include "g_local.h" -#include "bg_local.h" #include "w_saber.h" #include "ai_main.h" #include "..\ghoul2\g2.h" @@ -145,7 +144,7 @@ void WP_InitForcePowers( gentity_t *ent ) char userinfo[MAX_INFO_STRING]; char forcePowers[MAX_QPATH]; char readBuf[256]; - const char *selFP = NULL; + int lastFPKnown = -1; if (!maxRank) { //if server has no max rank, default to max (50) @@ -157,7 +156,13 @@ void WP_InitForcePowers( gentity_t *ent ) return; } - ent->client->ps.fd.saberAnimLevel = FORCE_LEVEL_1; + ent->client->ps.fd.saberAnimLevel = ent->client->sess.saberLevel; + + if (ent->client->ps.fd.saberAnimLevel < FORCE_LEVEL_1 || + ent->client->ps.fd.saberAnimLevel > FORCE_LEVEL_3) + { + ent->client->ps.fd.saberAnimLevel = FORCE_LEVEL_1; + } if (!speedLoopSound) { //so that the client configstring is already modified with this when we need it @@ -484,7 +489,7 @@ validitycheck: if (warnClient || !ent->client->sess.setForce) { //the client's rank is too high for the server and has been autocapped, so tell them - if (g_gametype.integer != GT_HOLOCRON) + if (g_gametype.integer != GT_HOLOCRON && g_gametype.integer != GT_JEDIMASTER) { gentity_t *te = G_TempEntity( vec3_origin, EV_GIVE_NEW_RANK ); @@ -518,40 +523,33 @@ validitycheck: { //err.. ent->client->ps.fd.forcePowersKnown &= ~(1 << i); } + else + { + if (i != FP_LEVITATION && i != FP_SABERATTACK && i != FP_SABERDEFEND && i != FP_SABERTHROW) + { + lastFPKnown = i; + } + } i++; } - selFP = Info_ValueForKey (userinfo, "sfp"); // "sfp" == "selected force power" - - if (selFP && selFP[0]) + if (ent->client->ps.fd.forcePowersKnown & ent->client->sess.selectedFP) { - int iFP = atoi(selFP); + ent->client->ps.fd.forcePowerSelected = ent->client->sess.selectedFP; + } - if (ent->client->ps.fd.forcePowersKnown & (1 << iFP)) + if (!(ent->client->ps.fd.forcePowersKnown & (1 << ent->client->ps.fd.forcePowerSelected))) + { + if (lastFPKnown != -1) { - ent->client->ps.fd.forcePowerSelected = iFP; + ent->client->ps.fd.forcePowerSelected = lastFPKnown; + } + else + { + ent->client->ps.fd.forcePowerSelected = 0; } } - ent->client->sess.selectedFP = ent->client->ps.fd.forcePowerSelected+1; - - selFP = Info_ValueForKey (userinfo, "sal"); // "sal" == "saber attack level" - - if (selFP && selFP[0]) - { - int iFP = atoi(selFP); - - if (iFP <= ent->client->ps.fd.forcePowerLevel[FP_SABERATTACK]) - { - ent->client->ps.fd.saberAnimLevel = iFP; - - if (ent->client->ps.fd.saberAnimLevel < FORCE_LEVEL_1) - { - ent->client->ps.fd.saberAnimLevel = FORCE_LEVEL_1; - } - } - } - ent->client->sess.saberLevel = ent->client->ps.fd.saberAnimLevel+1; } void WP_SpawnInitForcePowers( gentity_t *ent ) @@ -731,6 +729,12 @@ qboolean WP_ForcePowerUsable( gentity_t *self, forcePowers_t forcePower ) return qfalse; } + if (self->health <= 0 || self->client->ps.stats[STAT_HEALTH] <= 0 || + (self->client->ps.eFlags & EF_DEAD)) + { + return qfalse; + } + if (self->client->ps.pm_flags & PMF_FOLLOW) { //specs can't use powers through people return qfalse; @@ -1002,6 +1006,7 @@ void WP_ForcePowerStart( gentity_t *self, forcePowers_t forcePower, int override hearDist = 256; //duration = 1000; self->client->ps.fd.forcePowersActive |= ( 1 << forcePower ); + self->client->ps.powerups[PW_DISINT_4] = level.time + 60000; break; case FP_LIGHTNING: hearable = qtrue; @@ -1196,7 +1201,7 @@ void ForceTeamHeal( gentity_t *self ) { ent = &g_entities[i]; - if (ent && ent->client && self != ent && OnSameTeam(self, ent) && ent->client->ps.stats[STAT_HEALTH] < ent->client->ps.stats[STAT_MAX_HEALTH] && ForcePowerUsableOn(self, ent, FP_TEAM_HEAL)) + if (ent && ent->client && self != ent && OnSameTeam(self, ent) && ent->client->ps.stats[STAT_HEALTH] < ent->client->ps.stats[STAT_MAX_HEALTH] && ent->client->ps.stats[STAT_HEALTH] > 0 && ForcePowerUsableOn(self, ent, FP_TEAM_HEAL)) { VectorSubtract(self->client->ps.origin, ent->client->ps.origin, a); @@ -1234,16 +1239,19 @@ void ForceTeamHeal( gentity_t *self ) while (i < numpl) { - g_entities[pl[i]].client->ps.stats[STAT_HEALTH] += healthadd; - if (g_entities[pl[i]].client->ps.stats[STAT_HEALTH] > g_entities[pl[i]].client->ps.stats[STAT_MAX_HEALTH]) + if (g_entities[pl[i]].client->ps.stats[STAT_HEALTH] > 0 && + g_entities[pl[i]].health > 0) { - g_entities[pl[i]].client->ps.stats[STAT_HEALTH] = g_entities[pl[i]].client->ps.stats[STAT_MAX_HEALTH]; + g_entities[pl[i]].client->ps.stats[STAT_HEALTH] += healthadd; + if (g_entities[pl[i]].client->ps.stats[STAT_HEALTH] > g_entities[pl[i]].client->ps.stats[STAT_MAX_HEALTH]) + { + g_entities[pl[i]].client->ps.stats[STAT_HEALTH] = g_entities[pl[i]].client->ps.stats[STAT_MAX_HEALTH]; + } + + g_entities[pl[i]].health = g_entities[pl[i]].client->ps.stats[STAT_HEALTH]; + + G_Sound( &g_entities[pl[i]], CHAN_ITEM, G_SoundIndex("sound/weapons/force/teamheal.wav") ); } - - g_entities[pl[i]].health = g_entities[pl[i]].client->ps.stats[STAT_HEALTH]; - - G_Sound( &g_entities[pl[i]], CHAN_ITEM, G_SoundIndex("sound/weapons/force/teamheal.wav") ); - i++; } } @@ -1609,6 +1617,9 @@ void ForceLightning( gentity_t *self ) void ForceLightningDamage( gentity_t *self, gentity_t *traceEnt, vec3_t dir, vec3_t impactPoint ) { self->client->dangerTime = level.time; + self->client->ps.eFlags &= ~EF_INVULNERABLE; + self->client->invulnerableTimer = 0; + if ( traceEnt && traceEnt->takedamage ) { if ( traceEnt->client ) @@ -1826,6 +1837,8 @@ void ForceDrainDamage( gentity_t *self, gentity_t *traceEnt, vec3_t dir, vec3_t gentity_t *tent; self->client->dangerTime = level.time; + self->client->ps.eFlags &= ~EF_INVULNERABLE; + self->client->invulnerableTimer = 0; if ( traceEnt && traceEnt->takedamage ) { @@ -1880,7 +1893,8 @@ void ForceDrainDamage( gentity_t *self, gentity_t *traceEnt, vec3_t dir, vec3_t traceEnt->client->ps.fd.forcePower = 0; } - if (self->client->ps.stats[STAT_HEALTH] < self->client->ps.stats[STAT_MAX_HEALTH]) + if (self->client->ps.stats[STAT_HEALTH] < self->client->ps.stats[STAT_MAX_HEALTH] && + self->health > 0 && self->client->ps.stats[STAT_HEALTH] > 0) { self->health += dmg; if (self->health > self->client->ps.stats[STAT_MAX_HEALTH]) @@ -2067,7 +2081,7 @@ int ForceShootDrain( gentity_t *self ) } else*/ { - WP_ForcePowerDrain( self, FP_DRAIN, forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_DRAIN]][FP_DRAIN]/5 ); + WP_ForcePowerDrain( self, FP_DRAIN, 1 ); } self->client->ps.fd.forcePowerRegenDebounceTime = level.time + 500; @@ -2187,7 +2201,7 @@ int WP_GetVelocityForForceJump( gentity_t *self, vec3_t jumpVel, usercmd_t *ucmd if (self->client->ps.fd.forceJumpCharge < JUMP_VELOCITY+40) { //give him at least a tiny boost from just a tap - self->client->ps.fd.forceJumpCharge = JUMP_VELOCITY+40; + self->client->ps.fd.forceJumpCharge = JUMP_VELOCITY+400; } if (self->client->ps.velocity[2] < -30) @@ -2412,7 +2426,10 @@ void ForceTelepathy(gentity_t *self) if (tr.fraction != 1.0 && tr.entityNum != ENTITYNUM_NONE && - g_entities[tr.entityNum].client) + g_entities[tr.entityNum].inuse && + g_entities[tr.entityNum].client && + g_entities[tr.entityNum].client->pers.connected && + g_entities[tr.entityNum].client->sess.sessionTeam != TEAM_SPECTATOR) { WP_AddAsMindtricked(&self->client->ps.fd, tr.entityNum); //self->client->ps.fd.forceMindtrickTargetIndex |= (1 << tr.entityNum); @@ -2465,6 +2482,16 @@ void ForceTelepathy(gentity_t *self) continue; } + if (!ent->client->pers.connected) + { + continue; + } + + if (ent->client->sess.sessionTeam == TEAM_SPECTATOR) + { + continue; + } + WP_AddAsMindtricked(&self->client->ps.fd, ent->s.number); gotAtLeastOne = qtrue; } @@ -3080,6 +3107,7 @@ void ForceThrow( gentity_t *self, qboolean pull ) push_list[x]->client->ps.forceHandExtend = HANDEXTEND_KNOCKDOWN; push_list[x]->client->ps.forceHandExtendTime = level.time + 1100; push_list[x]->client->ps.forceDodgeAnim = 0; //this toggles between 1 and 0, when it's 1 we should play the get up anim + push_list[x]->client->ps.quickerGetup = qtrue; } } } @@ -3207,6 +3235,8 @@ void ForceThrow( gentity_t *self, qboolean pull ) //attempt to break any leftover grips //if we're still in a current grip that wasn't broken by the push, it will still remain self->client->dangerTime = level.time; + self->client->ps.eFlags &= ~EF_INVULNERABLE; + self->client->invulnerableTimer = 0; if (self->client->ps.fd.forceGripBeingGripped > level.time) { @@ -3282,6 +3312,8 @@ void WP_ForcePowerStop( gentity_t *self, forcePowers_t forcePower ) } self->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE; + + self->client->ps.powerups[PW_DISINT_4] = 0; break; case FP_LIGHTNING: if ( self->client->ps.fd.forcePowerLevel[FP_LIGHTNING] < FORCE_LEVEL_2 ) @@ -3348,6 +3380,8 @@ void DoGripAction(gentity_t *self, forcePowers_t forcePower) vec3_t fwd, fwd_o, start_o, nvel; self->client->dangerTime = level.time; + self->client->ps.eFlags &= ~EF_INVULNERABLE; + self->client->invulnerableTimer = 0; gripEnt = &g_entities[self->client->ps.fd.forceGripEntityNum]; @@ -3365,25 +3399,8 @@ void DoGripAction(gentity_t *self, forcePowers_t forcePower) VectorSubtract(gripEnt->client->ps.origin, self->client->ps.origin, a); - if (VectorLength(a) > MAX_GRIP_DISTANCE || !InFront( gripEnt->client->ps.origin, self->client->ps.origin, self->client->ps.viewangles, 0.9f )) - { - WP_ForcePowerStop(self, forcePower); - self->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE; - gripEnt->client->ps.forceGripChangeMovetype = PM_NORMAL; - return; - } - trap_Trace(&tr, self->client->ps.origin, NULL, NULL, gripEnt->client->ps.origin, self->s.number, MASK_PLAYERSOLID); - if (tr.fraction != 1 && - tr.entityNum != gripEnt->s.number) - { - WP_ForcePowerStop(self, forcePower); - self->client->ps.fd.forceGripEntityNum = ENTITYNUM_NONE; - gripEnt->client->ps.forceGripChangeMovetype = PM_NORMAL; - return; - } - gripLevel = WP_AbsorbConversion(gripEnt, gripEnt->client->ps.fd.forcePowerLevel[FP_ABSORB], self, FP_GRIP, self->client->ps.fd.forcePowerLevel[FP_GRIP], forcePowerNeeded[self->client->ps.fd.forcePowerLevel[FP_GRIP]][FP_GRIP]); if (gripLevel == -1) @@ -3397,6 +3414,27 @@ void DoGripAction(gentity_t *self, forcePowers_t forcePower) return; } + if (VectorLength(a) > MAX_GRIP_DISTANCE) + { + WP_ForcePowerStop(self, forcePower); + return; + } + + if ( !InFront( gripEnt->client->ps.origin, self->client->ps.origin, self->client->ps.viewangles, 0.9f ) && + gripLevel < FORCE_LEVEL_3) + { + WP_ForcePowerStop(self, forcePower); + return; + } + + if (tr.fraction != 1 && + tr.entityNum != gripEnt->s.number && + gripLevel < FORCE_LEVEL_3) + { + WP_ForcePowerStop(self, forcePower); + return; + } + if (gripLevel == FORCE_LEVEL_1) { gripEnt->client->ps.fd.forceGripBeingGripped = level.time + 1000; @@ -3459,6 +3497,8 @@ void DoGripAction(gentity_t *self, forcePowers_t forcePower) if (gripEnt->client->ps.forceGripMoveInterval < level.time) { + float nvLen = 0; + VectorCopy(gripEnt->client->ps.origin, start_o); AngleVectors(self->client->ps.viewangles, fwd, NULL, NULL); fwd_o[0] = self->client->ps.origin[0] + fwd[0]*128; @@ -3466,19 +3506,43 @@ void DoGripAction(gentity_t *self, forcePowers_t forcePower) fwd_o[2] = self->client->ps.origin[2] + fwd[2]*128; fwd_o[2] += 16; VectorSubtract(fwd_o, start_o, nvel); - if (VectorLength(nvel) < 16) + + nvLen = VectorLength(nvel); + + if (nvLen < 16) { //within x units of desired spot VectorNormalize(nvel); gripEnt->client->ps.velocity[0] = nvel[0]*8; gripEnt->client->ps.velocity[1] = nvel[1]*8; gripEnt->client->ps.velocity[2] = nvel[2]*8; } + else if (nvLen < 64) + { + VectorNormalize(nvel); + gripEnt->client->ps.velocity[0] = nvel[0]*128; + gripEnt->client->ps.velocity[1] = nvel[1]*128; + gripEnt->client->ps.velocity[2] = nvel[2]*128; + } + else if (nvLen < 128) + { + VectorNormalize(nvel); + gripEnt->client->ps.velocity[0] = nvel[0]*256; + gripEnt->client->ps.velocity[1] = nvel[1]*256; + gripEnt->client->ps.velocity[2] = nvel[2]*256; + } + else if (nvLen < 200) + { + VectorNormalize(nvel); + gripEnt->client->ps.velocity[0] = nvel[0]*512; + gripEnt->client->ps.velocity[1] = nvel[1]*512; + gripEnt->client->ps.velocity[2] = nvel[2]*512; + } else { VectorNormalize(nvel); - gripEnt->client->ps.velocity[0] = nvel[0]*64; - gripEnt->client->ps.velocity[1] = nvel[1]*64; - gripEnt->client->ps.velocity[2] = nvel[2]*64; + gripEnt->client->ps.velocity[0] = nvel[0]*700; + gripEnt->client->ps.velocity[1] = nvel[1]*700; + gripEnt->client->ps.velocity[2] = nvel[2]*700; } gripEnt->client->ps.forceGripMoveInterval = level.time + 300; //only update velocity every 300ms, so as to avoid heavy bandwidth usage @@ -3638,6 +3702,12 @@ static void WP_ForcePowerRun( gentity_t *self, forcePowers_t forcePower, usercmd } } + if (self->health < 1 || self->client->ps.stats[STAT_HEALTH] < 1) + { + WP_ForcePowerStop( self, forcePower ); + break; + } + if (self->client->ps.fd.forceHealTime > level.time) { break; @@ -3696,11 +3766,16 @@ static void WP_ForcePowerRun( gentity_t *self, forcePowers_t forcePower, usercmd } break; case FP_RAGE: - if (self->client->ps.fd.forceRageRecoveryTime < level.time) + if (self->health < 1) + { + WP_ForcePowerStop(self, forcePower); + break; + } + if (self->client->ps.forceRageDrainTime < level.time) { int addTime = 400; - self->health -= 1; + self->health -= 2; if (self->client->ps.fd.forcePowerLevel[FP_RAGE] == FORCE_LEVEL_1) { @@ -3714,7 +3789,7 @@ static void WP_ForcePowerRun( gentity_t *self, forcePowers_t forcePower, usercmd { addTime = 400; } - self->client->ps.fd.forceRageRecoveryTime = level.time + addTime; + self->client->ps.forceRageDrainTime = level.time + addTime; } if (self->health < 1) @@ -4266,6 +4341,12 @@ void JediMasterUpdate(gentity_t *self) { self->client->ps.fd.forcePowersKnown |= (1 << i); self->client->ps.fd.forcePowerLevel[i] = FORCE_LEVEL_3; + + if (i == FP_TEAM_HEAL || i == FP_TEAM_FORCE) + { + self->client->ps.fd.forcePowersKnown &= ~(1 << i); + self->client->ps.fd.forcePowerLevel[i] = 0; + } } else { @@ -4319,6 +4400,11 @@ void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd ) return; } + if (self->client->ps.fd.saberAnimLevel > self->client->ps.fd.forcePowerLevel[FP_SABERATTACK]) + { + self->client->ps.fd.saberAnimLevel = self->client->ps.fd.forcePowerLevel[FP_SABERATTACK]; + } + if (!(self->client->ps.fd.forcePowersKnown & (1 << FP_LEVITATION))) { self->client->ps.fd.forcePowersKnown |= (1 << FP_LEVITATION); @@ -4334,26 +4420,16 @@ void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd ) self->client->ps.fd.forcePowerSelected = 0; } - if ( ((self->client->sess.selectedFP && self->client->sess.selectedFP != self->client->ps.fd.forcePowerSelected+1) || - (self->client->sess.saberLevel && self->client->sess.saberLevel != self->client->ps.fd.saberAnimLevel+1)) && + if ( ((self->client->sess.selectedFP != self->client->ps.fd.forcePowerSelected) || + (self->client->sess.saberLevel != self->client->ps.fd.saberAnimLevel)) && !(self->r.svFlags & SVF_BOT) ) { if (self->client->sess.updateUITime < level.time) { //a bit hackish, but we don't want the client to flood with userinfo updates if they rapidly cycle //through their force powers or saber attack levels - char userinfo[MAX_INFO_STRING]; - self->client->sess.selectedFP = self->client->ps.fd.forcePowerSelected+1; - self->client->sess.saberLevel = self->client->ps.fd.saberAnimLevel+1; - - trap_GetUserinfo( self->s.number, userinfo, sizeof( userinfo ) ); - Info_SetValueForKey(userinfo, "sfp", va("%i", self->client->ps.fd.forcePowerSelected)); - Info_SetValueForKey(userinfo, "sal", va("%i", self->client->ps.fd.saberAnimLevel)); - trap_SetUserinfo( self->s.number, userinfo ); - - //old method: - //ClientUserinfoChanged(self->s.number); - //self->client->sess.updateUITime = level.time + 500; + self->client->sess.selectedFP = self->client->ps.fd.forcePowerSelected; + self->client->sess.saberLevel = self->client->ps.fd.saberAnimLevel; } } @@ -4385,6 +4461,14 @@ void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd ) self->client->ps.velocity[2] = 300; } + else if (self->client->ps.quickerGetup) + { + self->client->ps.quickerGetup = qfalse; + G_EntitySound( self, CHAN_VOICE, G_SoundIndex("*jump1.wav") ); + self->client->ps.forceDodgeAnim = 3; + self->client->ps.forceHandExtendTime = level.time + 600; + self->client->ps.velocity[2] = 200; + } else { self->client->ps.forceDodgeAnim = 1; @@ -4591,18 +4675,20 @@ void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd ) if (self->client->ps.fd.forceJumpCharge && self->client->ps.groundEntityNum == ENTITYNUM_NONE && self->client->fjDidJump) { - if (ucmd->upmove < 10 && !(ucmd->buttons & BUTTON_FORCEJUMP) && (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_LEVITATION)) + if (ucmd->upmove < 10 && /*!(ucmd->buttons & BUTTON_FORCEJUMP) &&*/ (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_LEVITATION)) { G_MuteSound(self->client->ps.fd.killSoundEntIndex[TRACK_CHANNEL_1-50], CHAN_VOICE); self->client->ps.fd.forceJumpCharge = 0; } } - if ( /*!self->client->fjDidJump &&*/ (ucmd->buttons & BUTTON_FORCEJUMP) && !BG_HasYsalimari(g_gametype.integer, &self->client->ps) && BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, FP_LEVITATION) ) + /* + if ( (ucmd->buttons & BUTTON_FORCEJUMP) && !BG_HasYsalimari(g_gametype.integer, &self->client->ps) && BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, FP_LEVITATION) ) {//just charging up ForceJumpCharge( self, ucmd ); usingForce = qtrue; } + */ #ifndef METROID_JUMP else if ( /*!self->client->fjDidJump &&*/ (ucmd->upmove > 10) && (self->client->ps.pm_flags & PMF_JUMP_HELD) && self->client->ps.groundTime && (level.time - self->client->ps.groundTime) > 150 && !BG_HasYsalimari(g_gametype.integer, &self->client->ps) && BG_CanUseFPNow(g_gametype.integer, &self->client->ps, level.time, FP_LEVITATION)/*&& !self->client->ps.fd.forceJumpZStart*/ ) {//just charging up @@ -4615,7 +4701,7 @@ void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd ) } #endif - if (!(ucmd->buttons & BUTTON_FORCEJUMP) && !(self->client->ps.pm_flags & PMF_JUMP_HELD) && self->client->ps.fd.forceJumpCharge) + if (/*!(ucmd->buttons & BUTTON_FORCEJUMP) &&*/ !(self->client->ps.pm_flags & PMF_JUMP_HELD) && self->client->ps.fd.forceJumpCharge) { if (!(ucmd->buttons & BUTTON_FORCEPOWER) || self->client->ps.fd.forcePowerSelected != FP_LEVITATION) @@ -4740,7 +4826,14 @@ void WP_ForcePowersUpdate( gentity_t *self, usercmd_t *ucmd ) { if (g_gametype.integer != GT_HOLOCRON || g_MaxHolocronCarry.value) { - WP_ForcePowerRegenerate( self, 0 ); + if (self->client->ps.isJediMaster && g_gametype.integer == GT_JEDIMASTER) + { + WP_ForcePowerRegenerate( self, 4 ); //jedi master regenerates 4 times as fast + } + else + { + WP_ForcePowerRegenerate( self, 0 ); + } } else { //regenerate based on the number of holocrons carried diff --git a/CODEmp/game/w_saber.c b/CODE-mp/game/w_saber.c similarity index 91% rename from CODEmp/game/w_saber.c rename to CODE-mp/game/w_saber.c index b1b29f3..bd4d8f4 100644 --- a/CODEmp/game/w_saber.c +++ b/CODE-mp/game/w_saber.c @@ -1,5 +1,5 @@ #include "g_local.h" -#include "bg_local.h" +#include "bg_local.h" //Only because we use PM_SetAnim here once. #include "w_saber.h" #include "ai_main.h" #include "..\ghoul2\g2.h" @@ -169,26 +169,6 @@ static void G_SwingAngles( float destination, float swingTolerance, float clampT } } -qboolean G_InRoll( gentity_t *ent ) -{ - switch ( (ent->client->ps.legsAnim&~ANIM_TOGGLEBIT) ) - { - case BOTH_ROLL_F: - case BOTH_ROLL_B: - case BOTH_ROLL_R: - case BOTH_ROLL_L: - if ( ent->client->ps.legsTimer > 0 ) - { - return qtrue; - } - break; - } - return qfalse; -} - -qboolean PM_SaberInSpecial( int move ); -qboolean PM_SaberInSpecialAttack( int anim ); - //NOTE: If C` is modified this function should be modified as well (and vice versa) void G_G2ClientSpineAngles( gentity_t *ent, vec3_t viewAngles, const vec3_t angles, vec3_t thoracicAngles, vec3_t ulAngles, vec3_t llAngles ) { @@ -204,10 +184,10 @@ void G_G2ClientSpineAngles( gentity_t *ent, vec3_t viewAngles, const vec3_t angl !BG_SpinningSaberAnim( ent->client->ps.torsoAnim ) && !BG_InSpecialJump( ent->client->ps.legsAnim ) && !BG_InSpecialJump( ent->client->ps.torsoAnim ) && - !G_InRoll(ent) && - !PM_SaberInSpecial(ent->client->ps.saberMove) && - !PM_SaberInSpecialAttack(ent->client->ps.torsoAnim) && - !PM_SaberInSpecialAttack(ent->client->ps.legsAnim) ) + !BG_InRoll(&ent->client->ps, ent->client->ps.legsAnim) && + !BG_SaberInSpecial(ent->client->ps.saberMove) && + !BG_SaberInSpecialAttack(ent->client->ps.torsoAnim) && + !BG_SaberInSpecialAttack(ent->client->ps.legsAnim) ) { //adjust for motion offset mdxaBone_t boltMatrix; @@ -462,8 +442,6 @@ void G_G2PlayerAngles( gentity_t *ent, vec3_t legs[3], vec3_t legsAngles){ //trap_G2API_SetBoneAngles(ent->client->ghoul2, 0, "cranium", headAngles, BONE_ANGLES_POSTMULT, POSITIVE_Z, NEGATIVE_Y, POSITIVE_X, NULL, 0, level.time); } -qboolean PM_SaberInAttack( int move ); - qboolean SaberAttacking(gentity_t *self) { /* @@ -472,7 +450,7 @@ qboolean SaberAttacking(gentity_t *self) return qtrue; } */ - if (PM_SaberInAttack(self->client->ps.saberMove)) + if (BG_SaberInAttack(self->client->ps.saberMove)) { return qtrue; } @@ -565,8 +543,6 @@ qboolean WP_SabersCheckLock2( gentity_t *attacker, gentity_t *defender, sabersLo return qfalse; break; } -// NPC_SetAnim( attacker, SETANIM_BOTH, attAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD ); -// NPC_SetAnim( defender, SETANIM_BOTH, defAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD ); memset (&pmv, 0, sizeof(pmv)); pmv.ps = &attacker->client->ps; @@ -576,6 +552,7 @@ qboolean WP_SabersCheckLock2( gentity_t *attacker, gentity_t *defender, sabersLo pmv.pointcontents = trap_PointContents; pmv.gametype = g_gametype.integer; + //This is a rare exception, you should never really call PM_ utility functions from game or cgame (despite the fact that it's technically possible) pm = &pmv; PM_SetAnim(SETANIM_BOTH, attAnim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD, 0); attacker->client->ps.saberLockFrame = attacker->client->animations[attAnim].firstFrame+(attacker->client->animations[attAnim].numFrames*0.5); @@ -594,68 +571,13 @@ qboolean WP_SabersCheckLock2( gentity_t *attacker, gentity_t *defender, sabersLo attacker->client->ps.saberLockAdvance = qfalse; defender->client->ps.saberLockAdvance = qfalse; -// if( ValidAnimFileIndex( attacker->client->clientInfo.animFileIndex ) ) - { -// anim = &level.knownAnimFileSets[attacker->client->clientInfo.animFileIndex].animations[attAnim]; -// advance = floor( anim->numFrames*attStart ); -// PM_SetAnimFrame( attacker, anim->firstFrame + advance, qtrue, qtrue ); - /* - if ( d_saberCombat->integer ) - { - Com_Printf( "%s starting saber lock, anim = %s, %d frames to go!\n", attacker->NPC_type, animTable[attAnim].name, anim->numFrames-advance ); - } - */ - } -// if( ValidAnimFileIndex( defender->client->clientInfo.animFileIndex ) ) - { -// anim = &level.knownAnimFileSets[defender->client->clientInfo.animFileIndex].animations[defAnim]; -// PM_SetAnimFrame( defender, anim->firstFrame + advance, qtrue, qtrue );//was anim->firstFrame + anim->numFrames - advance, but that's wrong since they are matched anims - /* - if ( d_saberCombat->integer ) - { - Com_Printf( "%s starting saber lock, anim = %s, %d frames to go!\n", defender->NPC_type, animTable[defAnim].name, advance ); - } - */ - } VectorClear( attacker->client->ps.velocity ); VectorClear( defender->client->ps.velocity ); attacker->client->ps.saberLockTime = defender->client->ps.saberLockTime = level.time + 10000; attacker->client->ps.saberLockEnemy = defender->s.number; defender->client->ps.saberLockEnemy = attacker->s.number; attacker->client->ps.weaponTime = defender->client->ps.weaponTime = Q_irand( 1000, 3000 );//delay 1 to 3 seconds before pushing - //MATCH ANGLES - /* - if ( attacker->NPC && defender->NPC ) - {//if 2 NPCs, just set pitch to 0 - attacker->client->ps.viewangles[PITCH] = 0; - } - else - {//if a player is involved, clamp player's pitch and match NPC's to player - if ( !attacker->s.number ) - { - if ( attacker->client->ps.viewangles[PITCH] > 50 ) - { - attacker->client->ps.viewangles[PITCH] = 50; - } - else if ( attacker->client->ps.viewangles[PITCH] < -50 ) - { - attacker->client->ps.viewangles[PITCH] = -50; - } - } - else if ( !defender->s.number ) - { - if ( defender->client->ps.viewangles[PITCH] > 50 ) - { - defender->client->ps.viewangles[PITCH] = 50; - } - else if ( defender->client->ps.viewangles[PITCH] < -50 ) - { - defender->client->ps.viewangles[PITCH] = -50; - } - attacker->client->ps.viewangles[PITCH] = defender->client->ps.viewangles[PITCH]*-1; - } - } - */ + VectorSubtract( defender->r.currentOrigin, attacker->r.currentOrigin, defDir ); VectorCopy( attacker->client->ps.viewangles, attAngles ); attAngles[YAW] = vectoyaw( defDir ); @@ -689,19 +611,20 @@ qboolean WP_SabersCheckLock2( gentity_t *attacker, gentity_t *defender, sabersLo } //DONE! - return qtrue; } -//This can only be called here because it does not reference pm -qboolean PM_InRoll( playerState_t *ps, int anim ); - qboolean WP_SabersCheckLock( gentity_t *ent1, gentity_t *ent2 ) { float dist; qboolean ent1BlockingPlayer = qfalse; qboolean ent2BlockingPlayer = qfalse; + if (!g_saberLocking.integer) + { + return qfalse; + } + if (!ent1->client || !ent2->client) { return qfalse; @@ -742,11 +665,11 @@ qboolean WP_SabersCheckLock( gentity_t *ent1, gentity_t *ent2 ) return qfalse; } - if (PM_InRoll(&ent1->client->ps, ent1->client->ps.legsAnim)) + if (BG_InRoll(&ent1->client->ps, ent1->client->ps.legsAnim)) { return qfalse; } - if (PM_InRoll(&ent2->client->ps, ent2->client->ps.legsAnim)) + if (BG_InRoll(&ent2->client->ps, ent2->client->ps.legsAnim)) { return qfalse; } @@ -1155,6 +1078,11 @@ qboolean CheckSaberDamage(gentity_t *self, vec3_t saberStart, vec3_t saberEnd, q return qfalse; } + if (dmg > 5 && self->client->ps.isJediMaster) + { //give the Jedi Master more saber attack power + dmg *= 2; + } + VectorSubtract(saberEnd, saberStart, dir); VectorNormalize(dir); @@ -1376,8 +1304,8 @@ qboolean CheckSaberDamage(gentity_t *self, vec3_t saberStart, vec3_t saberEnd, q #define MIN_SABER_SLICE_RETURN_DISTANCE 30 -#define SABER_THROWN_HIT_DAMAGE 20 -#define SABER_THROWN_RETURN_HIT_DAMAGE 15 +#define SABER_THROWN_HIT_DAMAGE 60 +#define SABER_THROWN_RETURN_HIT_DAMAGE 20 void thrownSaberTouch (gentity_t *saberent, gentity_t *other, trace_t *trace); @@ -1429,7 +1357,7 @@ void saberCheckRadiusDamage(gentity_t *saberent, int returning) if (tr.fraction == 1 || tr.entityNum == ent->s.number) { //Slice them - if (WP_SaberCanBlock(ent, tr.endpos, 0, MOD_SABER, qfalse, 0)) + if (!saberOwner->client->ps.isJediMaster && WP_SaberCanBlock(ent, tr.endpos, 0, MOD_SABER, qfalse, 0)) { te = G_TempEntity( tr.endpos, EV_SABER_BLOCK ); VectorCopy(tr.endpos, te->s.origin); @@ -1453,7 +1381,14 @@ void saberCheckRadiusDamage(gentity_t *saberent, int returning) VectorSubtract(tr.endpos, saberent->r.currentOrigin, dir); VectorNormalize(dir); - G_Damage(ent, saberOwner, saberOwner, dir, tr.endpos, saberent->damage, 0, MOD_SABER); + if (saberOwner->client->ps.isJediMaster) + { //2x damage for the Jedi Master + G_Damage(ent, saberOwner, saberOwner, dir, tr.endpos, saberent->damage*2, 0, MOD_SABER); + } + else + { + G_Damage(ent, saberOwner, saberOwner, dir, tr.endpos, saberent->damage, 0, MOD_SABER); + } te = G_TempEntity( tr.endpos, EV_SABER_HIT ); VectorCopy(tr.endpos, te->s.origin); @@ -1883,8 +1818,6 @@ runMin: G_RunObject(saberent); } -void PM_SaberStartTransAnim( int saberAnimLevel, int anim, float *animSpeed ); - void WP_SaberPositionUpdate( gentity_t *self, usercmd_t *ucmd ) { //rww - keep the saber position as updated as possible on the server so that we can try to do realistic-looking contact stuff mdxaBone_t boltMatrix; @@ -2100,6 +2033,8 @@ void WP_SaberPositionUpdate( gentity_t *self, usercmd_t *ucmd ) self->client->ps.saberDidThrowTime = level.time; self->client->dangerTime = level.time; + self->client->ps.eFlags &= ~EF_INVULNERABLE; + self->client->invulnerableTimer = 0; trap_LinkEntity(saberent); } @@ -2110,7 +2045,7 @@ void WP_SaberPositionUpdate( gentity_t *self, usercmd_t *ucmd ) } } } - else + else if (!self->client->ps.saberHolstered) { gentity_t *saberent = &g_entities[self->client->ps.saberEntityNum]; @@ -2135,7 +2070,7 @@ void WP_SaberPositionUpdate( gentity_t *self, usercmd_t *ucmd ) VectorCopy(dir, te->s.angles); te->s.eventParm = 1; - self->client->ps.saberIdleWound = level.time + 300; + self->client->ps.saberIdleWound = level.time + Q_irand(400, 600); } VectorCopy(boltOrigin, self->client->lastSaberBase); @@ -2203,9 +2138,9 @@ finalUpdate: if (!BG_FlippingAnim( self->client->ps.legsAnim ) && !BG_SpinningSaberAnim( self->client->ps.legsAnim ) && !BG_InSpecialJump( self->client->ps.legsAnim ) && - !G_InRoll(self) && - !PM_SaberInSpecial(self->client->ps.saberMove) && - !PM_SaberInSpecialAttack(self->client->ps.legsAnim) ) + !BG_InRoll(&self->client->ps, self->client->ps.legsAnim) && + !BG_SaberInSpecial(self->client->ps.saberMove) && + !BG_SaberInSpecialAttack(self->client->ps.legsAnim) ) { trap_G2API_SetBoneAnim(self->client->ghoul2, 0, "Motion", self->client->animations[legsAnim].firstFrame, self->client->animations[legsAnim].firstFrame+self->client->animations[legsAnim].numFrames, BONE_ANIM_OVERRIDE_FREEZE|BONE_ANIM_BLEND, animSpeedScale, level.time, -1, 150); } @@ -2228,7 +2163,7 @@ finalUpdate: initialFrame += 2; } - PM_SaberStartTransAnim(self->client->ps.fd.saberAnimLevel, f, &animSpeedScale); + BG_SaberStartTransAnim(self->client->ps.fd.saberAnimLevel, f, &animSpeedScale); trap_G2API_SetBoneAnim(self->client->ghoul2, 0, "upper_lumbar", initialFrame, self->client->animations[f].firstFrame+self->client->animations[f].numFrames, BONE_ANIM_OVERRIDE_FREEZE|BONE_ANIM_BLEND, animSpeedScale, level.time, initialFrame, 150); @@ -2239,9 +2174,9 @@ finalUpdate: if (!BG_FlippingAnim( self->client->ps.torsoAnim ) && !BG_SpinningSaberAnim( self->client->ps.torsoAnim ) && !BG_InSpecialJump( self->client->ps.torsoAnim ) && - !G_InRoll(self) && - !PM_SaberInSpecial(self->client->ps.saberMove) && - !PM_SaberInSpecialAttack(self->client->ps.torsoAnim) ) + !BG_InRoll(&self->client->ps, self->client->ps.legsAnim) && + !BG_SaberInSpecial(self->client->ps.saberMove) && + !BG_SaberInSpecialAttack(self->client->ps.torsoAnim) ) { trap_G2API_SetBoneAnim(self->client->ghoul2, 0, "Motion", self->client->animations[f].firstFrame, self->client->animations[f].firstFrame+self->client->animations[f].numFrames, BONE_ANIM_OVERRIDE_FREEZE|BONE_ANIM_BLEND, animSpeedScale, level.time, initialFrame, 150); } diff --git a/CODEmp/game/w_saber.h b/CODE-mp/game/w_saber.h similarity index 85% rename from CODEmp/game/w_saber.h rename to CODE-mp/game/w_saber.h index 1259b1d..d0b581b 100644 --- a/CODEmp/game/w_saber.h +++ b/CODE-mp/game/w_saber.h @@ -20,4 +20,3 @@ extern int forcePowerNeeded[NUM_FORCE_POWER_LEVELS][NUM_FORCE_POWERS]; extern float forceJumpHeight[NUM_FORCE_POWER_LEVELS]; extern float forceJumpStrength[NUM_FORCE_POWER_LEVELS]; -int InFieldOfVision(vec3_t viewangles, float fov, vec3_t angles); diff --git a/CODEmp/ghoul2/g2.h b/CODE-mp/ghoul2/G2.h similarity index 100% rename from CODEmp/ghoul2/g2.h rename to CODE-mp/ghoul2/G2.h diff --git a/CODEmp/ghoul2/g2_api.cpp b/CODE-mp/ghoul2/G2_API.cpp similarity index 100% rename from CODEmp/ghoul2/g2_api.cpp rename to CODE-mp/ghoul2/G2_API.cpp diff --git a/CODEmp/ghoul2/g2_bolts.cpp b/CODE-mp/ghoul2/G2_bolts.cpp similarity index 100% rename from CODEmp/ghoul2/g2_bolts.cpp rename to CODE-mp/ghoul2/G2_bolts.cpp diff --git a/CODEmp/ghoul2/g2_bones.cpp b/CODE-mp/ghoul2/G2_bones.cpp similarity index 100% rename from CODEmp/ghoul2/g2_bones.cpp rename to CODE-mp/ghoul2/G2_bones.cpp diff --git a/CODEmp/ghoul2/g2_gore.h b/CODE-mp/ghoul2/G2_gore.h similarity index 100% rename from CODEmp/ghoul2/g2_gore.h rename to CODE-mp/ghoul2/G2_gore.h diff --git a/CODEmp/ghoul2/g2_local.h b/CODE-mp/ghoul2/G2_local.h similarity index 100% rename from CODEmp/ghoul2/g2_local.h rename to CODE-mp/ghoul2/G2_local.h diff --git a/CODEmp/ghoul2/g2_misc.cpp b/CODE-mp/ghoul2/G2_misc.cpp similarity index 100% rename from CODEmp/ghoul2/g2_misc.cpp rename to CODE-mp/ghoul2/G2_misc.cpp diff --git a/CODEmp/ghoul2/g2_surfaces.cpp b/CODE-mp/ghoul2/G2_surfaces.cpp similarity index 100% rename from CODEmp/ghoul2/g2_surfaces.cpp rename to CODE-mp/ghoul2/G2_surfaces.cpp diff --git a/CODEmp/ghoul2/ghoul2_shared.h b/CODE-mp/ghoul2/ghoul2_shared.h similarity index 100% rename from CODEmp/ghoul2/ghoul2_shared.h rename to CODE-mp/ghoul2/ghoul2_shared.h diff --git a/CODE-mp/ghoul2/vssver.scc b/CODE-mp/ghoul2/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..7a1b52fdb1f1ef7f6ebf176e27e20650421e1383 GIT binary patch literal 176 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~NW=^YmjW?}$?5Fnky&M43$XTr-06bS|LPlp%Z z(|9tGM*+wW1M>IYa{i|fx{rq$$PWj}f0=pvi*q&)3y>cH(xE0w|}6sF;2kb%b1pbLs3EX)Z?1{sbL>VKZ|;eVdrd0x(W--jdL;=vq|H@g!5 zi4$rq-7bBJOBOO=sNLhi&?Uls!(3dhjQ+;s9)%+kKDM;>AB!W4;kK&g_|g;pWC{Gm zFKnsME+-QtX zOhq7@e2XlDtuw5`w5gwb0G6eN_VP~^1$bh8BhEa*hGmH)~D4HE%-Ff8maJuD3Q`n*_ znCqt^`tIa(t*C0q7vO^0ciIl0Zt_L0UskQNtK-ON@N{Qne6q$s*29x;#)O5h%E_1D zCr5p+NMm_q18h+VBsRNIyL2aB%1UErf+jEGT}^Q!mq200yW{9tcT?dl_Ez|vLT zx-lV%&&@v*uAb`T+oEPdP%V~WSyopj!8uCExCw#`q`_jBOQ z!)t0@jDy~v3m@;vkUbi*lFjh*j@}zB-&wK+mSnqw0_wcTd2m*HlfeL&jny~pHLeL$Kt3bG{VuC53&HL=3FIqQHyLWkNPzjLfPB}_>RZ>S8i4tyf&BG_Xa1i`J_UB~ z86aQIDBpI|`IllqCc{}E(ds?5;DTv0SpFQ4&-q?q@0pNAVE%a^-%*M+KQ7c+j2Wo@ z0+65Bq%@PwFb*t#5y%%d(2G4cw-(I51mu5n&oOgaDhlRb2J*kBtjVm1xdRT5D?q-Q z`mKA1_}7B@SAqOO{of2-uRXy0Ye0V3-Pzk^reuQo*Ma=TBg}3S=Zvgp;dv{T463^m$Ck&Rq4dgdyS_w66*9Pnext) { #ifdef HUNK_DEBUG - Com_sprintf(buf, sizeof(buf), "size = %8d: %s, line: %d (%s)\r\n", block->size, block->file, block->line, block->label); + Com_sprintf(buf, sizeof(buf), "size\t%8d\t%s\tline\t%d\t(%s)\r\n", block->size, block->file, block->line, block->label); FS_Write(buf, strlen(buf), logfile); +// OutputDebugString(buf); #endif size += block->size; numBlocks++; @@ -2186,7 +2205,14 @@ int Com_EventLoop( void ) { CL_JoystickEvent( ev.evValue, ev.evValue2, ev.evTime ); break; case SE_CONSOLE: - Cbuf_AddText( (char *)ev.evPtr ); + if ( ((char *)ev.evPtr)[0] == '\\' || ((char *)ev.evPtr)[0] == '/' ) + { + Cbuf_AddText( (char *)ev.evPtr+1 ); + } + else + { + Cbuf_AddText( (char *)ev.evPtr ); + } Cbuf_AddText( "\n" ); break; case SE_PACKET: diff --git a/CODEmp/qcommon/cvar.cpp b/CODE-mp/qcommon/cvar.cpp similarity index 93% rename from CODEmp/qcommon/cvar.cpp rename to CODE-mp/qcommon/cvar.cpp index 6f51766..c7adddc 100644 --- a/CODEmp/qcommon/cvar.cpp +++ b/CODE-mp/qcommon/cvar.cpp @@ -265,8 +265,6 @@ Cvar_Set2 cvar_t *Cvar_Set2( const char *var_name, const char *value, qboolean force ) { cvar_t *var; - Com_DPrintf( "Cvar_Set2: %s %s\n", var_name, value ); - if ( !Cvar_ValidateString( var_name ) ) { Com_Printf("invalid cvar name string: %s\n", var_name ); var_name = "BADNAME"; @@ -292,6 +290,12 @@ cvar_t *Cvar_Set2( const char *var_name, const char *value, qboolean force ) { } } + // Dont display the update when its internal + if ( !(var->flags & CVAR_INTERNAL) ) + { + Com_DPrintf( "Cvar_Set2: %s %s\n", var_name, value ); + } + if (!value ) { value = var->resetString; } @@ -450,7 +454,13 @@ qboolean Cvar_Command( void ) { } // perform a variable print or set - if ( Cmd_Argc() == 1 ) { + if ( Cmd_Argc() == 1 ) + { + if (v->flags & CVAR_INTERNAL) // don't display + { + return qtrue; + } + Com_Printf ("\"%s\" is:\"%s" S_COLOR_WHITE "\" default:\"%s" S_COLOR_WHITE "\"\n", v->name, v->string, v->resetString ); if ( v->latchedString ) { Com_Printf( "latched: \"%s\"\n", v->latchedString ); diff --git a/CODEmp/qcommon/disablewarnings.h b/CODE-mp/qcommon/disablewarnings.h similarity index 100% rename from CODEmp/qcommon/disablewarnings.h rename to CODE-mp/qcommon/disablewarnings.h diff --git a/CODEmp/qcommon/files.cpp b/CODE-mp/qcommon/files.cpp similarity index 96% rename from CODEmp/qcommon/files.cpp rename to CODE-mp/qcommon/files.cpp index 622bf2b..a9e1e6b 100644 --- a/CODEmp/qcommon/files.cpp +++ b/CODE-mp/qcommon/files.cpp @@ -1061,9 +1061,9 @@ int FS_FOpenFileRead( const char *filename, fileHandle_t *file, qboolean uniqueF } } - // qagame.qvm - 13 - // dTZT`X!di` - if (!(pak->referenced & FS_QAGAME_REF) && FS_ShiftedStrStr(filename, "dTZT`X!di`", 13)) { + // jk2mpgame.qvm - 13 + // ]^%`cZT`X!di` + if (!(pak->referenced & FS_QAGAME_REF) && FS_ShiftedStrStr(filename, "]^%`cZT`X!di`", 13)) { pak->referenced |= FS_QAGAME_REF; } // cgame.qvm - 7 diff --git a/CODEmp/qcommon/huffman.cpp b/CODE-mp/qcommon/huffman.cpp similarity index 100% rename from CODEmp/qcommon/huffman.cpp rename to CODE-mp/qcommon/huffman.cpp diff --git a/CODEmp/qcommon/md4.cpp b/CODE-mp/qcommon/md4.cpp similarity index 100% rename from CODEmp/qcommon/md4.cpp rename to CODE-mp/qcommon/md4.cpp diff --git a/CODEmp/qcommon/msg.cpp b/CODE-mp/qcommon/msg.cpp similarity index 100% rename from CODEmp/qcommon/msg.cpp rename to CODE-mp/qcommon/msg.cpp diff --git a/CODEmp/qcommon/net_chan.cpp b/CODE-mp/qcommon/net_chan.cpp similarity index 100% rename from CODEmp/qcommon/net_chan.cpp rename to CODE-mp/qcommon/net_chan.cpp diff --git a/CODEmp/qcommon/q_math.cpp b/CODE-mp/qcommon/q_math.cpp similarity index 100% rename from CODEmp/qcommon/q_math.cpp rename to CODE-mp/qcommon/q_math.cpp diff --git a/CODEmp/qcommon/q_shared.cpp b/CODE-mp/qcommon/q_shared.cpp similarity index 100% rename from CODEmp/qcommon/q_shared.cpp rename to CODE-mp/qcommon/q_shared.cpp diff --git a/CODEmp/qcommon/qcommon.h b/CODE-mp/qcommon/qcommon.h similarity index 100% rename from CODEmp/qcommon/qcommon.h rename to CODE-mp/qcommon/qcommon.h diff --git a/CODEmp/qcommon/qfiles.h b/CODE-mp/qcommon/qfiles.h similarity index 95% rename from CODEmp/qcommon/qfiles.h rename to CODE-mp/qcommon/qfiles.h index 2c82b02..263abc9 100644 --- a/CODEmp/qcommon/qfiles.h +++ b/CODE-mp/qcommon/qfiles.h @@ -98,7 +98,7 @@ typedef struct _TargaHeader { #define MD3_MAX_VERTS 4096 // per surface #define MD3_MAX_SHADERS 256 // per surface #define MD3_MAX_FRAMES 1024 // per model -#define MD3_MAX_SURFACES 32 // per model +#define MD3_MAX_SURFACES 48 // per model #define MD3_MAX_TAGS 16 // per frame // vertex scales diff --git a/CODEmp/qcommon/sstring.h b/CODE-mp/qcommon/sstring.h similarity index 100% rename from CODEmp/qcommon/sstring.h rename to CODE-mp/qcommon/sstring.h diff --git a/CODEmp/qcommon/strip.cpp b/CODE-mp/qcommon/strip.cpp similarity index 100% rename from CODEmp/qcommon/strip.cpp rename to CODE-mp/qcommon/strip.cpp diff --git a/CODEmp/qcommon/strip.h b/CODE-mp/qcommon/strip.h similarity index 100% rename from CODEmp/qcommon/strip.h rename to CODE-mp/qcommon/strip.h diff --git a/CODEmp/qcommon/tags.h b/CODE-mp/qcommon/tags.h similarity index 100% rename from CODEmp/qcommon/tags.h rename to CODE-mp/qcommon/tags.h diff --git a/CODEmp/qcommon/unzip.cpp b/CODE-mp/qcommon/unzip.cpp similarity index 100% rename from CODEmp/qcommon/unzip.cpp rename to CODE-mp/qcommon/unzip.cpp diff --git a/CODEmp/qcommon/unzip.h b/CODE-mp/qcommon/unzip.h similarity index 100% rename from CODEmp/qcommon/unzip.h rename to CODE-mp/qcommon/unzip.h diff --git a/CODEmp/qcommon/vm.cpp b/CODE-mp/qcommon/vm.cpp similarity index 100% rename from CODEmp/qcommon/vm.cpp rename to CODE-mp/qcommon/vm.cpp diff --git a/CODEmp/qcommon/vm_interpreted.cpp b/CODE-mp/qcommon/vm_interpreted.cpp similarity index 100% rename from CODEmp/qcommon/vm_interpreted.cpp rename to CODE-mp/qcommon/vm_interpreted.cpp diff --git a/CODEmp/qcommon/vm_local.h b/CODE-mp/qcommon/vm_local.h similarity index 100% rename from CODEmp/qcommon/vm_local.h rename to CODE-mp/qcommon/vm_local.h diff --git a/CODEmp/qcommon/vm_ppc.cpp b/CODE-mp/qcommon/vm_ppc.cpp similarity index 100% rename from CODEmp/qcommon/vm_ppc.cpp rename to CODE-mp/qcommon/vm_ppc.cpp diff --git a/CODEmp/qcommon/vm_x86.cpp b/CODE-mp/qcommon/vm_x86.cpp similarity index 96% rename from CODEmp/qcommon/vm_x86.cpp rename to CODE-mp/qcommon/vm_x86.cpp index dba5e4b..78722ea 100644 --- a/CODEmp/qcommon/vm_x86.cpp +++ b/CODE-mp/qcommon/vm_x86.cpp @@ -31,13 +31,13 @@ static int pc = 0; static int *instructionPointers = NULL; //#undef FTOL_PTR // bk001213 -//#define FTOL_PTR +#define FTOL_PTR #ifdef _WIN32 #if defined( FTOL_PTR ) -int __ftol( float ); -static int ftolPtr = (int)__ftol; +extern "C" int _ftol(float); +static int ftolPtr = (int)_ftol; #endif void AsmCall( void ); diff --git a/CODE-mp/qcommon/vssver.scc b/CODE-mp/qcommon/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..68b468e4544db617c3e3d82c23c6e0c6abcd362d GIT binary patch literal 672 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~LW7w(^PhyenQ0I8B`f^UoFoRne$vX27s@zkmI zdB!iK7=i3#Kpc_sfFo>vJD7hQ$X_)1_5>%pWm3#Q_6Z>7;F=?I?D#&g{7E4HX}7tM z#({XSd8dGU!K=6S+PxA1%by1Fqa&*Ov^dSd{4+ql?fy(JkMfJMAp6b&@qeF+OLum8 z%8CKm=YTlx-M^nvw>V{4fb8=?JpZlC<{0LOGCV-`1t5-FD)TktVyO&B|3x59TmERF z-ZV)t{}PZdQfJAlaQ~xx6p(!xh?jjglslxiSRSPQ3J{-2JM8{IWG|S1705R}lh;)w z8U^NG1M)xoH$8qtyjq?Y$i5E56V`1C>iH}t&kAJU0AktB44!G`^>U!_xCzAh`g_~r zCP~SG!t)joOPJR@S}?~NEPorwf2A%OlooJD5oG@zAdYFXTHP}LCzyX1$X|A4g87=* z-HIUdSb>IAzy3KTDtH!HJ_g92bo+6>M&3brkojpqV#4Q{r@G>MWI*cEf&6@z@9(YJ z+`#_N0P=Z6GB>#d8G^%iIgp>z_ha8XxhZmNK=mtt{Jq~!FGx~bBM0)&Rvpbusam1~M7;0Ew36H%zsfyus?<1NmkjE7axwn9GCA`vBxupFNO~ k@b?PX{Less#yf6?IkMlu;Ze)Zz#zcI(CAjHE)7x-0J}Z7Jpcdz literal 0 HcmV?d00001 diff --git a/CODEmp/renderer/glext.h b/CODE-mp/renderer/glext.h similarity index 100% rename from CODEmp/renderer/glext.h rename to CODE-mp/renderer/glext.h diff --git a/CODEmp/renderer/matcomp.c b/CODE-mp/renderer/matcomp.c similarity index 100% rename from CODEmp/renderer/matcomp.c rename to CODE-mp/renderer/matcomp.c diff --git a/CODEmp/renderer/matcomp.h b/CODE-mp/renderer/matcomp.h similarity index 100% rename from CODEmp/renderer/matcomp.h rename to CODE-mp/renderer/matcomp.h diff --git a/CODEmp/renderer/mdx_format.h b/CODE-mp/renderer/mdx_format.h similarity index 100% rename from CODEmp/renderer/mdx_format.h rename to CODE-mp/renderer/mdx_format.h diff --git a/CODE-mp/renderer/mssccprj.scc b/CODE-mp/renderer/mssccprj.scc new file mode 100644 index 0000000..ff8df37 --- /dev/null +++ b/CODE-mp/renderer/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[renderer.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\jk2sof2MP" +SCC_Project_Name = "$/General/code/renderer", YAAAAAAA diff --git a/CODEmp/renderer/qgl.h b/CODE-mp/renderer/qgl.h similarity index 100% rename from CODEmp/renderer/qgl.h rename to CODE-mp/renderer/qgl.h diff --git a/CODEmp/renderer/ref_trin.def b/CODE-mp/renderer/ref_trin.def similarity index 100% rename from CODEmp/renderer/ref_trin.def rename to CODE-mp/renderer/ref_trin.def diff --git a/CODEmp/renderer/renderer.dsp b/CODE-mp/renderer/renderer.dsp similarity index 100% rename from CODEmp/renderer/renderer.dsp rename to CODE-mp/renderer/renderer.dsp diff --git a/CODEmp/renderer/tr_worldeffects.cpp b/CODE-mp/renderer/tr_WorldEffects.cpp similarity index 93% rename from CODEmp/renderer/tr_worldeffects.cpp rename to CODE-mp/renderer/tr_WorldEffects.cpp index fa26e5e..37a19bd 100644 --- a/CODEmp/renderer/tr_worldeffects.cpp +++ b/CODE-mp/renderer/tr_WorldEffects.cpp @@ -310,11 +310,13 @@ private: SParticle *mRainList; float mFadeAlpha; + bool mIsRaining; public: enum { RAINSYSTEM_WIND_DIRECTION, + RAINSYSTEM_WIND_SPEED, }; public: @@ -323,6 +325,7 @@ public: virtual int GetIntVariable(int which); virtual SParticle *GetParticleVariable(int which); + virtual float GetFloatVariable(int which); virtual float *GetVecVariable(int which); virtual bool Command(const char *command); @@ -331,6 +334,8 @@ public: virtual void Render(void); void Init(void); + + bool IsRaining() { return mIsRaining; } }; @@ -1205,6 +1210,7 @@ private: int mUpdateCount; int mOverallContents; + bool mIsSnowing; const float mVelocityStabilize; const int mUpdateMax; @@ -1223,6 +1229,8 @@ public: virtual void Render(void); void Init(void); + + bool IsSnowing() { return mIsSnowing; } }; CSnowSystem::CSnowSystem(int maxSnowflakes) : @@ -1241,7 +1249,8 @@ CSnowSystem::CSnowSystem(int maxSnowflakes) : mOverallContents(0), mVelocityStabilize(18), - mUpdateMax(10) + mUpdateMax(10), + mIsSnowing(false) { mMinSpread[0] = -600; mMinSpread[1] = -600; @@ -1559,9 +1568,12 @@ void CSnowSystem::Update(float elapseTime) if (!(mOverallContents & CONTENTS_OUTSIDE)) { + mIsSnowing = false; return; } + mIsSnowing = true; + mUpdateCount = (mUpdateCount + 1) % mUpdateMax; x = y = z = 0; @@ -1733,7 +1745,8 @@ CRainSystem::CRainSystem(int maxRain) : mAlpha(0.1), mWindAngle(1.0), - mFadeAlpha(0.0) + mFadeAlpha(0.0f), + mIsRaining(false) { mSpread[0] = M_PI*2.0; // angle spread @@ -1811,6 +1824,17 @@ SParticle *CRainSystem::GetParticleVariable(int which) return CWorldEffectsSystem::GetParticleVariable(which); } +float CRainSystem::GetFloatVariable(int which) +{ + switch(which) + { + case CRainSystem::RAINSYSTEM_WIND_SPEED: + return mWindAngle * 75.0; // pat scaled + } + + return 0.0; +} + float *CRainSystem::GetVecVariable(int which) { switch(which) @@ -1906,6 +1930,7 @@ void CRainSystem::Update(float elapseTime) if (originContents & CONTENTS_OUTSIDE && !(originContents & CONTENTS_WATER)) { + mIsRaining = true; if (mFadeAlpha < 1.0) { mFadeAlpha += elapseTime / 2.0; @@ -1917,6 +1942,7 @@ void CRainSystem::Update(float elapseTime) } else { + mIsRaining = false; if (mFadeAlpha > 0.0) { mFadeAlpha -= elapseTime / 2.0; @@ -2240,5 +2266,41 @@ bool R_GetWindVector(vec3_t windVector) return true; } + if (snowSystem) + { + VectorCopy(snowSystem->GetVecVariable(CRainSystem::RAINSYSTEM_WIND_DIRECTION), windVector); + return true; + } + + + return false; +} + +bool R_GetWindSpeed(float &windSpeed) +{ + if (rainSystem) + { + windSpeed = rainSystem->GetFloatVariable(CRainSystem::RAINSYSTEM_WIND_SPEED); + return true; + } + + return false; +} + +bool R_IsRaining() +{ + if (rainSystem) + { + return rainSystem->IsRaining(); + } + return false; +} + +bool R_IsSnowing() +{ + if (snowSystem) + { + return snowSystem->IsSnowing(); + } return false; } diff --git a/CODEmp/renderer/tr_worldeffects.h b/CODE-mp/renderer/tr_WorldEffects.h similarity index 90% rename from CODEmp/renderer/tr_worldeffects.h rename to CODE-mp/renderer/tr_WorldEffects.h index 35450da..5320830 100644 --- a/CODEmp/renderer/tr_worldeffects.h +++ b/CODE-mp/renderer/tr_WorldEffects.h @@ -77,6 +77,7 @@ public: virtual int GetIntVariable(int which) { return 0; } virtual SParticle *GetParticleVariable(int which) { return 0; } + virtual float GetFloatVariable(int which) { return 0.0; } virtual float *GetVecVariable(int which) { return 0; } virtual bool Command(const char *command); @@ -95,5 +96,9 @@ void R_WorldEffectCommand(const char *command); void R_WorldEffect_f(void); bool R_GetWindVector(vec3_t windVector); +bool R_GetWindSpeed(float &windSpeed); + +bool R_IsRaining(); +bool R_IsSnowing(); #endif // __TR_WORLDEFFECTS_H diff --git a/CODEmp/renderer/tr_animation.cpp b/CODE-mp/renderer/tr_animation.cpp similarity index 100% rename from CODEmp/renderer/tr_animation.cpp rename to CODE-mp/renderer/tr_animation.cpp diff --git a/CODEmp/renderer/tr_backend.cpp b/CODE-mp/renderer/tr_backend.cpp similarity index 90% rename from CODEmp/renderer/tr_backend.cpp rename to CODE-mp/renderer/tr_backend.cpp index 7763a48..836d188 100644 --- a/CODEmp/renderer/tr_backend.cpp +++ b/CODE-mp/renderer/tr_backend.cpp @@ -510,7 +510,7 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { int fogNum, oldFogNum; int entityNum, oldEntityNum; int dlighted, oldDlighted; - qboolean depthRange, oldDepthRange; + int depthRange, oldDepthRange; int i; drawSurf_t *drawSurf; int oldSort; @@ -581,7 +581,7 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { // change the modelview matrix if needed // if ( entityNum != oldEntityNum ) { - depthRange = qfalse; + depthRange = 0; if ( entityNum != ENTITYNUM_WORLD ) { backEnd.currentEntity = &backEnd.refdef.entities[entityNum]; @@ -598,9 +598,13 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { R_TransformDlights( backEnd.refdef.num_dlights, backEnd.refdef.dlights, &backEnd.or ); } - if ( backEnd.currentEntity->e.renderfx & RF_DEPTHHACK ) { + if ( backEnd.currentEntity->e.renderfx & RF_NODEPTH ) { + // No depth at all, very rare but some things for seeing through walls + depthRange = 2; + } + else if ( backEnd.currentEntity->e.renderfx & RF_DEPTHHACK ) { // hack the depth range to prevent view model from poking into walls - depthRange = qtrue; + depthRange = 1; } } else { backEnd.currentEntity = &tr.worldEntity; @@ -618,11 +622,21 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { // change depthrange if needed // if ( oldDepthRange != depthRange ) { - if ( depthRange ) { - qglDepthRange (0, 0.3); - } else { - qglDepthRange (0, 1); + switch ( depthRange ) { + default: + case 0: + qglDepthRange (0, 1); + break; + + case 1: + qglDepthRange (0, .3); + break; + + case 2: + qglDepthRange (0, 0); + break; } + oldDepthRange = depthRange; } @@ -951,44 +965,48 @@ const void *RB_RotatePic2 ( const void *data ) cmd = (const rotatePicCommand_t *)data; shader = cmd->shader; - image = shader->stages[0]->bundle[0].image[0]; - if ( image ) { - if ( !backEnd.projection2D ) { - RB_SetGL2D(); + if ( shader->stages[0] ) + { + image = shader->stages[0]->bundle[0].image[0]; + + if ( image ) { + if ( !backEnd.projection2D ) { + RB_SetGL2D(); + } + + // Get our current blend mode, etc. + GL_State( shader->stages[0]->stateBits ); + + qglColor4ubv( backEnd.color2D ); + qglPushMatrix(); + + // rotation point is going to be around the center of the passed in coordinates + qglTranslatef( cmd->x, cmd->y, 0 ); + qglRotatef( cmd->a, 0.0, 0.0, 1.0 ); + + GL_Bind( image ); + qglBegin( GL_QUADS ); + qglTexCoord2f( cmd->s1, cmd->t1); + qglVertex2f( -cmd->w * 0.5f, -cmd->h * 0.5f ); + + qglTexCoord2f( cmd->s2, cmd->t1 ); + qglVertex2f( cmd->w * 0.5f, -cmd->h * 0.5f ); + + qglTexCoord2f( cmd->s2, cmd->t2 ); + qglVertex2f( cmd->w * 0.5f, cmd->h * 0.5f ); + + qglTexCoord2f( cmd->s1, cmd->t2 ); + qglVertex2f( -cmd->w * 0.5f, cmd->h * 0.5f ); + qglEnd(); + + qglPopMatrix(); + + // Hmmm, this is not too cool + GL_State( GLS_DEPTHTEST_DISABLE | + GLS_SRCBLEND_SRC_ALPHA | + GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA ); } - - // Get our current blend mode, etc. - GL_State( shader->stages[0]->stateBits ); - - qglColor4ubv( backEnd.color2D ); - qglPushMatrix(); - - // rotation point is going to be around the center of the passed in coordinates - qglTranslatef( cmd->x, cmd->y, 0 ); - qglRotatef( cmd->a, 0.0, 0.0, 1.0 ); - - GL_Bind( image ); - qglBegin( GL_QUADS ); - qglTexCoord2f( cmd->s1, cmd->t1); - qglVertex2f( -cmd->w * 0.5f, -cmd->h * 0.5f ); - - qglTexCoord2f( cmd->s2, cmd->t1 ); - qglVertex2f( cmd->w * 0.5f, -cmd->h * 0.5f ); - - qglTexCoord2f( cmd->s2, cmd->t2 ); - qglVertex2f( cmd->w * 0.5f, cmd->h * 0.5f ); - - qglTexCoord2f( cmd->s1, cmd->t2 ); - qglVertex2f( -cmd->w * 0.5f, cmd->h * 0.5f ); - qglEnd(); - - qglPopMatrix(); - - // Hmmm, this is not too cool - GL_State( GLS_DEPTHTEST_DISABLE | - GLS_SRCBLEND_SRC_ALPHA | - GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA ); } return (const void *)(cmd + 1); diff --git a/CODEmp/renderer/tr_bsp.cpp b/CODE-mp/renderer/tr_bsp.cpp similarity index 100% rename from CODEmp/renderer/tr_bsp.cpp rename to CODE-mp/renderer/tr_bsp.cpp diff --git a/CODEmp/renderer/tr_cmds.cpp b/CODE-mp/renderer/tr_cmds.cpp similarity index 100% rename from CODEmp/renderer/tr_cmds.cpp rename to CODE-mp/renderer/tr_cmds.cpp diff --git a/CODEmp/renderer/tr_curve.cpp b/CODE-mp/renderer/tr_curve.cpp similarity index 100% rename from CODEmp/renderer/tr_curve.cpp rename to CODE-mp/renderer/tr_curve.cpp diff --git a/CODEmp/renderer/tr_flares.cpp b/CODE-mp/renderer/tr_flares.cpp similarity index 100% rename from CODEmp/renderer/tr_flares.cpp rename to CODE-mp/renderer/tr_flares.cpp diff --git a/CODEmp/renderer/tr_font.cpp b/CODE-mp/renderer/tr_font.cpp similarity index 100% rename from CODEmp/renderer/tr_font.cpp rename to CODE-mp/renderer/tr_font.cpp diff --git a/CODEmp/renderer/tr_font.h b/CODE-mp/renderer/tr_font.h similarity index 100% rename from CODEmp/renderer/tr_font.h rename to CODE-mp/renderer/tr_font.h diff --git a/CODEmp/renderer/tr_ghoul2.cpp b/CODE-mp/renderer/tr_ghoul2.cpp similarity index 100% rename from CODEmp/renderer/tr_ghoul2.cpp rename to CODE-mp/renderer/tr_ghoul2.cpp diff --git a/CODEmp/renderer/tr_image.cpp b/CODE-mp/renderer/tr_image.cpp similarity index 90% rename from CODEmp/renderer/tr_image.cpp rename to CODE-mp/renderer/tr_image.cpp index b2bce14..10f0cc7 100644 --- a/CODEmp/renderer/tr_image.cpp +++ b/CODE-mp/renderer/tr_image.cpp @@ -1,6 +1,7 @@ // tr_image.c #include "tr_local.h" #include "glext.h" +#include "../win32/glw_win.h" #pragma warning (push, 3) //go back down to 3 for the stl include @@ -59,6 +60,128 @@ textureMode_t modes[] = { {"GL_LINEAR_MIPMAP_LINEAR", GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR} }; +typedef struct textureFormat_s +{ + char *name; + GLenum type; + float bytesPerTexel; + char *primaryExtension; + char *secondaryExtension; +} textureFormat_t; + +static textureFormat_t textureFormats[] = +{ + // Fallback safe formats + { "GL_SOLID_FORMAT", GL_SOLID_FORMAT, 2.0f, NULL, NULL }, + { "GL_ALPHA_FORMAT", GL_ALPHA_FORMAT, 2.0f, NULL, NULL }, + + // OpenGL1.1 formats - all should be valid + { "GL_RGB", GL_RGB, 2.0f, NULL, NULL }, + { "GL_RGB5", GL_RGB5, 2.0f, NULL, NULL }, + { "GL_RGB8", GL_RGB8, 4.0f, NULL, NULL }, + { "GL_RGB16", GL_RGB16, 8.0f, NULL, NULL }, + + { "GL_RGBA", GL_RGBA, 2.0f, NULL, NULL }, + { "GL_RGBA4", GL_RGBA4, 2.0f, NULL, NULL }, + { "GL_RGBA8", GL_RGBA8, 4.0f, NULL, NULL }, + { "GL_RGBA16", GL_RGBA16, 8.0f, NULL, NULL }, + + { "GL_LUMINANCE8", GL_LUMINANCE8, 1.0f, NULL, NULL }, + { "GL_INTENSITY8", GL_INTENSITY8, 1.0f, NULL, NULL }, + { "GL_ALPHA8", GL_ALPHA8, 1.0f, NULL, NULL }, + + // Extended formats + { "GL_RGB4_S3TC", GL_RGB4_S3TC, 0.33333f, "GL_S3_s3tc", NULL }, + + { "GL_COMPRESSED_RGB_DXT1", GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 0.33333f, "ARB_texture_compression", "EXT_texture_compression_s3tc" }, + { "GL_COMPRESSED_RGBA_DXT5", GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 1.0f, "ARB_texture_compression", "EXT_texture_compression_s3tc" }, + + { "GL_COMPRESSED_RGB_FXT1", GL_COMPRESSED_RGB_FXT1_3DFX, 1.0f, "ARB_texture_compression", "3DFX_texture_compression_FXT1" }, +}; + +/* +=============== +GL_SetTextureFormat +=============== +*/ + +// fallback is either 0 or 1 for the simple 1.0 textures + +int GL_SetTextureFormat( const char *format, int fallback ) +{ + int i, count; + char *primary; + char *secondary; + + count = sizeof(textureFormats) / sizeof(textureFormat_t); + for ( i = 0 ; i < count ; i++ ) + { + if ( !Q_stricmp( textureFormats[i].name, format ) ) + { + break; + } + } + if(i == count) + { + ri.Printf(PRINT_ALL, S_COLOR_RED "TextureFormat: Unknown texture format %s\n", format); + return(fallback); + } + // If no extension required, just return the enum + if(!textureFormats[i].primaryExtension && !textureFormats[i].secondaryExtension) + { + return(i); + } + + // Check for extensions + primary = textureFormats[i].primaryExtension; + secondary = textureFormats[i].secondaryExtension; + if(GL_CheckForExtension(primary) && !secondary) + { + return(i); + } + if(GL_CheckForExtension(primary) && GL_CheckForExtension(secondary)) + { + return(i); + } + ri.Printf(PRINT_ALL, S_COLOR_RED "TextureFormat: Unsupported extended texture format %s\n", format); + return(fallback); +} + +void GL_InitTextureFormats( void ) +{ + int idx; + + idx = GL_SetTextureFormat( r_tf_solid_compressed->string, 0 ); + glConfig.tfSolidCompressed = textureFormats[idx].type; + glConfig.tfSolidCompressedBPT = textureFormats[idx].bytesPerTexel; + ri.Cvar_Set("r_tf_solid_compressed", textureFormats[idx].name); + + idx = GL_SetTextureFormat( r_tf_alpha_compressed->string, 1 ); + glConfig.tfAlphaCompressed = textureFormats[idx].type; + glConfig.tfAlphaCompressedBPT = textureFormats[idx].bytesPerTexel; + ri.Cvar_Set("r_tf_alpha_compressed", textureFormats[idx].name); + + idx = GL_SetTextureFormat( r_tf_solid_uncompressed->string, 0 ); + glConfig.tfSolidUncompressed = textureFormats[idx].type; + glConfig.tfSolidUncompressedBPT = textureFormats[idx].bytesPerTexel; + ri.Cvar_Set("r_tf_solid_uncompressed", textureFormats[idx].name); + + idx = GL_SetTextureFormat( r_tf_alpha_uncompressed->string, 1 ); + glConfig.tfAlphaUncompressed = textureFormats[idx].type; + glConfig.tfAlphaUncompressedBPT = textureFormats[idx].bytesPerTexel; + ri.Cvar_Set("r_tf_alpha_uncompressed", textureFormats[idx].name); + + idx = GL_SetTextureFormat( r_tf_lightmap->string, 0 ); + glConfig.tfLightmap = textureFormats[idx].type; + glConfig.tfLightmapBPT = textureFormats[idx].bytesPerTexel; + ri.Cvar_Set("r_tf_lightmap", textureFormats[idx].name); + + idx = GL_SetTextureFormat( r_tf_cinematic->string, 0 ); + glConfig.tfCinematic = textureFormats[idx].type; + glConfig.tfCinematicBPT = textureFormats[idx].bytesPerTexel; + ri.Cvar_Set("r_tf_cinematic", textureFormats[idx].name); +} + // makeup a nice clean, consistant name to query for and file under, for map<> usage... // @@ -635,6 +758,15 @@ static void Upload32( unsigned *data, GLenum internalFormat = GL_RGB; float rMax = 0, gMax = 0, bMax = 0; + if (r_force_compressed_textures->integer) + { + allowTC = qtrue; + } + if (!r_ext_compressed_textures->integer) + { + allowTC = qfalse; + } + // // convert to exact power of 2 sizes // @@ -693,7 +825,8 @@ static void Upload32( unsigned *data, c = width*height; scan = ((byte *)data); samples = 3; - if (!lightMap) { + if (!lightMap) + { for ( i = 0; i < c; i++ ) { if ( scan[i*4+0] > rMax ) @@ -717,65 +850,30 @@ static void Upload32( unsigned *data, // select proper internal format if ( samples == 3 ) { - if ( glConfig.textureCompression == TC_S3TC && allowTC) + if ( allowTC) { - internalFormat = GL_RGB4_S3TC; + internalFormat = glConfig.tfSolidCompressed; } - else if ( glConfig.textureCompression == TC_S3TC_DXT && allowTC ) - { // Compress purely color - no alpha - if ( r_texturebits->integer == 16 ) { - internalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; //this format cuts to 16 bit - } - else {//if we aren't using 16 bit then, use 32 bit compression - internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; - } - } - else if ( lightMap && r_texturebitslm->integer > 0 ) + else { - // Allow different bit depth when we are a lightmap - if ( r_texturebitslm->integer == 16 ) - { - internalFormat = GL_RGB5; - } - else if ( r_texturebitslm->integer == 32 ) - { - internalFormat = GL_RGB8; - } - } - else if ( r_texturebits->integer == 16 ) - { - internalFormat = GL_RGB5; - } - else if ( r_texturebits->integer == 32 ) - { - internalFormat = GL_RGB8; - } - else - { - internalFormat = 3; + internalFormat = glConfig.tfSolidUncompressed; } } else if ( samples == 4 ) { - if ( glConfig.textureCompression == TC_S3TC_DXT && allowTC) + if ( allowTC) { // Compress both alpha and color - internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; - } - else if ( r_texturebits->integer == 16 ) - { - internalFormat = GL_RGBA4; - } - else if ( r_texturebits->integer == 32 ) - { - internalFormat = GL_RGBA8; + internalFormat = glConfig.tfAlphaCompressed; } else { - internalFormat = 4; + internalFormat = glConfig.tfAlphaUncompressed; } } - } else { - internalFormat = 3; + } + else + { + internalFormat = glConfig.tfLightmap; } // copy or resample data as appropriate for first MIP level if ( ( scaled_width == width ) && @@ -973,7 +1071,7 @@ void RE_RegisterImages_Info_f( void ) // currently, this just goes through all the images and dumps any not referenced on this level... // -void RE_RegisterImages_LevelLoadEnd(void) +qboolean RE_RegisterImages_LevelLoadEnd(void) { ri.Printf( PRINT_DEVELOPER, "RE_RegisterImages_LevelLoadEnd():\n"); @@ -1017,6 +1115,8 @@ void RE_RegisterImages_LevelLoadEnd(void) ri.Printf( PRINT_DEVELOPER, "RE_RegisterImages_LevelLoadEnd(): Ok\n"); GL_ResetBinds(); + + return bEraseOccured; } @@ -2777,6 +2877,8 @@ R_InitImages void R_InitImages( void ) { //memset(hashTable, 0, sizeof(hashTable)); // DO NOT DO THIS NOW (because of image cacheing) -ste. + GL_InitTextureFormats(); + // build brightness translation tables R_SetColorMappings(); @@ -3000,6 +3102,8 @@ qhandle_t RE_RegisterSkin( const char *name ) { // parse the shader name token = CommaParse( &text_p ); + assert ( skin->numSurfaces < MD3_MAX_SURFACES ); + surf = skin->surfaces[ skin->numSurfaces ] = (skinSurface_t *)ri.Hunk_Alloc( sizeof( *skin->surfaces[0] ), h_low ); Q_strncpyz( surf->name, surfName, sizeof( surf->name ) ); surf->shader = R_FindShader( token, lightmapsNone, stylesDefault, qtrue ); diff --git a/CODEmp/renderer/tr_init.cpp b/CODE-mp/renderer/tr_init.cpp similarity index 93% rename from CODEmp/renderer/tr_init.cpp rename to CODE-mp/renderer/tr_init.cpp index 81b4a80..78441e3 100644 --- a/CODEmp/renderer/tr_init.cpp +++ b/CODE-mp/renderer/tr_init.cpp @@ -73,6 +73,13 @@ cvar_t *r_windPointY; cvar_t *r_allowExtensions; +cvar_t *r_tf_solid_compressed; +cvar_t *r_tf_alpha_compressed; +cvar_t *r_tf_solid_uncompressed; +cvar_t *r_tf_alpha_uncompressed; +cvar_t *r_tf_lightmap; +cvar_t *r_tf_cinematic; +cvar_t *r_force_compressed_textures; cvar_t *r_ext_compressed_textures; cvar_t *r_ext_gamma_control; @@ -773,7 +780,6 @@ void GfxInfo_f( void ) ri.Printf( PRINT_ALL, "multitexture: %s\n", enablestrings[qglActiveTextureARB != 0] ); ri.Printf( PRINT_ALL, "compiled vertex arrays: %s\n", enablestrings[qglLockArraysEXT != 0 ] ); ri.Printf( PRINT_ALL, "texenv add: %s\n", enablestrings[glConfig.textureEnvAddAvailable != 0] ); - ri.Printf( PRINT_ALL, "compressed textures: %s\n", enablestrings[glConfig.textureCompression!=TC_NONE] ); ri.Printf( PRINT_ALL, "anisotropic filtering: %s\n", enablestrings[(r_ext_texture_filter_anisotropic->integer != 0) && glConfig.textureFilterAnisotropicAvailable] ); if ( glConfig.smpActive ) { @@ -795,6 +801,14 @@ void R_Register( void ) // latched and archived variables // r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH ); + r_tf_solid_compressed = ri.Cvar_Get( "r_tf_solid_compressed", "GL_COMPRESSED_RGBA_DXT5", CVAR_ARCHIVE | CVAR_LATCH ); + r_tf_alpha_compressed = ri.Cvar_Get( "r_tf_alpha_compressed", "GL_COMPRESSED_RGBA_DXT5", CVAR_ARCHIVE | CVAR_LATCH ); + r_tf_solid_uncompressed = ri.Cvar_Get( "r_tf_solid_uncompressed", "GL_RGB8", CVAR_ARCHIVE | CVAR_LATCH ); + r_tf_alpha_uncompressed = ri.Cvar_Get( "r_tf_alpha_uncompressed", "GL_RGBA8", CVAR_ARCHIVE | CVAR_LATCH ); + r_tf_lightmap = ri.Cvar_Get( "r_tf_lightmap", "GL_RGB8", CVAR_ARCHIVE | CVAR_LATCH ); + r_tf_cinematic = ri.Cvar_Get( "r_tf_cinematic", "GL_RGB8", CVAR_ARCHIVE | CVAR_LATCH ); + r_force_compressed_textures = ri.Cvar_Get( "r_force_compressed_textures", "1", CVAR_ARCHIVE | CVAR_LATCH ); + r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compressed_textures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_multitexture = ri.Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH ); @@ -890,8 +904,8 @@ void R_Register( void ) r_printShaders = ri.Cvar_Get( "r_printShaders", "0", 0 ); r_saveFontData = ri.Cvar_Get( "r_saveFontData", "0", 0 ); - r_surfaceSprites = ri.Cvar_Get ("r_surfaceSprites", "1", CVAR_ARCHIVE); - r_surfaceWeather = ri.Cvar_Get ("r_surfaceWeather", "1", CVAR_ARCHIVE); + r_surfaceSprites = ri.Cvar_Get ("r_surfaceSprites", "1", CVAR_CHEAT); + r_surfaceWeather = ri.Cvar_Get ("r_surfaceWeather", "0", 0); r_windSpeed = ri.Cvar_Get ("r_windSpeed", "0", 0); r_windAngle = ri.Cvar_Get ("r_windAngle", "0", 0); diff --git a/CODEmp/renderer/tr_light.cpp b/CODE-mp/renderer/tr_light.cpp similarity index 100% rename from CODEmp/renderer/tr_light.cpp rename to CODE-mp/renderer/tr_light.cpp diff --git a/CODEmp/renderer/tr_local.h b/CODE-mp/renderer/tr_local.h similarity index 95% rename from CODEmp/renderer/tr_local.h rename to CODE-mp/renderer/tr_local.h index 87d007f..3de082a 100644 --- a/CODEmp/renderer/tr_local.h +++ b/CODE-mp/renderer/tr_local.h @@ -33,6 +33,10 @@ long myftol( float f ); // can't be increased without changing bit packing for drawsurfs +// Default texture format constants +#define GL_SOLID_FORMAT 3 +#define GL_ALPHA_FORMAT 4 + typedef struct dlight_s { vec3_t origin; @@ -1143,6 +1147,14 @@ extern cvar_t *r_displayRefresh; // optional display refresh option extern cvar_t *r_ignorehwgamma; // overrides hardware gamma capabilities extern cvar_t *r_allowExtensions; // global enable/disable of OpenGL extensions +extern cvar_t *r_tf_solid_compressed; +extern cvar_t *r_tf_alpha_compressed; +extern cvar_t *r_tf_solid_uncompressed; +extern cvar_t *r_tf_alpha_uncompressed; +extern cvar_t *r_tf_lightmap; +extern cvar_t *r_tf_cinematic; +extern cvar_t *r_force_compressed_textures; // these control use of specific extensions + extern cvar_t *r_ext_compressed_textures; // these control use of specific extensions extern cvar_t *r_ext_gamma_control; extern cvar_t *r_ext_texenv_op; @@ -1238,6 +1250,7 @@ void R_AddDrawSurf( surfaceType_t *surface, shader_t *shader, int fogIndex, int #define CULL_OUT 2 // completely outside the clipping planes void R_LocalNormalToWorld (vec3_t local, vec3_t world); void R_LocalPointToWorld (vec3_t local, vec3_t world); +void R_WorldNormalToEntity (vec3_t localVec, vec3_t world); int R_CullLocalBox (vec3_t bounds[2]); int R_CullPointAndRadius( vec3_t origin, float radius ); int R_CullLocalPointAndRadius( vec3_t origin, float radius ); @@ -1316,7 +1329,7 @@ void RE_RegisterModels_StoreShaderRequest(const char *psModelFileName, const ch void RE_RegisterModels_Info_f(void); // //void RE_RegisterImages_LevelLoadBegin(const char *psMapName); -void RE_RegisterImages_LevelLoadEnd(void); +qboolean RE_RegisterImages_LevelLoadEnd(void); void RE_RegisterImages_Info_f(void); @@ -1805,4 +1818,7 @@ void RE_InsertModelIntoHash(const char *name, model_t *mod); Ghoul2 Insert End */ +// tr_surfacesprites +void RB_DrawSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input); + #endif //TR_LOCAL_H diff --git a/CODEmp/renderer/tr_main.cpp b/CODE-mp/renderer/tr_main.cpp similarity index 92% rename from CODEmp/renderer/tr_main.cpp rename to CODE-mp/renderer/tr_main.cpp index 1400c88..98d2f90 100644 --- a/CODEmp/renderer/tr_main.cpp +++ b/CODE-mp/renderer/tr_main.cpp @@ -172,6 +172,35 @@ void R_LocalPointToWorld (vec3_t local, vec3_t world) { world[2] = local[0] * tr.or.axis[0][2] + local[1] * tr.or.axis[1][2] + local[2] * tr.or.axis[2][2] + tr.or.origin[2]; } +float preTransEntMatrix[16]; + +/* +================= +R_WorldNormalToEntity + +================= +*/ +void R_WorldNormalToEntity (vec3_t worldvec, vec3_t entvec) +{ + entvec[0] = -worldvec[0] * preTransEntMatrix[0] - worldvec[1] * preTransEntMatrix[4] + worldvec[2] * preTransEntMatrix[8]; + entvec[1] = -worldvec[0] * preTransEntMatrix[1] - worldvec[1] * preTransEntMatrix[5] + worldvec[2] * preTransEntMatrix[9]; + entvec[2] = -worldvec[0] * preTransEntMatrix[2] - worldvec[1] * preTransEntMatrix[6] + worldvec[2] * preTransEntMatrix[10]; +} + +/* +================= +R_WorldPointToEntity + +================= +*/ +/*void R_WorldPointToEntity (vec3_t worldvec, vec3_t entvec) +{ + entvec[0] = worldvec[0] * preTransEntMatrix[0] + worldvec[1] * preTransEntMatrix[4] + worldvec[2] * preTransEntMatrix[8]+preTransEntMatrix[12]; + entvec[1] = worldvec[0] * preTransEntMatrix[1] + worldvec[1] * preTransEntMatrix[5] + worldvec[2] * preTransEntMatrix[9]+preTransEntMatrix[13]; + entvec[2] = worldvec[0] * preTransEntMatrix[2] + worldvec[1] * preTransEntMatrix[6] + worldvec[2] * preTransEntMatrix[10]+preTransEntMatrix[14]; +} +*/ + /* ================= R_WorldToLocal @@ -262,7 +291,7 @@ Called by both the front end and the back end */ void R_RotateForEntity( const trRefEntity_t *ent, const viewParms_t *viewParms, orientationr_t *or ) { - float glMatrix[16]; +// float glMatrix[16]; vec3_t delta; float axisLength; @@ -277,27 +306,27 @@ void R_RotateForEntity( const trRefEntity_t *ent, const viewParms_t *viewParms, VectorCopy( ent->e.axis[1], or->axis[1] ); VectorCopy( ent->e.axis[2], or->axis[2] ); - glMatrix[0] = or->axis[0][0]; - glMatrix[4] = or->axis[1][0]; - glMatrix[8] = or->axis[2][0]; - glMatrix[12] = or->origin[0]; + preTransEntMatrix[0] = or->axis[0][0]; + preTransEntMatrix[4] = or->axis[1][0]; + preTransEntMatrix[8] = or->axis[2][0]; + preTransEntMatrix[12] = or->origin[0]; - glMatrix[1] = or->axis[0][1]; - glMatrix[5] = or->axis[1][1]; - glMatrix[9] = or->axis[2][1]; - glMatrix[13] = or->origin[1]; + preTransEntMatrix[1] = or->axis[0][1]; + preTransEntMatrix[5] = or->axis[1][1]; + preTransEntMatrix[9] = or->axis[2][1]; + preTransEntMatrix[13] = or->origin[1]; - glMatrix[2] = or->axis[0][2]; - glMatrix[6] = or->axis[1][2]; - glMatrix[10] = or->axis[2][2]; - glMatrix[14] = or->origin[2]; + preTransEntMatrix[2] = or->axis[0][2]; + preTransEntMatrix[6] = or->axis[1][2]; + preTransEntMatrix[10] = or->axis[2][2]; + preTransEntMatrix[14] = or->origin[2]; - glMatrix[3] = 0; - glMatrix[7] = 0; - glMatrix[11] = 0; - glMatrix[15] = 1; + preTransEntMatrix[3] = 0; + preTransEntMatrix[7] = 0; + preTransEntMatrix[11] = 0; + preTransEntMatrix[15] = 1; - myGlMultMatrix( glMatrix, viewParms->world.modelMatrix, or->modelMatrix ); + myGlMultMatrix( preTransEntMatrix, viewParms->world.modelMatrix, or->modelMatrix ); // calculate the viewer origin in the model's space // needed for fog, specular, and environment mapping diff --git a/CODEmp/renderer/tr_marks.cpp b/CODE-mp/renderer/tr_marks.cpp similarity index 100% rename from CODEmp/renderer/tr_marks.cpp rename to CODE-mp/renderer/tr_marks.cpp diff --git a/CODEmp/renderer/tr_mesh.cpp b/CODE-mp/renderer/tr_mesh.cpp similarity index 100% rename from CODEmp/renderer/tr_mesh.cpp rename to CODE-mp/renderer/tr_mesh.cpp diff --git a/CODEmp/renderer/tr_model.cpp b/CODE-mp/renderer/tr_model.cpp similarity index 100% rename from CODEmp/renderer/tr_model.cpp rename to CODE-mp/renderer/tr_model.cpp diff --git a/CODEmp/renderer/tr_noise.cpp b/CODE-mp/renderer/tr_noise.cpp similarity index 100% rename from CODEmp/renderer/tr_noise.cpp rename to CODE-mp/renderer/tr_noise.cpp diff --git a/CODEmp/renderer/tr_public.h b/CODE-mp/renderer/tr_public.h similarity index 100% rename from CODEmp/renderer/tr_public.h rename to CODE-mp/renderer/tr_public.h diff --git a/CODEmp/renderer/tr_quicksprite.cpp b/CODE-mp/renderer/tr_quicksprite.cpp similarity index 100% rename from CODEmp/renderer/tr_quicksprite.cpp rename to CODE-mp/renderer/tr_quicksprite.cpp diff --git a/CODEmp/renderer/tr_quicksprite.h b/CODE-mp/renderer/tr_quicksprite.h similarity index 100% rename from CODEmp/renderer/tr_quicksprite.h rename to CODE-mp/renderer/tr_quicksprite.h diff --git a/CODEmp/renderer/tr_scene.cpp b/CODE-mp/renderer/tr_scene.cpp similarity index 100% rename from CODEmp/renderer/tr_scene.cpp rename to CODE-mp/renderer/tr_scene.cpp diff --git a/CODE-mp/renderer/tr_shade.cpp b/CODE-mp/renderer/tr_shade.cpp new file mode 100644 index 0000000..4076635 --- /dev/null +++ b/CODE-mp/renderer/tr_shade.cpp @@ -0,0 +1,1483 @@ +// tr_shade.c + +#include "tr_local.h" + +#include "tr_quicksprite.h" + +/* + + THIS ENTIRE FILE IS BACK END + + This file deals with applying shaders to surface data in the tess struct. +*/ + +color4ub_t styleColors[MAX_LIGHT_STYLES]; + +/* +================ +R_ArrayElementDiscrete + +This is just for OpenGL conformance testing, it should never be the fastest +================ +*/ +static void APIENTRY R_ArrayElementDiscrete( GLint index ) { + qglColor4ubv( tess.svars.colors[ index ] ); + if ( glState.currenttmu ) { + qglMultiTexCoord2fARB( 0, tess.svars.texcoords[ 0 ][ index ][0], tess.svars.texcoords[ 0 ][ index ][1] ); + qglMultiTexCoord2fARB( 1, tess.svars.texcoords[ 1 ][ index ][0], tess.svars.texcoords[ 1 ][ index ][1] ); + } else { + qglTexCoord2fv( tess.svars.texcoords[ 0 ][ index ] ); + } + qglVertex3fv( tess.xyz[ index ] ); +} + +/* +=================== +R_DrawStripElements + +=================== +*/ +static int c_vertexes; // for seeing how long our average strips are +static int c_begins; +static void R_DrawStripElements( int numIndexes, const glIndex_t *indexes, void ( APIENTRY *element )(GLint) ) { + int i; + int last[3] = { -1, -1, -1 }; + qboolean even; + + c_begins++; + + if ( numIndexes <= 0 ) { + return; + } + + qglBegin( GL_TRIANGLE_STRIP ); + + // prime the strip + element( indexes[0] ); + element( indexes[1] ); + element( indexes[2] ); + c_vertexes += 3; + + last[0] = indexes[0]; + last[1] = indexes[1]; + last[2] = indexes[2]; + + even = qfalse; + + for ( i = 3; i < numIndexes; i += 3 ) + { + // odd numbered triangle in potential strip + if ( !even ) + { + // check previous triangle to see if we're continuing a strip + if ( ( indexes[i+0] == last[2] ) && ( indexes[i+1] == last[1] ) ) + { + element( indexes[i+2] ); + c_vertexes++; + assert( indexes[i+2] < tess.numVertexes ); + even = qtrue; + } + // otherwise we're done with this strip so finish it and start + // a new one + else + { + qglEnd(); + + qglBegin( GL_TRIANGLE_STRIP ); + c_begins++; + + element( indexes[i+0] ); + element( indexes[i+1] ); + element( indexes[i+2] ); + + c_vertexes += 3; + + even = qfalse; + } + } + else + { + // check previous triangle to see if we're continuing a strip + if ( ( last[2] == indexes[i+1] ) && ( last[0] == indexes[i+0] ) ) + { + element( indexes[i+2] ); + c_vertexes++; + + even = qfalse; + } + // otherwise we're done with this strip so finish it and start + // a new one + else + { + qglEnd(); + + qglBegin( GL_TRIANGLE_STRIP ); + c_begins++; + + element( indexes[i+0] ); + element( indexes[i+1] ); + element( indexes[i+2] ); + c_vertexes += 3; + + even = qfalse; + } + } + + // cache the last three vertices + last[0] = indexes[i+0]; + last[1] = indexes[i+1]; + last[2] = indexes[i+2]; + } + + qglEnd(); +} + + + +/* +================== +R_DrawElements + +Optionally performs our own glDrawElements that looks for strip conditions +instead of using the single glDrawElements call that may be inefficient +without compiled vertex arrays. +================== +*/ +static void R_DrawElements( int numIndexes, const glIndex_t *indexes ) { + int primitives; + + primitives = r_primitives->integer; + + // default is to use triangles if compiled vertex arrays are present + if ( primitives == 0 ) { + if ( qglLockArraysEXT ) { + primitives = 2; + } else { + primitives = 1; + } + } + + + if ( primitives == 2 ) { + qglDrawElements( GL_TRIANGLES, + numIndexes, + GL_INDEX_TYPE, + indexes ); + return; + } + + if ( primitives == 1 ) { + R_DrawStripElements( numIndexes, indexes, qglArrayElement ); + return; + } + + if ( primitives == 3 ) { + R_DrawStripElements( numIndexes, indexes, R_ArrayElementDiscrete ); + return; + } + + // anything else will cause no drawing +} + + + + +/* +============================================================= + +SURFACE SHADERS + +============================================================= +*/ + +shaderCommands_t tess; +static qboolean setArraysOnce; + +/* +================= +R_BindAnimatedImage + +================= +*/ +// de-static'd because tr_quicksprite wants it +void R_BindAnimatedImage( textureBundle_t *bundle ) { + int index; + + if ( bundle->isVideoMap ) { + ri.CIN_RunCinematic(bundle->videoMapHandle); + ri.CIN_UploadCinematic(bundle->videoMapHandle); + return; + } + + if ((r_fullbright->value /*|| tr.refdef.doFullbright */) && bundle->isLightmap) + { + GL_Bind( tr.whiteImage ); + return; + } + + if ( bundle->numImageAnimations <= 1 ) { + GL_Bind( bundle->image[0] ); + return; + } + + // it is necessary to do this messy calc to make sure animations line up + // exactly with waveforms of the same frequency + index = myftol( tess.shaderTime * bundle->imageAnimationSpeed * FUNCTABLE_SIZE ); + index >>= FUNCTABLE_SIZE2; + + if ( index < 0 ) { + index = 0; // may happen with shader time offsets + } + if ( bundle->oneShotAnimMap ) + { + if ( index >= bundle->numImageAnimations ) + { + // stick on last frame + index = bundle->numImageAnimations - 1; + } + } + else + { + // loop + index %= bundle->numImageAnimations; + } + + GL_Bind( bundle->image[ index ] ); +} + +/* +================ +DrawTris + +Draws triangle outlines for debugging +================ +*/ +static void DrawTris (shaderCommands_t *input) { + GL_Bind( tr.whiteImage ); + qglColor3f (1,1,1); + + GL_State( GLS_POLYMODE_LINE | GLS_DEPTHMASK_TRUE ); + qglDepthRange( 0, 0 ); + + qglDisableClientState (GL_COLOR_ARRAY); + qglDisableClientState (GL_TEXTURE_COORD_ARRAY); + + qglVertexPointer (3, GL_FLOAT, 16, input->xyz); // padded for SIMD + + if (qglLockArraysEXT) { + qglLockArraysEXT(0, input->numVertexes); + GLimp_LogComment( "glLockArraysEXT\n" ); + } + + R_DrawElements( input->numIndexes, input->indexes ); + + if (qglUnlockArraysEXT) { + qglUnlockArraysEXT(); + GLimp_LogComment( "glUnlockArraysEXT\n" ); + } + qglDepthRange( 0, 1 ); +} + + +/* +================ +DrawNormals + +Draws vertex normals for debugging +================ +*/ +static void DrawNormals (shaderCommands_t *input) { + int i; + vec3_t temp; + + GL_Bind( tr.whiteImage ); + qglColor3f (1,1,1); + qglDepthRange( 0, 0 ); // never occluded + GL_State( GLS_POLYMODE_LINE | GLS_DEPTHMASK_TRUE ); + + qglBegin (GL_LINES); + for (i = 0 ; i < input->numVertexes ; i++) { + qglVertex3fv (input->xyz[i]); + VectorMA (input->xyz[i], 2, input->normal[i], temp); + qglVertex3fv (temp); + } + qglEnd (); + + qglDepthRange( 0, 1 ); +} + +/* +============== +RB_BeginSurface + +We must set some things up before beginning any tesselation, +because a surface may be forced to perform a RB_End due +to overflow. +============== +*/ +void RB_BeginSurface( shader_t *shader, int fogNum ) { + + shader_t *state = (shader->remappedShader) ? shader->remappedShader : shader; + + tess.numIndexes = 0; + tess.numVertexes = 0; + tess.shader = state; + tess.fogNum = fogNum; + tess.dlightBits = 0; // will be OR'd in by surface functions + tess.xstages = state->stages; + tess.numPasses = state->numUnfoggedPasses; + tess.currentStageIteratorFunc = state->optimalStageIteratorFunc; + + tess.shaderTime = backEnd.refdef.floatTime - tess.shader->timeOffset; + if (tess.shader->clampTime && tess.shaderTime >= tess.shader->clampTime) { + tess.shaderTime = tess.shader->clampTime; + } + + +} + +/* +=================== +DrawMultitextured + +output = t0 * t1 or t0 + t1 + +t0 = most upstream according to spec +t1 = most downstream according to spec +=================== +*/ +static void DrawMultitextured( shaderCommands_t *input, int stage ) { + shaderStage_t *pStage; + + pStage = tess.xstages[stage]; + + GL_State( pStage->stateBits ); + + // this is an ugly hack to work around a GeForce driver + // bug with multitexture and clip planes + if ( backEnd.viewParms.isPortal ) { + qglPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); + } + + // + // base + // + GL_SelectTexture( 0 ); + qglTexCoordPointer( 2, GL_FLOAT, 0, input->svars.texcoords[0] ); + R_BindAnimatedImage( &pStage->bundle[0] ); + + // + // lightmap/secondary pass + // + GL_SelectTexture( 1 ); + qglEnable( GL_TEXTURE_2D ); + qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + + if ( r_lightmap->integer ) { + GL_TexEnv( GL_REPLACE ); + } else { + GL_TexEnv( tess.shader->multitextureEnv ); + } + + qglTexCoordPointer( 2, GL_FLOAT, 0, input->svars.texcoords[1] ); + + R_BindAnimatedImage( &pStage->bundle[1] ); + + R_DrawElements( input->numIndexes, input->indexes ); + + // + // disable texturing on TEXTURE1, then select TEXTURE0 + // + //qglDisableClientState( GL_TEXTURE_COORD_ARRAY ); + qglDisable( GL_TEXTURE_2D ); + + GL_SelectTexture( 0 ); +} + + + +/* +=================== +ProjectDlightTexture + +Perform dynamic lighting with another rendering pass +=================== +*/ +static void ProjectDlightTexture( void ) { + int i, l; + vec3_t origin; + float *texCoords; + byte *colors; + byte clipBits[SHADER_MAX_VERTEXES]; + MAC_STATIC float texCoordsArray[SHADER_MAX_VERTEXES][2]; + byte colorArray[SHADER_MAX_VERTEXES][4]; + unsigned hitIndexes[SHADER_MAX_INDEXES]; + int numIndexes; + float scale; + float radius; + vec3_t floatColor; + + if ( !backEnd.refdef.num_dlights ) { + return; + } + + for ( l = 0 ; l < backEnd.refdef.num_dlights ; l++ ) { + dlight_t *dl; + + if ( !( tess.dlightBits & ( 1 << l ) ) ) { + continue; // this surface definately doesn't have any of this light + } + texCoords = texCoordsArray[0]; + colors = colorArray[0]; + + dl = &backEnd.refdef.dlights[l]; + VectorCopy( dl->transformed, origin ); + radius = dl->radius; + scale = 1.0f / radius; + floatColor[0] = dl->color[0] * 255.0f; + floatColor[1] = dl->color[1] * 255.0f; + floatColor[2] = dl->color[2] * 255.0f; + + for ( i = 0 ; i < tess.numVertexes ; i++, texCoords += 2, colors += 4 ) { + vec3_t dist; + int clip; + float modulate; + + backEnd.pc.c_dlightVertexes++; + + VectorSubtract( origin, tess.xyz[i], dist ); + texCoords[0] = 0.5f + dist[0] * scale; + texCoords[1] = 0.5f + dist[1] * scale; + + clip = 0; + if ( texCoords[0] < 0.0f ) { + clip |= 1; + } else if ( texCoords[0] > 1.0f ) { + clip |= 2; + } + if ( texCoords[1] < 0.0f ) { + clip |= 4; + } else if ( texCoords[1] > 1.0f ) { + clip |= 8; + } + // modulate the strength based on the height and color + if ( dist[2] > radius ) { + clip |= 16; + modulate = 0.0f; + } else if ( dist[2] < -radius ) { + clip |= 32; + modulate = 0.0f; + } else { + dist[2] = Q_fabs(dist[2]); + if ( dist[2] < radius * 0.5f ) { + modulate = 1.0f; + } else { + modulate = 2.0f * (radius - dist[2]) * scale; + } + } + clipBits[i] = clip; + + colors[0] = myftol(floatColor[0] * modulate); + colors[1] = myftol(floatColor[1] * modulate); + colors[2] = myftol(floatColor[2] * modulate); + colors[3] = 255; + } + + // build a list of triangles that need light + numIndexes = 0; + for ( i = 0 ; i < tess.numIndexes ; i += 3 ) { + int a, b, c; + + a = tess.indexes[i]; + b = tess.indexes[i+1]; + c = tess.indexes[i+2]; + if ( clipBits[a] & clipBits[b] & clipBits[c] ) { + continue; // not lighted + } + hitIndexes[numIndexes] = a; + hitIndexes[numIndexes+1] = b; + hitIndexes[numIndexes+2] = c; + numIndexes += 3; + } + + if ( !numIndexes ) { + continue; + } + + qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + qglTexCoordPointer( 2, GL_FLOAT, 0, texCoordsArray[0] ); + + qglEnableClientState( GL_COLOR_ARRAY ); + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, colorArray ); + + GL_Bind( tr.dlightImage ); + // include GLS_DEPTHFUNC_EQUAL so alpha tested surfaces don't add light + // where they aren't rendered + if ( dl->additive ) { + GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_EQUAL ); + } + else { + GL_State( GLS_SRCBLEND_DST_COLOR | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_EQUAL ); + } + R_DrawElements( numIndexes, hitIndexes ); + backEnd.pc.c_totalIndexes += numIndexes; + backEnd.pc.c_dlightIndexes += numIndexes; + } +} + + +/* +=================== +RB_FogPass + +Blends a fog texture on top of everything else +=================== +*/ +static void RB_FogPass( void ) { + fog_t *fog; + int i; + + qglEnableClientState( GL_COLOR_ARRAY ); + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.svars.colors ); + + qglEnableClientState( GL_TEXTURE_COORD_ARRAY); + qglTexCoordPointer( 2, GL_FLOAT, 0, tess.svars.texcoords[0] ); + + fog = tr.world->fogs + tess.fogNum; + + for ( i = 0; i < tess.numVertexes; i++ ) { + * ( int * )&tess.svars.colors[i] = fog->colorInt; + } + + RB_CalcFogTexCoords( ( float * ) tess.svars.texcoords[0] ); + + GL_Bind( tr.fogImage ); + + if ( tess.shader->fogPass == FP_EQUAL ) { + GL_State( GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA | GLS_DEPTHFUNC_EQUAL ); + } else { + GL_State( GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA ); + } + + R_DrawElements( tess.numIndexes, tess.indexes ); +} + +/* +=============== +ComputeColors +=============== +*/ +static void ComputeColors( shaderStage_t *pStage, int forceRGBGen ) +{ + int i; + color4ub_t *colors = tess.svars.colors; + qboolean killGen = qfalse; + + if ( tess.shader != tr.projectionShadowShader && tess.shader != tr.shadowShader && + ( backEnd.currentEntity->e.renderfx & (RF_DISINTEGRATE1|RF_DISINTEGRATE2))) + { + RB_CalcDisintegrateColors( (unsigned char *)tess.svars.colors ); + RB_CalcDisintegrateVertDeform(); + + // We've done some custom alpha and color stuff, so we can skip the rest. Let it do fog though + killGen = qtrue; + } + + // + // rgbGen + // + if ( !forceRGBGen ) + { + forceRGBGen = pStage->rgbGen; + } + + if ( backEnd.currentEntity->e.renderfx & RF_VOLUMETRIC ) // does not work for rotated models, technically, this should also be a CGEN type, but that would entail adding new shader commands....which is too much work for one thing + { + int i; + float *normal, dot; + unsigned char *color; + int numVertexes; + + normal = tess.normal[0]; + color = tess.svars.colors[0]; + + numVertexes = tess.numVertexes; + + for ( i = 0 ; i < numVertexes ; i++, normal += 4, color += 4) + { + dot = DotProduct( normal, backEnd.refdef.viewaxis[0] ); + + dot *= dot * dot * dot; + + if ( dot < 0.2f ) // so low, so just clamp it + { + dot = 0.0f; + } + + color[0] = color[1] = color[2] = color[3] = myftol( backEnd.currentEntity->e.shaderRGBA[0] * (1-dot) ); + + } + + killGen = qtrue; + } + + if (killGen) + { + goto avoidGen; + } + + // + // rgbGen + // + switch ( forceRGBGen ) + { + case CGEN_IDENTITY: + Com_Memset( tess.svars.colors, 0xff, tess.numVertexes * 4 ); + break; + default: + case CGEN_IDENTITY_LIGHTING: + Com_Memset( tess.svars.colors, tr.identityLightByte, tess.numVertexes * 4 ); + break; + case CGEN_LIGHTING_DIFFUSE: + RB_CalcDiffuseColor( ( unsigned char * ) tess.svars.colors ); + break; + case CGEN_EXACT_VERTEX: + Com_Memcpy( tess.svars.colors, tess.vertexColors, tess.numVertexes * sizeof( tess.vertexColors[0] ) ); + break; + case CGEN_CONST: + for ( i = 0; i < tess.numVertexes; i++ ) { + *(int *)tess.svars.colors[i] = *(int *)pStage->constantColor; + } + break; + case CGEN_VERTEX: + if ( tr.identityLight == 1 ) + { + Com_Memcpy( tess.svars.colors, tess.vertexColors, tess.numVertexes * sizeof( tess.vertexColors[0] ) ); + } + else + { + for ( i = 0; i < tess.numVertexes; i++ ) + { + tess.svars.colors[i][0] = tess.vertexColors[i][0] * tr.identityLight; + tess.svars.colors[i][1] = tess.vertexColors[i][1] * tr.identityLight; + tess.svars.colors[i][2] = tess.vertexColors[i][2] * tr.identityLight; + tess.svars.colors[i][3] = tess.vertexColors[i][3]; + } + } + break; + case CGEN_ONE_MINUS_VERTEX: + if ( tr.identityLight == 1 ) + { + for ( i = 0; i < tess.numVertexes; i++ ) + { + tess.svars.colors[i][0] = 255 - tess.vertexColors[i][0]; + tess.svars.colors[i][1] = 255 - tess.vertexColors[i][1]; + tess.svars.colors[i][2] = 255 - tess.vertexColors[i][2]; + } + } + else + { + for ( i = 0; i < tess.numVertexes; i++ ) + { + tess.svars.colors[i][0] = ( 255 - tess.vertexColors[i][0] ) * tr.identityLight; + tess.svars.colors[i][1] = ( 255 - tess.vertexColors[i][1] ) * tr.identityLight; + tess.svars.colors[i][2] = ( 255 - tess.vertexColors[i][2] ) * tr.identityLight; + } + } + break; + case CGEN_FOG: + { + fog_t *fog; + + fog = tr.world->fogs + tess.fogNum; + + for ( i = 0; i < tess.numVertexes; i++ ) { + * ( int * )&tess.svars.colors[i] = fog->colorInt; + } + } + break; + case CGEN_WAVEFORM: + RB_CalcWaveColor( &pStage->rgbWave, ( unsigned char * ) tess.svars.colors ); + break; + case CGEN_ENTITY: + RB_CalcColorFromEntity( ( unsigned char * ) tess.svars.colors ); + break; + case CGEN_ONE_MINUS_ENTITY: + RB_CalcColorFromOneMinusEntity( ( unsigned char * ) tess.svars.colors ); + break; + case CGEN_LIGHTMAP0: + memset( colors, 0xff, tess.numVertexes * 4 ); + break; + case CGEN_LIGHTMAP1: + for ( i = 0; i < tess.numVertexes; i++ ) + { + *(unsigned *)&colors[i] = *(unsigned *)styleColors[pStage->lightmapStyle]; + } + break; + case CGEN_LIGHTMAP2: + for ( i = 0; i < tess.numVertexes; i++ ) + { + *(unsigned *)&colors[i] = *(unsigned *)styleColors[pStage->lightmapStyle]; + } + break; + case CGEN_LIGHTMAP3: + for ( i = 0; i < tess.numVertexes; i++ ) + { + *(unsigned *)&colors[i] = *(unsigned *)styleColors[pStage->lightmapStyle]; + } + break; + + } + + // + // alphaGen + // + switch ( pStage->alphaGen ) + { + case AGEN_SKIP: + break; + case AGEN_IDENTITY: + if ( forceRGBGen != CGEN_IDENTITY ) { + if ( ( forceRGBGen == CGEN_VERTEX && tr.identityLight != 1 ) || + forceRGBGen != CGEN_VERTEX ) { + for ( i = 0; i < tess.numVertexes; i++ ) { + tess.svars.colors[i][3] = 0xff; + } + } + } + break; + case AGEN_CONST: + if ( forceRGBGen != CGEN_CONST ) { + for ( i = 0; i < tess.numVertexes; i++ ) { + tess.svars.colors[i][3] = pStage->constantColor[3]; + } + } + break; + case AGEN_WAVEFORM: + RB_CalcWaveAlpha( &pStage->alphaWave, ( unsigned char * ) tess.svars.colors ); + break; + case AGEN_LIGHTING_SPECULAR: + RB_CalcSpecularAlpha( ( unsigned char * ) tess.svars.colors ); + break; + case AGEN_ENTITY: + RB_CalcAlphaFromEntity( ( unsigned char * ) tess.svars.colors ); + break; + case AGEN_ONE_MINUS_ENTITY: + RB_CalcAlphaFromOneMinusEntity( ( unsigned char * ) tess.svars.colors ); + break; + case AGEN_VERTEX: + if ( forceRGBGen != CGEN_VERTEX ) { + for ( i = 0; i < tess.numVertexes; i++ ) { + tess.svars.colors[i][3] = tess.vertexColors[i][3]; + } + } + break; + case AGEN_ONE_MINUS_VERTEX: + for ( i = 0; i < tess.numVertexes; i++ ) + { + tess.svars.colors[i][3] = 255 - tess.vertexColors[i][3]; + } + break; + case AGEN_PORTAL: + { + unsigned char alpha; + + for ( i = 0; i < tess.numVertexes; i++ ) + { + float len; + vec3_t v; + + VectorSubtract( tess.xyz[i], backEnd.viewParms.or.origin, v ); + len = VectorLength( v ); + + len /= tess.shader->portalRange; + + if ( len < 0 ) + { + alpha = 0; + } + else if ( len > 1 ) + { + alpha = 0xff; + } + else + { + alpha = len * 0xff; + } + + tess.svars.colors[i][3] = alpha; + } + } + break; + case AGEN_BLEND: + if ( forceRGBGen != CGEN_VERTEX ) + { + for ( i = 0; i < tess.numVertexes; i++ ) + { + //colors[i][3] = tess.vertexAlphas[i][pStage->index]; // only used on SOF2, needs implementing if you want it + } + } + break; + } +avoidGen: + // + // fog adjustment for colors to fade out as fog increases + // + if ( tess.fogNum ) + { + switch ( pStage->adjustColorsForFog ) + { + case ACFF_MODULATE_RGB: + RB_CalcModulateColorsByFog( ( unsigned char * ) tess.svars.colors ); + break; + case ACFF_MODULATE_ALPHA: + RB_CalcModulateAlphasByFog( ( unsigned char * ) tess.svars.colors ); + break; + case ACFF_MODULATE_RGBA: + RB_CalcModulateRGBAsByFog( ( unsigned char * ) tess.svars.colors ); + break; + case ACFF_NONE: + break; + } + } +} + +/* +=============== +ComputeTexCoords +=============== +*/ +static void ComputeTexCoords( shaderStage_t *pStage ) { + int i; + int b; + float *texcoords; + + for ( b = 0; b < NUM_TEXTURE_BUNDLES; b++ ) { + int tm; + + texcoords = (float *)tess.svars.texcoords[b]; + // + // generate the texture coordinates + // + switch ( pStage->bundle[b].tcGen ) + { + case TCGEN_IDENTITY: + Com_Memset( tess.svars.texcoords[b], 0, sizeof( float ) * 2 * tess.numVertexes ); + break; + case TCGEN_TEXTURE: + for ( i = 0 ; i < tess.numVertexes ; i++ ) { + tess.svars.texcoords[b][i][0] = tess.texCoords[i][0][0]; + tess.svars.texcoords[b][i][1] = tess.texCoords[i][0][1]; + } + break; + case TCGEN_LIGHTMAP: + for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { + texcoords[0] = tess.texCoords[i][1][0]; + texcoords[1] = tess.texCoords[i][1][1]; + } + break; + case TCGEN_LIGHTMAP1: + for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { + texcoords[0] = tess.texCoords[i][2][0]; + texcoords[1] = tess.texCoords[i][2][1]; + } + break; + case TCGEN_LIGHTMAP2: + for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { + texcoords[0] = tess.texCoords[i][3][0]; + texcoords[1] = tess.texCoords[i][3][1]; + } + break; + case TCGEN_LIGHTMAP3: + for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { + texcoords[0] = tess.texCoords[i][4][0]; + texcoords[1] = tess.texCoords[i][4][1]; + } + break; + case TCGEN_VECTOR: + for ( i = 0 ; i < tess.numVertexes ; i++ ) { + tess.svars.texcoords[b][i][0] = DotProduct( tess.xyz[i], pStage->bundle[b].tcGenVectors[0] ); + tess.svars.texcoords[b][i][1] = DotProduct( tess.xyz[i], pStage->bundle[b].tcGenVectors[1] ); + } + break; + case TCGEN_FOG: + RB_CalcFogTexCoords( ( float * ) tess.svars.texcoords[b] ); + break; + case TCGEN_ENVIRONMENT_MAPPED: + RB_CalcEnvironmentTexCoords( ( float * ) tess.svars.texcoords[b] ); + break; + case TCGEN_BAD: + return; + } + + // + // alter texture coordinates + // + for ( tm = 0; tm < pStage->bundle[b].numTexMods ; tm++ ) { + switch ( pStage->bundle[b].texMods[tm].type ) + { + case TMOD_NONE: + tm = TR_MAX_TEXMODS; // break out of for loop + break; + + case TMOD_TURBULENT: + RB_CalcTurbulentTexCoords( &pStage->bundle[b].texMods[tm].wave, + ( float * ) tess.svars.texcoords[b] ); + break; + + case TMOD_ENTITY_TRANSLATE: + RB_CalcScrollTexCoords( backEnd.currentEntity->e.shaderTexCoord, + ( float * ) tess.svars.texcoords[b] ); + break; + + case TMOD_SCROLL: + RB_CalcScrollTexCoords( pStage->bundle[b].texMods[tm].scroll, + ( float * ) tess.svars.texcoords[b] ); + break; + + case TMOD_SCALE: + RB_CalcScaleTexCoords( pStage->bundle[b].texMods[tm].scale, + ( float * ) tess.svars.texcoords[b] ); + break; + + case TMOD_STRETCH: + RB_CalcStretchTexCoords( &pStage->bundle[b].texMods[tm].wave, + ( float * ) tess.svars.texcoords[b] ); + break; + + case TMOD_TRANSFORM: + RB_CalcTransformTexCoords( &pStage->bundle[b].texMods[tm], + ( float * ) tess.svars.texcoords[b] ); + break; + + case TMOD_ROTATE: + RB_CalcRotateTexCoords( pStage->bundle[b].texMods[tm].rotateSpeed, + ( float * ) tess.svars.texcoords[b] ); + break; + + default: + ri.Error( ERR_DROP, "ERROR: unknown texmod '%d' in shader '%s'\n", pStage->bundle[b].texMods[tm].type, tess.shader->name ); + break; + } + } + } +} + +void ForceAlpha(unsigned char *dstColors, int TR_ForceEntAlpha) +{ + int i; + + dstColors += 3; + + for ( i = 0; i < tess.numVertexes; i++, dstColors += 4 ) + { + *dstColors = TR_ForceEntAlpha; + } +} + +/* +** RB_IterateStagesGeneric +*/ +static void RB_IterateStagesGeneric( shaderCommands_t *input ) +{ + int stage; + + for ( stage = 0; stage < MAX_SHADER_STAGES; stage++ ) + { + shaderStage_t *pStage = tess.xstages[stage]; + int forceRGBGen = 0; + int stateBits = 0; + + if ( !pStage ) + { + break; + } + + if ( stage && r_lightmap->integer && !( pStage->bundle[0].isLightmap || pStage->bundle[1].isLightmap || pStage->bundle[0].vertexLightmap ) ) + { + break; + } + + stateBits = pStage->stateBits; + + if ( backEnd.currentEntity ) + { + if ( backEnd.currentEntity->e.renderfx & RF_DISINTEGRATE1 ) + { + // we want to be able to rip a hole in the thing being disintegrated, and by doing the depth-testing it avoids some kinds of artefacts, but will probably introduce others? + stateBits = GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA | GLS_DEPTHMASK_TRUE | GLS_DEPTHTEST_DISABLE; + } + + if ( backEnd.currentEntity->e.renderfx & RF_RGB_TINT ) + {//want to use RGBGen from ent + forceRGBGen = CGEN_ENTITY; + } + } + + if (pStage->ss.surfaceSpriteType) + { + // We check for surfacesprites AFTER drawing everything else + continue; + } + + ComputeColors( pStage, forceRGBGen ); + ComputeTexCoords( pStage ); + + if ( !setArraysOnce ) + { + qglEnableClientState( GL_COLOR_ARRAY ); + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, input->svars.colors ); + } + + // + // do multitexture + // + if ( pStage->bundle[1].image[0] != 0 ) + { + DrawMultitextured( input, stage ); + } + else + { + if ( !setArraysOnce ) + { + qglTexCoordPointer( 2, GL_FLOAT, 0, input->svars.texcoords[0] ); + } + + // + // set state + // + if ( pStage->bundle[0].vertexLightmap && ( r_vertexLight->integer && !r_uiFullScreen->integer ) && r_lightmap->integer ) + { + GL_Bind( tr.whiteImage ); + } + else + R_BindAnimatedImage( &pStage->bundle[0] ); + + if (backEnd.currentEntity && (backEnd.currentEntity->e.renderfx & RF_FORCE_ENT_ALPHA)) + { + ForceAlpha((unsigned char *) tess.svars.colors, backEnd.currentEntity->e.shaderRGBA[3]); + GL_State(GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA); + } + else + { + GL_State( stateBits ); + } + + // + // draw + // + R_DrawElements( input->numIndexes, input->indexes ); + } + } +} + + +/* +** RB_StageIteratorGeneric +*/ +void RB_StageIteratorGeneric( void ) +{ + shaderCommands_t *input; + int stage; + + input = &tess; + + RB_DeformTessGeometry(); + + // + // log this call + // + if ( r_logFile->integer ) + { + // don't just call LogComment, or we will get + // a call to va() every frame! + GLimp_LogComment( va("--- RB_StageIteratorGeneric( %s ) ---\n", tess.shader->name) ); + } + + // + // set face culling appropriately + // + GL_Cull( input->shader->cullType ); + + // set polygon offset if necessary + if ( input->shader->polygonOffset ) + { + qglEnable( GL_POLYGON_OFFSET_FILL ); + qglPolygonOffset( r_offsetFactor->value, r_offsetUnits->value ); + } + + // + // if there is only a single pass then we can enable color + // and texture arrays before we compile, otherwise we need + // to avoid compiling those arrays since they will change + // during multipass rendering + // + if ( tess.numPasses > 1 || input->shader->multitextureEnv ) + { + setArraysOnce = qfalse; + qglDisableClientState (GL_COLOR_ARRAY); + qglDisableClientState (GL_TEXTURE_COORD_ARRAY); + } + else + { + setArraysOnce = qtrue; + + qglEnableClientState( GL_COLOR_ARRAY); + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.svars.colors ); + + qglEnableClientState( GL_TEXTURE_COORD_ARRAY); + qglTexCoordPointer( 2, GL_FLOAT, 0, tess.svars.texcoords[0] ); + } + + // + // lock XYZ + // + qglVertexPointer (3, GL_FLOAT, 16, input->xyz); // padded for SIMD + if (qglLockArraysEXT) + { + qglLockArraysEXT(0, input->numVertexes); + GLimp_LogComment( "glLockArraysEXT\n" ); + } + + // + // enable color and texcoord arrays after the lock if necessary + // + if ( !setArraysOnce ) + { + qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + qglEnableClientState( GL_COLOR_ARRAY ); + } + + // + // call shader function + // + RB_IterateStagesGeneric( input ); + + // + // now do any dynamic lighting needed + // + if ( tess.dlightBits && tess.shader->sort <= SS_OPAQUE + && !(tess.shader->surfaceFlags & (SURF_NODLIGHT | SURF_SKY) ) ) { + ProjectDlightTexture(); + } + + // + // now do fog + // + if ( tess.fogNum && tess.shader->fogPass ) { + RB_FogPass(); + } + + // + // unlock arrays + // + if (qglUnlockArraysEXT) + { + qglUnlockArraysEXT(); + GLimp_LogComment( "glUnlockArraysEXT\n" ); + } + + // + // reset polygon offset + // + if ( input->shader->polygonOffset ) + { + qglDisable( GL_POLYGON_OFFSET_FILL ); + } + + // Now check for surfacesprites. + if (r_surfaceSprites->integer) + { + for ( stage = 1; stage < MAX_SHADER_STAGES; stage++ ) + { + if (!tess.xstages[stage]) + { + break; + } + if (tess.xstages[stage]->ss.surfaceSpriteType) + { // Draw the surfacesprite + RB_DrawSurfaceSprites(tess.xstages[stage], input); + } + } + } +} + + +/* +** RB_StageIteratorVertexLitTexture +*/ +void RB_StageIteratorVertexLitTexture( void ) +{ + shaderCommands_t *input; + shader_t *shader; + int stage; + + input = &tess; + + shader = input->shader; + + // + // compute colors + // + RB_CalcDiffuseColor( ( unsigned char * ) tess.svars.colors ); + + // + // log this call + // + if ( r_logFile->integer ) + { + // don't just call LogComment, or we will get + // a call to va() every frame! + GLimp_LogComment( va("--- RB_StageIteratorVertexLitTexturedUnfogged( %s ) ---\n", tess.shader->name) ); + } + + // + // set face culling appropriately + // + GL_Cull( input->shader->cullType ); + + // + // set arrays and lock + // + qglEnableClientState( GL_COLOR_ARRAY); + qglEnableClientState( GL_TEXTURE_COORD_ARRAY); + + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.svars.colors ); + qglTexCoordPointer( 2, GL_FLOAT, 16, tess.texCoords[0][0] ); + qglVertexPointer (3, GL_FLOAT, 16, input->xyz); + + if ( qglLockArraysEXT ) + { + qglLockArraysEXT(0, input->numVertexes); + GLimp_LogComment( "glLockArraysEXT\n" ); + } + + // + // call special shade routine + // + R_BindAnimatedImage( &tess.xstages[0]->bundle[0] ); + GL_State( tess.xstages[0]->stateBits ); + R_DrawElements( input->numIndexes, input->indexes ); + + // + // now do any dynamic lighting needed + // + if ( tess.dlightBits && tess.shader->sort <= SS_OPAQUE ) { + ProjectDlightTexture(); + } + + // + // now do fog + // + if ( tess.fogNum && tess.shader->fogPass ) { + RB_FogPass(); + } + + // + // unlock arrays + // + if (qglUnlockArraysEXT) + { + qglUnlockArraysEXT(); + GLimp_LogComment( "glUnlockArraysEXT\n" ); + } + + // Now check for surfacesprites. + if (r_surfaceSprites->integer) + { + for ( stage = 1; stage < MAX_SHADER_STAGES; stage++ ) + { + if (!tess.xstages[stage]) + { + break; + } + if (tess.xstages[stage]->ss.surfaceSpriteType) + { // Draw the surfacesprite + RB_DrawSurfaceSprites(tess.xstages[stage], input); + } + } + } +} + +//define REPLACE_MODE + +void RB_StageIteratorLightmappedMultitexture( void ) { + shaderCommands_t *input; + int stage; + + input = &tess; + + // + // log this call + // + if ( r_logFile->integer ) { + // don't just call LogComment, or we will get + // a call to va() every frame! + GLimp_LogComment( va("--- RB_StageIteratorLightmappedMultitexture( %s ) ---\n", tess.shader->name) ); + } + + // + // set face culling appropriately + // + GL_Cull( input->shader->cullType ); + + // + // set color, pointers, and lock + // + GL_State( GLS_DEFAULT ); + qglVertexPointer( 3, GL_FLOAT, 16, input->xyz ); + +#ifdef REPLACE_MODE + qglDisableClientState( GL_COLOR_ARRAY ); + qglColor3f( 1, 1, 1 ); + qglShadeModel( GL_FLAT ); +#else + qglEnableClientState( GL_COLOR_ARRAY ); + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.constantColor255 ); +#endif + + // + // select base stage + // + GL_SelectTexture( 0 ); + + qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + R_BindAnimatedImage( &tess.xstages[0]->bundle[0] ); + qglTexCoordPointer( 2, GL_FLOAT, 16, tess.texCoords[0][0] ); + + // + // configure second stage + // + GL_SelectTexture( 1 ); + qglEnable( GL_TEXTURE_2D ); + if ( r_lightmap->integer ) { + GL_TexEnv( GL_REPLACE ); + } else { + GL_TexEnv( GL_MODULATE ); + } + R_BindAnimatedImage( &tess.xstages[0]->bundle[1] ); + qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + qglTexCoordPointer( 2, GL_FLOAT, 16, tess.texCoords[0][1] ); + + // + // lock arrays + // + if ( qglLockArraysEXT ) { + qglLockArraysEXT(0, input->numVertexes); + GLimp_LogComment( "glLockArraysEXT\n" ); + } + + R_DrawElements( input->numIndexes, input->indexes ); + + // + // disable texturing on TEXTURE1, then select TEXTURE0 + // + qglDisable( GL_TEXTURE_2D ); + qglDisableClientState( GL_TEXTURE_COORD_ARRAY ); + + GL_SelectTexture( 0 ); +#ifdef REPLACE_MODE + GL_TexEnv( GL_MODULATE ); + qglShadeModel( GL_SMOOTH ); +#endif + + // + // now do any dynamic lighting needed + // + if ( tess.dlightBits && tess.shader->sort <= SS_OPAQUE ) { + ProjectDlightTexture(); + } + + // + // now do fog + // + if ( tess.fogNum && tess.shader->fogPass ) { + RB_FogPass(); + } + + // + // unlock arrays + // + if ( qglUnlockArraysEXT ) { + qglUnlockArraysEXT(); + GLimp_LogComment( "glUnlockArraysEXT\n" ); + } + + // Now check for surfacesprites. + if (r_surfaceSprites->integer) + { + for ( stage = 1; stage < MAX_SHADER_STAGES; stage++ ) + { + if (!tess.xstages[stage]) + { + break; + } + if (tess.xstages[stage]->ss.surfaceSpriteType) + { // Draw the surfacesprite + RB_DrawSurfaceSprites(tess.xstages[stage], input); + } + } + } +} + +/* +** RB_EndSurface +*/ +void RB_EndSurface( void ) { + shaderCommands_t *input; + + input = &tess; + + if (input->numIndexes == 0) { + return; + } + + if (input->indexes[SHADER_MAX_INDEXES-1] != 0) { + ri.Error (ERR_DROP, "RB_EndSurface() - SHADER_MAX_INDEXES hit"); + } + if (input->xyz[SHADER_MAX_VERTEXES-1][0] != 0) { + ri.Error (ERR_DROP, "RB_EndSurface() - SHADER_MAX_VERTEXES hit"); + } + + if ( tess.shader == tr.shadowShader ) { + RB_ShadowTessEnd(); + return; + } + + // for debugging of sort order issues, stop rendering after a given sort value + if ( r_debugSort->integer && r_debugSort->integer < tess.shader->sort ) { + return; + } + + // + // update performance counters + // + backEnd.pc.c_shaders++; + backEnd.pc.c_vertexes += tess.numVertexes; + backEnd.pc.c_indexes += tess.numIndexes; + backEnd.pc.c_totalIndexes += tess.numIndexes * tess.numPasses; + if (tess.fogNum && tess.shader->fogPass > FP_NONE && tess.shader->fogPass < FP_GLFOG)// && r_drawfog->value) + { + backEnd.pc.c_totalIndexes += tess.numIndexes; + } + + // + // call off to shader specific tess end function + // + tess.currentStageIteratorFunc(); + + // + // draw debugging stuff + // + if ( r_showtris->integer && com_developer->integer ) { + DrawTris (input); + } + if ( r_shownormals->integer && com_developer->integer ) { + DrawNormals (input); + } + // clear shader so we can tell we don't have any unclosed surfaces + tess.numIndexes = 0; + + GLimp_LogComment( "----------\n" ); +} + diff --git a/CODEmp/renderer/tr_shade_calc.cpp b/CODE-mp/renderer/tr_shade_calc.cpp similarity index 100% rename from CODEmp/renderer/tr_shade_calc.cpp rename to CODE-mp/renderer/tr_shade_calc.cpp diff --git a/CODEmp/renderer/tr_shader.cpp b/CODE-mp/renderer/tr_shader.cpp similarity index 96% rename from CODEmp/renderer/tr_shader.cpp rename to CODE-mp/renderer/tr_shader.cpp index 3eb564d..c861ba9 100644 --- a/CODEmp/renderer/tr_shader.cpp +++ b/CODE-mp/renderer/tr_shader.cpp @@ -635,6 +635,7 @@ static void ParseTexMod( const char *_text, shaderStage_t *stage ) /* +/////===== Part of the VERTIGON system =====///// =================== ParseSurfaceSprites =================== @@ -768,12 +769,15 @@ static void ParseSurfaceSprites( const char *_text, shaderStage_t *stage ) stage->ss.fxGrow[1] = 0.0; stage->ss.fxAlphaStart = 1.0; stage->ss.fxAlphaEnd = 0.0; + + shader.needsNormal = qtrue; } /* +/////===== Part of the VERTIGON system =====///// =========================== ParseSurfaceSpritesOptional =========================== @@ -1095,7 +1099,6 @@ static void ParseSurfaceSpritesOptional( const char *param, const char *_text, s } - /* =================== ParseStage diff --git a/CODEmp/renderer/tr_shadows.cpp b/CODE-mp/renderer/tr_shadows.cpp similarity index 100% rename from CODEmp/renderer/tr_shadows.cpp rename to CODE-mp/renderer/tr_shadows.cpp diff --git a/CODEmp/renderer/tr_sky.cpp b/CODE-mp/renderer/tr_sky.cpp similarity index 100% rename from CODEmp/renderer/tr_sky.cpp rename to CODE-mp/renderer/tr_sky.cpp diff --git a/CODEmp/renderer/tr_surface.cpp b/CODE-mp/renderer/tr_surface.cpp similarity index 100% rename from CODEmp/renderer/tr_surface.cpp rename to CODE-mp/renderer/tr_surface.cpp diff --git a/CODE-mp/renderer/tr_surfacesprites.cpp b/CODE-mp/renderer/tr_surfacesprites.cpp new file mode 100644 index 0000000..e27d010 --- /dev/null +++ b/CODE-mp/renderer/tr_surfacesprites.cpp @@ -0,0 +1,1462 @@ +// tr_shade.c + +#include "tr_local.h" + +#include "tr_quicksprite.h" +#include "tr_worldeffects.h" + + +/////===== Part of the VERTIGON system =====///// +// The surfacesprites are a simple system. When a polygon with this shader stage on it is drawn, +// there are randomly distributed images (defined by the shader stage) placed on the surface. +// these are capable of doing effects, grass, or simple oriented sprites. +// They usually stick vertically off the surface, hence the term vertigons. + +// The vertigons are applied as part of the renderer backend. That is, they access OpenGL calls directly. + + +unsigned char randomindex, randominterval; +const float randomchart[256] = { + 0.6554f, 0.6909f, 0.4806f, 0.6218f, 0.5717f, 0.3896f, 0.0677f, 0.7356f, + 0.8333f, 0.1105f, 0.4445f, 0.8161f, 0.4689f, 0.0433f, 0.7152f, 0.0336f, + 0.0186f, 0.9140f, 0.1626f, 0.6553f, 0.8340f, 0.7094f, 0.2020f, 0.8087f, + 0.9119f, 0.8009f, 0.1339f, 0.8492f, 0.9173f, 0.5003f, 0.6012f, 0.6117f, + 0.5525f, 0.5787f, 0.1586f, 0.3293f, 0.9273f, 0.7791f, 0.8589f, 0.4985f, + 0.0883f, 0.8545f, 0.2634f, 0.4727f, 0.3624f, 0.1631f, 0.7825f, 0.0662f, + 0.6704f, 0.3510f, 0.7525f, 0.9486f, 0.4685f, 0.1535f, 0.1545f, 0.1121f, + 0.4724f, 0.8483f, 0.3833f, 0.1917f, 0.8207f, 0.3885f, 0.9702f, 0.9200f, + 0.8348f, 0.7501f, 0.6675f, 0.4994f, 0.0301f, 0.5225f, 0.8011f, 0.1696f, + 0.5351f, 0.2752f, 0.2962f, 0.7550f, 0.5762f, 0.7303f, 0.2835f, 0.4717f, + 0.1818f, 0.2739f, 0.6914f, 0.7748f, 0.7640f, 0.8355f, 0.7314f, 0.5288f, + 0.7340f, 0.6692f, 0.6813f, 0.2810f, 0.8057f, 0.0648f, 0.8749f, 0.9199f, + 0.1462f, 0.5237f, 0.3014f, 0.4994f, 0.0278f, 0.4268f, 0.7238f, 0.5107f, + 0.1378f, 0.7303f, 0.7200f, 0.3819f, 0.2034f, 0.7157f, 0.5552f, 0.4887f, + 0.0871f, 0.3293f, 0.2892f, 0.4545f, 0.0088f, 0.1404f, 0.0275f, 0.0238f, + 0.0515f, 0.4494f, 0.7206f, 0.2893f, 0.6060f, 0.5785f, 0.4182f, 0.5528f, + 0.9118f, 0.8742f, 0.3859f, 0.6030f, 0.3495f, 0.4550f, 0.9875f, 0.6900f, + 0.6416f, 0.2337f, 0.7431f, 0.9788f, 0.6181f, 0.2464f, 0.4661f, 0.7621f, + 0.7020f, 0.8203f, 0.8869f, 0.2145f, 0.7724f, 0.6093f, 0.6692f, 0.9686f, + 0.5609f, 0.0310f, 0.2248f, 0.2950f, 0.2365f, 0.1347f, 0.2342f, 0.1668f, + 0.3378f, 0.4330f, 0.2775f, 0.9901f, 0.7053f, 0.7266f, 0.4840f, 0.2820f, + 0.5733f, 0.4555f, 0.6049f, 0.0770f, 0.4760f, 0.6060f, 0.4159f, 0.3427f, + 0.1234f, 0.7062f, 0.8569f, 0.1878f, 0.9057f, 0.9399f, 0.8139f, 0.1407f, + 0.1794f, 0.9123f, 0.9493f, 0.2827f, 0.9934f, 0.0952f, 0.4879f, 0.5160f, + 0.4118f, 0.4873f, 0.3642f, 0.7470f, 0.0866f, 0.5172f, 0.6365f, 0.2676f, + 0.2407f, 0.7223f, 0.5761f, 0.1143f, 0.7137f, 0.2342f, 0.3353f, 0.6880f, + 0.2296f, 0.6023f, 0.6027f, 0.4138f, 0.5408f, 0.9859f, 0.1503f, 0.7238f, + 0.6054f, 0.2477f, 0.6804f, 0.1432f, 0.4540f, 0.9776f, 0.8762f, 0.7607f, + 0.9025f, 0.9807f, 0.0652f, 0.8661f, 0.7663f, 0.2586f, 0.3994f, 0.0335f, + 0.7328f, 0.0166f, 0.9589f, 0.4348f, 0.5493f, 0.7269f, 0.6867f, 0.6614f, + 0.6800f, 0.7804f, 0.5591f, 0.8381f, 0.0910f, 0.7573f, 0.8985f, 0.3083f, + 0.3188f, 0.8481f, 0.2356f, 0.6736f, 0.4770f, 0.4560f, 0.6266f, 0.4677f +}; + +#define WIND_DAMP_INTERVAL 50 +#define WIND_GUST_TIME 2500.0 +#define WIND_GUST_DECAY (1.0 / WIND_GUST_TIME) + +int lastSSUpdateTime = 0; +float curWindSpeed=0; +float curWindGust=5; +float curWeatherAmount=1; +vec3_t curWindBlowVect={0,0,0}, targetWindBlowVect={0,0,0}; +vec3_t curWindGrassDir={0,0,0}, targetWindGrassDir={0,0,0}; +int totalsurfsprites=0, sssurfaces=0; + +qboolean curWindPointActive=qfalse; +float curWindPointForce = 0; +vec3_t curWindPoint; +int nextGustTime=0; +float gustLeft=0; + +qboolean standardfovinitialized=qfalse; +float standardfovx = 90, standardscalex = 1.0; +float rangescalefactor=1.0; + +vec3_t ssrightvectors[4]; +vec3_t ssfwdvector; +int rightvectorcount; + +trRefEntity_t *ssLastEntityDrawn=NULL; +vec3_t ssViewOrigin, ssViewRight, ssViewUp; + + +static void R_SurfaceSpriteFrameUpdate(void) +{ + float dtime, dampfactor; // Time since last update and damping time for wind changes + float ratio; + vec3_t ang, diff, retwindvec; + float targetspeed; + vec3_t up={0,0,1}; + + if (backEnd.refdef.time == lastSSUpdateTime) + return; + + if (backEnd.refdef.time < lastSSUpdateTime) + { // Time is BEFORE the last update time, so reset everything. + curWindGust = 5; + curWindSpeed = r_windSpeed->value; + nextGustTime = 0; + gustLeft = 0; + } + + // Reset the last entity drawn, since this is a new frame. + ssLastEntityDrawn = NULL; + + // Adjust for an FOV. If things look twice as wide on the screen, pretend the shaders have twice the range. + // ASSUMPTION HERE IS THAT "standard" fov is the first one rendered. + + if (!standardfovinitialized) + { // This isn't initialized yet. + if (backEnd.refdef.fov_x > 50 && backEnd.refdef.fov_x < 135) // I don't consider anything below 50 or above 135 to be "normal". + { + standardfovx = backEnd.refdef.fov_x; + standardscalex = tan(standardfovx * 0.5 * (M_PI/180.0f)); + standardfovinitialized = qtrue; + } + else + { + standardfovx = 90; + standardscalex = tan(standardfovx * 0.5 * (M_PI/180.0f)); + } + rangescalefactor = 1.0; // Don't multiply the shader range by anything. + } + else if (standardfovx == backEnd.refdef.fov_x) + { // This is the standard FOV (or higher), don't multiply the shader range. + rangescalefactor = 1.0; + } + else + { // We are using a non-standard FOV. We need to multiply the range of the shader by a scale factor. + if (backEnd.refdef.fov_x > 135) + { + rangescalefactor = standardscalex / tan(135.0f * 0.5f * (M_PI/180.0f)); + } + else + { + rangescalefactor = standardscalex / tan(backEnd.refdef.fov_x * 0.5 * (M_PI/180.0f)); + } + } + + // Create a set of four right vectors so that vertical sprites aren't always facing the same way. + // First generate a HORIZONTAL forward vector (important). + CrossProduct(ssViewRight, up, ssfwdvector); + + // Right Zero has a nudge forward (10 degrees). + VectorScale(ssViewRight, 0.985f, ssrightvectors[0]); + VectorMA(ssrightvectors[0], 0.174f, ssfwdvector, ssrightvectors[0]); + + // Right One has a big nudge back (30 degrees). + VectorScale(ssViewRight, 0.866f, ssrightvectors[1]); + VectorMA(ssrightvectors[1], -0.5f, ssfwdvector, ssrightvectors[1]); + + + // Right two has a big nudge forward (30 degrees). + VectorScale(ssViewRight, 0.866f, ssrightvectors[2]); + VectorMA(ssrightvectors[2], 0.5f, ssfwdvector, ssrightvectors[2]); + + + // Right three has a nudge back (10 degrees). + VectorScale(ssViewRight, 0.985f, ssrightvectors[3]); + VectorMA(ssrightvectors[3], -0.174f, ssfwdvector, ssrightvectors[3]); + + + // Update the wind. + // If it is raining, get the windspeed from the rain system rather than the cvar + if (R_IsRaining() || R_IsSnowing()) + { + curWeatherAmount = 1.0; + } + else + { + curWeatherAmount = r_surfaceWeather->value; + } + + if (R_GetWindSpeed(targetspeed)) + { // We successfully got a speed from the rain system. + // Set the windgust to 5, since that looks pretty good. + targetspeed *= 0.3f; + if (targetspeed >= 1.0) + { + curWindGust = 300/targetspeed; + } + else + { + curWindGust = 0; + } + } + else + { // Use the cvar. + targetspeed = r_windSpeed->value; // Minimum gust delay, in seconds. + curWindGust = r_windGust->value; + } + + if (targetspeed > 0 && curWindGust) + { + if (gustLeft > 0) + { // We are gusting + // Add an amount to the target wind speed + targetspeed *= 1.0 + gustLeft; + + gustLeft -= (float)(backEnd.refdef.time - lastSSUpdateTime)*WIND_GUST_DECAY; + if (gustLeft <= 0) + { + nextGustTime = backEnd.refdef.time + (curWindGust*1000)*flrand(1.0f,4.0f); + } + } + else if (backEnd.refdef.time >= nextGustTime) + { // See if there is another right now + // Gust next time, mano + gustLeft = flrand(0.75f,1.5f); + } + } + + // See if there is a weather system that will tell us a windspeed. + if (R_GetWindVector(retwindvec)) + { + retwindvec[2]=0; + VectorScale(retwindvec, -1.0f, retwindvec); + vectoangles(retwindvec, ang); + } + else + { // Calculate the target wind vector based off cvars + ang[YAW] = r_windAngle->value; + } + + ang[PITCH] = -90.0 + targetspeed; + if (ang[PITCH]>-45.0) + { + ang[PITCH] = -45.0; + } + ang[ROLL] = 0; + + if (targetspeed>0) + { +// ang[YAW] += cos(tr.refdef.time*0.01+flrand(-1.0,1.0))*targetspeed*0.5; +// ang[PITCH] += sin(tr.refdef.time*0.01+flrand(-1.0,1.0))*targetspeed*0.5; + } + + // Get the grass wind vector first + AngleVectors(ang, targetWindGrassDir, NULL, NULL); + targetWindGrassDir[2]-=1.0; +// VectorScale(targetWindGrassDir, targetspeed, targetWindGrassDir); + + // Now get the general wind vector (no pitch) + ang[PITCH]=0; + AngleVectors(ang, targetWindBlowVect, NULL, NULL); + + // Start calculating a smoothing factor so wind doesn't change abruptly between speeds. + dampfactor = 1.0-r_windDampFactor->value; // We must exponent the amount LEFT rather than the amount bled off + dtime = (float)(backEnd.refdef.time - lastSSUpdateTime) * (1.0/(float)WIND_DAMP_INTERVAL); // Our dampfactor is geared towards a time interval equal to "1". + + // Note that since there are a finite number of "practical" delta millisecond values possible, + // the ratio should be initialized into a chart ultimately. + ratio = pow(dampfactor, dtime); + + // Apply this ratio to the windspeed... + curWindSpeed = targetspeed - (ratio * (targetspeed-curWindSpeed)); + + // Use the curWindSpeed to calculate the final target wind vector (with speed) + VectorScale(targetWindBlowVect, curWindSpeed, targetWindBlowVect); + VectorSubtract(targetWindBlowVect, curWindBlowVect, diff); + VectorMA(targetWindBlowVect, -ratio, diff, curWindBlowVect); + + // Update the grass vector now + VectorSubtract(targetWindGrassDir, curWindGrassDir, diff); + VectorMA(targetWindGrassDir, -ratio, diff, curWindGrassDir); + + lastSSUpdateTime = backEnd.refdef.time; + + curWindPointForce = r_windPointForce->value - (ratio * (r_windPointForce->value - curWindPointForce)); + if (curWindPointForce < 0.01) + { + curWindPointActive = qfalse; + } + else + { + curWindPointActive = qtrue; + curWindPoint[0] = r_windPointX->value; + curWindPoint[1] = r_windPointY->value; + curWindPoint[2] = 0; + } + + if (r_surfaceSprites->integer >= 2) + { + Com_Printf("Surfacesprites Drawn: %d, on %d surfaces\n", totalsurfsprites, sssurfaces); + } + + totalsurfsprites=0; + sssurfaces=0; +} + + + +///////////////////////////////////////////// +// Surface sprite calculation and drawing. +///////////////////////////////////////////// + +#define FADE_RANGE 250.0 +#define WINDPOINT_RADIUS 750.0 + +float SSVertAlpha[SHADER_MAX_VERTEXES]; +float SSVertWindForce[SHADER_MAX_VERTEXES]; +vec2_t SSVertWindDir[SHADER_MAX_VERTEXES]; + +qboolean SSAdditiveTransparency=qfalse; +qboolean SSUsingFog=qfalse; + + +///////////////////////////////////////////// +// Vertical surface sprites + +static void RB_VerticalSurfaceSprite(vec3_t loc, float width, float height, byte light, + byte alpha, float wind, float windidle, vec2_t fog, int hangdown, vec2_t skew) +{ + vec3_t loc2, right; + float angle; + float windsway; + float points[16]; + color4ub_t color; + + angle = ((loc[0]+loc[1])*0.02+(tr.refdef.time*0.0015)); + + if (windidle>0.0) + { + windsway = (height*windidle*0.075); + loc2[0] = loc[0]+skew[0]+cos(angle)*windsway; + loc2[1] = loc[1]+skew[1]+sin(angle)*windsway; + + if (hangdown) + { + loc2[2] = loc[2]-height; + } + else + { + loc2[2] = loc[2]+height; + } + } + else + { + loc2[0] = loc[0]+skew[0]; + loc2[1] = loc[1]+skew[1]; + if (hangdown) + { + loc2[2] = loc[2]-height; + } + else + { + loc2[2] = loc[2]+height; + } + } + + if (wind>0.0 && curWindSpeed > 0.001) + { + windsway = (height*wind*0.075); + + // Add the angle + VectorMA(loc2, height*wind, curWindGrassDir, loc2); + // Bob up and down + if (curWindSpeed < 40.0) + { + windsway *= curWindSpeed*(1.0/100.0); + } + else + { + windsway *= 0.4f; + } + loc2[2] += sin(angle*2.5)*windsway; + } + + VectorScale(ssrightvectors[rightvectorcount], width*0.5, right); + + color[0]=light; + color[1]=light; + color[2]=light; + color[3]=alpha; + + // Bottom right +// VectorAdd(loc, right, point); + points[0] = loc[0] + right[0]; + points[1] = loc[1] + right[1]; + points[2] = loc[2] + right[2]; + points[3] = 0; + + // Top right +// VectorAdd(loc2, right, point); + points[4] = loc2[0] + right[0]; + points[5] = loc2[1] + right[1]; + points[6] = loc2[2] + right[2]; + points[7] = 0; + + // Top left +// VectorSubtract(loc2, right, point); + points[8] = loc2[0] - right[0] + ssfwdvector[0] * width * 0.2; + points[9] = loc2[1] - right[1] + ssfwdvector[1] * width * 0.2; + points[10] = loc2[2] - right[2]; + points[11] = 0; + + // Bottom left +// VectorSubtract(loc, right, point); + points[12] = loc[0] - right[0]; + points[13] = loc[1] - right[1]; + points[14] = loc[2] - right[2]; + points[15] = 0; + + // Add the sprite to the render list. + SQuickSprite.Add(points, color, fog); +} + +static void RB_VerticalSurfaceSpriteWindPoint(vec3_t loc, float width, float height, byte light, + byte alpha, float wind, float windidle, vec2_t fog, + int hangdown, vec2_t skew, vec2_t winddiff, float windforce) +{ + vec3_t loc2, right; + float angle; + float windsway; + float points[16]; + color4ub_t color; + + if (windforce > 1) + windforce = 1; + +// wind += 1.0-windforce; + + angle = (loc[0]+loc[1])*0.02+(tr.refdef.time*0.0015); + + if (curWindSpeed <80.0) + { + windsway = (height*windidle*0.1)*(1.0+windforce); + loc2[0] = loc[0]+skew[0]+cos(angle)*windsway; + loc2[1] = loc[1]+skew[1]+sin(angle)*windsway; + } + else + { + loc2[0] = loc[0]+skew[0]; + loc2[1] = loc[1]+skew[1]; + } + if (hangdown) + { + loc2[2] = loc[2]-height; + } + else + { + loc2[2] = loc[2]+height; + } + + if (curWindSpeed > 0.001) + { + // Add the angle + VectorMA(loc2, height*wind, curWindGrassDir, loc2); + } + + loc2[0] += height*winddiff[0]*windforce; + loc2[1] += height*winddiff[1]*windforce; + loc2[2] -= height*windforce*(0.75 + 0.15*sin((tr.refdef.time + 500*windforce)*0.01)); + + VectorScale(ssrightvectors[rightvectorcount], width*0.5, right); + + color[0]=light; + color[1]=light; + color[2]=light; + color[3]=alpha; + + // Bottom right +// VectorAdd(loc, right, point); + points[0] = loc[0] + right[0]; + points[1] = loc[1] + right[1]; + points[2] = loc[2] + right[2]; + points[3] = 0; + + // Top right +// VectorAdd(loc2, right, point); + points[4] = loc2[0] + right[0]; + points[5] = loc2[1] + right[1]; + points[6] = loc2[2] + right[2]; + points[7] = 0; + + // Top left +// VectorSubtract(loc2, right, point); + points[8] = loc2[0] - right[0] + ssfwdvector[0] * width * 0.15; + points[9] = loc2[1] - right[1] + ssfwdvector[1] * width * 0.15; + points[10] = loc2[2] - right[2]; + points[11] = 0; + + // Bottom left +// VectorSubtract(loc, right, point); + points[12] = loc[0] - right[0]; + points[13] = loc[1] - right[1]; + points[14] = loc[2] - right[2]; + points[15] = 0; + + // Add the sprite to the render list. + SQuickSprite.Add(points, color, fog); +} + +static void RB_DrawVerticalSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) +{ + int curindex, curvert; + vec3_t dist; + float triarea; + vec2_t vec1to2, vec1to3; + + vec3_t v1,v2,v3; + float a1,a2,a3; + float l1,l2,l3; + vec2_t fog1, fog2, fog3; + vec2_t winddiff1, winddiff2, winddiff3; + float windforce1, windforce2, windforce3; + + float posi, posj; + float step; + float fa,fb,fc; + + vec3_t curpoint; + float width, height; + float alpha, alphapos, thisspritesfadestart, light; + + byte randomindex2; + + vec2_t skew={0,0}; + vec2_t fogv; + vec2_t winddiffv; + float windforce=0; + qboolean usewindpoint = (qboolean) !! (curWindPointActive && stage->ss.wind > 0); + + float cutdist=stage->ss.fadeMax*rangescalefactor, cutdist2=cutdist*cutdist; + float fadedist=stage->ss.fadeDist*rangescalefactor, fadedist2=fadedist*fadedist; + + assert(cutdist2 != fadedist2); + float inv_fadediff = 1.0/(cutdist2-fadedist2); + + // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 + float faderange = FADE_RANGE/(cutdist-fadedist); + + if (faderange > 1.0) + { // Don't want to force a new fade_rand + faderange = 1.0; + } + + // Quickly calc all the alphas and windstuff for each vertex + for (curvert=0; curvertnumVertexes; curvert++) + { + VectorSubtract(ssViewOrigin, input->xyz[curvert], dist); + SSVertAlpha[curvert] = 1.0 - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; + } + + // Wind only needs initialization once per tess. + if (usewindpoint && !tess.SSInitializedWind) + { + for (curvert=0; curvertnumVertexes;curvert++) + { // Calc wind at each point + dist[0]=input->xyz[curvert][0] - curWindPoint[0]; + dist[1]=input->xyz[curvert][1] - curWindPoint[1]; + step = (dist[0]*dist[0] + dist[1]*dist[1]); // dist squared + + if (step >= (float)(WINDPOINT_RADIUS*WINDPOINT_RADIUS)) + { // No wind + SSVertWindDir[curvert][0] = 0; + SSVertWindDir[curvert][1] = 0; + SSVertWindForce[curvert]=0; // Should be < 1 + } + else + { + if (step<1) + { // Don't want to divide by zero + SSVertWindDir[curvert][0] = 0; + SSVertWindDir[curvert][1] = 0; + SSVertWindForce[curvert] = curWindPointForce * stage->ss.wind; + } + else + { + step = Q_rsqrt(step); // Equals 1 over the distance. + SSVertWindDir[curvert][0] = dist[0] * step; + SSVertWindDir[curvert][1] = dist[1] * step; + step = 1.0 - (1.0 / (step * WINDPOINT_RADIUS)); // 1- (dist/maxradius) = a scale from 0 to 1 linearly dropping off + SSVertWindForce[curvert] = curWindPointForce * stage->ss.wind * step; // *step means divide by the distance. + } + } + } + tess.SSInitializedWind = qtrue; + } + + for (curindex=0; curindexnumIndexes-2; curindex+=3) + { + curvert = input->indexes[curindex]; + VectorCopy(input->xyz[curvert], v1); + if (stage->ss.facing) + { // Hang down + if (input->normal[curvert][2] > -0.5) + { + continue; + } + } + else + { // Point up + if (input->normal[curvert][2] < 0.5) + { + continue; + } + } + l1 = input->vertexColors[curvert][2]; + a1 = SSVertAlpha[curvert]; + fog1[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); + fog1[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); + winddiff1[0] = SSVertWindDir[curvert][0]; + winddiff1[1] = SSVertWindDir[curvert][1]; + windforce1 = SSVertWindForce[curvert]; + + curvert = input->indexes[curindex+1]; + VectorCopy(input->xyz[curvert], v2); + if (stage->ss.facing) + { // Hang down + if (input->normal[curvert][2] > -0.5) + { + continue; + } + } + else + { // Point up + if (input->normal[curvert][2] < 0.5) + { + continue; + } + } + l2 = input->vertexColors[curvert][2]; + a2 = SSVertAlpha[curvert]; + fog2[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); + fog2[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); + winddiff2[0] = SSVertWindDir[curvert][0]; + winddiff2[1] = SSVertWindDir[curvert][1]; + windforce2 = SSVertWindForce[curvert]; + + curvert = input->indexes[curindex+2]; + VectorCopy(input->xyz[curvert], v3); + if (stage->ss.facing) + { // Hang down + if (input->normal[curvert][2] > -0.5) + { + continue; + } + } + else + { // Point up + if (input->normal[curvert][2] < 0.5) + { + continue; + } + } + l3 = input->vertexColors[curvert][2]; + a3 = SSVertAlpha[curvert]; + fog3[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); + fog3[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); + winddiff3[0] = SSVertWindDir[curvert][0]; + winddiff3[1] = SSVertWindDir[curvert][1]; + windforce3 = SSVertWindForce[curvert]; + + if (a1 <= 0.0 && a2 <= 0.0 && a3 <= 0.0) + { + continue; + } + + // Find the area in order to calculate the stepsize + vec1to2[0] = v2[0] - v1[0]; + vec1to2[1] = v2[1] - v1[1]; + vec1to3[0] = v3[0] - v1[0]; + vec1to3[1] = v3[1] - v1[1]; + + // Now get the cross product of this sum. + triarea = vec1to3[0]*vec1to2[1] - vec1to3[1]*vec1to2[0]; + triarea=fabs(triarea); + if (triarea <= 1.0) + { // Insanely small abhorrent triangle. + continue; + } + step = stage->ss.density * Q_rsqrt(triarea); + + randomindex = (byte)(v1[0]+v1[1]+v2[0]+v2[1]+v3[0]+v3[1]); + randominterval = (byte)(v1[0]+v2[1]+v3[2])|0x03; // Make sure the interval is at least 3, and always odd + rightvectorcount = 0; + + for (posi=0; posi<1.0; posi+=step) + { + for (posj=0; posj<(1.0-posi); posj+=step) + { + fa=posi+randomchart[randomindex]*step; + randomindex += randominterval; + + fb=posj+randomchart[randomindex]*step; + randomindex += randominterval; + + rightvectorcount=(rightvectorcount+1)&3; + + if (fa>1.0) + continue; + + if (fb>(1.0-fa)) + continue; + + fc = 1.0-fa-fb; + + // total alpha, minus random factor so some things fade out sooner. + alphapos = a1*fa + a2*fb + a3*fc; + + // Note that the alpha at this point is a value from 1.0 to 0.0, but represents when to START fading + thisspritesfadestart = faderange + (1.0-faderange) * randomchart[randomindex]; + randomindex += randominterval; + + // Find where the alpha is relative to the fadestart, and calc the real alpha to draw at. + alpha = 1.0 - ((thisspritesfadestart-alphapos)/faderange); + if (alpha > 0.0) + { + if (alpha > 1.0) + alpha=1.0; + + if (SSUsingFog) + { + fogv[0] = fog1[0]*fa + fog2[0]*fb + fog3[0]*fc; + fogv[1] = fog1[1]*fa + fog2[1]*fb + fog3[1]*fc; + } + + if (usewindpoint) + { + winddiffv[0] = winddiff1[0]*fa + winddiff2[0]*fb + winddiff3[0]*fc; + winddiffv[1] = winddiff1[1]*fa + winddiff2[1]*fb + winddiff3[1]*fc; + windforce = windforce1*fa + windforce2*fb + windforce3*fc; + } + + VectorScale(v1, fa, curpoint); + VectorMA(curpoint, fb, v2, curpoint); + VectorMA(curpoint, fc, v3, curpoint); + + light = l1*fa + l2*fb + l3*fc; + if (SSAdditiveTransparency) + { // Additive transparency, scale light value +// light *= alpha; + light = (128 + (light*0.5))*alpha; + alpha = 1.0; + } + + randomindex2 = randomindex; + width = stage->ss.width*(1.0 + (stage->ss.variance[0]*randomchart[randomindex2])); + height = stage->ss.height*(1.0 + (stage->ss.variance[1]*randomchart[randomindex2++])); + if (randomchart[randomindex2++]>0.5) + { + width = -width; + } + if (stage->ss.fadeScale!=0 && alphapos < 1.0) + { + width *= 1.0 + (stage->ss.fadeScale*(1.0-alphapos)); + } + + if (stage->ss.vertSkew != 0) + { // flrand(-vertskew, vertskew) + skew[0] = height * ((stage->ss.vertSkew*2.0f*randomchart[randomindex2++])-stage->ss.vertSkew); + skew[1] = height * ((stage->ss.vertSkew*2.0f*randomchart[randomindex2++])-stage->ss.vertSkew); + } + + if (usewindpoint && windforce > 0 && stage->ss.wind > 0.0) + { + if (SSUsingFog) + { + RB_VerticalSurfaceSpriteWindPoint(curpoint, width, height, (byte)light, (byte)(alpha*255.0), + stage->ss.wind, stage->ss.windIdle, fogv, stage->ss.facing, skew, + winddiffv, windforce); + } + else + { + RB_VerticalSurfaceSpriteWindPoint(curpoint, width, height, (byte)light, (byte)(alpha*255.0), + stage->ss.wind, stage->ss.windIdle, NULL, stage->ss.facing, skew, + winddiffv, windforce); + } + } + else + { + if (SSUsingFog) + { + RB_VerticalSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), + stage->ss.wind, stage->ss.windIdle, fogv, stage->ss.facing, skew); + } + else + { + RB_VerticalSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), + stage->ss.wind, stage->ss.windIdle, NULL, stage->ss.facing, skew); + } + } + + totalsurfsprites++; + } + } + } + } +} + + +///////////////////////////////////////////// +// Oriented surface sprites + +static void RB_OrientedSurfaceSprite(vec3_t loc, float width, float height, byte light, byte alpha, vec2_t fog, int faceup) +{ + vec3_t loc2, right; + float points[16]; + color4ub_t color; + + color[0]=light; + color[1]=light; + color[2]=light; + color[3]=alpha; + + if (faceup) + { + width *= 0.5; + height *= 0.5; + + // Bottom right + // VectorAdd(loc, right, point); + points[0] = loc[0] + width; + points[1] = loc[1] - width; + points[2] = loc[2] + 1.0; + points[3] = 0; + + // Top right + // VectorAdd(loc, right, point); + points[4] = loc[0] + width; + points[5] = loc[1] + width; + points[6] = loc[2] + 1.0; + points[7] = 0; + + // Top left + // VectorSubtract(loc, right, point); + points[8] = loc[0] - width; + points[9] = loc[1] + width; + points[10] = loc[2] + 1.0; + points[11] = 0; + + // Bottom left + // VectorSubtract(loc, right, point); + points[12] = loc[0] - width; + points[13] = loc[1] - width; + points[14] = loc[2] + 1.0; + points[15] = 0; + } + else + { + VectorMA(loc, height, ssViewUp, loc2); + VectorScale(ssViewRight, width*0.5, right); + + // Bottom right + // VectorAdd(loc, right, point); + points[0] = loc[0] + right[0]; + points[1] = loc[1] + right[1]; + points[2] = loc[2] + right[2]; + points[3] = 0; + + // Top right + // VectorAdd(loc2, right, point); + points[4] = loc2[0] + right[0]; + points[5] = loc2[1] + right[1]; + points[6] = loc2[2] + right[2]; + points[7] = 0; + + // Top left + // VectorSubtract(loc2, right, point); + points[8] = loc2[0] - right[0]; + points[9] = loc2[1] - right[1]; + points[10] = loc2[2] - right[2]; + points[11] = 0; + + // Bottom left + // VectorSubtract(loc, right, point); + points[12] = loc[0] - right[0]; + points[13] = loc[1] - right[1]; + points[14] = loc[2] - right[2]; + points[15] = 0; + } + + // Add the sprite to the render list. + SQuickSprite.Add(points, color, fog); +} + +static void RB_DrawOrientedSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) +{ + int curindex, curvert; + vec3_t dist; + float triarea, minnormal; + vec2_t vec1to2, vec1to3; + + vec3_t v1,v2,v3; + float a1,a2,a3; + float l1,l2,l3; + vec2_t fog1, fog2, fog3; + + float posi, posj; + float step; + float fa,fb,fc; + + vec3_t curpoint; + float width, height; + float alpha, alphapos, thisspritesfadestart, light; + byte randomindex2; + vec2_t fogv; + + float cutdist=stage->ss.fadeMax*rangescalefactor, cutdist2=cutdist*cutdist; + float fadedist=stage->ss.fadeDist*rangescalefactor, fadedist2=fadedist*fadedist; + + assert(cutdist2 != fadedist2); + float inv_fadediff = 1.0/(cutdist2-fadedist2); + + // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 + float faderange = FADE_RANGE/(cutdist-fadedist); + + if (faderange > 1.0) + { // Don't want to force a new fade_rand + faderange = 1.0; + } + + if (stage->ss.facing) + { // Faceup sprite. + minnormal = 0.99f; + } + else + { // Normal oriented sprite + minnormal = 0.5f; + } + + // Quickly calc all the alphas for each vertex + for (curvert=0; curvertnumVertexes; curvert++) + { + // Calc alpha at each point + VectorSubtract(ssViewOrigin, input->xyz[curvert], dist); + SSVertAlpha[curvert] = 1.0 - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; + } + + for (curindex=0; curindexnumIndexes-2; curindex+=3) + { + curvert = input->indexes[curindex]; + VectorCopy(input->xyz[curvert], v1); + if (input->normal[curvert][2] < minnormal) + { + continue; + } + l1 = input->vertexColors[curvert][2]; + a1 = SSVertAlpha[curvert]; + fog1[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); + fog1[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); + + curvert = input->indexes[curindex+1]; + VectorCopy(input->xyz[curvert], v2); + if (input->normal[curvert][2] < minnormal) + { + continue; + } + l2 = input->vertexColors[curvert][2]; + a2 = SSVertAlpha[curvert]; + fog2[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); + fog2[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); + + curvert = input->indexes[curindex+2]; + VectorCopy(input->xyz[curvert], v3); + if (input->normal[curvert][2] < minnormal) + { + continue; + } + l3 = input->vertexColors[curvert][2]; + a3 = SSVertAlpha[curvert]; + fog3[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); + fog3[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); + + if (a1 <= 0.0 && a2 <= 0.0 && a3 <= 0.0) + { + continue; + } + + // Find the area in order to calculate the stepsize + vec1to2[0] = v2[0] - v1[0]; + vec1to2[1] = v2[1] - v1[1]; + vec1to3[0] = v3[0] - v1[0]; + vec1to3[1] = v3[1] - v1[1]; + + // Now get the cross product of this sum. + triarea = vec1to3[0]*vec1to2[1] - vec1to3[1]*vec1to2[0]; + triarea=fabs(triarea); + if (triarea <= 1.0) + { // Insanely small abhorrent triangle. + continue; + } + step = stage->ss.density * Q_rsqrt(triarea); + + randomindex = (byte)(v1[0]+v1[1]+v2[0]+v2[1]+v3[0]+v3[1]); + randominterval = (byte)(v1[0]+v2[1]+v3[2])|0x03; // Make sure the interval is at least 3, and always odd + + for (posi=0; posi<1.0; posi+=step) + { + for (posj=0; posj<(1.0-posi); posj+=step) + { + fa=posi+randomchart[randomindex]*step; + randomindex += randominterval; + if (fa>1.0) + continue; + + fb=posj+randomchart[randomindex]*step; + randomindex += randominterval; + if (fb>(1.0-fa)) + continue; + + fc = 1.0-fa-fb; + + // total alpha, minus random factor so some things fade out sooner. + alphapos = a1*fa + a2*fb + a3*fc; + + // Note that the alpha at this point is a value from 1.0 to 0.0, but represents when to START fading + thisspritesfadestart = faderange + (1.0-faderange) * randomchart[randomindex]; + randomindex += randominterval; + + // Find where the alpha is relative to the fadestart, and calc the real alpha to draw at. + alpha = 1.0 - ((thisspritesfadestart-alphapos)/faderange); + + randomindex += randominterval; + if (alpha > 0.0) + { + if (alpha > 1.0) + alpha=1.0; + + if (SSUsingFog) + { + fogv[0] = fog1[0]*fa + fog2[0]*fb + fog3[0]*fc; + fogv[1] = fog1[1]*fa + fog2[1]*fb + fog3[1]*fc; + } + + VectorScale(v1, fa, curpoint); + VectorMA(curpoint, fb, v2, curpoint); + VectorMA(curpoint, fc, v3, curpoint); + + light = l1*fa + l2*fb + l3*fc; + if (SSAdditiveTransparency) + { // Additive transparency, scale light value +// light *= alpha; + light = (128 + (light*0.5))*alpha; + alpha = 1.0; + } + + randomindex2 = randomindex; + width = stage->ss.width*(1.0 + (stage->ss.variance[0]*randomchart[randomindex2])); + height = stage->ss.height*(1.0 + (stage->ss.variance[1]*randomchart[randomindex2++])); + if (randomchart[randomindex2++]>0.5) + { + width = -width; + } + if (stage->ss.fadeScale!=0 && alphapos < 1.0) + { + width *= 1.0 + (stage->ss.fadeScale*(1.0-alphapos)); + } + + if (SSUsingFog) + { + RB_OrientedSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), fogv, stage->ss.facing); + } + else + { + RB_OrientedSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), NULL, stage->ss.facing); + } + + totalsurfsprites++; + } + } + } + } +} + + +///////////////////////////////////////////// +// Effect surface sprites + +static void RB_EffectSurfaceSprite(vec3_t loc, float width, float height, byte light, byte alpha, float life, int faceup) +{ + vec3_t loc2, right; + float points[16]; + color4ub_t color; + + color[0]=light; //light; + color[1]=light; //light; + color[2]=light; //light; + color[3]=alpha; //alpha; + + if (faceup) + { + width *= 0.5; + height *= 0.5; + + // Bottom right + // VectorAdd(loc, right, point); + points[0] = loc[0] + width; + points[1] = loc[1] - width; + points[2] = loc[2] + 1.0; + points[3] = 0; + + // Top right + // VectorAdd(loc, right, point); + points[4] = loc[0] + width; + points[5] = loc[1] + width; + points[6] = loc[2] + 1.0; + points[7] = 0; + + // Top left + // VectorSubtract(loc, right, point); + points[8] = loc[0] - width; + points[9] = loc[1] + width; + points[10] = loc[2] + 1.0; + points[11] = 0; + + // Bottom left + // VectorSubtract(loc, right, point); + points[12] = loc[0] - width; + points[13] = loc[1] - width; + points[14] = loc[2] + 1.0; + points[15] = 0; + } + else + { + VectorMA(loc, height, ssViewUp, loc2); + VectorScale(ssViewRight, width*0.5, right); + + // Bottom right + // VectorAdd(loc, right, point); + points[0] = loc[0] + right[0]; + points[1] = loc[1] + right[1]; + points[2] = loc[2] + right[2]; + points[3] = 0; + + // Top right + // VectorAdd(loc2, right, point); + points[4] = loc2[0] + right[0]; + points[5] = loc2[1] + right[1]; + points[6] = loc2[2] + right[2]; + points[7] = 0; + + // Top left + // VectorSubtract(loc2, right, point); + points[8] = loc2[0] - right[0]; + points[9] = loc2[1] - right[1]; + points[10] = loc2[2] - right[2]; + points[11] = 0; + + // Bottom left + // VectorSubtract(loc, right, point); + points[12] = loc[0] - right[0]; + points[13] = loc[1] - right[1]; + points[14] = loc[2] - right[2]; + points[15] = 0; + } + + // Add the sprite to the render list. + SQuickSprite.Add(points, color, NULL); +} + +static void RB_DrawEffectSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) +{ + int curindex, curvert; + vec3_t dist; + float triarea, minnormal; + vec2_t vec1to2, vec1to3; + + vec3_t v1,v2,v3; + float a1,a2,a3; + float l1,l2,l3; + + float posi, posj; + float step; + float fa,fb,fc; + float effecttime, effectpos; + float density; + + vec3_t curpoint; + float width, height; + float alpha, alphapos, thisspritesfadestart, light; + byte randomindex2; + + float cutdist=stage->ss.fadeMax*rangescalefactor, cutdist2=cutdist*cutdist; + float fadedist=stage->ss.fadeDist*rangescalefactor, fadedist2=fadedist*fadedist; + + float fxalpha = stage->ss.fxAlphaEnd - stage->ss.fxAlphaStart; + qboolean fadeinout=qfalse; + + assert(cutdist2 != fadedist2); + float inv_fadediff = 1.0/(cutdist2-fadedist2); + + // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 + float faderange = FADE_RANGE/(cutdist-fadedist); + if (faderange > 1.0f) + { // Don't want to force a new fade_rand + faderange = 1.0f; + } + + if (stage->ss.facing) + { // Faceup sprite. + minnormal = 0.99f; + } + else + { // Normal oriented sprite + minnormal = 0.5f; + } + + // Make the object fade in. + if (stage->ss.fxAlphaEnd < 0.05 && stage->ss.height >= 0.1 && stage->ss.width >= 0.1) + { // The sprite fades out, and it doesn't start at a pinpoint. Let's fade it in. + fadeinout=qtrue; + } + + if (stage->ss.surfaceSpriteType == SURFSPRITE_WEATHERFX) + { // This effect is affected by weather settings. + if (curWeatherAmount < 0.01) + { // Don't show these effects + return; + } + else + { + density = stage->ss.density / curWeatherAmount; + } + } + else + { + density = stage->ss.density; + } + + // Quickly calc all the alphas for each vertex + for (curvert=0; curvertnumVertexes; curvert++) + { + // Calc alpha at each point + VectorSubtract(ssViewOrigin, input->xyz[curvert], dist); + SSVertAlpha[curvert] = 1.0f - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; + + // Note this is the proper equation, but isn't used right now because it would be just a tad slower. + // Formula for alpha is 1.0f - ((len-fade)/(cut-fade)) + // Which is equal to (1.0+fade/(cut-fade)) - (len/(cut-fade)) + // So mult=1/(cut-fade), and base=(1+fade*mult). + // SSVertAlpha[curvert] = fadebase - (VectorLength(dist) * fademult); + + } + + for (curindex=0; curindexnumIndexes-2; curindex+=3) + { + curvert = input->indexes[curindex]; + VectorCopy(input->xyz[curvert], v1); + if (input->normal[curvert][2] < minnormal) + { + continue; + } + l1 = input->vertexColors[curvert][2]; + a1 = SSVertAlpha[curvert]; + + curvert = input->indexes[curindex+1]; + VectorCopy(input->xyz[curvert], v2); + if (input->normal[curvert][2] < minnormal) + { + continue; + } + l2 = input->vertexColors[curvert][2]; + a2 = SSVertAlpha[curvert]; + + curvert = input->indexes[curindex+2]; + VectorCopy(input->xyz[curvert], v3); + if (input->normal[curvert][2] < minnormal) + { + continue; + } + l3 = input->vertexColors[curvert][2]; + a3 = SSVertAlpha[curvert]; + + if (a1 <= 0.0f && a2 <= 0.0f && a3 <= 0.0f) + { + continue; + } + + // Find the area in order to calculate the stepsize + vec1to2[0] = v2[0] - v1[0]; + vec1to2[1] = v2[1] - v1[1]; + vec1to3[0] = v3[0] - v1[0]; + vec1to3[1] = v3[1] - v1[1]; + + // Now get the cross product of this sum. + triarea = vec1to3[0]*vec1to2[1] - vec1to3[1]*vec1to2[0]; + triarea=fabs(triarea); + if (triarea <= 1.0f) + { // Insanely small abhorrent triangle. + continue; + } + step = density * Q_rsqrt(triarea); + + randomindex = (byte)(v1[0]+v1[1]+v2[0]+v2[1]+v3[0]+v3[1]); + randominterval = (byte)(v1[0]+v2[1]+v3[2])|0x03; // Make sure the interval is at least 3, and always odd + + for (posi=0; posi<1.0f; posi+=step) + { + for (posj=0; posj<(1.0-posi); posj+=step) + { + effecttime = (tr.refdef.time+10000.0*randomchart[randomindex])/stage->ss.fxDuration; + effectpos = (float)effecttime - (int)effecttime; + + randomindex2 = randomindex+effecttime; + randomindex += randominterval; + fa=posi+randomchart[randomindex2++]*step; + if (fa>1.0f) + continue; + + fb=posj+randomchart[randomindex2++]*step; + if (fb>(1.0-fa)) + continue; + + fc = 1.0-fa-fb; + + // total alpha, minus random factor so some things fade out sooner. + alphapos = a1*fa + a2*fb + a3*fc; + + // Note that the alpha at this point is a value from 1.0f to 0.0, but represents when to START fading + thisspritesfadestart = faderange + (1.0-faderange) * randomchart[randomindex2]; + randomindex2 += randominterval; + + // Find where the alpha is relative to the fadestart, and calc the real alpha to draw at. + alpha = 1.0f - ((thisspritesfadestart-alphapos)/faderange); + if (alpha > 0.0f) + { + if (alpha > 1.0f) + alpha=1.0f; + + VectorScale(v1, fa, curpoint); + VectorMA(curpoint, fb, v2, curpoint); + VectorMA(curpoint, fc, v3, curpoint); + + light = l1*fa + l2*fb + l3*fc; + randomindex2 = randomindex; + width = stage->ss.width*(1.0f + (stage->ss.variance[0]*randomchart[randomindex2])); + height = stage->ss.height*(1.0f + (stage->ss.variance[1]*randomchart[randomindex2++])); + + width = width + (effectpos*stage->ss.fxGrow[0]*width); + height = height + (effectpos*stage->ss.fxGrow[1]*height); + + // If we want to fade in and out, that's different than a straight fade. + if (fadeinout) + { + if (effectpos > 0.5) + { // Fade out + alpha = alpha*(stage->ss.fxAlphaStart+(fxalpha*(effectpos-0.5)*2.0)); + } + else + { // Fade in + alpha = alpha*(stage->ss.fxAlphaStart+(fxalpha*(0.5-effectpos)*2.0)); + } + } + else + { // Normal fade + alpha = alpha*(stage->ss.fxAlphaStart+(fxalpha*effectpos)); + } + + if (SSAdditiveTransparency) + { // Additive transparency, scale light value +// light *= alpha; + light = (128 + (light*0.5))*alpha; + alpha = 1.0; + } + + if (randomchart[randomindex2]>0.5f) + { + width = -width; + } + if (stage->ss.fadeScale!=0 && alphapos < 1.0f) + { + width *= 1.0f + (stage->ss.fadeScale*(1.0-alphapos)); + } + + if (stage->ss.wind>0.0f && curWindSpeed > 0.001) + { + vec3_t drawpoint; + + VectorMA(curpoint, effectpos*stage->ss.wind, curWindBlowVect, drawpoint); + RB_EffectSurfaceSprite(drawpoint, width, height, (byte)light, (byte)(alpha*255.0f), stage->ss.fxDuration, stage->ss.facing); + } + else + { + RB_EffectSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0f), stage->ss.fxDuration, stage->ss.facing); + } + + totalsurfsprites++; + } + } + } + } +} + +extern void R_WorldToLocal (vec3_t world, vec3_t localVec) ; +extern float preTransEntMatrix[16], invEntMatrix[16]; +extern void R_InvertMatrix(float *sourcemat, float *destmat); + +void RB_DrawSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) +{ + fog_t *fog; + unsigned long glbits=stage->stateBits; + + R_SurfaceSpriteFrameUpdate(); + + // + // Check fog + // + if ( tess.fogNum && tess.shader->fogPass) // && r_drawfog->value) + { + fog = tr.world->fogs + tess.fogNum; + SSUsingFog = qtrue; + SQuickSprite.StartGroup(&stage->bundle[0], glbits, fog->colorInt); + } + else + { + SSUsingFog = qfalse; + SQuickSprite.StartGroup(&stage->bundle[0], glbits); + } + + // Special provision in case the transparency is additive. + if ((glbits & (GLS_SRCBLEND_BITS|GLS_DSTBLEND_BITS)) == (GLS_SRCBLEND_ONE|GLS_DSTBLEND_ONE)) + { // Additive transparency, scale light value + SSAdditiveTransparency=qtrue; + } + else + { + SSAdditiveTransparency=qfalse; + } + + + //Check if this is a new entity transformation (incl. world entity), and update the appropriate vectors if so. + if (backEnd.currentEntity != ssLastEntityDrawn) + { + if (backEnd.currentEntity == &tr.worldEntity) + { // Drawing the world, so our job is dead-easy, in the viewparms + VectorCopy(backEnd.viewParms.or.origin, ssViewOrigin); + VectorCopy(backEnd.viewParms.or.axis[1], ssViewRight); + VectorCopy(backEnd.viewParms.or.axis[2], ssViewUp); + } + else + { // Drawing an entity, so we need to transform the viewparms to the model's coordinate system +// R_WorldPointToEntity (backEnd.viewParms.or.origin, ssViewOrigin); + R_WorldNormalToEntity (backEnd.viewParms.or.axis[1], ssViewRight); + R_WorldNormalToEntity (backEnd.viewParms.or.axis[2], ssViewUp); + VectorCopy(backEnd.or.viewOrigin, ssViewOrigin); +// R_WorldToLocal(backEnd.viewParms.or.axis[1], ssViewRight); +// R_WorldToLocal(backEnd.viewParms.or.axis[2], ssViewUp); + } + ssLastEntityDrawn = backEnd.currentEntity; + } + + switch(stage->ss.surfaceSpriteType) + { + case SURFSPRITE_VERTICAL: + RB_DrawVerticalSurfaceSprites(stage, input); + break; + case SURFSPRITE_ORIENTED: + RB_DrawOrientedSurfaceSprites(stage, input); + break; + case SURFSPRITE_EFFECT: + case SURFSPRITE_WEATHERFX: + RB_DrawEffectSurfaceSprites(stage, input); + break; + } + + SQuickSprite.EndGroup(); + + sssurfaces++; +} + diff --git a/CODEmp/renderer/tr_world.cpp b/CODE-mp/renderer/tr_world.cpp similarity index 100% rename from CODEmp/renderer/tr_world.cpp rename to CODE-mp/renderer/tr_world.cpp diff --git a/CODE-mp/renderer/vssver.scc b/CODE-mp/renderer/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..479bcdbf057ca7840faec46ed183513f2dabef79 GIT binary patch literal 656 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~L=1z%ez!2kjGfYkk8^S8gSQB+_Cv4J=%=k&w2 z$VaL&K=uP5mM;{yIoBtl$_Zru2I6S1Hd`yNE@dVlo0E}&fmhq(z6GO^0+7kT1tg9# z?h}mIuv{6$=LQl?(w!T3y!KTV0rGi){PU}Y|Cr8oplR_QB)?B@sa z-5mCvlQKK41Y|M@0Et&IZcp8I{Zrxq@&$o>i|S>682pQrq=0;&_ZW_GG7G9@7>J1DMq$U6{KGj$d6xA^qA%6QdJ<6K@3PtF?-rI?YEOE z$UovhzH;AJ{~u41RmFgO2_Ro?MeL87o@%hXB#`eDmBDpSk-T4B1{GUL6tkN;V znm|t_ko|!`LDyXyr*RZK0LNz#kgxYZ+Fs*%D44$<$Uphbi_zuOZgm!*`VByS<&J-i zNd}={^EU$d@d>g*^ENUn0*z*P0px2NzINMTsILl&pO--X^Cdxd6Xu)(yZ;N2zkSgv m8JYUUN+9_fV4z(3zKPeTp-dU%o(f=~|8o#awlVnzHXi^%KBDRX literal 0 HcmV?d00001 diff --git a/CODEmp/server/server.h b/CODE-mp/server/server.h similarity index 100% rename from CODEmp/server/server.h rename to CODE-mp/server/server.h diff --git a/CODEmp/server/sv_bot.cpp b/CODE-mp/server/sv_bot.cpp similarity index 100% rename from CODEmp/server/sv_bot.cpp rename to CODE-mp/server/sv_bot.cpp diff --git a/CODEmp/server/sv_ccmds.cpp b/CODE-mp/server/sv_ccmds.cpp similarity index 100% rename from CODEmp/server/sv_ccmds.cpp rename to CODE-mp/server/sv_ccmds.cpp diff --git a/CODEmp/server/sv_client.cpp b/CODE-mp/server/sv_client.cpp similarity index 100% rename from CODEmp/server/sv_client.cpp rename to CODE-mp/server/sv_client.cpp diff --git a/CODEmp/server/sv_game.cpp b/CODE-mp/server/sv_game.cpp similarity index 100% rename from CODEmp/server/sv_game.cpp rename to CODE-mp/server/sv_game.cpp diff --git a/CODEmp/server/sv_init.cpp b/CODE-mp/server/sv_init.cpp similarity index 100% rename from CODEmp/server/sv_init.cpp rename to CODE-mp/server/sv_init.cpp diff --git a/CODEmp/server/sv_main.cpp b/CODE-mp/server/sv_main.cpp similarity index 100% rename from CODEmp/server/sv_main.cpp rename to CODE-mp/server/sv_main.cpp diff --git a/CODEmp/server/sv_net_chan.cpp b/CODE-mp/server/sv_net_chan.cpp similarity index 100% rename from CODEmp/server/sv_net_chan.cpp rename to CODE-mp/server/sv_net_chan.cpp diff --git a/CODEmp/server/sv_rankings.cpp b/CODE-mp/server/sv_rankings.cpp similarity index 100% rename from CODEmp/server/sv_rankings.cpp rename to CODE-mp/server/sv_rankings.cpp diff --git a/CODEmp/server/sv_snapshot.cpp b/CODE-mp/server/sv_snapshot.cpp similarity index 95% rename from CODEmp/server/sv_snapshot.cpp rename to CODE-mp/server/sv_snapshot.cpp index 2b7c184..7210554 100644 --- a/CODEmp/server/sv_snapshot.cpp +++ b/CODE-mp/server/sv_snapshot.cpp @@ -328,7 +328,8 @@ static void SV_AddEntitiesVisibleFromPoint( vec3_t origin, clientSnapshot_t *fra } // broadcast entities are always sent, and so is the main player so we don't see noclip weirdness - if ( ent->r.svFlags & SVF_BROADCAST || (e == frame->ps.clientNum)) { + if ( ent->r.svFlags & SVF_BROADCAST || (e == frame->ps.clientNum) || (ent->r.broadcastClients[frame->ps.clientNum/32] & (1<<(frame->ps.clientNum%32)))) + { SV_AddEntToSnapshot( svEnt, ent, eNums ); continue; } diff --git a/CODEmp/server/sv_world.cpp b/CODE-mp/server/sv_world.cpp similarity index 100% rename from CODEmp/server/sv_world.cpp rename to CODE-mp/server/sv_world.cpp diff --git a/CODE-mp/server/vssver.scc b/CODE-mp/server/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..40f384defcc632d644ecad2a6519582d5b020e7d GIT binary patch literal 208 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~LurrewKkO2Z70jcB56x3MQ+11&B?8iX-YTk6c zBQclNSb^*(K&-fQ{@X{h-l%Z{*-wF3)jHRANBl%J79jf>5KBi^tNN7eQj-R{mcs>zDtqOX;L07m)oL dh!4NK?e6gGttQAmHYNrJ?ZVFqhupNl>H%&KJ8u90 literal 0 HcmV?d00001 diff --git a/CODEmp/strings/con_text.h b/CODE-mp/strings/con_text.h similarity index 100% rename from CODEmp/strings/con_text.h rename to CODE-mp/strings/con_text.h diff --git a/CODEmp/strings/str_server.h b/CODE-mp/strings/str_server.h similarity index 100% rename from CODEmp/strings/str_server.h rename to CODE-mp/strings/str_server.h diff --git a/CODE-mp/strings/vssver.scc b/CODE-mp/strings/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..6836433a33d079f16dbd1289ab484c383eb2daaa GIT binary patch literal 64 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~MXtMBlwWMTk=RX{pJ)YPIxMoya%D6$&J@4V%F LLPP$J7Kjf3j3E)M literal 0 HcmV?d00001 diff --git a/CODE-mp/tosend.bat b/CODE-mp/tosend.bat new file mode 100644 index 0000000..ddd325a --- /dev/null +++ b/CODE-mp/tosend.bat @@ -0,0 +1,5 @@ +xcopy/y final\*.exe c:\send\game +xcopy/y final\*.dll c:\send\game +xcopy/y base\vm\cgame.* w:\game\base\vm +xcopy/y base\vm\jk2mpgame.* w:\game\base\vm +xcopy/y base\vm\ui.* w:\game\base\vm diff --git a/CODEmp/ui/keycodes.h b/CODE-mp/ui/keycodes.h similarity index 100% rename from CODEmp/ui/keycodes.h rename to CODE-mp/ui/keycodes.h diff --git a/CODE-mp/ui/mssccprj.scc b/CODE-mp/ui/mssccprj.scc new file mode 100644 index 0000000..3ad6dae --- /dev/null +++ b/CODE-mp/ui/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[ui.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\jk2sof2MP" +SCC_Project_Name = "$/General/code/ui", ZAAAAAAA diff --git a/CODE-mp/ui/ui.bat b/CODE-mp/ui/ui.bat new file mode 100644 index 0000000..cb45913 --- /dev/null +++ b/CODE-mp/ui/ui.bat @@ -0,0 +1,43 @@ +del /q vm +mkdir vm +cd vm + +set cc=lcc -DQ3_VM -S -Wf-target=bytecode -Wf-g -I..\..\cgame -I..\..\game -I..\..\ui %1 + +%cc% ../ui_main.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_misc.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_weapons.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_lib.c +@if errorlevel 1 goto quit +%cc% ../../game/q_math.c +@if errorlevel 1 goto quit +%cc% ../../game/q_shared.c +@if errorlevel 1 goto quit +%cc% ../ui_atoms.c +@if errorlevel 1 goto quit +%cc% ../ui_force.c +@if errorlevel 1 goto quit +%cc% ../ui_players.c +@if errorlevel 1 goto quit +%cc% ../ui_util.c +@if errorlevel 1 goto quit +%cc% ../ui_shared.c +@if errorlevel 1 goto quit +%cc% ../ui_gameinfo.c +@if errorlevel 1 goto quit + +sysmaker ../ui_public.h ../ui_syscalls.c ../ui_syscalls.asm +@if errorlevel 1 goto quit + +q3asm -f ../ui +@if errorlevel 1 goto quit + +mkdir "..\..\base\vm" +copy *.map "..\..\base\vm" +copy *.qvm "..\..\base\vm" + +:quit +cd .. diff --git a/CODEmp/ui/ui.def b/CODE-mp/ui/ui.def similarity index 100% rename from CODEmp/ui/ui.def rename to CODE-mp/ui/ui.def diff --git a/CODEmp/ui/ui.dsp b/CODE-mp/ui/ui.dsp similarity index 94% rename from CODEmp/ui/ui.dsp rename to CODE-mp/ui/ui.dsp index f67fdbb..8411ab2 100644 --- a/CODEmp/ui/ui.dsp +++ b/CODE-mp/ui/ui.dsp @@ -150,10 +150,6 @@ SOURCE=..\game\q_shared.c # End Source File # Begin Source File -SOURCE=.\ui.def -# End Source File -# Begin Source File - SOURCE=.\ui_atoms.c # End Source File # Begin Source File @@ -238,6 +234,10 @@ SOURCE=..\cgame\tr_types.h # End Source File # Begin Source File +SOURCE=.\ui.def +# End Source File +# Begin Source File + SOURCE=.\ui_force.h # End Source File # Begin Source File @@ -253,9 +253,15 @@ SOURCE=.\ui_public.h SOURCE=.\ui_shared.h # End Source File # End Group -# Begin Group "Resource Files" +# Begin Source File -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group +SOURCE=.\ui.bat +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\ui.q3asm +# PROP Exclude_From_Build 1 +# End Source File # End Target # End Project diff --git a/CODE-mp/ui/ui.q3asm b/CODE-mp/ui/ui.q3asm new file mode 100644 index 0000000..81ffc5f --- /dev/null +++ b/CODE-mp/ui/ui.q3asm @@ -0,0 +1,14 @@ +-o "ui" +ui_main +..\ui_syscalls +ui_atoms +ui_force +ui_players +ui_util +ui_shared +ui_gameinfo +bg_misc +bg_weapons +bg_lib +q_math +q_shared diff --git a/CODEmp/ui/ui_atoms.c b/CODE-mp/ui/ui_atoms.c similarity index 100% rename from CODEmp/ui/ui_atoms.c rename to CODE-mp/ui/ui_atoms.c diff --git a/CODEmp/ui/ui_force.c b/CODE-mp/ui/ui_force.c similarity index 85% rename from CODEmp/ui/ui_force.c rename to CODE-mp/ui/ui_force.c index 282da13..75fb52d 100644 --- a/CODEmp/ui/ui_force.c +++ b/CODE-mp/ui/ui_force.c @@ -91,29 +91,35 @@ int uiForcePowerCost[NUM_FORCE_POWERS][NUM_FORCE_POWER_LEVELS] = //0 == neutral }; -int UI_ForceStarShaders[NUM_FORCE_STAR_IMAGES][2]; - - -void UI_InitForceStarShaders(void) +int uiForceStarShaders[NUM_FORCE_STAR_IMAGES][2]; +int uiSaberColorShaders[NUM_SABER_COLORS]; +void UI_InitForceShaders(void) { - UI_ForceStarShaders[0][0] = trap_R_RegisterShaderNoMip("forcestar0"); - UI_ForceStarShaders[0][1] = trap_R_RegisterShaderNoMip("forcestar0"); - UI_ForceStarShaders[1][0] = trap_R_RegisterShaderNoMip("forcecircle1"); - UI_ForceStarShaders[1][1] = trap_R_RegisterShaderNoMip("forcestar1"); - UI_ForceStarShaders[2][0] = trap_R_RegisterShaderNoMip("forcecircle2"); - UI_ForceStarShaders[2][1] = trap_R_RegisterShaderNoMip("forcestar2"); - UI_ForceStarShaders[3][0] = trap_R_RegisterShaderNoMip("forcecircle3"); - UI_ForceStarShaders[3][1] = trap_R_RegisterShaderNoMip("forcestar3"); - UI_ForceStarShaders[4][0] = trap_R_RegisterShaderNoMip("forcecircle4"); - UI_ForceStarShaders[4][1] = trap_R_RegisterShaderNoMip("forcestar4"); - UI_ForceStarShaders[5][0] = trap_R_RegisterShaderNoMip("forcecircle5"); - UI_ForceStarShaders[5][1] = trap_R_RegisterShaderNoMip("forcestar5"); - UI_ForceStarShaders[6][0] = trap_R_RegisterShaderNoMip("forcecircle6"); - UI_ForceStarShaders[6][1] = trap_R_RegisterShaderNoMip("forcestar6"); - UI_ForceStarShaders[7][0] = trap_R_RegisterShaderNoMip("forcecircle7"); - UI_ForceStarShaders[7][1] = trap_R_RegisterShaderNoMip("forcestar7"); - UI_ForceStarShaders[8][0] = trap_R_RegisterShaderNoMip("forcecircle8"); - UI_ForceStarShaders[8][1] = trap_R_RegisterShaderNoMip("forcestar8"); + uiForceStarShaders[0][0] = trap_R_RegisterShaderNoMip("forcestar0"); + uiForceStarShaders[0][1] = trap_R_RegisterShaderNoMip("forcestar0"); + uiForceStarShaders[1][0] = trap_R_RegisterShaderNoMip("forcecircle1"); + uiForceStarShaders[1][1] = trap_R_RegisterShaderNoMip("forcestar1"); + uiForceStarShaders[2][0] = trap_R_RegisterShaderNoMip("forcecircle2"); + uiForceStarShaders[2][1] = trap_R_RegisterShaderNoMip("forcestar2"); + uiForceStarShaders[3][0] = trap_R_RegisterShaderNoMip("forcecircle3"); + uiForceStarShaders[3][1] = trap_R_RegisterShaderNoMip("forcestar3"); + uiForceStarShaders[4][0] = trap_R_RegisterShaderNoMip("forcecircle4"); + uiForceStarShaders[4][1] = trap_R_RegisterShaderNoMip("forcestar4"); + uiForceStarShaders[5][0] = trap_R_RegisterShaderNoMip("forcecircle5"); + uiForceStarShaders[5][1] = trap_R_RegisterShaderNoMip("forcestar5"); + uiForceStarShaders[6][0] = trap_R_RegisterShaderNoMip("forcecircle6"); + uiForceStarShaders[6][1] = trap_R_RegisterShaderNoMip("forcestar6"); + uiForceStarShaders[7][0] = trap_R_RegisterShaderNoMip("forcecircle7"); + uiForceStarShaders[7][1] = trap_R_RegisterShaderNoMip("forcestar7"); + uiForceStarShaders[8][0] = trap_R_RegisterShaderNoMip("forcecircle8"); + uiForceStarShaders[8][1] = trap_R_RegisterShaderNoMip("forcestar8"); + + uiSaberColorShaders[SABER_RED] = trap_R_RegisterShaderNoMip("menu/art/saber_red"); + uiSaberColorShaders[SABER_ORANGE] = trap_R_RegisterShaderNoMip("menu/art/saber_orange"); + uiSaberColorShaders[SABER_YELLOW] = trap_R_RegisterShaderNoMip("menu/art/saber_yellow"); + uiSaberColorShaders[SABER_GREEN] = trap_R_RegisterShaderNoMip("menu/art/saber_green"); + uiSaberColorShaders[SABER_BLUE] = trap_R_RegisterShaderNoMip("menu/art/saber_blue"); + uiSaberColorShaders[SABER_PURPLE] = trap_R_RegisterShaderNoMip("menu/art/saber_purple"); } @@ -139,11 +145,11 @@ void UI_DrawForceStars(rectDef_t *rect, float scale, vec4_t color, int textStyle if (val >= i) { // Draw a star. - UI_DrawHandlePic( xPos, rect->y+6, width, width, UI_ForceStarShaders[starcolor][1] ); + UI_DrawHandlePic( xPos, rect->y+6, width, width, uiForceStarShaders[starcolor][1] ); } else { // Draw a circle. - UI_DrawHandlePic( xPos, rect->y+6, width, width, UI_ForceStarShaders[starcolor][0] ); + UI_DrawHandlePic( xPos, rect->y+6, width, width, uiForceStarShaders[starcolor][0] ); } xPos += width + pad; } @@ -189,7 +195,7 @@ void UpdateForceUsed() uiForcePowersRank[FP_LEVITATION]=1; } - menu = Menus_FindByName("ingame_player"); + menu = Menus_FindByName("ingame_playerforce"); // Set the cost of the saberattack according to whether its free. if (ui_freeSaber.integer) { // Make saber free diff --git a/CODEmp/ui/ui_force.h b/CODE-mp/ui/ui_force.h similarity index 92% rename from CODEmp/ui/ui_force.h rename to CODE-mp/ui/ui_force.h index dd8c62f..c4d933e 100644 --- a/CODEmp/ui/ui_force.h +++ b/CODE-mp/ui/ui_force.h @@ -11,10 +11,11 @@ extern qboolean gTouchedForce; extern int uiForcePowersRank[NUM_FORCE_POWERS]; extern int uiForcePowerDarkLight[NUM_FORCE_POWERS]; extern int uiForcePowerCost[NUM_FORCE_POWERS][NUM_FORCE_POWER_LEVELS]; +extern int uiSaberColorShaders[NUM_SABER_COLORS]; // Dots above or equal to a given rank carry a certain color. extern vmCvar_t ui_freeSaber; -void UI_InitForceStarShaders(void); +void UI_InitForceShaders(void); void UI_DrawTotalForceStars(rectDef_t *rect, float scale, vec4_t color, int textStyle); void UI_DrawForceStars(rectDef_t *rect, float scale, vec4_t color, int textStyle, int findex, int val, int min, int max) ; void UI_UpdateClientForcePowers(); diff --git a/CODEmp/ui/ui_gameinfo.c b/CODE-mp/ui/ui_gameinfo.c similarity index 100% rename from CODEmp/ui/ui_gameinfo.c rename to CODE-mp/ui/ui_gameinfo.c diff --git a/CODEmp/ui/ui_local.h b/CODE-mp/ui/ui_local.h similarity index 100% rename from CODEmp/ui/ui_local.h rename to CODE-mp/ui/ui_local.h diff --git a/CODEmp/ui/ui_main.c b/CODE-mp/ui/ui_main.c similarity index 95% rename from CODEmp/ui/ui_main.c rename to CODE-mp/ui/ui_main.c index 80af020..6e2a3ed 100644 --- a/CODEmp/ui/ui_main.c +++ b/CODE-mp/ui/ui_main.c @@ -79,32 +79,8 @@ static const char *teamArenaGameTypes[] = { static int const numTeamArenaGameTypes = sizeof(teamArenaGameTypes) / sizeof(const char*); -static const char *teamArenaGameNames[] = { - "Free For All", - "Holocron FFA", - "Jedi Master", - "Duel", - "Single Player", - "Team FFA", - "Saga", - "Capture the Flag", - "Capture the Ysalimari", - "Team Tournament", -}; - -static int const numTeamArenaGameNames = sizeof(teamArenaGameNames) / sizeof(const char*); - - static const int numServerFilters = sizeof(serverFilters) / sizeof(serverFilter_t); -static const char *sortKeys[] = { - "Server Name", - "Map Name", - "Open Player Spots", - "Game Type", - "Ping Time" -}; -static const int numSortKeys = sizeof(sortKeys) / sizeof(const char*); static char* netnames[] = { "???", @@ -326,7 +302,7 @@ void Text_PaintWithCursor(float x, float y, float scale, vec4_t color, const cha // { char sTemp[1024]; - int iCopyCount = min(strlen(text), limit); + int iCopyCount = limit ? min(strlen(text), limit) : strlen(text); iCopyCount = min(iCopyCount,cursorPos); iCopyCount = min(iCopyCount,sizeof(sTemp)); @@ -871,6 +847,8 @@ void UI_LoadMenus(const char *menuFile, qboolean reset) { start = trap_Milliseconds(); + trap_PC_LoadGlobalDefines ( "ui/jk2mp/menudef.h" ); + handle = trap_PC_LoadSource( menuFile ); if (!handle) { trap_Error( va( S_COLOR_YELLOW "menu file not found: %s, using default\n", menuFile ) ); @@ -910,6 +888,7 @@ void UI_LoadMenus(const char *menuFile, qboolean reset) { trap_PC_FreeSource( handle ); + trap_PC_RemoveAllGlobalDefines ( ); } void UI_Load() { @@ -1184,7 +1163,7 @@ static void UI_DrawForceSide(rectDef_t *rect, float scale, vec4_t color, int tex Menu_ShowItemByName(menu, "lightpowers_team", qtrue);//(ui_gameType.integer >= GT_TEAM)); } - menu = Menus_FindByName("ingame_player"); + menu = Menus_FindByName("ingame_playerforce"); if (menu) { Menu_ShowItemByName(menu, "lightpowers", qtrue); @@ -1207,7 +1186,7 @@ static void UI_DrawForceSide(rectDef_t *rect, float scale, vec4_t color, int tex Menu_ShowItemByName(menu, "darkpowers_team", qtrue);//(ui_gameType.integer >= GT_TEAM)); } - menu = Menus_FindByName("ingame_player"); + menu = Menus_FindByName("ingame_playerforce"); if (menu) { Menu_ShowItemByName(menu, "lightpowers", qfalse); @@ -1237,10 +1216,40 @@ static void UI_DrawTeamMember(rectDef_t *rect, float scale, vec4_t color, qboole // 2..NumCharacters - Bot int value = trap_Cvar_VariableValue(va(blue ? "ui_blueteam%i" : "ui_redteam%i", num)); const char *text; - if (value <= 0) { - text = "Closed"; - } else if (value == 1) { - text = "Human"; + int maxcl = trap_Cvar_VariableValue( "sv_maxClients" ); + vec4_t finalColor; + int numval = num; + + numval *= 2; + + if (blue) + { + numval -= 1; + } + + finalColor[0] = color[0]; + finalColor[1] = color[1]; + finalColor[2] = color[2]; + finalColor[3] = color[3]; + + if (numval > maxcl) + { + finalColor[0] *= 0.2; + finalColor[1] *= 0.2; + finalColor[2] *= 0.2; + + value = -1; + } + + if (value <= 1) { + if (value == -1) + { + text = "Closed"; + } + else + { + text = "Human"; + } } else { value -= 2; @@ -1251,17 +1260,18 @@ static void UI_DrawTeamMember(rectDef_t *rect, float scale, vec4_t color, qboole text = uiInfo.characterList[value].name; } else {*/ if (value >= UI_GetNumBots()) { - value = 0; + value = 1; } text = UI_GetBotNameByNumber(value); //} } - Text_Paint(rect->x, rect->y, scale, color, text, 0, 0, textStyle, iMenuFont); + + Text_Paint(rect->x, rect->y, scale, finalColor, text, 0, 0, textStyle, iMenuFont); } -static void UI_DrawEffects(rectDef_t *rect, float scale, vec4_t color) { - UI_DrawHandlePic( rect->x, rect->y - 14, 128, 8, uiInfo.uiDC.Assets.fxBasePic ); - UI_DrawHandlePic( rect->x + uiInfo.effectsColor /* * 16*/*20 + 8, rect->y - 16, 16, 12, uiInfo.uiDC.Assets.fxPic[uiInfo.effectsColor] ); +static void UI_DrawEffects(rectDef_t *rect, float scale, vec4_t color) +{ + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiSaberColorShaders[uiInfo.effectsColor]); } static void UI_DrawMapPreview(rectDef_t *rect, float scale, vec4_t color, qboolean net) { @@ -1779,14 +1789,12 @@ static int UI_OwnerDrawWidth(int ownerDraw, float scale) { } value = trap_Cvar_VariableValue(va("ui_blueteam%i", iUse)); - if (value <= 0) { - text = "Closed"; - } else if (value == 1) { + if (value <= 1) { text = "Human"; } else { value -= 2; if (value >= uiInfo.aliasCount) { - value = 0; + value = 1; } text = uiInfo.aliasList[value].name; } @@ -1810,14 +1818,12 @@ static int UI_OwnerDrawWidth(int ownerDraw, float scale) { } value = trap_Cvar_VariableValue(va("ui_redteam%i", iUse)); - if (value <= 0) { - text = "Closed"; - } else if (value == 1) { + if (value <= 1) { text = "Human"; } else { value -= 2; if (value >= uiInfo.aliasCount) { - value = 0; + value = 1; } text = uiInfo.aliasList[value].name; } @@ -2762,6 +2768,25 @@ static qboolean UI_TeamMember_HandleKey(int flags, float *special, int key, qboo // 2..NumCharacters - Bot char *cvar = va(blue ? "ui_blueteam%i" : "ui_redteam%i", num); int value = trap_Cvar_VariableValue(cvar); + int maxcl = trap_Cvar_VariableValue( "sv_maxClients" ); + int numval = num; + + numval *= 2; + + if (blue) + { + numval -= 1; + } + + if (numval > maxcl) + { + return qfalse; + } + + if (value < 1) + { + value = 1; + } if (key == K_MOUSE2) { value--; @@ -2777,8 +2802,8 @@ static qboolean UI_TeamMember_HandleKey(int flags, float *special, int key, qboo } } else {*/ if (value >= UI_GetNumBots() + 2) { - value = 0; - } else if (value < 0) { + value = 1; + } else if (value < 1) { value = UI_GetNumBots() + 2 - 1; } //} @@ -3530,7 +3555,7 @@ static void UI_RunMenuScript(char **args) { if (String_Parse(args, &name)) { if (Q_stricmp(name, "StartServer") == 0) { - int i, clients, oldclients; + int i, added = 0; float skill; trap_Cvar_Set("cg_thirdPerson", "0"); trap_Cvar_Set("cg_cameraOrbit", "0"); @@ -3541,47 +3566,50 @@ static void UI_RunMenuScript(char **args) { trap_Cvar_Set("g_blueTeam", UI_Cvar_VariableString("ui_opponentName")); trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", uiInfo.mapList[ui_currentNetMap.integer].mapLoadName ) ); skill = trap_Cvar_VariableValue( "g_spSkill" ); - // set max clients based on spots - oldclients = trap_Cvar_VariableValue( "sv_maxClients" ); - clients = 0; - for (i = 0; i < PLAYERS_PER_TEAM; i++) { - int bot = trap_Cvar_VariableValue( va("ui_blueteam%i", i+1)); - if (bot >= 0) { - clients++; - } - bot = trap_Cvar_VariableValue( va("ui_redteam%i", i+1)); - if (bot >= 0) { - clients++; - } - } - if (clients == 0) { - clients = 8; - } - - if (oldclients > clients) { - clients = oldclients; - } - - trap_Cvar_Set("sv_maxClients", va("%d",clients)); for (i = 0; i < PLAYERS_PER_TEAM; i++) { int bot = trap_Cvar_VariableValue( va("ui_blueteam%i", i+1)); + int maxcl = trap_Cvar_VariableValue( "sv_maxClients" ); + if (bot > 1) { - if (ui_actualNetGameType.integer >= GT_TEAM) { - Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", UI_GetBotNameByNumber(bot-2), skill, "Blue"); - } else { - Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); + int numval = i+1; + + numval *= 2; + + numval -= 1; + + if (numval <= maxcl) + { + if (ui_actualNetGameType.integer >= GT_TEAM) { + Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", UI_GetBotNameByNumber(bot-2), skill, "Blue"); + } else { + Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); + } + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + added++; } - trap_Cmd_ExecuteText( EXEC_APPEND, buff ); } bot = trap_Cvar_VariableValue( va("ui_redteam%i", i+1)); if (bot > 1) { - if (ui_actualNetGameType.integer >= GT_TEAM) { - Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", UI_GetBotNameByNumber(bot-2), skill, "Red"); - } else { - Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); + int numval = i+1; + + numval *= 2; + + if (numval <= maxcl) + { + if (ui_actualNetGameType.integer >= GT_TEAM) { + Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", UI_GetBotNameByNumber(bot-2), skill, "Red"); + } else { + Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); + } + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + added++; } - trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + } + if (added >= maxcl) + { //this means the client filled up all their slots in the UI with bots. So stretch out an extra slot for them, and then stop adding bots. + trap_Cvar_Set("sv_maxClients", va("%i", added+1)); + break; } } } else if (Q_stricmp(name, "updateSPMenu") == 0) { @@ -3675,7 +3703,7 @@ static void UI_RunMenuScript(char **args) { trap_Cvar_Set( "fs_game", uiInfo.modList[uiInfo.modIndex].modName); trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); } else if (Q_stricmp(name, "RunDemo") == 0) { - trap_Cmd_ExecuteText( EXEC_APPEND, va("demo %s\n", uiInfo.demoList[uiInfo.demoIndex])); + trap_Cmd_ExecuteText( EXEC_APPEND, va("demo \"%s\"\n", uiInfo.demoList[uiInfo.demoIndex])); } else if (Q_stricmp(name, "Quake3") == 0) { trap_Cvar_Set( "fs_game", ""); trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); @@ -5586,14 +5614,17 @@ static void UI_BuildQ3Model_List( void ) fileptr = filelist; for (j=0; j= 0 && skinname[k] && skinname[k] != '_') + skinLen = strlen(skinname); + k = 0; + while (k < skinLen && skinname[k] && skinname[k] != '_') { - k--; + k++; } if (skinname[k] == '_') { @@ -5798,7 +5829,7 @@ void _UI_Init( qboolean inGameLoad ) { UI_LoadForceConfig_List(); - UI_InitForceStarShaders(); + UI_InitForceShaders(); // sets defaults for ui temp cvars uiInfo.effectsColor = /*gamecodetoui[*/(int)trap_Cvar_VariableValue("color1");//-1]; @@ -5901,24 +5932,48 @@ void _UI_SetActiveMenu( uiMenuCommand_t menu ) { return; case UIMENU_MAIN: + { + qboolean active = qfalse; + //trap_Cvar_Set( "sv_killserver", "1" ); trap_Key_SetCatcher( KEYCATCH_UI ); //trap_S_StartLocalSound( trap_S_RegisterSound("sound/misc/menu_background.wav", qfalse) , CHAN_LOCAL_SOUND ); //trap_S_StartBackgroundTrack("sound/misc/menu_background.wav", NULL); - if (uiInfo.inGameLoad) { + if (uiInfo.inGameLoad) + { UI_LoadNonIngame(); } + Menus_CloseAll(); Menus_ActivateByName("main"); trap_Cvar_VariableStringBuffer("com_errorMessage", buf, sizeof(buf)); - if (strlen(buf)) { - if (!ui_singlePlayerActive.integer) { + + if (strlen(buf)) + { + if (!ui_singlePlayerActive.integer) + { Menus_ActivateByName("error_popmenu"); - } else { + active = qtrue; + } + else + { trap_Cvar_Set("com_errorMessage", ""); } } - return; + + if ( !active && (int)trap_Cvar_VariableValue ( "com_othertasks" ) ) + { + trap_Cvar_Set("com_othertasks", "0"); + if ( !(int)trap_Cvar_VariableValue ( "com_ignoreothertasks" ) ) + { + Menus_ActivateByName("backgroundtask_popmenu"); + active = qtrue; + } + } + + return; + } + case UIMENU_TEAM: trap_Key_SetCatcher( KEYCATCH_UI ); Menus_ActivateByName("team"); @@ -5948,6 +6003,14 @@ void _UI_SetActiveMenu( uiMenuCommand_t menu ) { Menus_ActivateByName("ingame_player"); UpdateForceUsed(); return; + case UIMENU_PLAYERFORCE: + // trap_Cvar_Set( "cl_paused", "1" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + UI_BuildPlayerList(); + Menus_CloseAll(); + Menus_ActivateByName("ingame_playerforce"); + UpdateForceUsed(); + return; } } } @@ -6299,7 +6362,6 @@ vmCvar_t ui_realCaptureLimit; vmCvar_t ui_realWarmUp; vmCvar_t ui_serverStatusTimeOut; - // bk001129 - made static to avoid aliasing static cvarTable_t cvarTable[] = { { &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE }, @@ -6421,7 +6483,6 @@ static cvarTable_t cvarTable[] = { { &ui_bigFont, "ui_bigFont", "0.4", CVAR_ARCHIVE}, { &ui_findPlayer, "ui_findPlayer", "Kyle", CVAR_ARCHIVE}, { &ui_Q3Model, "ui_q3model", "0", CVAR_ARCHIVE}, - { &ui_hudFiles, "cg_hudFiles", "ui/hud.txt", CVAR_ARCHIVE}, { &ui_recordSPDemo, "ui_recordSPDemo", "0", CVAR_ARCHIVE}, { &ui_teamArenaFirstRun, "ui_teamArenaFirstRun", "0", CVAR_ARCHIVE}, { &ui_realWarmUp, "g_warmup", "20", CVAR_ARCHIVE}, diff --git a/CODEmp/ui/ui_players.c b/CODE-mp/ui/ui_players.c similarity index 100% rename from CODEmp/ui/ui_players.c rename to CODE-mp/ui/ui_players.c diff --git a/CODEmp/ui/ui_public.h b/CODE-mp/ui/ui_public.h similarity index 92% rename from CODEmp/ui/ui_public.h rename to CODE-mp/ui/ui_public.h index 87ec1df..6a73df3 100644 --- a/CODEmp/ui/ui_public.h +++ b/CODE-mp/ui/ui_public.h @@ -83,6 +83,9 @@ typedef enum { UI_PC_FREE_SOURCE, UI_PC_READ_TOKEN, UI_PC_SOURCE_FILE_AND_LINE, + UI_PC_LOAD_GLOBAL_DEFINES, + UI_PC_REMOVE_ALL_GLOBAL_DEFINES, + UI_S_STOPBACKGROUNDTRACK, UI_S_STARTBACKGROUNDTRACK, UI_REAL_TIME, @@ -144,7 +147,8 @@ typedef enum { UIMENU_INGAME, UIMENU_PLAYERCONFIG, UIMENU_TEAM, - UIMENU_POSTGAME + UIMENU_POSTGAME, + UIMENU_PLAYERFORCE } uiMenuCommand_t; #define SORT_HOST 0 diff --git a/CODEmp/ui/ui_shared.c b/CODE-mp/ui/ui_shared.c similarity index 95% rename from CODEmp/ui/ui_shared.c rename to CODE-mp/ui/ui_shared.c index e55239b..26a2fcb 100644 --- a/CODEmp/ui/ui_shared.c +++ b/CODE-mp/ui/ui_shared.c @@ -3316,7 +3316,7 @@ static bind_t g_bindings[] = {"+attack", K_CTRL, -1, -1, -1}, {"+altattack", -1, -1, -1, -1}, {"+use", -1, -1, -1, -1}, - {"engage_duel", -1, -1, -1, -1}, + {"engage_duel", 'h', -1, -1, -1}, {"weapprev", '[', -1, -1, -1}, {"weapnext", ']', -1, -1, -1}, {"+button3", K_MOUSE3, -1, -1, -1}, @@ -3334,34 +3334,35 @@ static bind_t g_bindings[] = {"taskEscort", 'e', -1, -1, -1}, {"taskOwnFlag", 'i', -1, -1, -1}, {"taskSuicide", 'k', -1, -1, -1}, - {"tauntKillInsult", K_F1, -1, -1, -1}, - {"tauntPraise", K_F2, -1, -1, -1}, - {"tauntTaunt", K_F3, -1, -1, -1}, - {"tauntDeathInsult",K_F4, -1, -1, -1}, - {"tauntGauntlet", K_F5, -1, -1, -1}, + {"tauntKillInsult", -1, -1, -1, -1}, + {"tauntPraise", -1, -1, -1, -1}, + {"tauntTaunt", -1, -1, -1, -1}, + {"tauntDeathInsult",-1, -1, -1, -1}, + {"tauntGauntlet", -1, -1, -1, -1}, {"scoresUp", K_KP_PGUP, -1, -1, -1}, {"scoresDown", K_KP_PGDN, -1, -1, -1}, - // bk001205 - this one below was: '-1' {"messagemode", -1, -1, -1, -1}, {"messagemode2", -1, -1, -1, -1}, {"messagemode3", -1, -1, -1, -1}, {"messagemode4", -1, -1, -1, -1}, {"+use", -1, -1, -1, -1}, {"+force_jump", -1, -1, -1, -1}, - {"+force_grip", -1, -1, -1, -1}, - {"+force_lightning",-1, -1, -1, -1}, + {"force_throw", K_F1, -1, -1, -1}, + {"force_pull", K_F2, -1, -1, -1}, + {"force_speed", K_F3, -1, -1, -1}, + {"force_distract", K_F4, -1, -1, -1}, + {"force_heal", K_F5, -1, -1, -1}, + {"+force_grip", K_F6, -1, -1, -1}, + {"+force_lightning",K_F7, -1, -1, -1}, +//mp only {"+force_drain", -1, -1, -1, -1}, - {"force_heal", -1, -1, -1, -1}, - {"force_speed", -1, -1, -1, -1}, - {"force_throw", -1, -1, -1, -1}, - {"force_pull", -1, -1, -1, -1}, - {"force_distract", -1, -1, -1, -1}, {"force_rage", -1, -1, -1, -1}, {"force_protect", -1, -1, -1, -1}, {"force_absorb", -1, -1, -1, -1}, {"force_healother", -1, -1, -1, -1}, {"force_forcepowerother", -1, -1, -1, -1}, {"force_seeing", -1, -1, -1, -1}, + {"+useforce", -1, -1, -1, -1}, {"forcenext", -1, -1, -1, -1}, {"forceprev", -1, -1, -1, -1}, @@ -3372,6 +3373,7 @@ static bind_t g_bindings[] = {"use_bacta", -1, -1, -1, -1}, {"use_electrobinoculars", -1, -1, -1, -1}, {"use_sentry", -1, -1, -1, -1}, + {"cg_thirdperson !",-1, -1, -1, -1}, }; @@ -4824,7 +4826,7 @@ qboolean ItemParse_flag( itemDef_t *item, int handle) if (itemFlags[i].string == NULL) { - Com_Printf(S_COLOR_YELLOW,va("Unknown item style value '%s'",tempStr)); + Com_Printf(va( S_COLOR_YELLOW "Unknown item style value '%s'",tempStr)); } return qtrue; @@ -5032,13 +5034,12 @@ qboolean ItemParse_textalign( itemDef_t *item, int handle ) { if (!PC_Int_Parse(handle, &item->textalignment)) { + Com_Printf(S_COLOR_YELLOW "Unknown text alignment value"); + return qfalse; } - Com_Printf(S_COLOR_YELLOW,"Unknown text alignment value"); - return qtrue; - } qboolean ItemParse_textalignx( itemDef_t *item, int handle ) { @@ -5198,6 +5199,23 @@ qboolean ItemParse_action( itemDef_t *item, int handle ) { return qtrue; } +qboolean ItemParse_stripedFile( itemDef_t *item, int handle ) { + + char *tempStr; + + if (!PC_String_Parse(handle, (const char **)&tempStr)) { + return qfalse; + } + + Q_strncpyz( (char *) DC->Assets.stripedFile, tempStr, sizeof(DC->Assets.stripedFile) ); + + trap_SP_Register(DC->Assets.stripedFile); + + Menu_currentStipEdFile(DC->Assets.stripedFile); + + return qtrue; +} + qboolean ItemParse_special( itemDef_t *item, int handle ) { if (!PC_Float_Parse(handle, &item->special)) { return qfalse; @@ -5513,6 +5531,7 @@ keywordHash_t itemParseKeywords[] = { {"rect", ItemParse_rect, NULL }, {"showCvar", ItemParse_showCvar, NULL }, {"special", ItemParse_special, NULL }, + {"stripedFile", ItemParse_stripedFile, NULL }, {"style", ItemParse_style, NULL }, {"text", ItemParse_text, NULL }, {"textalign", ItemParse_textalign, NULL }, @@ -5656,30 +5675,14 @@ MenuParse_style */ qboolean MenuParse_style( itemDef_t *item, int handle) { - int i; - char *tempStr; menuDef_t *menu = (menuDef_t*)item; - if (!PC_String_Parse(handle, (const char **)&tempStr)) + if (!PC_Int_Parse(handle, &menu->window.style)) { + Com_Printf(S_COLOR_YELLOW "Unknown menu style value"); return qfalse; } - i=0; - while (styles[i]) - { - if (Q_stricmp(tempStr,styles[i])==0) - { - menu->window.style = i; - break; - } - i++; - } - - if (styles[i] == NULL) - { - Com_Printf(S_COLOR_YELLOW,va("Unknown menu style value '%s'",tempStr)); - } return qtrue; } @@ -5763,11 +5766,10 @@ qboolean MenuParse_descAlignment( itemDef_t *item, int handle ) if (!PC_Int_Parse(handle, &menu->descAlignment)) { + Com_Printf(S_COLOR_YELLOW "Unknown desc alignment value"); return qfalse; } - Com_Printf(S_COLOR_YELLOW,"Unknown desc alignment value"); - return qtrue; } diff --git a/CODEmp/ui/ui_shared.h b/CODE-mp/ui/ui_shared.h similarity index 95% rename from CODEmp/ui/ui_shared.h rename to CODE-mp/ui/ui_shared.h index 02a5a87..28e357d 100644 --- a/CODEmp/ui/ui_shared.h +++ b/CODE-mp/ui/ui_shared.h @@ -447,11 +447,14 @@ void Controls_GetConfig( void ); void Controls_SetConfig(qboolean restart); void Controls_SetDefaults( void ); -int trap_PC_AddGlobalDefine( char *define ); -int trap_PC_LoadSource( const char *filename ); -int trap_PC_FreeSource( int handle ); -int trap_PC_ReadToken( int handle, pc_token_t *pc_token ); -int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ); +int trap_PC_AddGlobalDefine ( char *define ); +int trap_PC_LoadSource ( const char *filename ); +int trap_PC_FreeSource ( int handle ); +int trap_PC_ReadToken ( int handle, pc_token_t *pc_token ); +int trap_PC_SourceFileAndLine ( int handle, char *filename, int *line ); +int trap_PC_LoadGlobalDefines ( const char* filename ); +void trap_PC_RemoveAllGlobalDefines ( void ); + void trap_SP_RegisterServer( const char *package ); void trap_SP_Register(char *file ); void Menu_currentStipEdFile(char *stripEdFile); diff --git a/CODEmp/ui/ui_syscalls.c b/CODE-mp/ui/ui_syscalls.c similarity index 94% rename from CODEmp/ui/ui_syscalls.c rename to CODE-mp/ui/ui_syscalls.c index 233e3da..1815354 100644 --- a/CODEmp/ui/ui_syscalls.c +++ b/CODE-mp/ui/ui_syscalls.c @@ -353,6 +353,16 @@ int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ) { return syscall( UI_PC_SOURCE_FILE_AND_LINE, handle, filename, line ); } +int trap_PC_LoadGlobalDefines ( const char* filename ) +{ + return syscall ( UI_PC_LOAD_GLOBAL_DEFINES, filename ); +} + +void trap_PC_RemoveAllGlobalDefines ( void ) +{ + syscall ( UI_PC_REMOVE_ALL_GLOBAL_DEFINES ); +} + void trap_S_StopBackgroundTrack( void ) { syscall( UI_S_STOPBACKGROUNDTRACK ); } diff --git a/CODEmp/ui/ui_util.c b/CODE-mp/ui/ui_util.c similarity index 100% rename from CODEmp/ui/ui_util.c rename to CODE-mp/ui/ui_util.c diff --git a/CODE-mp/ui/vssver.scc b/CODE-mp/ui/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..69aab8a1ddf21d0f130733241228032973708699 GIT binary patch literal 304 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~M@mxLEfGC;r^AoXeGjY;qBG-xpb*>8b(Zt&Ji zPLn%yxPk0nKx{kP@1uyQww5rE{TGPsb%TEFaS8>i{|DsHe)7lXm;D1>79jgS5P#4< zA=cKmSCzlWSuA=6n^a?Td4YU3Aitu7y<(d1S$%#W zUyp-eIWnEl04B2+rzp{Kz4Mw?0C6}`jsO4v literal 0 HcmV?d00001 diff --git a/CODE-mp/vssver.scc b/CODE-mp/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..3728913fa4c206314554bfcf7421d8ef97fc40a4 GIT binary patch literal 128 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~Navg;K)w-B(W&GQpUPdMU%-8Q#1A@hgFR NX~zRUbMJ(KdH2xNZ*V$RUOFr}^^ddxufCm`O_!(+Z>%S=6x{AVDZkUy_LQAV2VYz~NJut{Q^O`wqmV{$HJ+6@D>f0kVGpaq!33 zXY1}xHUydf6Nt^9H{Iql-wEa`0tJgZSRW+S>Vn;?1mwS5o~>wMbP;U7GLWxOTJ%Qa Vu(BS=JQW~+SJxSNIqofB^#G$fOVI!T literal 0 HcmV?d00001 diff --git a/CODEmp/win32/win_gamma.cpp b/CODE-mp/win32/win_gamma.cpp similarity index 100% rename from CODEmp/win32/win_gamma.cpp rename to CODE-mp/win32/win_gamma.cpp diff --git a/CODEmp/win32/win_glimp.cpp b/CODE-mp/win32/win_glimp.cpp similarity index 93% rename from CODEmp/win32/win_glimp.cpp rename to CODE-mp/win32/win_glimp.cpp index 0ac9ed7..64eb0dd 100644 --- a/CODEmp/win32/win_glimp.cpp +++ b/CODE-mp/win32/win_glimp.cpp @@ -901,6 +901,31 @@ static rserr_t GLW_SetMode( int mode, return RSERR_OK; } +/* +** GLW_CheckForExtension + + Cannot use strstr directly to differentiate between (for eg) reg_combiners and reg_combiners2 +*/ + +bool GL_CheckForExtension(const char *ext) +{ + char *temp; + char term; + + temp = strstr(glConfig.extensions_string, ext); + if(!temp) + { + return(false); + } + // String exists but it may not be terminated + term = temp[strlen(ext)]; + if((term == ' ') || !term) + { + return(true); + } + return(false); +} + /* ** GLW_InitExtensions */ @@ -914,26 +939,6 @@ static void GLW_InitExtensions( void ) ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" ); - // GL_S3_s3tc - glConfig.textureCompression = TC_NONE; - if ( strstr( glConfig.extensions_string, "GL_S3_s3tc" ) ) - { - if ( r_ext_compressed_textures->integer ) - { - glConfig.textureCompression = TC_S3TC; - ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" ); - } - else - { - glConfig.textureCompression = TC_NONE; - ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" ); - } - // GL_EXT_texture_env_add glConfig.textureEnvAddAvailable = qfalse; if ( strstr( glConfig.extensions_string, "EXT_texture_env_add" ) ) @@ -1252,15 +1257,10 @@ void GLimp_Init( void ) GLW_StartOpenGL(); // get our config strings - glConfig.vendor_string = (const char *) qglGetString (GL_VENDOR); - glConfig.renderer_string = (const char *) qglGetString (GL_RENDERER); - glConfig.version_string = (const char *) qglGetString (GL_VERSION); - glConfig.extensions_string = (const char *) qglGetString (GL_EXTENSIONS); - - if (!glConfig.vendor_string || !glConfig.renderer_string || !glConfig.version_string || !glConfig.extensions_string) - { - ri.Error( ERR_FATAL, "GLimp_Init() - Invalid GL Driver\n" ); - } + Q_strncpyz( glConfig.vendor_string, (const char *)qglGetString (GL_VENDOR), sizeof( glConfig.vendor_string ) ); + Q_strncpyz( glConfig.renderer_string, (const char *)qglGetString (GL_RENDERER), sizeof( glConfig.renderer_string ) ); + Q_strncpyz( glConfig.version_string, (const char *)qglGetString (GL_VERSION), sizeof( glConfig.version_string ) ); + Q_strncpyz( glConfig.extensions_string, (const char *)qglGetString (GL_EXTENSIONS), sizeof( glConfig.extensions_string ) ); // // chipset specific configuration diff --git a/CODEmp/win32/win_input.cpp b/CODE-mp/win32/win_input.cpp similarity index 100% rename from CODEmp/win32/win_input.cpp rename to CODE-mp/win32/win_input.cpp diff --git a/CODEmp/win32/win_local.h b/CODE-mp/win32/win_local.h similarity index 100% rename from CODEmp/win32/win_local.h rename to CODE-mp/win32/win_local.h diff --git a/CODEmp/win32/win_main.cpp b/CODE-mp/win32/win_main.cpp similarity index 91% rename from CODEmp/win32/win_main.cpp rename to CODE-mp/win32/win_main.cpp index 2de0766..3742310 100644 --- a/CODEmp/win32/win_main.cpp +++ b/CODE-mp/win32/win_main.cpp @@ -26,6 +26,72 @@ static char sys_cmdline[MAX_STRING_CHARS]; static int sys_monkeySpank; static int sys_checksum; + +static unsigned busyCount = 0; +static bool otherTasksRunning = false; +unsigned otherTaskTime = 0; + +#pragma optimize("", off) + +void busyFunction(void) +{ + float a = MEM_THRESHOLD; + float b = 9343; + short c = 4; + + while((int)b > (float)(b-1)) + { + a = a + b / c; + busyCount++; + } +} + +void CheckProcessTime(void) +{ + HANDLE threadHandle; + int threadId; + FILETIME creationTime; // thread creation time + FILETIME exitTime; // thread exit time + FILETIME kernelTime; // thread kernel-mode time + FILETIME userTime; // thread user-mode time +// char temp[1024]; + + busyCount = 0; + threadHandle = CreateThread( + NULL, // LPSECURITY_ATTRIBUTES lpsa, + 0, // DWORD cbStack, + (LPTHREAD_START_ROUTINE)busyFunction, // LPTHREAD_START_ROUTINE lpStartAddr, + 0, // LPVOID lpvThreadParm, + CREATE_SUSPENDED, // DWORD fdwCreate, + (unsigned long *)&threadId ); + + SetThreadPriority(threadHandle, THREAD_PRIORITY_IDLE); + ResumeThread(threadHandle); + while(busyCount < 10) + { + Sleep(100); + } + Sleep(1000); + + TerminateThread(threadHandle, 0); + GetThreadTimes(threadHandle, &creationTime, &exitTime, &kernelTime, &userTime); + CloseHandle(threadHandle); + +// sprintf(temp, "Time = %u\n", userTime.dwLowDateTime); +// OutputDebugString(temp); + + otherTaskTime = userTime.dwLowDateTime; + if (userTime.dwLowDateTime < 9000000) + { + otherTasksRunning = true; +// OutputDebugString("WARNING: possibly running on a system with another task\n"); + } +} + +#pragma optimize("", on) + + + /* ================== Sys_LowPhysicalMemory() @@ -650,7 +716,7 @@ static qboolean Sys_ScanForCD( void ) { Result = GetVolumeInformation(drive,VolumeName,sizeof(VolumeName),&VolumeSerialNumber, &MaximumComponentLength,&FileSystemFlags,FileSystemName,sizeof(FileSystemName)); - if (Result && (strcmpi(VolumeName,"JEDI_OUTCAST") == 0 ) ) + if (Result && (strcmpi(VolumeName,"JEDIOUTCAST") == 0 ) ) { sprintf (test, "%s%s\\%s",drive, CD_BASEDIR, CD_EXE); f = fopen( test, "r" ); @@ -1469,9 +1535,13 @@ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLin Sys_InitStreamThread(); - Com_Init( sys_cmdline ); - NET_Init(); + CheckProcessTime(); + Com_Init( sys_cmdline ); + Cvar_Set( "com_othertasks", ( otherTasksRunning ? "1" : "0" ) ); + Cvar_Set( "com_othertaskstime", va("%u", otherTaskTime) ); + + NET_Init(); _getcwd (cwd, sizeof(cwd)); Com_Printf("Working directory: %s\n", cwd); diff --git a/CODEmp/win32/win_net.cpp b/CODE-mp/win32/win_net.cpp similarity index 100% rename from CODEmp/win32/win_net.cpp rename to CODE-mp/win32/win_net.cpp diff --git a/CODEmp/win32/win_qgl.cpp b/CODE-mp/win32/win_qgl.cpp similarity index 100% rename from CODEmp/win32/win_qgl.cpp rename to CODE-mp/win32/win_qgl.cpp diff --git a/CODEmp/win32/win_shared.cpp b/CODE-mp/win32/win_shared.cpp similarity index 100% rename from CODEmp/win32/win_shared.cpp rename to CODE-mp/win32/win_shared.cpp diff --git a/CODEmp/win32/win_snd.cpp b/CODE-mp/win32/win_snd.cpp similarity index 100% rename from CODEmp/win32/win_snd.cpp rename to CODE-mp/win32/win_snd.cpp diff --git a/CODEmp/win32/win_syscon.cpp b/CODE-mp/win32/win_syscon.cpp similarity index 71% rename from CODEmp/win32/win_syscon.cpp rename to CODE-mp/win32/win_syscon.cpp index b6a5516..bde2720 100644 --- a/CODEmp/win32/win_syscon.cpp +++ b/CODE-mp/win32/win_syscon.cpp @@ -1,6 +1,11 @@ // win_syscon.h +// this include must remain at the top of every CPP file #include "../client/client.h" #include "win_local.h" + + + + #include "resource.h" #include #include @@ -58,7 +63,7 @@ static WinConData s_wcd; static LONG WINAPI ConWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { - char *cmdString; + const char *cmdString; static qboolean s_timePolarity; switch (uMsg) @@ -93,7 +98,7 @@ static LONG WINAPI ConWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara if ( ( com_dedicated && com_dedicated->integer ) ) { cmdString = CopyString( "quit" ); - Sys_QueEvent( 0, SE_CONSOLE, 0, 0, strlen( cmdString ) + 1, cmdString ); + Sys_QueEvent( 0, SE_CONSOLE, 0, 0, strlen( cmdString ) + 1, (void *)cmdString ); } else if ( s_wcd.quitOnClose ) { @@ -110,19 +115,6 @@ static LONG WINAPI ConWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara { SetBkColor( ( HDC ) wParam, RGB( 0x00, 0x00, 0xB0 ) ); SetTextColor( ( HDC ) wParam, RGB( 0xff, 0xff, 0x00 ) ); - -#if 0 // this draws a background in the edit box, but there are issues with this - if ( ( hdcScaled = CreateCompatibleDC( ( HDC ) wParam ) ) != 0 ) - { - if ( SelectObject( ( HDC ) hdcScaled, s_wcd.hbmLogo ) ) - { - StretchBlt( ( HDC ) wParam, 0, 0, 512, 384, - hdcScaled, 0, 0, 512, 384, - SRCCOPY ); - } - DeleteDC( hdcScaled ); - } -#endif return ( long ) s_wcd.hbrEditBackground; } else if ( ( HWND ) lParam == s_wcd.hwndErrorBox ) @@ -156,7 +148,7 @@ static LONG WINAPI ConWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara else { cmdString = CopyString( "quit" ); - Sys_QueEvent( 0, SE_CONSOLE, 0, 0, strlen( cmdString ) + 1, cmdString ); + Sys_QueEvent( 0, SE_CONSOLE, 0, 0, strlen( cmdString ) + 1, (void *)cmdString ); } } else if ( wParam == CLEAR_ID ) @@ -167,59 +159,11 @@ static LONG WINAPI ConWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara } break; case WM_CREATE: -// s_wcd.hbmLogo = LoadBitmap( g_wv.hInstance, MAKEINTRESOURCE( IDB_BITMAP1 ) ); -// s_wcd.hbmClearBitmap = LoadBitmap( g_wv.hInstance, MAKEINTRESOURCE( IDB_BITMAP2 ) ); s_wcd.hbrEditBackground = CreateSolidBrush( RGB( 0x00, 0x00, 0xB0 ) ); s_wcd.hbrErrorBackground = CreateSolidBrush( RGB( 0x80, 0x80, 0x80 ) ); SetTimer( hWnd, 1, 1000, NULL ); break; case WM_ERASEBKGND: -#if 0 - HDC hdcScaled; - HGDIOBJ oldObject; - -#if 1 // a single, large image - hdcScaled = CreateCompatibleDC( ( HDC ) wParam ); - assert( hdcScaled != 0 ); - - if ( hdcScaled ) - { - oldObject = SelectObject( ( HDC ) hdcScaled, s_wcd.hbmLogo ); - assert( oldObject != 0 ); - if ( oldObject ) - { - StretchBlt( ( HDC ) wParam, 0, 0, s_wcd.windowWidth, s_wcd.windowHeight, - hdcScaled, 0, 0, 512, 384, - SRCCOPY ); - } - DeleteDC( hdcScaled ); - hdcScaled = 0; - } -#else // a repeating brush - { - HBRUSH hbrClearBrush; - RECT r; - - GetWindowRect( hWnd, &r ); - - r.bottom = r.bottom - r.top + 1; - r.right = r.right - r.left + 1; - r.top = 0; - r.left = 0; - - hbrClearBrush = CreatePatternBrush( s_wcd.hbmClearBitmap ); - - assert( hbrClearBrush != 0 ); - - if ( hbrClearBrush ) - { - FillRect( ( HDC ) wParam, &r, hbrClearBrush ); - DeleteObject( hbrClearBrush ); - } - } -#endif - return 1; -#endif return DefWindowProc( hWnd, uMsg, wParam, lParam ); case WM_TIMER: if ( wParam == 1 ) @@ -236,33 +180,76 @@ static LONG WINAPI ConWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara return DefWindowProc( hWnd, uMsg, wParam, lParam ); } +extern void CompleteCommand( void ) ; +extern int nextHistoryLine; // the last line in the history buffer, not masked +extern int historyLine; // the line being displayed from history buffer + LONG WINAPI InputLineWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { char inputBuffer[1024]; switch ( uMsg ) { - case WM_KILLFOCUS: - if ( ( HWND ) wParam == s_wcd.hWnd || - ( HWND ) wParam == s_wcd.hwndErrorBox ) - { - SetFocus( hWnd ); - return 0; - } - break; + case WM_KILLFOCUS: + if ( ( HWND ) wParam == s_wcd.hWnd || + ( HWND ) wParam == s_wcd.hwndErrorBox ) + { + SetFocus( hWnd ); + return 0; + } + break; - case WM_CHAR: - if ( wParam == 13 ) - { - GetWindowText( s_wcd.hwndInputLine, inputBuffer, sizeof( inputBuffer ) ); - strncat( s_wcd.consoleText, inputBuffer, sizeof( s_wcd.consoleText ) - strlen( s_wcd.consoleText ) - 5 ); - strcat( s_wcd.consoleText, "\n" ); - SetWindowText( s_wcd.hwndInputLine, "" ); + case WM_CHAR: + if ( wParam == 13 ) + { + GetWindowText( s_wcd.hwndInputLine, inputBuffer, sizeof( inputBuffer ) ); + strncat( s_wcd.consoleText, inputBuffer, sizeof( s_wcd.consoleText ) - strlen( s_wcd.consoleText ) - 5 ); + strcat( s_wcd.consoleText, "\n" ); + SetWindowText( s_wcd.hwndInputLine, "" ); - Sys_Print( va( "]%s\n", inputBuffer ) ); + Sys_Print( va( "]%s\n", inputBuffer ) ); - return 0; - } + strcpy(g_consoleField.buffer, inputBuffer); + historyEditLines[nextHistoryLine % COMMAND_HISTORY] = g_consoleField; + nextHistoryLine++; + historyLine = nextHistoryLine; + + return 0; + } + else if (wParam == 9 ) + { + GetWindowText( s_wcd.hwndInputLine, inputBuffer, sizeof( inputBuffer ) ); + strcpy(g_consoleField.buffer, inputBuffer); + CompleteCommand(); + SetWindowText( s_wcd.hwndInputLine, g_consoleField.buffer); + SendMessage(s_wcd.hwndInputLine, EM_SETSEL, strlen(g_consoleField.buffer) , MAKELONG(0xffff, 0xffff) ); + } + + case WM_KEYDOWN: + if (wParam == VK_UP) + { + if ( nextHistoryLine - historyLine < COMMAND_HISTORY && historyLine > 0 ) + { + historyLine--; + } + g_consoleField = historyEditLines[ historyLine % COMMAND_HISTORY ]; + SetWindowText( s_wcd.hwndInputLine, g_consoleField.buffer); + SendMessage(s_wcd.hwndInputLine, EM_SETSEL, strlen(g_consoleField.buffer) , MAKELONG(0xffff, 0xffff) ); + return 0; + } + else if (wParam == VK_DOWN) + { + if (historyLine == nextHistoryLine) + { + return 0; + } + historyLine++; + g_consoleField = historyEditLines[ historyLine % COMMAND_HISTORY ]; + SetWindowText( s_wcd.hwndInputLine, g_consoleField.buffer); + SendMessage(s_wcd.hwndInputLine, EM_SETSEL, strlen(g_consoleField.buffer) , MAKELONG(0xffff, 0xffff) ); + return 0; + } + break; } return CallWindowProc( s_wcd.SysInputLineWndProc, hWnd, uMsg, wParam, lParam ); @@ -276,7 +263,7 @@ void Sys_CreateConsole( void ) HDC hDC; WNDCLASS wc; RECT rect; - const char *DEDCLASS = "Q3 WinConsole"; + const char *DEDCLASS = "JK2MP WinConsole"; int nHeight; int swidth, sheight; int DEDSTYLE = WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX; @@ -295,10 +282,12 @@ void Sys_CreateConsole( void ) wc.lpszClassName = DEDCLASS; if ( !RegisterClass (&wc) ) + { return; + } rect.left = 0; - rect.right = 540; + rect.right = 538; rect.top = 0; rect.bottom = 450; AdjustWindowRect( &rect, DEDSTYLE, FALSE ); @@ -313,7 +302,7 @@ void Sys_CreateConsole( void ) s_wcd.hWnd = CreateWindowEx( 0, DEDCLASS, - "Console", + "Jedi Knight 2: Jedi Outcast MP Console", DEDSTYLE, ( swidth - 600 ) / 2, ( sheight - 450 ) / 2 , rect.right - rect.left + 1, rect.bottom - rect.top + 1, NULL, @@ -353,7 +342,7 @@ void Sys_CreateConsole( void ) // create the input line // s_wcd.hwndInputLine = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | - ES_LEFT | ES_AUTOHSCROLL, + ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, 6, 400, 528, 20, s_wcd.hWnd, ( HMENU ) INPUT_ID, // child window ID @@ -362,33 +351,33 @@ void Sys_CreateConsole( void ) // // create the buttons // - s_wcd.hwndButtonCopy = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, + s_wcd.hwndButtonCopy = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | WS_TABSTOP, 5, 425, 72, 24, s_wcd.hWnd, ( HMENU ) COPY_ID, // child window ID g_wv.hInstance, NULL ); - SendMessage( s_wcd.hwndButtonCopy, WM_SETTEXT, 0, ( LPARAM ) "copy" ); + SendMessage( s_wcd.hwndButtonCopy, WM_SETTEXT, 0, ( LPARAM ) "Copy" ); - s_wcd.hwndButtonClear = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, + s_wcd.hwndButtonClear = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | WS_TABSTOP, 82, 425, 72, 24, s_wcd.hWnd, ( HMENU ) CLEAR_ID, // child window ID g_wv.hInstance, NULL ); - SendMessage( s_wcd.hwndButtonClear, WM_SETTEXT, 0, ( LPARAM ) "clear" ); + SendMessage( s_wcd.hwndButtonClear, WM_SETTEXT, 0, ( LPARAM ) "Clear" ); - s_wcd.hwndButtonQuit = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, + s_wcd.hwndButtonQuit = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | WS_TABSTOP, 462, 425, 72, 24, s_wcd.hWnd, ( HMENU ) QUIT_ID, // child window ID g_wv.hInstance, NULL ); - SendMessage( s_wcd.hwndButtonQuit, WM_SETTEXT, 0, ( LPARAM ) "quit" ); + SendMessage( s_wcd.hwndButtonQuit, WM_SETTEXT, 0, ( LPARAM ) "Quit" ); // // create the scrollbuffer // s_wcd.hwndBuffer = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER | - ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY, + ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_TABSTOP, 6, 40, 526, 354, s_wcd.hWnd, ( HMENU ) EDIT_ID, // child window ID @@ -397,6 +386,7 @@ void Sys_CreateConsole( void ) s_wcd.SysInputLineWndProc = ( WNDPROC ) SetWindowLong( s_wcd.hwndInputLine, GWL_WNDPROC, ( long ) InputLineWndProc ); SendMessage( s_wcd.hwndInputLine, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); + SendMessage( s_wcd.hwndBuffer, EM_LIMITTEXT, ( WPARAM ) 0x7fff, 0 ); ShowWindow( s_wcd.hWnd, SW_SHOWDEFAULT); UpdateWindow( s_wcd.hWnd ); @@ -409,8 +399,14 @@ void Sys_CreateConsole( void ) /* ** Sys_DestroyConsole */ -void Sys_DestroyConsole( void ) { - if ( s_wcd.hWnd ) { +void Sys_DestroyConsole( void ) +{ + if ( s_wcd.hWnd ) + { + DeleteObject(s_wcd.hbrEditBackground); + DeleteObject(s_wcd.hbrErrorBackground); + DeleteObject(s_wcd.hfBufferFont); + ShowWindow( s_wcd.hWnd, SW_HIDE ); CloseWindow( s_wcd.hWnd ); DestroyWindow( s_wcd.hWnd ); @@ -433,7 +429,9 @@ void Sys_ShowConsole( int visLevel, qboolean quitOnClose ) s_wcd.visLevel = visLevel; if ( !s_wcd.hWnd ) + { return; + } switch ( visLevel ) { @@ -540,22 +538,20 @@ void Conbuf_AppendText( const char *pMsg ) // if ( s_totalChars > 0x7fff ) { - if (s_wcd.hWnd) - { - SendMessage( s_wcd.hwndBuffer, EM_SETSEL, 0, -1 ); - } +/* SendMessage( s_wcd.hwndBuffer, EM_SETSEL, 0, s_totalChars - 0x7fff ); + SendMessage( s_wcd.hwndBuffer, EM_REPLACESEL, 0, (LPARAM) "" ); + s_totalChars = 0x7fff; + SendMessage( s_wcd.hwndBuffer, EM_SETSEL, s_totalChars, s_totalChars );*/ + SendMessage( s_wcd.hwndBuffer, EM_SETSEL, 0, -1 ); s_totalChars = bufLen; } // // put this text into the windows console // - if (s_wcd.hWnd) - { - SendMessage( s_wcd.hwndBuffer, EM_LINESCROLL, 0, 0xffff ); - SendMessage( s_wcd.hwndBuffer, EM_SCROLLCARET, 0, 0 ); - SendMessage( s_wcd.hwndBuffer, EM_REPLACESEL, 0, (LPARAM) buffer ); - } + SendMessage( s_wcd.hwndBuffer, EM_LINESCROLL, 0, 0xffff ); + SendMessage( s_wcd.hwndBuffer, EM_SCROLLCARET, 0, 0 ); + SendMessage( s_wcd.hwndBuffer, EM_REPLACESEL, 0, (LPARAM) buffer ); } /* diff --git a/CODEmp/win32/win_wndproc.cpp b/CODE-mp/win32/win_wndproc.cpp similarity index 100% rename from CODEmp/win32/win_wndproc.cpp rename to CODE-mp/win32/win_wndproc.cpp diff --git a/CODEmp/win32/winquake.rc b/CODE-mp/win32/winquake.rc similarity index 100% rename from CODEmp/win32/winquake.rc rename to CODE-mp/win32/winquake.rc diff --git a/CODEmp/zlib/adler32.c b/CODE-mp/zlib/adler32.c similarity index 100% rename from CODEmp/zlib/adler32.c rename to CODE-mp/zlib/adler32.c diff --git a/CODEmp/zlib/crc32.cpp b/CODE-mp/zlib/crc32.cpp similarity index 100% rename from CODEmp/zlib/crc32.cpp rename to CODE-mp/zlib/crc32.cpp diff --git a/CODEmp/zlib/deflate.c b/CODE-mp/zlib/deflate.c similarity index 100% rename from CODEmp/zlib/deflate.c rename to CODE-mp/zlib/deflate.c diff --git a/CODEmp/zlib/deflate.h b/CODE-mp/zlib/deflate.h similarity index 100% rename from CODEmp/zlib/deflate.h rename to CODE-mp/zlib/deflate.h diff --git a/CODEmp/zlib/infblock.c b/CODE-mp/zlib/infblock.c similarity index 100% rename from CODEmp/zlib/infblock.c rename to CODE-mp/zlib/infblock.c diff --git a/CODEmp/zlib/infblock.h b/CODE-mp/zlib/infblock.h similarity index 100% rename from CODEmp/zlib/infblock.h rename to CODE-mp/zlib/infblock.h diff --git a/CODEmp/zlib/infcodes.c b/CODE-mp/zlib/infcodes.c similarity index 100% rename from CODEmp/zlib/infcodes.c rename to CODE-mp/zlib/infcodes.c diff --git a/CODEmp/zlib/infcodes.h b/CODE-mp/zlib/infcodes.h similarity index 100% rename from CODEmp/zlib/infcodes.h rename to CODE-mp/zlib/infcodes.h diff --git a/CODEmp/zlib/inffast.c b/CODE-mp/zlib/inffast.c similarity index 100% rename from CODEmp/zlib/inffast.c rename to CODE-mp/zlib/inffast.c diff --git a/CODEmp/zlib/inffast.h b/CODE-mp/zlib/inffast.h similarity index 100% rename from CODEmp/zlib/inffast.h rename to CODE-mp/zlib/inffast.h diff --git a/CODEmp/zlib/inffixed.h b/CODE-mp/zlib/inffixed.h similarity index 100% rename from CODEmp/zlib/inffixed.h rename to CODE-mp/zlib/inffixed.h diff --git a/CODEmp/zlib/inflate.c b/CODE-mp/zlib/inflate.c similarity index 100% rename from CODEmp/zlib/inflate.c rename to CODE-mp/zlib/inflate.c diff --git a/CODEmp/zlib/inftrees.c b/CODE-mp/zlib/inftrees.c similarity index 100% rename from CODEmp/zlib/inftrees.c rename to CODE-mp/zlib/inftrees.c diff --git a/CODEmp/zlib/inftrees.h b/CODE-mp/zlib/inftrees.h similarity index 100% rename from CODEmp/zlib/inftrees.h rename to CODE-mp/zlib/inftrees.h diff --git a/CODEmp/zlib/infutil.c b/CODE-mp/zlib/infutil.c similarity index 100% rename from CODEmp/zlib/infutil.c rename to CODE-mp/zlib/infutil.c diff --git a/CODEmp/zlib/infutil.h b/CODE-mp/zlib/infutil.h similarity index 100% rename from CODEmp/zlib/infutil.h rename to CODE-mp/zlib/infutil.h diff --git a/CODEmp/zlib/trees.c b/CODE-mp/zlib/trees.c similarity index 100% rename from CODEmp/zlib/trees.c rename to CODE-mp/zlib/trees.c diff --git a/CODEmp/zlib/trees.h b/CODE-mp/zlib/trees.h similarity index 100% rename from CODEmp/zlib/trees.h rename to CODE-mp/zlib/trees.h diff --git a/CODE-mp/zlib/vssver.scc b/CODE-mp/zlib/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..e6f9f26a096de45ab64ed60aebf1fbc97a21657a GIT binary patch literal 384 zcmXpJVq~y1nfcuPzlLj9*7D~uCC~LWD^GZpF)@HaIgox}Tfeo&DaDWxC{h9B``6Er z3-DC}^DBY;Ic$Q-PpZ!wfaI%y{PK(q8`m6v1?E=+`8PCur7R*ggZVW;zM1b#_afDN zFuxYaPp;*6y(A$D=GOuF3{L4YKe*|G`Sn14N$9jSay=)ELFP9A`Kws%WKNjh2lE?& z{2#e9Bs4Nx!Tcs5fBorMX-sowgZa%s{_Up=mbNY34Cc20`RO7Ro0mNH1@l{h{6if7 zEa!(}Z{nFuxPXzt5_*Vqfc3 rBar)+0Qpj;GT#{5K7sj5fqV_;*Gu)z^nm%xfc%<{oTp+dR)hHfEX86S literal 0 HcmV?d00001 diff --git a/CODEmp/zlib/zconf.h b/CODE-mp/zlib/zconf.h similarity index 100% rename from CODEmp/zlib/zconf.h rename to CODE-mp/zlib/zconf.h diff --git a/CODEmp/zlib/zlib.h b/CODE-mp/zlib/zlib.h similarity index 100% rename from CODEmp/zlib/zlib.h rename to CODE-mp/zlib/zlib.h diff --git a/CODEmp/zlib/zutil.c b/CODE-mp/zlib/zutil.c similarity index 100% rename from CODEmp/zlib/zutil.c rename to CODE-mp/zlib/zutil.c diff --git a/CODEmp/zlib/zutil.h b/CODE-mp/zlib/zutil.h similarity index 100% rename from CODEmp/zlib/zutil.h rename to CODE-mp/zlib/zutil.h diff --git a/CODEmp/Debug/botlib.lib b/CODEmp/Debug/botlib.lib deleted file mode 100644 index 383ebdea6a1825a9fb74d206e95b48b43eb36a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1450954 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%0D`j^R1CXF354_ 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 `q9hjm$P1(wJ}1-|cl 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

v|`ijKjWnAUh>G$<*uYF!?^}789 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

F)hThFLyO9#I$4ERT#@$QeT7d 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 CX`#XZ diff --git a/CODEmp/Debug/cgamex86.lib b/CODEmp/Debug/cgamex86.lib deleted file mode 100644 index 795e32adb647ebf023b87b2404e72d99f4fca762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmcIl%}yFo6#fQKEHw?mHeIzD6Bl+v0r`tD4OUG`9MIsn9x13p0%9mO?W!-(_vo?@ z(2YrVZfep+6IbmM^bzPeGjoQE2nC}z%>6m{yPWf#pL-YAs-2qsD)LevY{^72nM-F9 z`NW`HmdUKl4k7@;fOY|du7KGXEib*#rqQ;nVrh4$Vp^M9dmEMFuDMgOYRA>q;fH({ zmQ~(2j9~;m3B(1MZ}!XE*55l?P#xvyW(_)8UHVWxzvgm z+JlIp1(DavYk!I995MS%VD0+40hz zXxgAjllZHxfavRZqh9S+mr^2sOp~vK`|e?xV*!bC50@3(BbxkCa4auCKPQ)A0S|bI zc{OOuScr03xlW@(qIpk`l^V59`(68}t1nkx=ti-;%_oQ2JW2Q@|AQNpu;Xn`;4oA@ zWJaysIwgC1dI-IqXp}&*fdL5Z0^pczi^L(wnt~!pGlm54F`2%E<%`^TjsG23^;SFt zU{Zg(@)=zY5tZ^J^^nS>lzIp__3+IxkBx+OQ@+%lt$wHE%Zf-jU%tq~8#!O@DGw%z z?K3iCEe82p$jhuN5x%US35m5bES_=bM!Fq~6fH#J_EI_uLCylZ-%kRFZR0(o5rwfqAN;a%PU diff --git a/CODEmp/Debug/jk2mpgamex86.lib b/CODEmp/Debug/jk2mpgamex86.lib deleted file mode 100644 index 408943a37cebea7c9f80515475ac64f965b41e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2186 zcmcIl&2AD=6#iy_g6M)&H^!KZrY5)nW*mM@nucndlysmCr8|=;LTOPb1kvcq7w{2W z`T#DvaM^_m7p`5q^eyn5J9FXUR4BFHWbVD^oNwmb@BG}kw^|=Gj@RO8V|thw)6Co1 z%;Vg&KI4mKuHf$u;sBz6o&+KVV5vposrSSTAZEC3sl2;Wt+^YUdrzyS-P%soeeu%j z_K)h_!?%STT(`3CI6)NNt1u5#+uE;eyBq7Zb$YGc?YnNX)7d;34&Fi8d6qZba=m>5 z*IyUrn4fTr5Xqzt6ll|00#1ps5fj9rK}Q%7@r3A9mt`B^GtFYc)8{igI_W>?&dq3E zX8ItmhCM}o5l_p+%lyx&kGy4%>%-AP*wQMizci`_isMf}yRK0XXN?3IDc<23n2@j$ zkg+_8b-c`Y^Z%Pt&BN!fk5=}iCu$6Ih`&0DNIXfkoAqIR#gh74wE0B1FFuwz7Lhsg zaXE=wrp*rp$ND0SGYT2S_!^7QGD+M_P@%$$6!j+UN5*ow-5B&<^;$zCS$$|YrOGzL z1LFp1_)Y$Tmx-tdG510gff_-v(d+i);}Jy-U9TdW|o9dszA4?eU#Fcv(I_S|0*Y71 z?y{wcao?n%;QlqL7m4J3@^`hhXDc^5^*?o{qw#%wM=*;i|II*8FPu3$JNb*KzHXB* Mjcz9SFAjS84bJ0USO5S3 diff --git a/CODEmp/Debug/uix86.lib b/CODEmp/Debug/uix86.lib deleted file mode 100644 index a8c817cc313a06c6232eb0f06aee4436dadd178c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2060 zcmcIlPj3=I6o0#b*wq7Ry&27#^ne#+=`PfyX|~!DNtbOy>3KlVb`vNK(ne2y0Y8SP z#t-1B;RAT^;MsWe6ZDGj&Cbj&QV>i#*`1m9XZOwT{hKEn&3@~6(|Bf%4=Zn3CELjt z?Qwoykd`9_4Fdqu0NN!$atM&RLh?eqWn9aQRjT`YwL070Ie1yC?AP~d>@0Y{UIfPc zL(iKO!$&R;rS(^b{w~|zs&Aow&^=}ByjyJsC!p4l+wOFBP6quCz|?MGR0?jxNFl6C z4PclAxI*FrF_!Vg2Q<(j1xfxU@Kg)q6F}5K{{j~A1=K12;9kn1wgCFCsFf@kzlPyy z3CL>x#&5)U7cu=pSogF$xSKIDDAO^{GgJ~>hKi(16JOObt7y4$)=kh9x3lNd+wn zD;dhB&|?7P`;oa^4O;!)yWZP@nXNrFy^6m}pG}PW$e}Ok4`D>o+|`t~X;4PMZS}gR zc+ioVgwaS^lM$qo=^*jC2$49)lEaaam4xKjq=Sq|$B8(^e@v4Y^e=#tplH#-$N4`h z=7uVuU_Tcfj4D9q74Vgxi%tjHbs5s;qG*a`$eQF*hJ2QUSSdqpBl7b^^bww6YIikM zcFfr~3MD7zwXkpeKnr1fulL%g32&&na-@i|@S7yW8mlW?ib(IfBw~6u<=uHa`Vj3- yNy3HwY0EZj((OrA>1ou9DT}BZM>m*?R8-M(#%yg}-rVChmeGPnHpJBuS@;8aeM^)8 diff --git a/CODEmp/Final/botlib.lib b/CODEmp/Final/botlib.lib deleted file mode 100644 index 4876e75892d5f929036e1b1c40027c24ef94666b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740274 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

H8X9Spcb4Zwqktfm zm}4cV5?Gqnm3;`e^5!(WvYKF3HA+Gxu>qP->N(D&}A@K zTO5|`#EyuE&87@BFjo~gP9@T*n>#atIBF|loTaR?x{A`EE=P`{(D`x0T-%6hdsY@~ z4AoXxK#Zo?@bp%?HWm$~wVg%N)63RWP>rFOqAyz-4As_@2Avd&=eMEpGU2(!g>%uV zCiZrs?kE-uYU*o4LA4jJZiyl9J`Em9Q6)%AUT` z<)Mn+w$8rVu=EZzdF2==IkskgeN{~f)7xN;LR4~#E9xpM(3$J4e_gCYJ)PZ=66{pi z5Zx>lyvfaPVMC}2hCyuSSM1`@5WYG>ow1H-jZs&+irKYW^);?mR28hKXe>u5uF29wg$S3Do}3>HS$pBkw+s3t7k(r|wS zy^cb&D6De82MSKnV%%F_4O6Yt=tSQyTRl(UnY3Q&#LDpvL~{=+lp3^Dqp;kmGz2S3 zF|MM$wD!UDl-h!-vc?LG5V$j@Ct`7BRUL;8daq1R+`@*s`Ub{v_e^h0Wo2b4W7fkQ zcw*4_sxZ>lmRo1qty9>T;`w^3P3RzzE@_9BMmP6{+SOMAA1BTJzAio!6su(!Vo)2dkK}e8cbcV ztfZkV=xi?P(L7SFEHAJ33M<{CYeqCbU(+yIj$Fd+QfsvZ=XkvVQz3?}qLp%`o?n7G zTvCDpLpxj+#_+6UOHZdv98^OTEaJ*hbcv#rg3#Q`OP4kVWn)ZhexmA0K6>)#=Cxt8 zItE~*B`uJC*lb->nsJI3#jDpMqq}SFnUEa1MbvZegsoc2RYYf}$2vBFN=RNQKdIMWxs~>OTtGS))He+7T@k^;1 zvLQ_{sc-A8(>fOGVuEHCP$Ev?ju1j7wG zm+M6@sy!-l4h4ja3AMHLx2iTFy%}l@n;C1N0@wGnMugI8;tr_C&;8W2qKQ<=1UeB0EN4L20PEN)JW~tOjj2giy4< z!_p{QOq@pbYzD7b3uDYNLZz!*^BD~N&_C4Z#Q?73z_RFlgKQ EW;(opiJoDmM2< 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 diff --git a/CODEmp/Final/cgamex86.lib b/CODEmp/Final/cgamex86.lib deleted file mode 100644 index bf2ad1356e6721c7ca26c7eee10b011306be84ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmcIl&2Cab6#g#IQn4`&)wt5!CSBAGa``JUjiI(pB;}`}bbX6J3kj44(dfz-@I74m z0B)MN>&7N7OuEu1@DcEwd*@t+QV^PU!kwQp-*C=%er8rSD&1=1W$3v%+^nc&rQ<0p z6(5#I)zV7I>@Wl%2pH!;;1ZY*)AB-n4H_G^oz3qROJ#d|XMd}d-76PMcJ;W@u760U zVB3X*Ty7MBPXciP<<|#=U3+`8yh%rz?Ni%+-_BQ>C-6pBT5Gj-PI}#su)W#L+|~!& z=7`+60bB-v@H}uqOdIsk4+eagL%{j`WYtYrDlVR_SGW!2itTu>h`SMk;aHx5c}6b7GVbvb zi+a%3u)M@+V<`5)Y%1RZa40tcb% zAv3C-_9@xhHv{PRMWY0g4fH{1X8_0KhDaQOtjRBu1Y<}550e~7SiZuYYW(lO3$^0G zhcfjyE1&V@5Yj16QxCCZOxCR+89xV!mAR1ly2mA>x z{Q)kzaM^_m7p`5q^k3jPcjm&ysZeUY$=rL-Ip55=-+A1*w^<)Hj<=!-V|JKH)68z9 zEi*f-PkN%6mWEmsKp4>DKqw2Wv`IX5pNIiO49CeA_sf;4v$K2fq>|sSmMhMSmsW3Z zRPVLkX47z-(qW(U%EQ;s1b8P|ah&^8KH0z`KnkDtOX!D71Upy>x%prN^ z;nEVfN}C@Fj`cYhXB0Au@ii8qCF8gmqe6unDe6tykB!x0r!nlm>bFNmyz!vsS1(Ornodf+ zY)CEF%SS1AE7!|a*1<*cdY63v^%`IL_OLSk+v7WVaI<`Vv_ANvFzK$8G;u9{m4de_ z-DOJ?VN9Yg2wmp9l#a6)buZ+`npZN MG`gAOzu52TH)nBQ^8f$< diff --git a/CODEmp/Final/uix86.lib b/CODEmp/Final/uix86.lib deleted file mode 100644 index 8043c355899bee9c426e396bf6def38b383e9abe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2060 zcmcIl&2AD=6h1S6SadKk+tByAL@)MIOM*jd{y=Zki( zFv-sf(k?h+caQ>rB!F=a5FY^~E|5GEZw1#1W7XPjquF9x+k4NO)!kO3$xefJcNx*L z#avMZ=n7Q*;m?zN9o-cWT_kRr;$uaXdJq^=w(BE4^ti0ECFcNg*KJ+wO` x377V#Bipb=waP-uov(1oD<*oW>s~I9FJa8 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

H(aD!%!Ve-pGb+@C_z= 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
lbg{qAFDk3!U@*a{ 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

|OG8#G2Q|Y+~X?fy#gioP#`lE5IY-^KK-P#Q4 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

u59 zJorMmGu5Br>I-k_!h?;7a5G?nxWYRZ?nIao(kU~x$zlIp1iSc4E35D>S3TYyNHYN? zfb(LsJ5x-6{&1kH^sSO-KD4&z)7r8afgl${%$obw;;l;eIHI9}a?>=9=2i?WB3K%Z zG=m)c`W$Xu{#p|(&k$}*3gBwmIX3M*_;kg`3lZ@7MVlF-4Ldiq_u{%e8DqQ@0zd_z(lnI=+g=yYhFI3t3E@r6ox7o8SI+AG~*fk{?z2;q!;n` zilJG_Xt3ajp76d33TAwGka^@Fd65&|CbNAZ_$H#>WXgjCT~RXdTVFn-l2h?BOJ+2F z5k7#K1Su4a_S;?c(KUdAXDy+#T0&eU>S_z&d)b>?(-d~0Nrk*FqVDx23QOfmy9+xn z4kxEfCekAgI~@cQIyga5|RWTy30aDUaKfp-oC1_O`wP0`i|58m=IRKu7kch4h% z>i*{vmt%Am*s#vkMp*@Q37l*D=G(rt@NsBapiYu()5(&u3d&3~Uxh)*mN5&q2f#l` z9=zm8+3)`LHRok8?dHn{Jhw_p@K4X_!6Phv><|;E>VRg>7(_&Y454bNaN- znI7|u7ci&ck4S-9I*CeTU2TNsOWs*Cxa<&ytoZ|11_!PT49vfHM=6dWJSM?W7Jjs!;51-!)IFvh#7nRj3Vv~k%BD=>9>kzJ+2s{6!|nQ$wa@Ngwlauqo2 zGP-wD<_m2f*9~+%xYYJ-vVA*j-=OWg-S+*v?fVUUtVeo910M0S8w;us+=&<`au8Mw zHwTNR?4fUfJ4rnUH&49`H($L4cM8^ty>;jBLdEHa_`B3GX7Y%YkL=5^FxcATsWW_N z?|#IJ_LK<%;+=}NIh{$D)*!aw~?MNHaD z!yYYD$s2KF=RaHynlq&**Xp79x*KTGVcq-45UO8T^v7FQ7DVu)KxZ+X5nqUCeS zkY%q+uGV6KzE?|iGQu+P5W`ztPtggKjwl`MJrxT#O6RpmfY?w_(_(59K)g7B*x|3L(UjP8))apy)cPeXLBT z3B#vpoWANy%N)dm9yaESQ)Fg5UJP}~Jk2GuRV6=CYNn~BrcX<4@wc+W5IyLy2O9eu zg28v5&HL%$J+Dmo#j8?`EG2E)+O3G_5U4?anvvnSoEJk~0|0v;hyFIU$H*66*^n{V0A#DNRH z{5@W-nS#zWeLB|`Pb+bT{J-RSj};NxX1>z3ZKaTsYg^k@?N|1rlIpq-{|>f zNJ_qwfgtLKrD&O|INIjIw!ZM%1w0clUGTPTS_57Tb=4AE+f_~5o5ssEQ_#7lPv_d= zX(i5((Q+LaBiCQCB0}3b*Qu7(N+BiJVp*k*bl?fyc-dwWI@|P(o^6JtW?O2u&z)~a z*?f+nFC23L&jdUZ_9|Oe4G_Xmm$LJ{W5(8Ts|i!lIj2wO+~R9xfFYyi+*41Sod3v* z2!-pMr;b>x6jE~TRBt)AXgrNG4V`cLM$b1xQu7@Mp0yk5a;eC+jv*jni`Bt7GMUJ1LheUN978tcui7y7blcTeTJlG|18wx(d!Ji!CTqabtYByR^g`98C&(vXT8VEJJZp5 zr*HIX!w?R2s*oW)D7OYWuQ7{y-AU#+8}ZXUwBhjjL&VOMnyrW5@8P$;eCo@$@_J}_ z>YAa|P4VwHogt~-QmD^6W0Po*4|}T@mf!w?#gZR0r&iNo%{l`&#N!}UF29JCp+fkTC80r?A7sdQESNSKw?gb3twf(OT*Y*!2N~=tIWeUZbjs_ zzggxtHYGBy^K=f|6Y&^NVq@(IDm@p0xp=Y^&^r$Ka4Fve2N0Ys>fV5dMMnVSbH{*Y z9hYs7OuW#YmM3x9a3IW*&+NgovS<5>T-y}-XSjd362dlGrg!il*X!2fF2F-|tQA8? znX20MZLob?;rj{h0(rPIQ*Z+|?OX6&g*#I{Wcwbseb2+Ey~(lg-Cl!eoYvOO+aHqPZr3X|j^(q!56Fhe#=AAvUFXbhWf_j28sBtPeOE_&OKs1JCcKX3JdW27Quy$L zvBRjYeE7lN)^=)tOM4HWaa)`AWkXYU7hXNIYAq$#wU$0zYndOmIGn8nA38>au+|oE z*ZwR#$hJ1&pyuT5<+cgbcza?cl6Kx~;s4&FB9O!#8)}nm}?F zUR9XTqpfNcRM-G{)EM+XDDM*`R5U56KkRt=?=AT4$y4voY&8XnzLh zRqJF~$U9YXcDi~GlryE>pQTPkny0F>;LcD>;7*iB$YruhG)Juj<$P5KcdlxLdx66F z%UIIC9PWI@4NwadH(xJS&%wP&jljJ`HWMvXZ^6HejT6?AkCw}jYDHA3P$YGX#cfes z@Fr@=u`4pha`$)%PM57UCcAGNv%{kadK0U#L}v81x3tbD#WFe0)7>`=#@B8c8!BBJ z8~U`dVJ0)c2?w6AWaQa6cP{RRpKlo4fWN6G=MN~ig3ELuL8O&jbQfG0)8l-T@6qJ{XaNciB})UzYmPUoF_?P`NMQ_D%zGHv`yT~mz2~LEq#s!@?|21v z4+gFqIW$}mq!W<011pAu$XrEGepJEgSBxC1Lm(ExHLXDk^(AiDL{b%IWQ4t<_*G^9 z3M1jQ4AM#~Hp>hRYQEd9m7eoHZB1Fm8 zbs1~dBig!u62!t`bl6f;`#Vs=gIt`sHhME%-`4rwiV#cqVJ zM_8YjeN>?qCX4F31)yC6Hy7>3&qwzb?ZqF|2h}#9_gEoH@#~p-w-{K3u-l2l+{n_$ z5D)vmZpJ2R^u!CLzSRW7OZf_2LEeEYNJsTf#sV5UC-1-v($HwpInG4`TCwy!X+8%I z;fWaH7jvL7g0yuDLwB0DmjgZoZ5+r1vzCDx?%&!n(8zc9ItI#fLF^u=VVBy+E)`pJ z2g0L9Fuyq^??*LrpnxUVK(}N#gSwO$Z3E?V?jXOEUiP}9yFol+Z4ZC%(Ozr&Xf5=^cXp#1$7f60SAXYzKQ@6pLuD%2JRP{Z$v(+sb&ZB#G8 zou_^acdmLL?m6mo=wgey0PYoPA>0nN4DL2n3b#{L!tGLVxZSE1?v?V|d5`)G{JrWX zxP9syaQoGLaCfL@;9jL(hr3U`5BJmRINSj>5kmkRj0%?%y4_In?co(E>vYo)%6U6c zuHnq-T&MF4XJS0%y_~1K>qk!iZ$ley9QzSQOBsBeI-mPQehdn?n`L%(^=xbE;ArPQ zL(-!iQtkrfKN*dS1q(>|mYafe_Vmu>FeJ$4rsgg3IE0a|I$n!d| zzA&GV+bl>s-@$$czj)-wgpMBOkDKktHnXF(b93JorgXrNBqdEI?}LVo#d`rKi$_7E zc$_>k?(GJY-Nw^UAWicYYXHaQpa*dD=>Z&zC4|)R{8)w=4B-IoMO0qyddBOSZ^El* zP})SA_y5eOZ8Iz?j4xj+vnE#<&Gk=l{m9#k<8#f>4xRkMYcX{^^gGNR{m-l!cu?LY zMVIt8a$yK2Wtw?e|{v8ojTro13AWy+Oq&r_QdknAgysfAZfBGxHhElRWd;{s0ltS!1}kR}{&h zyc@p)s(wHEKA|Sda+8yomdug&uf)bkqw8Gft!-pM%{p3pKtRoOvbtX zv~akkNcvFtmw>zszvm93ugC9Yar{`QhejC2{T2h8mf_#Q-GU+8B#L7Fl_6b+)DraV ztTA#DL`M<>PQ0nBiv=9FNaX}+F7)vsIpD%L73qOE2Zur2h&S(8Z{I{fvXli#m|hNW zRuJrxoBPZ=F%HYK7%LVmc>#L6@q>x>fV?_apON8zLZ$-`f|njm=N?M>ELGw714v$F zYpVgj;>c42w1#YLNfz9MUvVf9zgn~s!%!a%DyWiyWfdY+AZ#O^j{o*W8OoUQZ$eg_ z3W4>NIuO8&=q>mgB}Y*}c+~i(r^cVE<8R?eO_u=%S{wkkVEEO5QQ!LE*AP|#%0@KP z+aU1p?@+UEhleQSbgd~nDqTturI#{s80L~8p8g|G#h6N|~ps7$Nke)&#<`RUkZqGrzVkor4$i*O$Spm}1 z6HiHx1K1FiiC7^pqAII!$2p`<9!7e6A-qb)`C%j?=|ST#mDDz3%6tQ;DzpVj57h~g z8$cqne56+((}%od83sWhg+MAaBz|yC>)}PQpa?F|vyVvLJ~l1l$wtp%>>!TWiM3-D z+Ce|nL9&#c66;Q#Wh!(n1fM(H0%fw)P2IUmlnB`#)4+w0n1f!U)_f@Z8UCcgZ!Y?! z22}wxtU+-AUetgF0PfNN>g`(^5Cz~q4WJ6|hZlits0jEm{=CMW3N*TObPKWS==R*=Np7)*D`X0MW_JDw>R|8<`v!RSmbGnxXiik=ubX zyg*%Vc*y}b`GmdvK4y^XQE!TnDyNTYK`nBn^E%B6D|9ge$bF8{vr+w8gEfihqjO9$ zj3EiE#q3)W0A)S+mRN%Xh>9BC)S?DWFkplfCWx47XcB9f1hK_d zEw-YlSf6dNRZCkCRIFBQwRTb;r9P^NwzgWd)zs}l(`dCz)zv1{X)8Yr*E*{Hs-QmB-RU<3Su60ZYQlFh z)osSBl`3b5+lDtwsSo%eF~_QXgMPfmG$~!Fr|xt&Kihr_$*r`dw5?7qJ&qRHEXSQk zs`lGKU6Ldl)J2-d6d~Q~)1Zm1I=+j^QbDPsRi`6ep(iauy3^v+Q-^xOR0@iD)M55# z2(Xv{;*$_S46stcmFYI}qF!44^I!F{wSGrB&Lc4j^s_Qu$d74ck1ZH8DwpUk+yM{E zuPkYtcZivtXvaq0Ezy0`-w5Cr_=J0p0F1uVjA7;<6WxvQ-0^!$kyrYS#HpmQks`}2 z(S5_a7C>!2;^R?|COVF#6gDQJm47VJsm}F|l?1c~Pb`xnoO;w{-x>9OqGOZ)`Ztl? z1|0p{M)9<15)O${0*SG>w&OAC!+@c^B;goRiIhx^v7a2E| zxc3|x*lPA`J=`=Vbi73pk(&mH&bf#ixv6)TfW@zY884_dIk^H&{7*Q{Sjn3<3ZC>nH>+YY50^<7_1mZKJ zeJDJBylyoic4dtEE?H$fg`hD`SZ~uxqT@hSNmE`lylIx>l%qM;kX|snbv!rf{fvfD zNp6jwTcSvO0sl$RenTkHso~lGtf}*P9Qw89O>xVmiPqbIkAFd6Ja-*UtI!-iZ^{Tn)ZOBA!O4+{+O;OWzn48{)o!<~uW9K)7Caxob6)|EnXA7^5*w$SY z*Z+qWCdGcus5QYLN;FtAMDJFXO8yIzSf&q-<)P{228Dss&QRHad(a4_U5n#gH5x`+ zaeTDO=7QOeR`Hsg+dHFBR`MFpj%uDGOz#Y}Mq}h=E0`IY8-jfx%bdl%Gt?CILG$pT z>7Ai=XpGvc%~HZN6u&U+ukWe}81`N9>%H>c{fq*KLbr{n-og6V^$nfsOZOwWlHNaf zk7$c>KT{bVnhI6%7dD`tp2uv^rq~_!0h1w+RXj2gui=N!kY=b!ybEpo_OO;B;}Cu| zTAt?)#Ujee^jhE~s;iM3+Cm96^eG0sqaBwW9vnz^th|xX{SHl9hMYX=xz^XW7mRu? z(LE;2Bx}b!HbMD8rat1O+e#L_f1poZ1q1^RlZ}2^B4LVPp@BR_u+}&uiLctRYg%#F zxRS0jQe8(sIxdcbUR1ICbH^t|2RA{jhO@IzPo3R0%^SM$ADYYhO$sev=A^2`Gdgnz z))I>_wj^muC4T&CRsrjAd)_naa)Xt(PnH=lj5Vcytj{EVJg$^MG$5LWQWP!xlwH^N zDZ6$x0shUr86GIvfd4lKN-1J{xsH(_f5 z5gHqzK@2gU+x`(cq9AmuiO@BCP<_gGM`#Dg=P?L&qDT8iXnKS&8x#00h)_2yU7y~J z!Vuj!EUepopgJr4!=Tr#O}B!4N%ujf)T1LJ^aYSVq?;6>*%4|1`NOxbM(8S#&toO% z7R%#1po1;n+avUS5JjXv9*oezr~&)9M}zcYB;DsgM_ITjk?$Z6KqY9{myI zOBLfF$G2%ZLL(!@ZFE8F)K0r@ij z7UWZT8{|us&q=5+)o~Hx7PP?aERgT>3nSDTp>B}R_u2@p1~Kp`!8(x7?Lm+)!7n2> z1aAXlBbS2~5hLj~fu>taz6|nX_s<~T`v)*dPr*0oP5?>NJL$L~D5%Hfpve~Z5s=UK zi3t4);ix{pB8oa5FM8qdc)BtoSiAD8Q_f^Z`v-?JigZWL|~$hQkO z4g{zb#Neh~IwN!@<@Kj)`(Rd3c6z5k_vZ*#np$(92f8-sr_E%_XUrtz!Dfx&7&}}( z%ZykZ>rSTZ$GLIP5$=o7F$G$b&o?2%6l3*-n|B$U@~K;o6(Xp z%ve>eS$d!7RJN&3MjofTo1tg9*P%1rrv~X*S(er7+!4@&^2(v-y9v++v!p)TT?n4z z)b);$DW?%sr6xyjJqy01Wywt~LkZil|;o`C+|Jqdl;y#sy49n5R^ zM|U`Mo4XYHXLld;ukNSN_uW?L-`&5UAG%5=-+#H$(0FVqbV#flS{SMi#nwWrV)sH%i^)d)gxF^2L3xiu&x`#I+7SB#bWZFfX7ew{z6H(1z5{KE z-3nb2dmnmf?9ey@0HLyxD)i3S)zG_QtDtwsWOd@+*bkxKk39fAC~pJw z$=Gk8PsiSZJ`?*3^x4?op}E+8%zM9!rJ&EpmO)>LeG~d(?7Pt4$8Ldcjokq~DDMZ* zS7I+gUyHpAeLc1v`ey7K%!6;mehvL|tQY!D>|fA#V-op$FLnf!Hxc@`*eTHWW0Rr( zh@A!fFm@jFU$HsRyu2JVp0@*f%6{BC2y!%!W`vIpludp<+y4FWq_cJs?zoxQ3{R(2Hqgew zzlvRiJ0@oun$JDitD&4bor_f#NErpxbm5t^XHSsO#Q!euAz_MpvGi6&c6panNNQsp z(ht|sIo>w5gy*XQd5GO45MuJKiq;fG8*u=Sr36wcMHj0`=SslCi(N=SBNG^t3j|0? zagu$z4B-#FV1cA8EP_dn_~$_OLm91$GCFR59?OHrM8Akq2{##(AfG;|lsLuelS)x? z%~5hDwwvxBz(h?7g6hUDROO#0xXNkP@s3@Hps*6D2oqUcA?cK&Fv?tcmPVe|GVk%2 zM~@cuE3jFBl9|721J6DBc_N0QL|vHZoWpoZ22Uk@?fc2im5y>hPN~R3tNJB&NeNHo zq@t%i`(@|5X&-#c@Rj7x?%vnrf7G|tLEb^%_KC%)wzA!-B=Z(?)qQ?ZF=18PVSVMK zKI*udz$ek?W6hue5|%QM;8CU(LGXS9s!#kVtmI(zyb1Ai2MsA99`&0HW~m%~8Xqd` zlps{zq6+Dyy%0POX+G9eoaFXK>;LltTx*oz-WL4MNHHb{aeQx5u=G^E2}ogoXrEKbAbE?UT3YSUs|8 z2p*3MYo|PY?Sy>o!t}%9$S2UmlXhAEOIIWvjT!x&-MCRj_or<1G`0Nxt#ZHp$Xa^skaIW&Gv4)-Yoiwu9UUyGiCd+3-}uJL^YH!&U#}+s|}q(zndX z4VjA@8s_vmc~Jhv!Ftbh6-|d zy~VPFd~&>ZM!Xj@$R`){&XB=<)-tTaOfAPlyb-qwa6hHlQoDk$`(%uE7B+dQXn$8ssz* zE?$KnP~w+WC$d*kmtNNDtdcSW)M-EVSaPSk+(i<(*V98t<{-&qPZRD#AAPbm_s`u7E|!n@iEzFTgNGS-92jUSozfyF`OA}Dy71wGXV z9ZJZP2Zp32t>6_w!AAxK-#;76?nWUcRL@TtS{WS1RscsbgzFiSlYCS4$bhLe_S9T+ zfs9|*tL4cyC9MY?1t3C}dnngfNcm@)z(|?*DUEzcvdMhQmA$Nz`tj~Nu~`R!73fu{ z4^Xq{ms%xm)jqYVC^bu|Mk&3aqHwC%rk^S4Rx|<@Gq5t~(@5a)r)*alcC|h9P_1V! zbN@q!1xNMO%a;U#C5dI6Ibbo03>Oa&ElG4rG@BaKzL=}^ii}jVj&x^C^kS$yW{8GZ zpaezgCr$Hw-NUVPxYUuCoh>anQORTrx`s;p?$o&MAv(EW`(a_grYN99OB8Sq1w>PU zfa412ilT}BifRH@s5`rcd@IC=U~kN|0E#T219;(UM)#tuF2wAMZM|VB3{= zgyH)N(n3MZh;7#(P;u93@vboi+s{RgV6m^#B$br>7xyb|O#w%P1FESUsVZTUUAtSR zW4O)mJl*!12ydj>b8He z+>6GlYQJP+Rx0U>qaN6Ktnz%S#$<_&(-i6OKyuzqFHEZIOz*}^a}(*mnA`Skes(Dq z{h|3)O1$}?a^7QJ;;DTv@YMhK@*Wi?7!4{(;fZGtUW%SJ-tA0Zu=)S%93V% zj0R;-kE;q}3-sEa9W}+0TFO;wudSMR51z`q#_5$T)vK#A=UJIgjq9}~%iWbFFD+Tp z79>4HNz)P}y~|5Gg}Aj7{rwD9jbNnRtv9YIJ(H19@!v<=G5>C~?c+xqU$%ZPE@@W& z$I;gEi4(E}yZP?eD690N?2{+tK(LUusqET^wxXT>=f14?guXnFw=O$XAJWBL`>Jun z{**!P_RW=>!Z^`noLF{rzc`;F&bhuv&N-Vtu{co&Czi1!)K^Oa#fvHQNE?Ke`k3fD zKTdP;fLc?QE~OcD^0ssQTQ!4EY3Dli9Gx0W#7JPZG3vtam3)@e{7-L|4JAJ){ZO*u z?1z#KXOo1|yzeLWopM@ohVuHa-y8p}naNDMyS|{j0le3Y+X7x4o*A}$QT?!`Ii^hY z^Wjc;k<*m_S8K({|K#>tGEI5;TG@aIzYjalPPSn1ujABs*W}>E_EQ25(}UMB974AA zTO2+`8?O~BPNwtx)=QhKDuzlvZ1B+Sz6gC7AqnUBaMd6mcV2{k6rl}KxV=c#htsWN zKJE;Vwo6IZ3Dq_;>AnT^n;K~WdL(T%@7o)p9TEC8n+xx&BLt76!RFE82(69K81{WW z-?KqJ+DGti?aBlLcR(yUy)?}!LZiO|7)J=+w>Uz_N9eo=eFX9)*ry9^ zy&9p|ZehyDN9c(NeU|N@FX>GYD&*+EyGa^e+f|J_iprmu0efQkUiy-=ph-K-+J~bU znMqg;-Onzg+@GTi84d4+e%ft?rtCQHVD~5RA?|O`L(N>u;dZOc5$-dL$TBmi;7utU zV>f)2+pR6f*-_W=W>8@y?0nt4awl}O`ysT(?&><#EbyP^Hd5x(-LIi%*u}zUy0^d+ zowQCTyMv%p-B{>!Hw8Mwoe%w@T@U;vcN6$*cN_Fv_ayW@_dK-0y$hXfwk9sH(ADlp=*?~>^cFV@dYkKne$Ra! zdY8Kmdbj%-^d9#V^j`NW^at)O=sLGMqwPm-f9Q|hB;GTxQ=zb5~>i!P>gWHX9{j%F1`ieUS`kMPZ^pEZ|=r(sg^i9W|YHqvx z8uTsqZRnretx%5Dpnr8wLEm-1hrVYAaDQ`yc|+cJMbHo2XP_UtBcZX_LTFy>V(63Z z5_4HEu29JL$y+o+ zk8o9kz!l;Oi4pn)Zuxf0xv9g7iP`7G;dg#fNf61@O^vI4tPWvPfpdZQvoNMj2{ye; z*y9wobf>W9s8353f0lq4%;M+15%O~}ZgiX+-s|UJJiahQUUP-2^g`gD*K9R>I(j@# zzM=YSUb7vDSXIcobD$88`YwB4#}JX zJI!p9)GFJ=@@-Vr+Y<={0+F)MPAm`~(OWvfZc}K7d^0h0$9Vh~JE|~~f>>yx<7&l+ zLBrC|jLA3oWOdP{S74QTB5T~E9Xqb4kR zizfDXotKF)1Qv^wiBwI@cALm)Z8oq~!S9X4ok*MswE@ekeRCOOp@{m9ANBV{_b6T) z@|N~yU3LkI2#?b6^@;9x*%#y9L{u6$Fn!gO=+1igTI1Pyy#$6sqWcis*~gV@=a|v0 zeIq?52DdT^iRM%eoGStb4ck@EU~S(VC?0lxnePT;OPsh$<4`4*ofA6Qsf3NkB}Wlv zBm=Y*qu!D8;3fO~gs?UY5v~}6RiMgkx8p$mMJiL;mnpglnwttUk_0ZYXr8I5NNSty z3oRDa?-$d*RPFwX!$FUc3ee z#EYM`0Ex~AXarcZYk3SSg?+arv$9^hrzhFA`cC|Mt5=|@zTy)#)nhFqDDew~3fWun z+w&ZT*i`eGxiu#Ln>({Bv5yfAbSm0aiB zq=K=x7KlHyv)ALCG&e?o%|1Xi?=BoEa^pJGZqujXonB?Hm46Ge9qBe&p?&j6E*4Gn zOk{p_+RI%j`NbYyw#I;acl8}kZi{c>*-5w=zl{V@{tBOI}es2)=9RLV?L z`^Q6&<;NcuCw^(lsy;67H{a?Q(9g322k(TI&*7t6yEUOE`Au@v_7A=>6YLwaq}U&k z1zG`oD7|LD_Cskl`r&u@QR^LfCj6Jzdt&?UU z$)lrj`-zqBi=YyG^IbFOK0`Nyeqb?VFX{W{_Cn;g19Z2!l`+?PWr%vvOwvobb)Y-U z_opB))EwipRAp}af_zC21(jI|jscx-zGLJIO1g7Eb>{nHkWX&|$fu`Wy-#m{kWcS$ zkWcS8kWX)%d@a3MAfMi~5qb{f%lszD$K9Rfl1JL{dvplMi&}p!LVpDLxTh2_@mL;h zpi8XGcSLAIgnkL~WquCig}95^BD_wFq`MC!E@i&^3CNdJ`*e?<19?8v3!vMqtzM3N z-;R)kWN)$bJ_32c?)}&!dBN^agM50UA~YuQJtcCJtrs6|F36{+z1YE|obQ%JXeH~FVZ9%$m-`LTO(`82!^ z=Th!f=plAvB{s|%@rOB0!;_5{mLE%jk1(6j(x>ul2xxYYvZM?9% z-4MoleryluZ`_{H=iI)~7u`Y7m)xPy-@8)iR(B-y5AJB_%We$x72}${>SX?BoBJVj zyL$}!wtF1_6sw;w@UDhyCHninOZzIMBtRuO7_y|yQri}m zBYh^{#Pi7!tWOG9EG|hrDqr1tfjI7m$B}tNg_46pj(As9HbvH_tbXp;iwvgw|1-e>jO8FWwqjqZ}*O(^P(fm zs@hbNe4mV}0=yLk7@+`Rc7qo-H#F2Mz{)7VampqaW+NHzi)SsUU#MPq1J^!oC$=v0 zU5ZB0RPGslLK>{Rto)qEZzw-1pCOW2iZ6Xjld_n7{dO>kjwx^k;qr~duRjm3qY`(2 z64Nr4rGPt0Iy>xHXipp)c#B4S%=L+~p}uj@U*LMND;o6_CWA{bl3LE+1pX@c zt7h%H*j1K1!f&g7aZB+xBeDEh3LM?Gh(U1{j=F6;!$Pz+8-t&8Bbfy@eXCY)R?dY_ z?-(7=BT!?aLrXox;L!YDevTk!Ru6nafs)_Q4k_eEvFn0gzmtWBRJORo0dvwbv4%u6cfzVRU{z7}i zR(NJN5{9klDt>6I#k6)g7NsXptO{yet(Fape2mJq96~cTk>M0#s79kzieC`6iFi{I z-6I&W1ZgBl$%v1smhAYo5wQKCcul_sgm1zav_4@&+rAM``iJ~8iOxy#nVBvh_4`Ce zJ~K1y(g~yfoap!m-vZK2Wgo%1{pxijD*N^r*)RN{bBAZM%4Bo=YFLZC@hf`bS71Y4 z=jGlE52pHljj6tD;ZpdKz47JQDa+%%8+rhU^=%?+S!b(b?^2f?kwf4YRG&Rt>hH=* zdzpU5ddvb;ppq@2G#ab(G59Q)&exD8Zdqd0hCn)&O^&f#k|Q1=nPON%Jr!5eHr2V8 zRVds>5?DDKC!zAi+=xxwj}dQE5qip&!U3`(VBOe@dRFGnkj-YVE8o*?tPjGDoQONW z)kuQM_gY_)s@xtp5=VxhS6N5Dfe&KNyk4-bR)GD6m|$ruLK^3l{hdqAS@yD&Xb>89 z95KY2OIh=XdnuvRB3zRuZkjZ)N$o(ZEljZlX7hvH_qYNphP^&Ce+k>WlKwo+AwS_2 z!obXk=X=M-b7O;Cb7TKoG?UmS+J?^O6CDq;WRXavHr^7BJ-t9hI2~clUQ$G2wl7EQ zYBVU6+DbdvVdO3zV%2{vW@1@6kt~SvnM!`V8=C$!D7s{GE8SHq+3K>c8p*JfcGV`k z78i8Y6k(O!^1$Rr1>t|988_EN^I-*oLi+rh5M#v%#JB>COptca3bVUrloGVKcSb5y zm%qKMHncMmzuj+dqf-5x1)v5T*%x)y$YgYJ7uS?>QA8J(EGSE|tG2H=-e%Cbq@UWU zC~035%iW3>6zZI_75Gak&E9G?%$KV)hP&d+`dOw}x>;Y1P0T+Nbk33J_-y~y)3%W* zNv%gW6niEN#jNO(Y*)IsHsy<5>MK!3sqv*s5+S4x#a%Te)F*7%|I(s-rqu4fp@W)O z)wcCjr0@rr*ns;NROJUdHSBCY)?{7nOQG&f(y=P5?{f+ygL4$r?9FwRTWhC+Ix4fS z+7hy6S&W_3PiVT;a@)m*k8eZfNN?SgrjmKq#PX+=%xU50<#^4|*%LK)^pq{*6-#lB z!iUAaD)Fb7CbLtnDDYDy>`|Lzm@%uLf>SN8xcAch_>ksC&5@d{=$g9RMzQfh_2C4` zD-+Cj3esoStkS#k@v)3k73gM5e{AA`fE zEx6T^m>B0J42+3Ll)~u3RZEo{`3ZRCo=s_QSD!(WkMMu@7G}sojVX)O<863^hDj8H zlY^WOxXKnme(jXq`&k^b@ASkM>H6r_qWGYP+BX-oAow`3T)YOYX#B-5TxSB`kftlo z`ejUZZ`CC_I?T&dX8VrNdaIYxnM?Z}J6Ngz-JE-=hHm+o_KopTzo$paTffCexO*uT zVouY$GU~61js^Tq3)g&bvJ;(kxJ(LHd**TmE;L0qCCjZbrY@_IwLBTy5rIJbtt6T= zCFsJKs37kd2*oQO|C$#?FOgn<-tQzY5U-a%|I@1#n7ykl!A(urRg(%{WPA7Zf(5Tt z;e-8b0T(@YcQqMUs$Nqs$RfN7d6)HE55IGe#s z7-j>eNeu{sCWG-5&6GC5MAOS^Lb-vr(*!eS$f~qgpUs5RrGZIT8le+Fb^PVKlcAmg zc_!#6bJJAd(PI&k;E{LhV^m7N-n&Ui&Lgo`h7&gFZirAj`vC8|GD5OWaya3*(G2E> zM-npf;SP`7WOiw$rS}YI3$gOun-Pk|LpSY&$}BxuC%MI9deu8T1)*lenBuMT~Nv z%3mThnD4fCD*^dbN+WbE$fr^Z@~O-L?Pp~XE5_URxIaQqMd&qNWga}WE?hQjxS1)`KS`4#L<@h1=5VrxEcKXgAYFDk7!r2gObQttVyP@eQcNq8> zR|`GXZelvlu3w%8M8h}`%tD&EF8=;kU-_(ijF>n=n{bGu4ho0>I0{uMN z_p+mLAf-LVjfZ~5&4NyFmq5>SS!k{MI&_j-2c2wh^%SQIFuv&CfS%>X^M;@8E`gq7 z%+hn+FTk_h-n^CPxf7uEPNJ<1?pEjp?r!KsZcpB#X15RY%kCiP0yiAG&>abFF)_i5 z-5KB|?po-jCLs6~cN_R}6BBH6>%d=i_d`3}Z=hG$4e(v=P~MYe?igsdJ07~+eI9yd zY&7&6?o6m>kbcX}1YhgUhu&a9gx_(ufp2t@gIMkU0=>!o1G+}65qGN_486@s>pl8N9p+9l=Lw{;^H#WEzz#H8=&`s`ByepgC z2{aN{SRP}&Fm@=kC{_*KGgb@TEA~ZbGBz8!Ppk=gW^55OVPb;% zdR0}C&&en5q!-#o7|mJ|ChW&X-FFw83KQ&R-v6DEDh+U17RZqJ9!(b6l;ydtLVEOD z14i2JP4h2?;b`{_iUT*2D1B^JW!D@eQV>R0uuxxnu(A5YiIhnKF$IS$Y(yu$Ud9m? zHJmSoXsG5chN$9-=NIubk5f65yOvY8c1llJEJIZxX6#O_pR0HpCMK!MW4h_eesSnC zfDx*imf&L+1Ns`lCMj1STGojM%t4C1b_}#Nt!|`_-GYRPQT^ zp%#(4ztXPZc|hS!*e976wHjVgo`v-Z6YaTjv>B~IlWgn8}xzg?>rF^HQ-*cd(dlu^d z4YJS5P^8PHd_EkS&nH18Iuhz-)Q7tB=4Z~GH$RhUm~|1;{Xli=6A7n(mHd59S@?f; zk*vQIcU;q~3l@%>zhDZ{)#A*~CND~FWyIuW*0JXyK^7rXS*7%CB;?yD%#F9){>f*E zo0@&A{nZbazE#6#L2TtfS}iL!Rp;|am?aY(bxela^WhFAvmZCM5t-dv1+jg*hSp6H zZ%cHf2>Np+--E4Ng2;9a_qx4%Yob$UgkkJ;;Qq0DFu{n^MC+)zv5#$2-oCk{hyAOh z%&H_6S1WnCN|}Mww^O1+6OU#ZF>-P;2O7ErTe2(2_Y1bzomN$*mgzQ?UxJCCx z&p)f+SG>IP7faHC3U z;Zl`%Z*4g%EY~_>`EvD-HHzkw>^z${Xj>PbV3l_%zdmQbWA=T}FXu$(I}~xJ zx)*Fag?Ixh($}p=_e=8skKH1B1c?~J+8kSp9K#*H8z=V;=&AYc`{(XgCq`{dBRuaxn*SztK{d<6NW^xCT8tL1GDb<&rm4zQR zmp-Jp=znX9U@E9m82DK_w5k!dvJyS8^GkHNVN-Aj?}qV`nKM0u0l%5si;1f(v!<3A z!S59PD!0a;QpivUPcN!?^lGx^iFivm6!}FXxhARl8kNVhoVyLljAKHXL5 z>-IyCubWstzHX0$eB8f)KISjq{T=G#DtBMLLqNXtVwU+BUygixKp$D$Yd}8kZJ>Iq z?_Ho-prjLfO{wR*$D(l3+FNhFuYi60M}TfI z-w~jL&F!QJjRzH*+r$Vpf^=A)bS)s?gRhY)8(sc}AvY!?ndQ&~3=z3%H0%WfLUFzW z-Pdh}?&m&+mbk;|l>;#+DVaF2VPUaA4|a>8Y4-4N&nE&*+HG9Nw1wLmXKrbF7GV#>~Q z--Rx5_dqXoo1kBDk3uhVe}Z0a5^YOO547DKPrrA$9_TW+3YvA_gZ7xQ)2rMo;BUIu zp{rasJ$i!~JN>S^8+^Y>tKH-_gKu?@LvM4>K<{vWh2H7@3BB92JMVGF(P#I%6QSRC zW1nFVt$xB&Zy7qv8H<}^1oq}bu4=FCgYns-S`8_A(A z)6mq=Jbyu^p&s|l{M5pxITtmg<}XM!%~~`oH7k>wQBmX&Y2fTv5)_bcyKS{v;#rE5Uu{0&@v!$ z5+ByxEBN6+do4di)^;G+w~_Ca)QPQ>*04M&;WzlxY3&+*!W~VS4r;5H6tLe|jPqy; zGO~Y`tg)-Zu!TOX#D0o%^@tGFo1)Q3R``wmn+X4C#}vd-`ZQV17_wKPM{FSSNEYsT zAbb()_!8u*w6;%zQ)UorMj%oU+@^#aTjbEKc)_~A!_?n6e^z3gy$13mcy}n2GKY9c`vw?yg@I7O%y@Bcb-XY*-<=sRY<)o$VEJF7O0YFFxhT3N zNe`$lG{3|Q@JWSx6r8GX8u4-0`t*&;g{>f4gP@q%U(j*IilW_umolOfx_`5X3s)-e zA^8+P)Ui_G$UOTHAxpzZ-Tro?ZoB>oZxy0Uo(feh@GD$u0HicQKP&ADsP>Oji5{)H zsZ$dj%hgzws)u%PWw>Q{HnAOqQs~Po2^qFTy21un_Gva9$Szcj*uhSO-_BoW_7BAf zcqLjs*Z<)N(k$l{DD|mGC)6iHBIsL5W~8F^fo;=SJ@Az1IRmi0o}AS;yaDzi1k!4( z6?hLw%Tl2TWyCJGLXnzneJT|AoIgK_W%tz{(mO8EG zwS2h})eAZ>uo-f591{KH^Ezh5vo{Pz>l6b%B^L|GWG~`yM-x5@D;|jioFoghisGg03M-k6BuOXncyw&5h=vp3g z9dVU{=8*cRHssAXy{CZe!EHAmHfuIF;%%?>E-}2H5~SZ|vnAj@S@S14zKd_zq`@tP z!PSM@*;@n8{g{G1K{%>Cg(g-p$X@qWJ`IFbZ} zJ=%%VTNR^zm*|kfe!tp#DdWlEa5r|?bb^paDeYL5tB2!74%Il6=hpby3LQ@#D|oz8 zRj2iR@sV0FIjm~h(ld-;w$zMxj0r|elPV%rdv{#KIw93=W~A<>+|2GO69>*5gcCDu zpVQz=cOTvU_d%`CZqt_#l<4_UUxSIeaT|{eiaYt~nil6`JjB1OK%UD{)iq91hSgnX zNIoF{QR^ns^<%hlxvkf`kK(M=q1bh?p+19+?}gYFiHC zd;~&|G{{aGf2$S0N-tmHFsZNbk2hIE*(PgEcX~*4AIkECg49>Fe=vyY0Hyy6SdM6! zfC$o!3jZiqrKf{=IMMy#KR*7rUmp^sGSPYK`<`90bhDNyfr;QFiR^cS=YTY4=Gz{< z6_m6yl4IFH<+FbYc?&mzyzkv0>FnjR2MKqukApmK;U&(yD z4A3l4(v1g|S`6_>+RSY}sLaAiAYi!pULE;LFu?o%9Mo>%9*%sUihTE`!hZjKXoMz! z4z~2pjoet)1>qzl;C*ibRq>babfn;sgamwg`J~{{gP{E^+$PX^EB#9#e}R*^;|vErL)bt?n;@>NGD3wqsrzX!U- z&>JAnzxWgA4lB!$f{>F@2=d|f0Ud1Za%hB(1|4W_l@aO&`4KB?P&$hf&*Bv5Q?3@e zCjuAZTr7v~i|r%vEHtCk2R`3PleNJ~i}eEc4``!1fF8ckiQCoej)X3Bo4--7@G8-PO=_?mFm?-7U}u-1nhBv1?t{ zyI+BSW>%|y?vjjy4K5Ac=#GLu=9WPd?q=vy^r)-y`ckfGPP3ccGVlCzv7nT(Ej>Jo zMYCX8r2Mvp_>4A%s4^E2~d9bKS+ z6M|Cic8N-PE*{$aKN|!bsf(G)O0TbCFEo(;`EwrP`Q4o|i-?IzU2wQ_3)a}QG`~%Hlo_`>u-8=6HgX&g8 zL-<@UTj3*nRUP2$Fs&ewIJlpw$W7-~;VmdVN!@HDe^a#6NG#Vhf}X}ILOfUwVF_Hj zV)e72Y$h+>GczxaeTes2ca+Hvl%03YM4xQAn5aF~c?DWxtYF1cpUunet#$06jTl$L zb*9N;2SVKOs-B96c8tUR6DKu^jsgml&Cl+wRaQ^D&1y)@1KvEEiW0hO!soSxo-2@uFKcFev z*CrkP2CSp-fD&PWM2GfuquwWzwBHX=9#uEwYmjngFKSst^^;VqnrhW-S3`K?+~^PC zT0;n(xYjV%Cs%(}VKQ{(xlHj1qo|yO6MFx8Ail zJ-cghY1a(f^Jn67W83rQ=1mG&afQ@IQvbDn5~yl_sGPgTant*q=srMO0ybf?M7wme zUWb0yfUH=-q!I`wkB-pd2z5tjZG^T&NT;Dk@t2PXW{9*2^tL=Ug2pj*F$)n9)%x&D&|}Q%%CUC6-v}-;Q%ETUo?ybsqqr=r&z?h}>g0-{qwPw+ zlbv=VV_hxu6t@C;n!6o(x_bzErh5iDDOf`uLixYwj)#89F7`XywSnv0HPG{%L|D!@ zE2#6_-@xNg}6wCd$8HCl)xnq z7H;>J$&~GH44>wxyw~znMaTgv^ok(IA&v7F$ew_fH}BzQ zt1<3CQgQALp8Kwc(h}hbTqTDZS9_?P*5IJLcMoM^X;+DR%4TL29fr848aSs%g85~N z7Cl>nh(nYTk!0&&6>i_8hZ9X41orFCa4n*@!>>hz{8~h#<1?fjcY7!Kaq{Vtetd(m z>7^ez?hxBn|A1oB2CzJUZ|J#CJhB9?41;C+VCKD&6^(6p_H?8_B5;2ue7m>d*GNe5 zb|fA70YM%Z2KJ{Mvd+P0q_}@9`)C}f@JOxdQ{#^Yig7sE=hU5+-R9t!!AfR1eZq;z z+pO+;R;Dk}OK1VJ?}!h$qidZlG(O=>L{5{8BO}_OgL;L2`+E^xz@a1mlyd60NFgN7&R(DkQOz5c2)uVD=-GOXr zIV{w5s@;ApYwq>ctjXz8CmIiV(^3_M-xR;K{K~zRU!7Yl=2!BlnHNja)2y79IWA2( zj(ZRc15TjTw~(&vJiFXRzsd+s-T25>_twU{YCi(ibQQI4C_JU*O*CsejIB%TGD@XG z3(_0OfDcDGy|bC*aMAgO{sBiCY&$8pkt{#J&9bET6qK~eNu-jPDh-4Z{f#zfpz2{e{q7z~XNeSe3S)j~MCcRv%#DY$3iCmS-N&Onfetz5#wRk# zbP!10<+5*d-I;C!Y#&ctwV0+2HQ?MpWSbPa?Nm&OzhEAdXtKT(d}=tg;VD7q6cU2} zN_1>sa_f9MJ6>aY173-aHMsPgTZjgBHj!;%2i1tPqc~gm@x`HY{j63*i`)C@g)+DA z!Sjs-<43*KJBTSRlY3dG5Q}@q7tx<>IP0I8X=sf$8QDR0Hn5mdT#Ik^%p!VvmC$sZ zAKs`KgXRvU)^*gL&X8X%*{Ft8{RLce%%JjE1(LW{SVC~W_>#K?7<0uPi5|>HUw;s$587tF`0@I6l zeVRbq_s8!_;+bE!fcdGEle@+zgXC=oQB3>Q;m-^tnt>)NB`05Vd8 z^yYa_%~@@FcH8$OLxVBz6$Z@aHoj8io&5G0L#3<)a$V=>{*sv+w-)WbQTNuIS=hw} zetHojqib4Gc04km$?WOHU1t<$r|Rslq-z>iwWTI@jngs7r^wVN8i|CeT)ZCUs)G@) z*qq&WHSR83xI&_#{-LX4MX=*#i2fy? zgG~n|-ES0*zkItZ-`hJA|3Yup5{tM*u zoyb;grqyTzsLD$4EXeQmWFgTbDGz%z6y(G01DZmNq-y}Jw^S~PP#5TRbCdPATMTWC z(6bRbydXTi_#CK?aQW^ekdGldi~E>cE$CoFXGiD;kUn}?QjC!7#rcsliMoc;muG^W zbhXfg?bM3w^kPqwyWESL7?egYbRXM)?`x9C`?Eihimvve2f72G2ifKGpK+f9AMD0J z)9!5Op{7QA7*}Ge-=BdVVb%tZblbp3ndSAKXqEwgVoI&+-Pdv1;I4%}crHg2tXb?yG#<0(a%>>FvtI$-%z)(dDg}AW=l8DpLLM%d2{An@L$hF`iI;3SS0X6 z_j;g+;s;c)h#{+r_MMExN_G)Z97hdL_64!6Ed0_w!+&yF74Xgbjy75Y7aeVg*`DIL zioAmJ5N(`ClFVPoe|Kvx9sSH}kT&Z5LDW4in!l*wT<;ki9n=v;x5(%Bu`_hYp;UIG zS$!JXyYG5NA~u2K4l@)YW{iPQn6bd}A-YWStqn3S3>|f9ArGBeXlGtHuVJz7>9Fx2 zhCoFS!-OQYhi?i(CT7oB5SS9Qz+!&rltrlwGruqyaZn}%$qenQwHjkf5Md8xYi(g^ ziC>Y%OSKskh*>rVDa0=dj$?ENWeg4SQ6EUYQ_sP{i_*|{*@6T@l>?7XRIYkLD3_sq zBU4=@l(8d#Kd3~`vhL$0$wVd6~P%ryY#{m9lG^uZXAWA?)1|^NF^5T zBE-g!Hc&GATxMUco9$Z-ZD=_-JE^Gi*Dc$uTA`Xys9{sMZ6qnP+xd@boq>ia!A9l+ z2208_Si~ML@owgj$UaR|&XvAYX0FqXw$&6!Z~_8e*0L=R)`L*uJ?U`{(R)J*T+rf_PZ7II4&7QSWDV^VNTC`xut0 z&195eal07iMrp7thLuqkES~Awa+aD`lIEE94`uJE7~c|{Q;F^=u+cDe)UjPTewa-3 zybRz>D4Cre?B;?kpn7|%?-}eG(tDkE;o=MYj^vX5$k^*TT8(awtg*qN0rV0iiArPu zJ@AuNA&jbf<7_OyDWcZj)I|$$Rc8W+JFLK|Rj>r#E6Offf@_u8e+f>RSK}0}zJn*0 z-@)4a@*=9*c`#LGy`5C?`rqZjQC5sPsPA`jev@^5_!QH4$iRDk>^3!r2FxXg~ zofaP`QYMk4u&LBz1*4wfPzA^AB1Uw}Q~vaFLMeC4^t6`h$gzflx2D8$3GehwC@m0| zidN8(rP-bu^a#civm5>KVzSDNXYQzeT2|b&Qe;y)Avjo}^fNiB8X4H0yl&K%5!5dSo~m@AXt!XL4TCuik44TA$8^ zl|bma$@Fwp<9gn|P%rWz!t2~>F~yvMF9V)eu6C}{k=*E&Bx!dN)REH^O&2%HPc`}v?@FpuiQ7niNB%Fvdx9U{wSB{T%D*4p zZIt5we0U$^hj$GxaZ`54xKZzDcqO{;;uAvCRNFY#@E_CuaQUd5#&4qg^LR#6jLH_C z(lL7N%h378-}}@P8JWpwcpyUD56UKBTU2)CCjR`5}?jbgrSFIMxEZ)Ovuh?R6H z=q-khga+FQ&<*_MW7s>~Og4h9H#fzb&R^1mpu7Uw?|9x!HziFB>YEnsZ&1Ij{1EgF z{*opVwS>1EGYy3Hz7-(9i4`Zxqf0Hgw1RZQ{Ql|7M2}+pTF`$e2%eR9`kF>cw%6u1rdnlU)zRV**zTd`z{Me8pqIZ+P zpGUe_!LQJ{f&sLTDbAL}s=&o|Ai5u-W!hlsqjf$T7g;#^4Rk)&?CC&J(?rJQ(JC!& z2z0Tj11@no7{1)KL6^EKp;tIfi(hk(L$7qYG@>M?#lbSS6`FOgn)}<(s(Eq0i?$rK8obU!1^Gwv_Y-`KJ8 zZ{1$>^9$~1=!@<&=vH?o^kq{ee9KJX|Hb_am-k!&eYC@g9r6#iKeQy4f_~&Gp#L^u4pu5G|p+jTWLU)hd3>_AG1iD8|OUXn`0(nI-S#H}awjcfa zq&pD$1NT|z{;?U*l2{$|+pYnc7rV$@S`1%im|h=4&iwmgmEEM5nw1K*;+k6)Hu{ZW zsPdH>j=G)x4`rwf-0WRJaz!MgWczLQig(%U$zFWzta_bLW|(xfo*y#nyoK6Sq;M<1 zP5XhpW&UN+oP{k&=`CrHUH0Z#^(HvBj$J^XYMOQ#9|ZdXZ3eY@kZ70E9iXZfZaw-` z)wE@kX>ny2o1?u}5t&CCYARtaNGViE(~jk>z|GFR&u4Sgus}f@`&R}THx+Dikh-=| z+BR+pqV6VnJKM2ncl#`^Rg}RW-G=)Uy`6r4A|$mk2??+>fh(%{b9(gY;VZpozlTJJ zxMGpRT8w-5_IJ=KRC2v62I@(tr=-eORvTYo={YDhDA!Y{8w+zYW642VuwpYsi+NT= z*C@)wv=+hH(b6tSWlt%arp0sk4eQ*%TBT%CqVql~)92WtbGme&shE+$(Okug1CHj} zH>X%Flqf9UQmzU^M}id^8QE=VrQ|fl%M@vkw1O<89#d!egoZR))6H1XK+D6nO5ToX zCOxxfy|M1!y(Q846z__y5jis>nNN3c`S@>QsC1#rtEx-V$>#< zi)ooX>Q3@zuR_ygx$4?W$8E`$AkDTJpX{bUo(*XC^(NF3v z8{gQ&%5)7L+_u*1a;zAsRS}lJfl_}+N-D`O8H=-8Nfl#QHaDTCpr^G*3(aKiOc{r+ zM)fR#+>&j{)MKp6A7}QV2}e%y3~j=omOxG{j|y1rdSwbudI;7#KAs!mk2-qC7kKc} zw!YNp|F0+*NwA(RRwB8usAv{|eOXl=q_GHB#BY%ncN_utTOn5`vXUntKtD&y`f2Z2 zMM~wl3_2oK(B8kkn0u)=sE(w0=-ZKWTP0msMVFM&Z7I4ioz3rwxAj(cV*A1uey$Yg zs%XCncwvdRx<|%YCU{R)(dMrmrCr}wm;G!{@<+YZ*A%dhPVrLsaFa+wa)6EDAd`>` zgGr~kX04?a(7w53$L7=n=C#gF6bZ3~fEsQmQ)U+HX~Ov=`NoM^SpHG;#c`NSd9dUBcIc_gkD1y#2+130MyG=>h+$=yxtSn zyCo_1vkEs3o9@NA*@aoJCn)_VKis?q)Ej@fs(!BQn}el^|rd1p8JGO z4m4Eg_ef(d5n(d`d^Ng zA~&xJb1X>Wfk}APp_^9ie%<`-$n9Q`ChMeKf-cdzd@};$kEHTx?ys9$G03aYG=Th- zUdx1toA0iR(3%KsiqI1g(y6tNaTrzbJE;>vez!3mbcv;>ueJBR2vo&iz8TE$Zc;b# zNaBK5S@~qtq}$LD&@MycBP0_V-t8+O2~e^(jNG<>wpbo9=4Q20(iBp>iqI*zdDIvo z8PV{q@duDU4&0A<{21z&bk!j5I}7AXukWdE=Wl_08$1N^d!=VUUis)FkUz*vvI_Cx zw9D~3sYgKfTMIn_sx$N}&@EQx=RpUX+n*xzK8V9J+D|4ne0m+!mlZdEg$Q%XYG)O+ z2vZ}na(g~>Z;qiPDtZlcKiiuhU~N$1Ucu!+E6qV%&m@y4GLDjRr$RsD&VwG}>Y>Bk z#n2;cPjr!62`;m1z>aeFfse6W(y=B&dz>3Y+gG^HLO*N!ppn+1pLZR&RN8*$B-`&) zx%Ie=wyVF!I5FMExxv(>#vKSf#T^Pg&0P&W-Tf9?YX`U!%?Qe5cPKqI#mQvORJRE_ z&AkJiVTN$dGTXIZax-ZCneIyHId&LV=k5hJxSvBWaKD1iaW6wJbc1NkCRYf($Q489 z+mYOt-RHmy-4~!4HxAn3YM_hUY0!(^BF5W3Xqc=rfb z0_`yCw4Jo_KgK|+CT)EBBycsctF^4w$(di3N4u5CK*>qNcHOufN}A%e$mZ<^HVwhQ zT{kY{7tCtLoQgIWG?B@!MtU=H)SRlVggMIKsMhu~*%hFb64=p@%Lj0c`pl!sWdknS zuJoO5>GVS`+R$j1@*dBAmtva|o~pYR%x{~7`f)P&Kgit_K(E(#zH$5 zU;3mH>MFM|W3tCTO{kOGHdP+sVOcU1?vfxmoAH-&sneMx@K z2;|~N(0W7SaOz^vd^jK&MKbgV=!b^H>%7;{pFlD{mT!U+^*rTc;MYs@UIx2^@c7n~yHnS$=?v?bZk1U?RM=YS6~fscdTt>CoNlJao( zEc7T-SN*Je2Yig%0X^2`lizV}f9Uben{#)bu<^X#Su9x>?~I@C8@)O=j{u%My2VHVt! z@EO7R1ue~JOu9LlhKtT^Y?#%QY4mv3f{W%aIQP8y^_RG+ofuJ4tkMgtn)G8tnKHxV zhRk%UmzYqa`B<2hU~y)4|G8a$I8yYb>^-4T{C5H=B=q%){it<_dC%J zXHRjM{p=|up3X-E^gJD%!u03qBsyNC1`!)aT$?9wK&dZD$Z+Pf&BHpm+gqG{STFRH zg7}U{Qi+aLxEpV$XXZt&kH3>#wDD#5J9){T!n}aFBZg{rbXxnW>_nNqEX|HCv-tw2 za+`;3qhh?AvOZo;RWRvP?#jzySI(?drcH+Nay+x8NjsWy5)H1h*CzA>+MpKk$~J!e zlpk%;I&iX`wg5XIwZbD*KiiRR!-YNKVzvabxtgTV#iU!39TOjcHD8Vf%M;75C+yD- zB4lue74d7H$`&pQjs_!L#vRoU>1=QsahM=0YW;*uB?A33&o-$H*b!RQlF`SRLfR?m z!)_l+?fOo6*cPQosi>Al&>`YTRla24A)=-wvM37opW?MGd)PZx5J$X#qz(}$;HE8C zHKE0Dkz!wsZ!VhJ+th%o!QN|X<4@zkLElkpa>!gFNh$@O{Kr*Su?XQIZ4U;yZrI}{1`aX$(m=anYCukWzXJw_TI%y9{%`D zw90*Uj1849SO7tnnu4ZS&(`4M$qh)8#}>+rsa$FEO}$- z&v>U2XO7Adq-9L%v4SEWOl`zrD|O&>_P2=S}a@F!>d z11ao{BHnkonMFUs=ZRYFXUK{#-wj~$*Q=y@a${~5vh@{7K2rLca;ZbBLrRb8olfcw zq<)NFw!Dz8uOxqszx9>m2T18F$yun3zB(F4N=v!IN!@~!z8Yld`f8BZk56C}$yWQ3 z;vK7O^)6ES&eSw?=*L0B*L9FuEj73gsXOq~pWgn9&{hJo7O7OV&Pnwkb-U#9F4=LC z%j-m);*|ugoGSN6bm|e%^tDqK9vb9&x(2bnYC23_seFO)D^w34T`Vu#EtD&$ z#p)m^XUIpym&$8)XUjv4W%8O`gB*0BfBP>y(hb7B@ZbeX2vkzj%C5WZ~o2%ZS2 z#r=@{%xf+OWcdob`)xM=AH=Kiqh5>8e&Fp=ycUnWZ#*AHiKXdgRtjfc!>3*or5TAi z92tW95}|FFxbn|JypUi7MPXeUgn0UG9e@^)yJh3o0agM$P5qugqA*8-bUe4UHMmV#U zY?t%6hJ%Snw*I^uKGBB71a1WdAJsdJZIz)%wJxui~ABXb4wB z=JT3U-+nUlC;PX(7`p$}NlTulHhfUa|kgL;$x*@HN!^U7_7~f){s6aMNagS30KDDtvrzKi({VV1E@qb;`rWn8eFQ z`p?GwOjq%frnqk;lM$xu)ctArQ@);A8A2+TH(x6F-dc{{Dn%;Sq?qfzpqGanb2kI; zb7AT8`vagfnwt#Z0*&|5S{zCqCCHpAnriQ^+33bu<}dhz(TqE@vh*37j&k+ z5rsQp+|D7&yx(kG{5 z`-DqCQ<&K!UzpAMr1T(`vbqvauIL(R_1tXD+`(mz$6CV|I#RGRk3zHbs&xOHMgY+O zvT_}smHGXr&@ZxZza(pa3Y+fLlPs{s3(PIr(}i;u0n^Z3$kcUlPc+NEQ92*SAgrTy z1E5BVZ;*e{As2^lB?aS>exPb`=G7Pd3rj)V)k1Cy##OzMk7uc-k&e+4(!v-k^)fM> zdG&9w!H+ww^MEZ|ascDayv(b&ant|&H8|mbo{BAhPNRBR#wChgmT?)Pmr>_ADPE9k z+Ko=?hfZp*lj8dn8n?hn@m&f{qr2!7A8pa8-A-x-99+{5cT&wx>N7~`#n|_d(r@7G zaZ4pL{b6FgIaQ~lgdX*=br4)_|TNb)gpDfNNz>yIHXclx0Bk46mLwW zs!N;{Pm<@x2^Xz}h%;qwv6o{km0 zkC%6OmMix7lT-oXd9qlYubPm?J_h1NiW@_V)u$1ksd#_&Y;_;vYh`mkta$ZWDi1=H z$%9Z8vV3n;Ay~6XWgu>qGtyV8`ADx)3lN{DN)Vr~)*_B6J}28IC(*Ub!(tt33UrLi z*A2Q<4$|vX9pY}a5pl1&1aY6-5E_z)nYPHr*;e&y&_5-o>R%z}jeV1^_~Y@cBM@Ju zjz_#xH6z}o&P9B!YDav%8bJJ6bp_(jshbdgUfqiL200!5Mmcrti}HrgmlPjz`m$P# zc(-ane49ES@qejLBhHnZ2RZ6Nq-Ut#B1Y-Bi%~Xek^CHT*mgwRgl!fR<|HqY+j=f+ z=<2HFWB%MDN1bHdoyJ=NW-op*mH|9kA%zDb$f;Xg5Dx*VPu;o)f4T3SaItOI!s!%S z2r(4B7BH@2(}v=Md{cufTe}Fh8}>`B;2tii%k5usm_(KROAeDLuz$$|NL(TF=0J$m z=F+zZ1b2zdqU^GspAI8}J5Y{R@Rn4S2aV|VdU4E@UL4byOQ@|%=j0-oG`0IrNaAtp z$+~&KxPt z*;gtBiNHk0T{|8bTDvQ8L3W}vC-_j}REk3xNS-t@H_;s$SszMtr;n^pPjqLDtj|bv zXN|1SN_1zBtj|t#=Zvh+Np$Cqtj|q!=Z&n-OLXUttk3UCbkFS?SwHt+X*Qll+VRNn z?!>a}-K-YQtCDlFDz@#*UGk=`>D6pH%p9J(#JhG;89g9QMT*y?*|>65Di1$x%g2Rw zB4Uj@#Yru7QcX^(6RG3yOO<0THOH@^_ej}` z$W?D4eKb76{~+H#KxJUAyML-?v&%JOGuC?&%ogizR6)BNQ`+6EAjqLT6?5QjOm2G( zH!)g=(~9=2!L5!5_0!c0)6o<-2x7?_m)eYN9|VSr){~=Ef3zo|L3`8p!IyQgsrSom z>f&;JENk;}y*Ns|9DE(uKiRT&(Gn7Ko&@)jx3IX$$=tad1t%WH@{((vCI8IC4Ga*@ zVtw@5vvNfK*oq@4Gq2=U%}?=D_}26_m*e02a{0$QL+x0d?iosbJ9N^Xp;l)r7mM8C zD&JqlzQ0cN{gvbUYl{1quCZAPqnef59?D(vuS>7wgZnHubH^p9g{jwNXQDcVE;Fid z{BC5kpL=8)fEJD2%}NM-SgfQChy__r;@wm9>nBUz)woZbyqkvU-t#ir^Tv1nwM1It z6LRWv#kM`UV$`h6tNECwAeTHiycBJ?DvXzUSO@njcZ`7bC&*Asp1bVSpVH*|3^;iRX6w?!)kT^5!rrQbbGOm;-@5eoqS3gK*u@NU z;$2d&iVFfG@|W|msMz`Expi{1-}YMit*DB6R;-{ewy+oO({0<{EFZJ`j6YJ;NDm0J zozziIst73_^qq>eguN*gc5t>W?fBtQbHu60%~qd8 zN|$@3llq2};_WP*`vWKSDpGn~`5sbpu?oqShrX9eYBm&Ukks)=-7l#^q;8eenMi4Q zVJFp#l$LifQpZ4Ms%-9UhhJsO`iZ+Y_)3n$!5eM5_IDtqwY(Q8ts7Tax(u!}b?R40 zX$$c(Q`0^`Dn%^B8(;cH8y`5EB(zx$jpuV|4&IQ{sU|121}RRh*{ai_4I$MpGz^UD zCH!#15HU}0%vOArsYy~-BE``#TkS;Z05s2*j}adyHsJbBPeV5&rOTxi4}v3A-RaQ2 zi#}NOSOI1|3r5W?2F?;ONY&kA##t8S7b&>1QLJ zj@2cn8ICYB)mFsWc#xhe=WipS8h%BuoJa?b7?+3Z~;H!hc`b-P@hB` zS63juSY3_yQgtoj%M|aWZB<`E{7HG><|;XxEukI;qV7@+G|u0D6^P1u&&o0jvoA$D(s8T};jc zFslGeM)PE?hJ+q5=`dVj%DzIv1&*-2L>;zFvcZ=fUY^(IU-{`KHx zU}9hap7mfh*Mp-y$T|Y6svUtT?Fd$m2t&l2G;RlCh&fFCvZ-WgDbht9XRhua=(`}^ zF*LZEE{C%L2UmCCCGZXXs|WBYBXpb9cr~P_yM6VhjztCY`#am`ccB9ru^$}7fiR$w^`niq{cl2%OpWofta(toU@i##=AFtte z3~dtO7;988aIz`K{bzn>ynT3Gelsc5CK!0{X#HVg52k%^(Ei2F5DfI#KYjnQh1WA5 zKg!a_GIru$mvSQhTI-{ng}+w&D6RNwrH^s}{-Q&;a&Ew1bWE4R!MxT-;lN(yqi|v> z_fcNMUtu2weH|MhUdeo7q1Z<`1(X6Gg$sjuK1wSnbZ)nXyc?M3qg(oJ?P|a`eve}{+pKMlYtwUpCevih`hAcO(=EpUKx(P+N zE+W_o-k!oe?_hvlX$uc2YGyDMWRms>u;oM;{xuknVsesw#DjhIF&K}1riq+>#<0%|(XE()U<3(VEHX?}v`;Nk#Qn5^ zGzPCHP>$C0Ym#Rpucm@=G^H$;>psgM|9Um$hHWsg0y)y zkw(jd8zhE{7%k^nM^4_T`Wyj_>l^R<;GA1659SjNUkJo#IlQT%1LefF?}OF4vTR%i|x}WVR0Q!p_zL&)fj)9r@?rZ-0L`7*Bu4A`6&2 z2$_wA@8a8E!;0D#%G(MIN7K%MuQCPP;`4-PqBjjj`znciYgz|zNuu6I@wN^Z_CcpN zoxb+Ig|0qZ3>Pt4&bP;vlP7XGPBPq}a-On0O8v=j1Y9HgafE%ojF<&r_kFgb9u0}tXXC0mo&S0Pg`L>ovC;8Y3 zf}zJ+F$UxDu@ePz3xs513**wk_kQQ1HyKS&RM0E12guI>_x@TWBzVWMkAdQj8{c_p z;1;)LUodirft@|0AN!a)`W^T38c)yV$CVg}@pGL7id)vR2V!+@Sq~U4VzgzRGL+;I z`(%;BS}_bi{MJ>LM=5^BiGdiD?rBq6Otjvyr(~_WY)V)LM|T=cFpln&?sDxNSNHkA1p`sUR`*krbVt_(#;d!*cyuoiOdeyb zrStBtUF7QCX7nl$-QnmmlfB~8{Zr%WPRUw#K9}kS+m|_|3dYf$^Q6o5grCdP?%Zw( z2C5KS-3yX*=T@a(cZ2chUL=?>Vzzrv=wYltY@s(9y^2KlzXC(_TX95A_@!TW&+4KW zm|%eVFm$v&{JLA$KN~J${5^#wXp8N))gZgiTLj}+jDNXYFZ#JW7Q}lB3Wl17;2XIQeD7)( zU1c;qQ#9qehCS^AS5uECED<^Etqf=UG!xy()~w6OA;#|sEM42@U$%;5_j!U~9Q&{a zE*Ezy+~B>oS_(4eLBtkvW|Dnyc{9or48~)hvjwviaR}G5>!*F`fNP&G8NJRH`y37p zHUYP_8<7OBCs2;ols8=5U_F7N1mkE*SuWR6elCwE@ajGoSdZ93&Q8)aEEumR7>q~L zh+ya{Q?P@1cgM=VyPDo-G>wR+-064==({dNB*CjG;`X}mVz7%v>~>TNRp;yg7IogFe6-08);=5)1moC;HE_8q{9GPSr~ob) zpp`77Jjp(lg7MnNU_ADz5)AD#3H+@$MKJVQ`((ma3{_&Ea*&V3Uw3a1A|kJSs`0mL zpEF-Qugk63iAD}F{xN~2Yx|sI)d0mE6KEg7IQC%;T&|UVE{}bd0T&F^BesyLB>U6| z#%mvg@z|$UFnJ;;q@r)`*y!5lY@=7L*ykMB=P2MtdJ#$RdIIHWP1o8AX^h!p4B;=q zIGR$H%hl!Q@@QHITrkjz*g|TPG^HKG7fc>vY8q_*<8D{eYmBDLMbnF*Dc5%Y8B7XVVKluPJy{2Dn^KO}^hR4D0eLkQj89XSi#O2S;MH^$$o@86nWX8tg7Io1A>B?&(^nw}?`eg@=h&@UV?*}i^CIa<@({B`ztuV5TaDa+;hs-Md< zBCQ6_-=^m!X?nh3yqX$}N7FTe$wN#{Puu^6@3@*iWi(wQnts`6dh8&;61;6nIaA0VO&g7-8${FRjix^xQ&Y;(n*PyN2o!%m6^u_)m+Mb{ zE>D|s@fi#(M{FS*k~HlTj8{{G@o3sFm^{R6)1`Ahp5bcRXEf~>P5F2lJ?^s2h$ML1 zlybDDuh|M|jHgWn<7i4*F4yaRE{~?1zWr_5pQI@#K7T(o7>}kLNOhZrV6%HC{pnO! z(}dAX~+ ztbxn*uAj?e9}Xt|-PFM(`_MW4_AwZbeb}see=LAqqg&SYp@Cos2@e^)Hj91ua3a_8 zM{F_Kz7d;pw5F4SHlP365jzcO!8n>ymdj=DZj%RG9!=RC`dK4ujLk`!vPynU4aTGC z#ToK?N65V?fb+4?%CYG&PHu@0*G4KS> zeUM8*ak+lj_YDlsmP<}}Kt3^k|6!fARkO#m>I~!y#<42v?Q)&s=kiz;H=$9VE2Tt4 z2p1<=^)gWXRy7!pRX?FIP-PY#_M5u#xI0{{78`4PLabT{41K7LEE2r-*$RqlpY7op z)vkS7j2vRL%{mQ5QL@j@m;2=0wmf#d<-rMThKm@#omnMq=VHIbOg}vi`GRrmOif%a zzPRWHulIfu;!FcSv9k^g153KpvOYD8%{U=;IUu*Q* zE_N9n@(Rjk@Y;C?{&wxW>E4%ix;4Ac$RWmW)ld1jw*2SW{VvzzhKm@#Ras|k z)yw_%F;+br`GRq*%6hw8Q$heZ!E05j77Xz9L~GUUNmiwA`>kp)9;=QB<}NHmuThVx zFTQzmvuoAg8@)!vs+}n4R^a|~yRDGds#l4ebd&YFd)KXSYnD4rlZnx_EjE;7?@jpR zY<=vRuUHJmqF83;C^)%A_-niDMxF{(=*-RT_*^}(Uh`W zF865`@_O6!bNJi8PWWt+rk@v#w@nSkqv;KTX=IE$Mc-4Kzu{{7foanlMAHN`tpqOR zyND!sHKiP_>54HmWt$4d(Uh`Wu5Q!Oijj&E#5S}=}p(E2V{(PW}+@cPDWAO-{9MzwX#$%W;E9TO_Z z!^zt38wTU?jjsx3D?G9dYmf9@uc6bx;Ut`8^!lp!2A`oOZuToC+vgkq1)|%gpPhdD zr`(#wj2vS8t#gNu>&JOdVF0lD^cgN<{8nY1wN;n;?PKPP?Z_95V^!AMI_-c|>zb+W>*kUjqtA0Z;VZ@X04E#GUl>f)I>L-j|-w>;EU*{~~8vlmK z312oC(|0`2C)^24Fpy!8_hmlzC%3M94Hq$fi?Kf1V%Pa~Hx{FF3dXS*>*R8M$DPDGxE6cS==E)}*z6!){{rq$ z?}J5x_o>diKnVtpGdZtrdHx}{W+|)!0x__U$Ex1}#eFlV>#)2HF4vicix|K6a^iD+ zzNhZ(*IcfC!$pj?%vM85ZqvI(PAX!CCpPCEX?bvJuHhoaU*~&32?kCi3qs`Ud&*p{ zdkq&cey)2#2?pko1>y6b-{)DYzh$_H@pF9-lwe>!Sr95;?}CACdl$^mRAT&G-v=ca zzdu^cdvK3(r0QaF@CNeff5XuZ1usru{T|=GYy#-Ki7|i%UWaKC%snz zYYi7Mey;n3%Ua`suYBfpx2!K2E@J##KM^i#jcFU>SG!!#8!lqN<+Ls&p{PQgs~TG8p6QMN zDYLZLJu(6;zzFbl;BK1=ffBr{l>0$(d*!ak?>4!me$2=r#&59)gbV6OxMFSoA6%}} z4Hq$ft_MMJ%lhN}j~wB0H5x8r{9Jp5>jcCMk0+M=%;oAbT*UafFp!}v6d>WZDeqx= zx7Pfk;UdP*^)M*zbLM|LqQ2MV`nlmE23#Ib*aM38gh79s8c#SE`GRpgf$iaPm1Y3o z1g|IT0~L1_QE^-MJxTKg%mEAsBip_PVgoWTp;bgICUT`a&5yq13qf8$L7kL4dpvi#$M@mk(s zJeL23VE9tpnYhyZ_gR-?n6Z}qs?qBgVtJlN%P)wx=i7Ymocn~xISw(y^QSGZb?x(W zBZnAmv-H^lLzG90dFJjXLDToCiMZ#+FD;UWfHo}SCr(f;$$nEum>e8D*W!xnP6uCoOK=l7rA;O}7I>mL94Mba4lv|x6n za!uQ+E-TCZlIt63hfyN>q4)-mH2V~AFD!6;!_#+u3!K~I{&RcXTdwYNjT~a2yN7GP za6ugjJOAtUIWE^?!$pkW&IdpV22RyX>eQac{>SBNG+e~^?ff(-+Rk6}Tg>#+R^$uD zu`{)GxxPQ$6e$0A`{^^F1Ow;8EY?S!PO|f}f+@gswHQwf#=d>s`>vgL9Hu2dD|Y@o z?98uw{H?^=nYniujOk4t8~#otV@Q!O=ZH^v>hVj%MU3C_zX!#=Ke#Zl7niWM_AeMN zV*Fgs370MFCs+UR%P!Y@hKm?K7ba$pZ~Qa6?KYQd^5MutAO>8XQQ~<}f`NR*3=P+w ze4Wd6gyDJ~Il9*88;Y@yr+?A%y4~;hx1eeFD&z~sX?I%R<*LAl;RbKJzW{PDz+-l- z<(^F%pZ_Qr@Azymp7Hrb!Gs~?NIZ}5=dv3<>-xqeMz0rD9%jZp@QotiwpE}|30{l+ zN#s~Z`C#hzv0$+^yV=Mg#&74Bgv;8w_seVk>2f_`xQNk`aU^c)j0OjfZn;7L4QJ^dXmPyPwOmSMXP<4;s>`#fwQJ z+v|eiVW+uxx2S7=$v<50Jlw%XCUQcE8NPScFMj5hy4=Vi zM%yE9D7wFs<4PaJYaiB7+vi%prp7)6$QO)bAJ)?4vbzv0#XrNofxoemfjYL8UQZeU z-V_Ym)M{-oo)O^hf_XlLN10Zt&o1Yq{}z3R(d+Lj40%U9Ugposx-+x%Tw$F6ydZ0j4W1mW-1>@Lvh%0)p8JIWuu8&btdg^9$F19y59c z0(s~u$HIRu18!FrSR{DuGfCvw8TO=QH{owvvsa89Vl-`Xt`VUi*|&-dikz7yd*5Sc zykL27Se@Y_#&2h8q3!%>zr~E5Ij;)Fu`@Msx$g9HdHQKc>JtXqY7^jz*!H@+0!jJC zm*37lObaooA_v3Js89`^O5}j6*k&A$91a&%MJxel(e?WX`ious+?S6`#=b6mw+ja# z`!dWI*$u51XCZk{5d*m~vYZEO^?1p#!Eo49g@Lv%`LerDaC{>^`QFvj*EirJ543IQ zPpaME=I#wXRD0XNKzH2F*@bVAwfD9AaGia_?LEn558;5Z{=R`BA9gdpNtRT!IYrHf z91Ut~@9yay+JX<4(WoD45EQ-%hlKcR-`=&(BbH|Xde3h&#p7gZubsQ&u(PMJd)hiX z9i#AMX>XfI%??pFp7U0L1G6Jw3Wrxk>I{~LXtO=T=i-f`+9~qz~4|>l}CQOjiFuRN^$yjlRmw$Ctlm# zd!emhl~o2bQ$Z1286R2(_ik+KtnTgVqwuP#b0T%9ou`Pd#T^K!N-GY2>l>)=8`#j+ z(|xh73($a;l*G!yv4Yat@Ulo{eRyb~d)>PDK&*dwaDBizwaK0lOMyqcAHeG_6>mn=q21=V7qy25&12yq2x|)rVa$nht>Km#m!ZPE>yf=v8fUTK(#uYEZ9@m z-8)#saYzMCl*ELpFgyFBTP2Gc-l`sylzNqb>X&x=Tu(5Vo zBwR3Fllj}pGujj{C>D3L17%THr@!Nv4pm&>_1eb1?%pBFtRKeYhfxg1aBGbbptQQS zIxPO}9U{q5QUtTN4VEmFM(8m%$5%0j`^``)6IPW>SZLanFb0OrG90@(5buOj^bN=` z0H3I_F44Sxc&NN@bMLqUDhA?lmlf`^(y~T+dipxNd{oD_G^*yR_rbtF-lmE#5Pvr*is@GiVpK6)lP{h_@GZ z6c;TplQBj`4mMTs?se;BIH(g>6C>*^Z|QC(6)S^c9qYwI9fe45mPH$9U#knLwcQ(s zyRk4xqPK05y86-0J(ymT!P=JbF~#U5&}i{yC`}gCVwQs1^#0Pz^jXf0SSe!JlT_vM zzWTl)3}T~MOZDQEMPlm0_w-tf5|wVN6?L_r;R$WJ)tWqgA$k$oTSnfJ$co~P?R|ad zoxK>y9dp*Bx3+I-=6u;OP|3BY9wfXYPoWu6tg|dA_RNdk;$m)du>gxNHY1mGNg0uN zsx(|xYG#Hc3ocwRp71Ca`&22E z-Bw;b3X0DVc_z~4mW2hK(ov?MF@ouHRlx$^dbF#{%Uj?Wr|@)LM@N6X9>||H#W?e^-{{3+X?$pNJl?DSaBJ&9)OB}u_DEM*Nmj{W_buz`8^rVw#dV!D zpD@=61j@=1wZEsWSJnuHRLAM~KJTE3ldW2044}OOQ%83PCJ`>w?7BpFOgZB&NPM19 zyr4r|!CJAXYq1#1{agBt=`mGU9A6BNZ0l)_W0Jx073(jjvZAM6dD%89&^~G#G`Zi! zYRy#?hY-ID`CHova$E@=T|P673be%A^px%N)#~2y7ls1TD~!5uLwTfBmLizChako? zpZOZZj$1Ua%-?1$Ru*2?Q0ZP6Y#8nt>c%PbW+~vT$J*fa&Xqw~O}I7^tqj}CVysHB zavSQyVw~e|$-=&Yl7&4Ops}hL3fqP#E;0>O66syn6ZiP$%5zF-`NBdvu&&p_+UjL> z;Wh$&ORBO;3}}tZ+@euZC;YX$7su)MVfBbcdEM>~BH=++Dz zRrM8Puz2M{`HJeAYNv45wI-%~Rb5@}7|j10<*Vu&#t`9N$NG9m)Y)dyJ;WISblu(#rDDOtOKX;dTc>xAPfQRW)9;t6@dAUPF2`m0h6m*VAS?8$H%LBU57>TOYj` zvT;e~&L3_zuR^MO2fI7tT%~fj8MPikPxq`Zi;IkTt+|WFU2#;vgr$A$?bt3!9>vP5 z>Knyg*wQOmh|#J8Htxa&Df$}z(p?PJ<|xJP!lia?-@4d}f$kx#2Cnkl%Z6xuxU#XK z%$4Z49au{WFw&tIL7fwrQ&Z0;yrXqK=Z1&aN+;^NaapS@&@hHGl7BVnK4bim^|CbF5$ zfbIUnX;Su~j9y$LHV(uGSgX6c4CNKIHDU2p_ysP# zIlWzgCej`~IBKjfi-zl}O3Q@-SMpAkoViA(Me$Ir#i*pIdig+Ke@mY%y`?3b#i5x| zs=`&v>chG^F@19&*3*WbxgOT>4*!^YN^7v;V4%2F00@>SK2UwQu6$X8#qeVu3w-&d zk#K!=t<4{Z_s6+@_d`m<4a+KOET*%2aA3F}TeLn%ItW3O>bD=OLT z#?AM2k>}il4Uh+ujiA#$mh71Eb_jl;!t zxB=CLyGg#U-uy55v5z>^AIFz-aDjpQViPZ%H{gtk>%;XCtXh0V_9`~Y&}`1ppWAWT zT8qR~RvoPld+!e!&(<5A*va$lb-JtY(z0+xw5A?I`lzn~Y5vm+5%SznSb)8y1%-k5q zVZ&LFr*G2A4Or4C@4-C0mWv+)?zd{(=yH+q`#h!odMv*DbR2Hp;t_zc%IyOGw~;^l zcq9-GRqjc^oMCX|mJ1nW2GcD6j<0VV`QI|wLzVjgFi#oWc;!Bca(@TRo%whW2)`5@ z0yCbzLnkQp41NrUD))6@J}|iP%H0YX=_lebEBx-lFNEXS$18Wr$8cy4ehh~ycRMiG z8{By1vf*zA=H|Kh;L=GvwqwSa<lnxHo~FGJqegI4DL|nmH|_Cic;s`*_NYF z@>u$^+y{|=*r`(NAooi7$iL3~tc!D+fo8;7$B z_Kfat^~kIQ?z0AaD7$(LPQ$O7=<)H_bQ;y$*2E)G@I3Apa>*>hy+Lqet(ld`k zRCZjRkJM0GULUE8HXoPA8bsw2Jve6gP+tve!gjFd(_`lAVSW9$uZg=t^ZVK_SgdAc zv7-C}6kPIn#x2JmTi4w&&^OrEHIz5E>7={{&A<=+;Wk@8rpEz39WyEG9F8$+a&tp% zb$P75q2(|`3#e(D*3wj6Ss87bW$2UC6iqKJZCGgq1g(J5=Ef`lt3+s81s34ZNcjvy z!RMbrS`1`m$_f;EU4;Q<2dejn>4!PEkUR&}g4a>F06p^N;OID=59^|rU(^25z ztC$Pa%$BA|8T3W1>!Y=3p!#Tz$t+Tt{>(y~Q#?9nfz4SsI;Y6yEE=6tY;#T@owLwZ zZ?T$Lzq~Hyt3@*%XaIGm14ZjwnpUCGO$`loa}0fw$~N>!Exlt^V{N1?T5j2bV5_Re zHK<`b#;}FdVQl$mQ_QfHM;mJ!R*^A1>uV@ahsn+z|4cCIhgMTJcD3~k##utI0H?Jy z#qf2$mgfG9BMT=!kaan5{R*YuFH_EMGol91lg;h#ZQ*9=Uf2^UVs~k)9)Fsx~)UYhi zKqjlh{SZnOgcUNy72>ItPsmhPh+8#5u=lfm8JHc6p;14{VpBCs+f8nclv3MhIopM_ zfXdLchNeh;r8F1GlPq~vv=#+Xd6I)_szz5fMWZrWks88CEpkh1mpc+ttc1qpO^vlt zx<)OqaKDPiSVeVHa|_3BO-ci)DjKO}#~}qh8kE{7{8svoWrkmYj;D2^<(4_9$lSQR z8H2oLMn4crZ7p@AI8+6cmS}CXG15}C$^!9`43I0Esv9jZO@Os@qx$OlN()REU{j=0 zdKM*4R#R9;Q$tI%OvZc?r(lX{j73VD8=6Y3#Hps}NS#l?3{kKp3UWn5Q<-C(X`*0x zQ=}U27U;@PSE-PS5s3o;i^;^S1p*BoX=%ZjZ8Ngm46F_?MOkyskkW*srK+i61zm-b zW~wZXs#1ekBm04jsYA%ZN=TE@2$&5DD2jBp3@gmW0lm=DC;90MEFFWa7hl9dmU1x2 zjw)J9Y^JZSkqS(1Y{HO;LAaLl18D)3scGdbya8RF#V`lO>l}Orl`ThqB^~~%>CvX9 zh9=71q-EppSVg2IQcKq&4NC^n%9|P*IX01m`GX{kiLKG5^6KWY2F#3QEi^Z?F%S!f zlfgon5yHR;zIu3RtgM{IhRY#jl|^F9QM>Av>PRh~*C?l6%z|FXa!ZKH3WYh7FkeTw zh^T64sy-Kr(JQ({TI%}PdOWf~3lIrI18J%VAZtl_NF-oZudR*NS0aOx5G7y|S|97_ z+e}X-5S_#o5H05%LKs$I>tmhRWa+>jB8kMNVtEpY)iy-RA&^!jF%3(R2>L{IU9{ZN z(uEc&YpHIPfq}Tmx**I`b?Dq>>}2&ILqJ)J%nfW3QqUxzlw#7ZA!(U_(ktp(W7Xxg zQCfm1e2^C?jA)iEC~Pu7SvIZ*!G`%C70_%LB}Dl0C@GXZ3B4SkXhQ{SPtjalwZ!xY zNY#nL%1qY)6>A}pK-!}P&*b1)u$BnjfJnH3L9)8G+%ze-Y*j=?PvS636Ia^+hjx@m z7bR9yVXbH7r8@FfM5<-bVbPPNj6){7=kj&Ym z&{krmRALlymZ_N_Eq}J=FR$@YXM3eCuu>26NOg#Zd!#O~Qgggg9V;ARt$=09iuyte zK2pG_tdDw>P*E?TT0`bqEBL{4Y<(+n>E>ABXj5Mw@fcHIA=)bB+4>5VqXJESEJg)s zH9ZLz+DaTJm8fkQMLu50nQ^knzI*c5Jwl~Z-oyki(&GZn`EOUWoF0UbxJ-Y&W zU;t~0RC2zu;tGYeRbXT#3KxMyl{WCwosCB#mfD6`iHmkSkS&lgK)5Xs^BI9XgZb?QW<0~hwpOmw$Oz}MM7;!DY~TP^)t*3h+GJg$ zit5^E^D0>C6dz`XPR>C*h`sHb!${sH7u`n#)BoIq#k<2 zkBG#IjWS{R#?ppJlQU2+HIvlxr~{p*p|#b`EmB$AOlOH)Jx)1pd$zc3)$(#IM9q?# z#ZA{0YsQ{PeWh)_Ox=7PDHm%*su8Ix z6%UHaB^xtl=tiXfap^$05iA`zBLiL6K-soWl}evtf$jiL8F&YZ!kZ(lQOdC{k5OC5 zT+5f)X}e6OZ9K+mn><@Ld2^lVKomGz)9Ub9d$~3s?J#X!p<#}5tbVwkUTobi$4jrQ zt+Vta{Pc*e?UA~+)n$>U<;^q&3q4Akt+^@!%eO>Vws4Kej9is1y49D*>KcpCTv*aq zl{eY!Ic|3ODs0GAm(?wAt}f%kkK9LN!-EC`cT;3VIo6}RdS%Wr*pERDc6u6PD;k<= znj5ioVf`Ra+nM!fY-n&SgTbCW6)R)7l*X#nc8BA1cc|w2Bqmo~Ea7-PTwx#WNKkCLx+Pa4P05|!d)#qFV~HiWMYHkWejD4V+E>^-eDdS98DOS0YnO9PN7U)gJVGo zf^?*}a^9O>vB3|A3}r*gohW)5pA#4y9?)+hQM-enYQ^!G1U6YaaGwxQFpkL}VtCZq zG*-sk-qhG6s_4SkEJc@IyxtKTq&(H`Fcml%of1hw^OBaJ2w9SP)Lft)4!>J}aD z$FUr+{vqhw{^_XP!KsUp^ zz!)yxgIU*rI62mbS0cNIVnb6w$%EKX`<9{jH2iTa{z%=7ho@p<=mfgMRC^zxGd9R- zd<_yZN4+M+;#j?mj!kU?Rc*a^s5d5^kn++ucMRe26YVwkfm^(Ws>cR%4C4%Gb+Nb6 zfVJV(H55PpaD@=!g zF3{4}x5fGg;$5s4r{F0auwfhC`re8%9jLz8O@i7viU?R+E~d(s195?{rU9Q%!1$`T_5&J-EvWytSqS_GyrqggZ1- zQH&c>O_I4g(Zfv0;8PSe@pwNUd(Tv@kY6^Z(Ph!r; zIxr_qozvW!7|PF1JbYtf|L%K0DthLWXLe@qZyH&hpTR?4)V95$9eajDYtCEsV4^lZ zD-kJ9gl^ceXDDsQ+ppY@{6r)@u`y$3@x#kkBpx{B@B7O0b9hg3=WV#1j@+!omV(66 z&+j-mlrpk3_0_J#skf25DztNHQ{vM5RAR=??52^W*8%9y3F(|muM3UJngO%b}I6ZKq(`+pHIw4tj^CW9hs46$Mbq>#5@>x~e(}77 z6ntl$3o723PLpo{r{nAiw#QkBGgK+!O!+3_47CdB6VzJ7vs4e_*{Tom;c6q|Bh*h3 zAF1{tK1xm~%T=!+eTw?d?DN%RH0=qvhVwfT4~b;$nCp4}KZ}lJ zZsx}6OxebnM&N9do#A{YsOjKluSuhe;o)EFWz<}I8B^NJSQ`F^LkF|*k9<=nO(n|n zLzzDbhqgUG>6b6V(0Ka51Z+4X6-;vf=_a4K*N)--d}7zS|M%(s96oHtC|*~LDP1uu zkdx#ss`MHUGHzs~o^yn#%CT7#%J44kwb026Psm;%RnP}Y!Qe$h*XEzwi z&q-7)PK2&3`s%qQKBXzG5g1m7<@btx~j3&NKZ$Hnwe-w4>n{ZTC+z&R~@WOKUk3kzUY#dFMTvo zF9o*bXN_d+LQy-b0wW;7fwlYUdclEdbM2Pwebg~qos0N%No_)`b3cg`8!cNcL`78RX}?C=I8An9^Sqs*@cqw+cIKvEP!N2hSvP0V zUq^aFi4}Pxt?7xf5E_2TLzgX197JO#racDs;6sVf<&D}!w(ZqT-x>-6-H<;Ly7pj2 z=wM|YIHl>?w0dab0Ipl_1f+C}vSl>w9Hdy!Y*mI>2izP$B1PIYRX*R8uI7U>SrsFm zBA=z6t-?rW;LvHz=V~S5>1s9NEVUl-40R#mnd)N1vy+CFOF(4_%>9hpNqs|01WULH zvxo>rj_x>cCct-{h6aMMIug*j)64UNtem0v_ zHA((RMaI60bhhvAA22Ut2lLJ`dD;88)Ir`JL_4#?_x~|y*>d+)4sxh+LI;sD5avyML zPdK#w4(%m})`*l20U3`bVPxQRKu-?IVM8g3o}DV5nI@BDx=hHE)s>)6QJ+RURX#nC zAqTckSNDUGDMw9asW*_GfxhCO65j-sQ#*67cl~yTcS@8uyT^81JI%22+DVzxPD;@X zxbM!EQOtpp(pnheC)=hBan*&%A#^KqWZ|`APh$Frc!&p-*K|%F7Bh&Vbg0$w3%w~3?BJWl@`0igL z8dcJ~5gGpyt#e0aKPlJ()931obq7kcF2<0y2J5a67b{Aycxejld{dEHi(j_=x8BL!=%ltFwHCi@`NEXOjX1g2J1IK& zTKuxr9S)6l*BtjcDXz`d;+HK`lFp^Ubn5p`?w_3$&plgj3-LWV0nro3-p6JOhUs3ePuEgv=;m<_* zjQkU@wpZKUojTOE?cJF}tGB&7YX}Rv8KIp+GeTI@6+Lju13L~TT6Ua=I<%!TIN6ODgcj4&*PnXJ+ZM%QolKq)iUyO2N=R>D- z-2>=!>Vm+*+58uC{+jc)?Oo~&)^vLg1=*Nat&@BVsWPF>b7*t{?Lr)7b?Qndb%T@Q zx=H7<;dSacq-gDIIgFC7pQ>I(+$*Ub#2i!k%S4=_@(`!t0A03R1L9+(hSTwhUe5mA zh-V6Kw&J>RwmkcOnED*jhpSr<=g3O#2ywSu^+!;Smcs&%Q5Z+_c=l|ba~UyzO417d zT`)|>?;rS;&?-8}1+Kj=q5JLS#oG+;HHjU6sgia-rnLJ}D%Ar%n=y0J(9iI2EN(6Q zvZ-Wg1nHuVGgtQy^j&}xk_K1v{kY9-1B0tOu=fAxU>LD@|miwfrVcec;xo&k6n zJ~)W4@P-ccw5{IzT0QzH+m8NzEx{XyJMbXw{O-<{;|mp>8RLQX^#b-1_uCvUpZC#Z z>K6>~kGgC`Nlz4)43Fazx1L zZLeRzV3xPtDMxEM%q%BZP1(YNaWthYm+K;jg9&fDv*-HTeR7hf96>55%84{H|%keqg$DhweDLT3=>xOBajx1qdTR$T(=YK z1h4MXK=rqBMw0HdqhEJ}@#xMmFBsU0n8W)i9bdiM)%_Vz8Ssh;d_IcQCHV2R6CJ#* zOgUQ9Z`y46*J{dq!8n>ymdo{kpUdOV^isd3nMs;rm>;F7!FV*CDHu9DUtZbtMBNFl zraX_50WWz#(`KaJ#E&n!xM9A*C}MmbPRUyLM_o8lR(IA;Fpln&?s7fr=kn+-t30WX z9oc3k>CWlO-^vE#(VdHnV1T;w1)7%TpN+V>FEe`0re1+IAh{Id%QkKpGMHrDDOv0O zq6P`&=&};WZs!U3udkF^b zT8w@n7{_9)lgsrnPkq4U@s=Zj3kK>D+gju#S?nmmcrE6`v>+Sne#$9l(iiwucX`#+ z-bavEOU*F~+~eh8W%jLKyA9$)J@bdPoFjK-&TaH$|4OsuMH>5V7ZOcY|PtSop|-uyx)vBUr%3<=LYA^ zSN(dclVRU{EnZZ($bIv5muknGuj{s=s~cbRE=}oGTr^zIKJE=ulHYti8{YU6;QqZp z1L?Y9zWM6uh|DR#@1`QA+z?iH6R&-6(4_$5{llcUs_-7~l9%LL@OupMdWx0WiXYy& z(Qg2Hj`t>xi_h;N-y84-VA$I+nfDp|{u{X3g&Ik-jQ7UvT44GOj=f!Qo*|7A3b1av z7?`gwR%$&~)YqvK$9+SwwuBsRK>hZNwjcFqn*ffJS$qOG>bGeEIJW0S6Toq)aODJW ztl#G+faAjOjtSs6@ZLQE9OeCd0yx_F=?UN{@0khUxX62H0yr)h-hK2X{{ZM?bxH z0yx(1feGL^?mj#L9OeCH0yxft2PS}{zJD1L7jGY4m*0$R2}=>b0^A9u`fu`$w_ZB~ zm}-LySlp=f+Ad@?1M^}Tw)xAsQ+~|2>&dgCx=b6(dUA|)XJjm#=Yo*@Yw?Q$ce}wJ zN{=4`^N7KXr^oY<_bXuTuD~Z%@WbmHa{_MH z!!HdtNJQT;{O|L~_XcU-QT6*S0AB>Iu1+HlRlhc1HX7V`^?M!}mjH8K1GZ}$d6$0r znDt9XajTH;4dJY0zap+}g1GJp;OM6tlW_3UG3+-y7H*XNvZ3!5;C7y)H93_1b_4Sr zgB#C&c@Xm>V4lVACHw-oSu&PCw*vPL^6Q#DyxcZmHX7Wa%Dn`bFXDGQe&dzP0r>mK zpJGPhL+N`oF!K#=ymI>?Z!s`;;P+kp_}uJR`hE|%Cz1cDmJiqW3&4Ec;KnOA3u5ju zn7#7vq%q6g!E%wmeEEl$+YQVXgB!10>bnh?xA2>RMhx=SMON|&VAlY*3i*FwLn9o@ z&i?{t>I#h;uiOF%m<>#H73AW_CvwIrmmlh!buRo0o23kgDz^=ojRrSfxx9yP2{4yj zfK%2sK(5-O%N?V?{b!>t)5c@XN9@0{6Kp~FcRXCmfCn@Vj^oSZB;45J(2TKgqxQLu zhP)$^aM;for7z1pJqedwF7+)*!X=MalvkF7OO{7m%~-fmY>YB4NQ;09je?-z&wrL^Z1QdEZR~|{L<|_J<4CWF8(3%y#fA={XhSD_j>^BqpXi> zn9?&eWQv(&U{R&6C=S1FM!d9_}MfscUGBmRC0+W413NooK$}euR&lVe!o3 z`>O4ny75x@N9VM84}SYU|C~0yv&^^rFcy7u9@|Ifv3+zNo4lL)(Rplq75Ag_*giUs zO&?c=omm`L_R)E4SOCkxZ}vR4aSjZ#=a*rlP!5HucaACg=$N+u7mjJ;dXz8xe{>!j z-yYy;ditECkIrMGB|bWj%{`;-qx0B4I*$zlbSKwNj5vU;W1T? zsKK|0)^+#(|LCMP9v$@m$vJEva^hOjDQa>KTM|`{HX3!d8jot?mgsao0%Yjzj$4pV3DBPDFj=7)SG&OjhOp(YbA-Pw$jt>%8ZC z%2{v|KG|&mHzs*YYpU90Qd88`NbSLIs^U|COifX@A?Cf=sp<}snxcM))HI>pXHrwt zQ%Ge9?P-&mqFzCY?*~j(d?kyiDe7qa^Rm#6GpQ-+@oap-M-aa>sVP7(Z2hVJ*T!2* zOlps%=zq8V^zzs4L9#hococB<3ciGYl`-q zcllnH_8`dlIHhVXPF0u}8wsu%sR@lVr^{h@7NQRb*|lp4@JHa6iYGsK3NX(xfU*c_ z_=V)$1isEq#2TUYBA%j#5vQvJ;>qe-p(ypU(uJc=e7ONR?OqvoSSmCI04N zqbcIu_P_$_qYo@#O1B|vb}D{BmBUA>Mdvg*dr3$8Qb=Xkm%^$s>`P&d6k14TymTz$ z*0G4&$0A+{;#gI^dMxm+v541?MZ7`8<~b*;xCaa!Ku#+D!!taR%0SGn&L>uED$hxs zgw(I_%T}j3GT{Bs>)`mpzm`{o)OC`(7%BQ(syfTTl{vU7q;^U!pZ2;+QcVtSrGq;ksVgM6 z9VzyLRJG2*ZE$eINL?XI&ZuY-F8DUKki>K90LOX^n+?tp`P4k_&~ zFCx_?xR)K=>kjTMr0DUf>RqJPO6orjE{I3Nw7%&`oiDl5kUCdVGm+Bu<1w-tmxt5} z$vpw77D=7#;P}L<#w|ojmwP5s=LoLE!9^Y1GNg354M?#Mr>YhQcdmnrIk--wY6REq z;QAcg5K>i=y9KGJq%L!C+a25pQo4TEAXO^3>yXm=-iVae<7T8Z?pCC@q)SzIIJj>) zxVw?k?e+ttmJ04Z2lt?Z`#Dlt-jhh3A-LZ-xMv;Q^GIpCyoA&u!Tpbed&9x~6R9G} zeIKa;NgZ@>DM72p6r{MeNmZFhoh+$rq_n@Tasx;_wlsX1+t|~@6M^z&}TCG8Rj2c9or>;bNtojn-5Z+i`?;)Mk!!$TAj|L$zt zfNygbj{18cIe2E(5YDOE)P^sUlhB3l+PC+$GuhTXfYZE(2Kst>;+-t8zpayWn_Qp^ zZSPt~3UdbJ`QTu=n{nQ_&g)-~FQtpl@t&bJsJy5^`DqJPu^~~|rg)E9fSL#fb~WXw zq9TXn3NKvj5C?~F2t{ukM+p?nKiy01SA}QjzXvyWZ)of2KurfwJ)D#(Wx%K&qL646 z4-J*JwV?>qu&)Cjp-}jgxRarc<78PpB_$CZLeT;vKs18QH&JXc3~Z_aBX$jRcMNs+ z^{PTmw5Y`vg)i9m5BA67oeBp%XpFn!^FDSzLYy=iCY$+yFyNkh#=PwjXlk)C&RSuQlg3fg z!-plJp)%*B!ZqjPsvO4>K8W*#_4POZ*tLsVb77{>*?b+TR2h6VjRUZzt#fdfBK4}^ zsGi1s(V^Y$(7uNh+aXo`)=B--NpX>P6YE1 z>jR9Z%Hf3>a(Ll1)eL&3EEBTi*uohyam5A3I5ieBRh0bN% zLP$|zT%wnZK795X|pS$15 zjCeA+eWZ`kq@T0z@1I5?`@`w`=Y);4l#5+yu{G9-Tl`morvS`lK&m|Az2LIQ+qqi!)ERn$NNqM+=Z?41kQNjA9vR%8=M!o`rpTo5fc>J)Ra??Xj&ry=Ysl9vhUZv>vPWmefn_^=NHR_1HtLwdMW)*UUVZBv9Yqci!*& z-uHE2Pv%*()|y#s)?A-?W^fWAmTm<0VJDW830q>nfDn`fiu({y1F&}p6YT|M*f+_# z9M99`B-R`mdQZ2m0VG$BgPAT3|ydI>vIL$k?kMI2_^> z_51kYQXb>fNthiK=ukUaCNPGXFoqzId-2Q0ts*_G9h+Nui3-o`&(;wcUEGY{fr~WK z^X@g4qZg?jz%!R&{fktTUD*;t%9fZz$`P<;NYB6+Y0FV?d86UrP;e-bsuv2Qg%%sx zY_#U7Xw8FSIP=o26zfkT?;HNp$ljxQy2vQ1YDvyUXoi#qKa*6N$IZV8rAoSKG8oMm zcZMj-m>J?w)l-*5a}DT(v0k@j0?koDrW$4RwxVxzs}eJy*XR&Z;+tgnO%NS%a2`Aa z9JO78j$XTRG?F@US}HJT{n2YL7>&SwSw`yljL|fbLutX$SwlHQ9IQ+onof+tMDVfy zUT#cgyS3d)sB?8)z3U}craBqFbXgfyp#=_%4H)ZSx)pIktDMjpglJ;vG7D6poepd- zLX#x+BTk5`6AJc4gbJa-d}}Uzqux z;@Q4i`ffG2*`Bi924V@=EJIrwN~m^lE9th|s8Y)i8{M9QxDqteD^&Dq)UzmtKMVn z(`f{&Fkz@~#pPc0eH{&)IB|uZ$j_mO(r`-L=B?8_rV#Az<5frs?VxTm(*(k`f3~80 znU+e6p$Q$*C>fh~v=GJy=VlE{-`d&ju_{WftcoFJRm}P6_@zi6h3Pb6GOQbZ$3BU# zYuKB)J+-{7iL$${hm90+$gC_U0dr{K@U;-82Yb1{6o1>n*TUZ}{uMib0VGDEg$wc8 z$A-nUC^M<2Ap%?ko<)iM`wCwMK6sU^27VVJ;tCI;6#%aQv=?D*od|_h&>d@z`V&MrP)f{ejV7EJ=dz=uPH$^dwP@T{| z=Y)Rcg#L)o4E%7^IB?>Ew+Vigg!nR3jdr+9sOs^zo!BQ3D#tI~dKNybQMy%%5G|5T zFPpT<(p}_Q>k!VfHo~7Fr)|!*<^Xe!wGw`T)dl}FS!|hS4Iw;VuE09S`VqqCf`%>> zmOs|ZT;YPt3**evG6W)*jH%r(fQqF->RoQ_p2^z1wzavdvx9Z~18el0dx9?C43?0D zmEGOkvaPR2Ew8XGz^U8v_D)rD4wVWtB!J309na?dUe?ZStyinwgNbAVjU3avI&s%q zPc}dcG^LH}5YzKY3}TG;E^Wnhs#FcDah|?uzg6$gu9%p(jR3xKDHy$SJT+GP z({wyzuNkBLdRaR9d)hboXId)%45|DZ?j{?I`Jc%@XJN{j{9ioAdQ1vq@}E!ZDJ`#f zx0z=`D)S6YoO#9|^SJ$jz36CZaHJ|YTADgi#i@JBNG7K4?HDm5-fe6mAG{c?Mi9+J z9)9^Fh~#iF(w8pHQYvm$`|h^_5OH*vSDKB)?RQ4P?~JZ{r|&;r9FbDx(u%6oyBuYt zp=jL+@s$Wq9XE24?g253{h(X0GIEM+HcMc%QudZ%ctNu&#gqAi1mc(3*4@0Ll~*v* zb~zX%YR1*udbXna5R>hOU=k+FP^=uxAfaipisp2|fCMoC7BpixluPNJA*Fkhd+8fM z#Fz~4C3|A&e7mAt>NxqGC?McYM&p$H+q%otDykVRP$;*B5a9vg8-Hfqi0x=d>M>Y~ zF7(jAh{H@NaTrqKn9P8uIL5$~ILU}$o-sN+a%}X`k?%E;Qv{GfWMw(vL<12-rTxO9e{X&+!%$X#;L$*v2Cd&n3+46E}^0@m*wlf7dzIwXO zEeN$H($&>|O}Sp*WZO&yQKR{z6Vkga3!Qg#`_`Q?62TpV+F?K4QyH}F#_ahzi@CZ zFP9sv;0kKNxv!r4#<@qHs6dAItQ>k4IEkSXXm$$DQN}T4GGDh@1<36`M-Q#=UI2cpKpBw{sQY;@Xxn6>RV)e2mXbYor1%av-S`ysdHN)uYvzOAdVv$V8xmuW(G07I=d5n`H9w^22XC>vFd*w}CM z;^$l5;v`JE4w$*KBa5R$HVUbD86*??XUq_)c~cL!ZLy_zMZ*ky|MT>Fdt@Q&N4F(` z!(_HD;sl!N_SNitLY$-*Vsx+`8iCnJXaV~E zg@7!i%4to7SpU=612`X$S?=R3JQlc*1>l{Bbe2Ju;^WJYs># z3$r;WVi+-W`~X16%L|NQhLO!z&tlY_g$qz3d;gN!cbb&Dlr5yYC#5(0 zAv7b_pu&KfLMTGndJAj4gZ!|?7lm^tgD83w&>;qKgDlvuKnB7{DvFxa4lqnwrv=$o zAS)pxi&dUbJuh)v56Rb4EpcRGA;3ke_a7{L80m9`geJcZK&}&YNd|{rhnQQzLA^VA zxbS9_{F`^nt0M)vzpxh|yjALb^X}foz~&>~E9GrvX535Ff>^WaFWdtd?S6q-*Ukn7 zD=cn_>pvIiY|lr2hQXp9*bDKOC3-UuR--N#>AL(n(l0(Xa6I?cw~%vikXB$il|J;= z4gYQdh&!wEhwj|R#hK-IN-LDx--m^e{^4s1c+d2}^G^Jg&lem|owg@;U<2au;%iJq zICr2{BJ##W1ak*2MMPxz)4OleDnEWS*t-<@Nk9@9LmYn+s~aE@C7?;l0-cES3Lsdz zodv-M)`AUGzYCOm097yHQ0lwEqaOeiaUt8zpS_HNUVy1W?k!I-g@c6$5v!Fl0&2Fl zu&LumQ+pdYybI{XJdE#9msCaKgmnSzCe=be227x`*sEf<+@F85kb9 zOBQ!g>7s~YH&(#E%sTMaAv&8{z?y1r1sXyw=Z&-!E^yzkM*1!=g@9Zz9?CD;9)NPB z2vjXWsYkV?WE(UrX}}Nd-)rXybSoXqWx?1b2*qb*Z`<4V?0ZvV50_0Ec?N&ZHaZKn?$>&tpAd*E1Z z|L2K^`J0Oy%^hNOQE5VXPvT){gF2Hmuv|7tYEn$_Z zNB!WW1)axROl_ak7F9R6;9Y$D_+u%(X^-R~@=uR(8L~I9_vzsA$5Qz>6{Z+cz44H0 zTc5o0Siw;C6t*x&Qizgw{D`0ij~}sx1jR+09C#ylfWotW@lU_h|9Vf$KQwZSY9=wQ z9(W#oAJKFBxh>@$JGZ}x_I>ICP~!lM0hl0g^ZokIhT@g&JV1kD0mPz%HIC++*bC-k zNN`0S0<##%$Izf)^om)pa{6=1GP zbmY#$dl0M4d^!?pG(BkQJ*m0<+%t>(aNx&5a(MX>7*byDzCU6*Q+ymT(%M5y3kGAB zlh4>Wjku-;P|8}6CFQ~B$FF3lH%BN^osZu_)aK@ z;A60R_Q|i!Mqm#_dM%F-i1S(o12Dh+sZ~S!q_;lua>~%b)Q1r{*aZ7Y1c%hd5;cvog8PrpRbW6|-cqn@%uhRXZiO}XQ-0}vSvdJ)&IrcKV z3k=nggH{qaOCdq$XKABW)rP!Ta5Y>!0>2>3D;6HSqLR(WdS>j@un@;Gc6Z$tN^c#fuW-Q-2?u4e|`5DRS0meuy z*H+lQrd!YfV^DS<|{;tGw=&520VUB$JmTs|*sP}Rk5mK@Lj1ZT%^R4+X z0@`uD^#np`63RdW@|e)(B1B_Px8@_nT;yBp5#n4c-`a%`8*ap=t96Eas}v!Qd(y3| z5V8etKSE0PUqVQ|H+&2swb$<@Cw2~ooJ#VGozOZb)Q^zL-+c%v&PNbZoVhFJUnSiH zLMo>VGfnJfC-e~~bO<4}v+F*DxQ3N(J%rFVCG>NIRQ}>vR#6f)Bcv#D?+Lieum)|4wRpB=mhN`4og^-F(Afza^ zBBWBg7a_&(`%diVF>+C`eUnXS#0h-~{FR$x%|&1uwvt;`NOoP!m3zIu_-R0u^&0%Rl>r;9vnIn&$S$yYi{0%e>q7Xg7H17@)&}@ntQPoNtuMmgW_=C* zF6(FTueE*!f4B7;_-m{;;D5mSGyL@^E`D~93xA`P4}Z56f`7fW2>u@H68QaA0{)HG zPWU%jH^INf8iK#i`ZxF=vHk-8Hfsj#`*!O*_#d-Yz`w(4h5rd_C;X7z5C0#no8kYH zbtn9Lt$X1Ai}f)4hpi*1%k0PDUvB>h{(Ae@@UO7{1b>5_j=HeX z&V|3(J`aA2y%_##y9EA~b~*eV_T}(9?JoE|_J`s3+MkEN)BYm-tL?AD-(?TOzs7zN z{s-;n;P19yfq$L-8vN_+*WrK2eiQy4`z`o4*nfe)*Umz{y3L*s{~zoM_#d~|z`w(8 zgZ~M;2mYt+Vfcsa@4)}8{crHUV*d#KH|#gyf74!y+V!9vh5xX<3H~GY)$kWuACd5F z@Sm{{!GG5N3j80~_rd>>{jczUV!sK0)P4*8kL@hf&7ay+;D6Sd1^*sv4*dJAGvPmI zody4>bq@Sv)=)oaX8#ucQTq+} zkK1p-KZf=qTng<*V5Oz!l@+}9i=}h)K8@j(iEiwb+bmn_c3^Yq#Ua@p73%41-`0YH z6qg@HJ$&qwpP+kCQ$Dk@bj-W?zalMCP`(@3d@5JKck_6E0Os7k$3%3R_{f3l@~H4u z2k>PV7Pn%cM#!>#I#4_M@S?$eC9A*WKIsbuz8c8ak&^G7Zh;1x z?OuGZ7}C_4c+V@Z7I6efdS0P{;#GqST|j#L+_&b$U1)ImzOr>EgqQ(nk%mqpv>7|q zAQ`1E0h}3gUVkie0C*)qejFF|;+MH|TTfqe`?hOaX9IdK23KJ~C(D;3&Z|+r_IT@^ z6DLSucktCrHb!(^P;VL&?KuOG`!#9)L?5k?WEK$k3A}onb2=bLHOVxUn(w=sGZBA4 z$Imb<{h!Aa0A-m*nPO0!4|rI>9RGGAmwNjRU(X!Wx$y2j$k$9Vo!ti%xDikhcst($ z1vOm&TY+cc`2kInBMF-~%QT^39g{6F`a>I9%U3kRAV2@%&SUD}VU4YH;QwTZ-0tyl z+pa!sqU2BM2qn4q(;t?`Asy?KhWC>rs-{FEq{H^`o}8+A1|Swt26Whk7i^~i7T0J~ zMHt^lPK>_G7cH4Es^G4uA|0J28#v^9DJmkN!9jyd1+M^*sq@tybF)W3XS6rN4wcdi zH7uvSwXHYFjoC@$oyN5uG4pAUvPFsp{)&d+1%IpBI7M|n2`CL*6%JqVA(l1f13SAi#QBHBz7;v(rz|eUftIE8{q%Dn_b#m33Noma2r+X#Jug5 zSI>Tc=hZK_Ju4$&NEr!>03%?$=4U~utDqFvXCaRkS2k*Q+V8taWy(RLQ4oO zA+%(|$9lEuw)f}?*F4nLzbd3ebIiAX3tzcZD}g}TI3roD;~6_J#z_3uQMs*`Z~FgF zGZM74Ws@NG)#cq^}0iQU=a9>gTnzh(Fw0kXH1cVr2UI^eX zMgD9`arxHf&}$ zkNw$h%a;e+bGGMTIj@i_t0k)uk+PPrnHrS=VTtul(BK1sds31c#=nx=d$e5{*jd0* zs~?vlq*gF!Hfrbp6;7xPp?4s0z8uA%z6Q7lu)hG7F1ucaCG;owG)ewAnn}m3lzJ+M zAC&J5GO=l$+Wk2EZ0n!lPqw&zlV`QJHt%c=sexP;MqB=t?;+rjFL5t*jd~7SzD9I9 z<42tAQ8C;aJHVvwX&8Ed$!-pl2LW+62|Eq*aey;~q(P1Qgy0}n8Kr9;vrmvZP}akc zvL5E1yYvE9S_=MHjG^`99Y(=pLr91|tN@F*)<|z5-|_NekAl%*K&_Eu=2gWAzD?Q` zbYE@o%{(>}yg2gWNb&IK?7jF*iv;?G+Mh??#y&Cb`AX$}R@w6v#BNr17vi;(kqXF1 z=M)cXV!m$=VL_bll(3VkkeguN=FUUxJJfGmf}^t)`imoaja_{mMs2fb(nV?&Iv>w! zHHsf(S&%zjzROcEevhYMTyrzKt5`(ooK#_V)g1VfG&9j~q{IW4N_Y|OP z>KS{JYjda3<|=X0)V0`a+T6ZIZ(uL)?B=dy)0l=qlzOcm3K^qQ<7}VJVQ590%L6*i z(y=)rnO=&9$&u3QFgfz|4P#BKMGY#uV@TN@C19zfiX7mMm<)@mz7#vro~>WGB8+hH z=8M;Nb$4!W-Q3%=p0h%1U+-DJxwEBpN7wppd{p1u)4G0BXK(wqP3w1VURrd1SIegJ z+qSj0f|l-YC$NGPIMr=Uns`%dl1FRugPZd=cXg3Ayt#8n*ZJF88qZpU9sShz`7PbZ z$WCDnbHNU}bBO43-V3xSO~AesQ#|U>b?197<6>?dG?d^>3xp>r1A>;Lro37QD z3oZoAWxtn#B-hB*M}Qfs^Ecsi0`15zV6*)l?-pnfaZ;@FJ=fH-Z420k1fFTVHD@(G zp`!G3tJEK~e<7?kupPMrzdh{09Jj>@0mt%QNQcEOaAt~hZ(sMuKQe9Q4(PwcQLsZA z!ny%Io7nOz#~ijwmW&h%etx^c!BUj8(5=?_tqQ_ix>So5y7s*#$bnSAz8${FSDMgi zoN|(|1_f-Eu+fUf@#v5_Kq;e;K8o7^!J1K20)zbp#L;C^F8ikl@vMWb?DoWYtp#M@ zBdsJte}4AuZ@W2rOrcBtf_^+UhNUb}89iTr{g*%NQvFU-5ywxJEmWp)x%=l~sL5yn zD@)>t%Bw!o7HvPQUTk@HGS$oBWS4hXe#3PsfZu2sU^Axf0+Ffm+Ed!MI1jBG6X6a zZXwkFQ(o_D(&9T7I^y`LuxZef*6r1wy~(BegQg;mpNjppTgsm~^C*TeCN1v2r6Z1? zinip+wfL@QKjBiHrKyPHr{Wi30h=X4_w>A;0hcPGsfgpJnh8k2HsjRw7hLfjmui!y zB95Pm+H-CGjNkv}ZI|l9nu<7ns@X!tR*~*E-`Vsxm+Fg}ia35M_UW!2o?E!<8kcHV zQxV5c#dgot{Oiw;V1TKStzYQ?ar{(lxdXPb-uv!(_0ujD4??0Nj-To@K-{zz_TL8~ zOj-q6T;lktP8TYZ*5R%#o?5wBQxV5cb%s!}j??w_^@iQF8Z;Gg{8S-80=Cio%~O8! zSC^_=gNfs(I#Z~OZDbw)U$bY96wc|P_bp8%jlebz@>UwQxV5cH4hM18{hsQ_q&)Jrs^h{IDV@6LS?jZ z?@vC8ZoyE^)>OptQ=KhTI@)^bzruI9R2OM5ar{*5GhLg%@T}Kfa;fSx6>0+1aUo;hQ{8S5t z%B0mfcquSVT90Zf;`ph~6Dl2TeW>_Ey-W3q1{23mb-qxU@+zN`g6eM4I-#kE)gF_&^#NeOEnd7{8SeSm1)_wJ^Zb2yHr~=6>S_z0d-uT+#J2tpfvo#fQ{8V9~ zGIE_4_}bGh)kT_$IDV>#P?;X~k#F4NNvlp%5ywweDpV$|e~y3aJ~yqaG!=1_16nHAAfx7kfFglZcRlTf9g>{+%}=_wt_*IYFJYd2UMQfRwf{7wna;F zotbUT2S{+7*%s$BF4ZQN1R?KiD~9KQt!zdiWsaL|l?x7gVOybqGb^lj##$jb+&`6v z0~YW3-Udw34E7JSToqObv#mFP$&;=2QcTCau5px}2|k^ZJnf(j&!y^>fV#EdK;(s; zt`18y6>Ou*gpO>;H^ywJO}Jg!Z+m=A6H(h1;<;PG>)gdFaQFdu<%K2^E6{S) zOL@%%m~BE&rH+HBBKthZejo5QvYI%q{iL#!vy%OJ2b%#S zI|&8Hk)7OKs#l2YIIrw$01ep9@Qv(E<78heI9}N`jz{)&g7Z5346G@&y*2NID?4|C z(XA8NFNEx`;^}glrQ?n`vWv}o+RV#<%r^D@$zg0}{b zHviX4t`7A=ICd;TF1rCZFW{G!0Eswn8+8RBZX30@bsgGFle0pK2}c}%i-aMFhw9mv zcoeCjTA`_kD_F=#d#$q zA0=tRpJ$Jxg5#6arDFYYowqJ;1vp?gz&Da^87JvB!SPC}aXgZ47o0BmHt7E_`iHr0 znSNhOx?LpY8LsWX`x+A!=arOvl%(tZdDfD$*ApB^Qu1=CI{Z|gGUbRbV1EO?k#zew zNy*DULen@NNq0CnrvNILum6Uvxq&xk2){-)pg5yX^ zG?$8cbe*?MI{*&Y1MrQcJH|=cDLCFT)i@qWS(*V`e7r@w>5duQuB6;OOxI$;yj&`N$>BP$q*nnPuy2KLB<&g}DKb5#Of`;2 z(jLL#oILo3jmGiFzEg1cDyYU9wqEo(^Y(F91LBTb9_;)gnii9@?`b~7@%M4Nd{mG8?DSu|RL^TF z;`phq@ll5$e{sXwUm3pGbFQg~qtbfR;X}^e zvOpF+dH&AFx-qOXlKxUt5yww;y-=mXr~B9=JLkDnf6-LL@l$;W5LZ8k_w|3&rJ96t zp(Bo;Y7ZbT)!bJ$U}@0gkUReA_TZ;r%Qa+t{i5}%`t`aoaX{Re!Z5;uM;4*Ij(+vSa7`cOXGOz*IvQd2%lqsx!3(F?$)mcE!SSDUq6Ec zoO?XPY9h|tijt3#bc6#N$C;LdK*4b&B`=riB|nv?XY2=F!2TdoH0go7L%_R^ z)mEH$@4+pAxGR%CD?aBlZW*M(PU(oF%4LCujIRaEkJ1>w@^YQAjVyo!$I%$`-#muiKd%2Nw&1zy1Z7JQ{`Ql;TZYoi=NeEmioucSU4 z8Rs1koG8(K?rKPxtf^ZQi&oVqqqun9lKn_3WZ+E+YbCZ?nM;hr;o>I$rN-fK#9GOX zY@VAG!{N&!m8&B)MMdEcsK`bfpw&w7%19H=I!($>{$x)$ELcUAl|W1;@wrKRxMcBW zTwH>CO0aU;-rLuMTT6t$_v#UHTDK0oS0>BC$)eKoaBW3hT^P5@VAnr4?z=bYtSpQ~ z!UnOpELv3;#>G26XlZFU9*adZ`AJ9@CE}|h;W31faA|phblw|#e7qCkit@6UA7zOT z1F4r*lvWW%KBU4nIl0)!hZGN2MQS96`mP^eEU2q$YRkxCqWgb*xbbjVO=&GrsVCeH zL58V^V7;;Trb?+xLV1wL>Si@`Jjn#Sw!UZTyW$=s0r7^Yeisl=aDaZaaBbeneoAD!?CgoF#_l6 zB40f8SDq*>3#%`Zct4c7E6InnI2v6Q3orF^hJMPb%In5Z`fYG=X+B$ud+RVp&nMy(?s&f=;_S#7wu*aw7gwbigPNe_e* z>tS(4<*M+aWn(GJYZFxtrSqAX539JgIvPad ze8AFJxV$=2t*H3*mHQ2p4{uRM-uS@{^W@>&oMCMe6++&WBZ8kzm_CrmjNUwRP2A zTJv3+j~E4oD!s@Ds|}Y%%QdC`($5!P9Iu3m(O3DPiEv%KHlgzBd}HauD6TB0&K~lZZs6-&B2DUAQz}uFYWLtjFrg!b^1u?1+8$2$`Zv7- z2s-oHz8z!JuhUoB7`V6RS3JR0`ujwCb4P1=cjpexB@vO4M;E~yIe3N)#cgedR{na% z9O^qIew@S#W(u!=AdNJVh;mziHymsPlr4o8XxK+BWkQ;BHc?z7_*M!8;Rnj zBWti9y|Y_L)~znBLENH6hHe#F*n00h6+*6shAua6ZQiu49hbl9Q4{HQwr(y?s++1& zN(qb*Oo5aX>p|2?m1b>c_YV0Gm|U5#Np^w*^bHDeobpzBF!wAUONtk_m|`hz z+bnd(^VBC+Yscn`64b+GMT=`#8PzPHbyMG#__hvd%EbC53g2yP+ri5p*_x=2IFbrL zi7nf{^3UucE1^X_G)6t`!T7O^p zu9(0uOim{Lo=tM>*r4fUswy!$l27MWE>Yjk`LtYysP2ZXomY26O$n=ZjI%J-t&@Jo zB$;ND18ZTEa>1g-i!TbfZc))9Ko%`qa-j=j2u;J%rAtGh#Y-+)RwPjyv*LEbYECO( z@#9j?^ z_Xd8a%3t6DZ|)}6AJ?L$02K?wwm2Nk1KCJOhmF_;^ z+=<`k@H<($%aPUth<_75x>Kc_u^1m>;YW9}bVG4yFR{D#Ux;M0R>9 z5cUG^h{iot{(c0UUu(RR1L{s5dW7i05m2|u{Zo3I{D1KtV5d!5Rkznx@zHFb#> z%hT5ybC);pHP2OknRD*d)-9(qa26d1s?0sy%XViww^I9u8%)F9xpt$-(voT$K#=Y^Xsn~ zc+Uc_;35RzPNlyh;Dj~a$@E7#RsrV&__g47vU*9=+llxu;750=bRPlE(;Dw&=^g@) z5#a2)7;OiBwv|3%JM?AXeGc(WY#889mF_m+T%++$mhK+#*bAJ%3VhCjUlz7vOw@1D z4!(?dubaqTSdYFnA)de7nt}H?@Xo$OaXghA%Yjp^@lGa30&JRqb2ok`@XK`C4S%|{ zmn0gkFRRBXuOl@Wut|y#xxgq8tBA-^ElkNZ{VNlwT$OB@fFwH1$NY=+9 z(J2~YTR}k9)>k#gNJyjN&eX7gHQ9kB8!oFY%SS|uaGZpQhFGjRS=Ll< zptj{e!NfpQTxdhA@iZ%#x1Ak=xV#=52!nI|dZCTYSV+T7bt!q9lpe||Bels$Q)344wsHVZw&1A6b{x3aoeQRELX&ebL zL{7Cbm>Q62VT7bvS%6g3N7hs|UdC#*5kTzmh^@oHA+>dDX`ck4P6()~wjoyEXrQoK zfvW08Aukv5^wM}WsA-)9*j6S1ja3zujZA~E6e~#B+Nx-5IzTt)GuiA?REp{ti=sBh z@*~)`@(nlT(^J`KNK;)> z6&sJ0HyYA3mo#3tb}VVSOR8c?O0_Uc8P+6|DwKbwh6b%!2I|R6GErZ*Dx^^|t(krl zaup22B+F&u$(4`EB$tVsHNjxZ!2D&SQ_+e>{v?V;)gWb;*$^qEw6Q45g)rO7R)ED|T08qhx|V$=hH z#N(8a?2r{e8e{QTBGOoSnL$h!#ESZ=gh9*@#5m2UwyL(mAO;1oK2jkyiySkpET&Ok z*BC2nqPrpBNjm9BjZeUA5wI}^aCu#QnWLQ?5inXGsj6j#BUc>2 z1g>bU*Z>faiw+L}Dm>EIi1yq>YO5}2}NUNecf7`3OP-+^4Q`^4w4Dh z18Hw@$2nY%0;3SnQxuUE;Vc06UqaWOPCKujnam^zCp&h=u{&)?^FbR&K^|z625%C#wNBUKfdiA+<_i28JmS)QPH^Sk%CR0*jP2R;`hS zfq0oJA@oxAHXq6xZ%WKvotD^B3H9;(#I|eMY zXof5xWYRzxG7cp{hOq%Mpvcfl2=k^GA>^HcS`MUGT{&}4)*N^>CRGba(TRmoo5}$) z)<_@`sgK5F4H}5r#t6-Tm@os4$?TeRGbG)z%OcWx5)ZvJ@#1wbXh(>k2(h*j<3Pg? zmpp2IYa> z=yWgF#fIw)4_5~`)5CSK;X2F9)zQLiqXmpd*48dE$a4f4nHA`C3<_U`yvha5mIs6U zK0!uyHL_AIS-c7@O@ql!v5_UR zx+!83FVV6PM%6K$R4be0+@s6J+n_GdA`;c4l%`T@s;$OELE0*o)lwrkQJGJ2#Z5Kj zS_xdk@j{(=qN=u~O;OC#^pKj#O;#Cez;a4$ zg(<#VRebdr+QsVC8VgmhQuvYu%+b`6u<)(IfB+p;lMEio7h^<<5veH^3yR5-*jV5an#V9Te=_{l4Ci*ltI(iw_ z@v6#dni{IgIPfFe)3F#r&49W-vNnqGC}*#XIRk4oh`}mQBDuD%zPcfSWesBoA*E;L zBT-l9XaL zvFBOoj9XJ<@_;s;0L-4ESe>ji758jaVr7`9i;gf)gUfHlskED0u`t=$+yaYgtb|o_ zF3xD%n&yj^l5OCynXxHWo-Y>GG205{Wny`5DmUYGV-=7c{|3Cj zkJ6hDF83no9DeQ4)7RaG&6Y~K6M!ngJu8w)+}kk$fw1{H*)TJk+xxIRxm)3mgNiKg z09Rz`z@fXz9*Q@aAm&1eHw~b-0m^o@n8f|)g^!`5Lje+4Ji9p^TfTyk4&9y4$ ziKBX{>aT)I^v@k}&FxD6V}ZSMfcbl1P7|#tW9jR{$C(iC6mgQT*G#@dgRQ+>`i3Hz z<%y$k<4i!-M{}7Pb-1mgrFB=*52qqEoN}ZXIZ%VKD=CR}fk57^0A?mTJ6d;b!!;h0 z012T1N!@f!Z)*-7&cs9d)!2lrSbrYaxnnj2l65c8vNyx3Dw{i6+FO%Smq{DEdUG%K zR3>|8X{;$yoT5mbH6}Ba$>0@;rsV2w&}?#Mt>CI@*5*xpZLwXgo0HPEaNQHH3O2QN zmtv>oaj&5+}Y8AjhC=ELE>aL2p+=`Lj*3}8U@Uf4NJ-DSP*-LDea>mujaJMojnnLDP$iLVDF<7`6n^{PT z!Fupd$7bk~WG`E&Frw4&n3T#Umc&EGjU_QjS}rMy6$ScKD=nF*DX(Q@osL|r^3#Pk zq8U4z(SG*ycH_kx-?vS&ct!$4S=J7G;fPicu&Z<^%NjuFd4Ub;P?q({9OCfDyTBOA z;`#ikH~bF6dR~yA7ea5_^>sdyNx&Izr0f#R>ue z>_|c_k*iEIg+soD?V3pCLim#`zEaMSi!E}kW`uG5B>W&QPUMW~I)TjVxi}<^TWDTO z2t7flvn|x!+_9xK%VHGTj@Ithj?Jy1-p){82fvwg&=rP5+|k(^!mi~$T;O-n7<;%L zNzpOM%UyezMtf-JMYFYqUt?6UTi|^-#xgR6cSrLMyfsrdv8@F$E-fR4#PM1sRu$I7 zEL>tHz}6mK?F35_aGJo3K~aUupcqmHWOB!3=@{b}R72C6wS8y8E_eZM{&=HO_vAh{ zw7#&Q`1ru{*Z*Ot9jLo;H%96=2ZnnmH<|l#f_Ta=wUMe4)AXdghKVLskm5ETp?)Oc_?OsZnxf>0*^7T&_i=T&8tR}s%BDg{L(S8R3?yb zRU)LEtqv+bNQlZLaQKmR%^sOx>KjfwI!;s34q1IG#SPAmOn&C8z z-oACOK|~3v{49BQ`N?H|_?`bY`Bu%z6d9^aF*I?e7?Yvej_vjnY0MloWX2Uil~aNa z;+HO6vr->Nqb%oi>i~S^Qslm%ObZ!8PwHgo{H$>m?tPkK4*srmRV%Ftz6G2>8m6M8 zVMs}1xM*gQ6J6v3!@2!m0bKNrhk?)HfkPnEXQdK&D}b+%`fv~)MoKeiHKrL&l_>OW z8wKi(QkU2xDot><&hk(V49jEh93j|l8)aq->Z?pZ#W=$^PYe|9n&@PpDs6`l`X+w) zFj9QnBB3SlRqUk*eI37as|^0v@XMD|Y9EvktL<0uOPBK||3yNqreDM_A2(3*c3y@$ z;eSCwz3>(1YY_Upz-TE7b_+uH;FoUQ4qw^8ClR_EzkKV{@L59n)?M)VOUJ#@2Je1^ z6du!5c!v;D&h+}UigY;@K4_I7JV|a`oGj;QA<}5BL-{)YG?lb8AmqUwivCSr#V6ooWkU zD-2i5=lQJ>E9+55<-Nw&eK7KU%!I=Ww zN=)(OaqrQf`|!VtV2HyHYqT^^C2;EOoJh+Da`EtEYzvj)QA;o4moJmG7bG+r{vipS z4xf|9beSh83if0_71$;4RmETx`H8^l;r|f7d^xU3RS^y)6h$*aKakjM@Snpk-Rgj^ zxbz~VxUgb;AHRI-X84NBeuNao?FcC@tRhe2mo8OAabZ+nS6=><)vU zA=BSUGXBhw-EF?xW>4pg;{*Ml~}UmK;* z0wUROc5CBg*2V^0sMcHFjX~N;>ms$G>LNp`E*h3LAasn$z*T{)h;H|dv4+;DH0yX` z|H+;o$E1zPWQN4DM6kQs&18_7Z1l7Ycj^TkEIe|2NNWeX5hsUkQCwS!8|kRk6oL%2P+zF)n+gJh)+WU2yNwS)!s^WcMxn@~z{N@c{e) zEP^wc2>dh|QD(?>YC()N{e^lbFev>U_+gRHIJt5%p{~o5kC^K^dOO$15dmi65ymhk zt&2xCaH16iB_ZiM#S~}-tUv^%?u>P`mO`A`P9ak56(FiP`D!oZoUoTfx6gDO#mREaVn zR(sph5+Wu;>RfQ(cyC0Fnh~!$XmzhFst?yho=78{Zo^|z#1nbN!y8ak)TYuX`@OS} zM!t-unP$Gl5>l~?5t=Ko3lTa~LMspoNhpHQ84@Z-=yVAcz*ob1Z2m$>jp8$o`)CU5lt4# zE7O@A945}T;e&{GV4o$T&^;kz6B1*5qHc($k7#Qpymb7-GM9u{XkWxHUrgvh32_*7 zk;HPKyHrAFAfyVo5FthJeuNao`3QX#KUG1GNoW~-MZv0C3@-VyDyl{Y6;5m;LW?DK zy#u3y7747&fzixgz%O5pK~BCSmu&`5 z?9P{Ew|WV&z*kGiEpQgIDj%D}-a7IhJ39A5YbAUA-IBY4tb|Q27qM zW?JfyP9F>B`VPhmj&n#S({ri#AxAGjfHr+9zUM-p`7y{y2Q2vB~2!#zx(5^BTva zv8jR+qK|*y9sKA=T#fxg%QcnSuvvPi;m31Ql=E6I+Xwe**8lj}H5dSxoS6V|{Q6<) zNXI!-^+1;=Yq8porb8G;j{KTbb$ zwSY53KUV;Ux#Kx4%6avJp@2s}k=fV&(al*{^C6C3KTKWer&qDmzE?kj>p{_XN*)M0_UvRc-Kbth`IijB{fr*At&WXVv z?QS;76UWzIkh7AVt%&Q4>};O|$B~`fU8*6M1R-zT;dC-!Ukl$PK4+Zl1%l(1UE_FU zXK9=I6|l}J`7IdRfYJSvW__B-z6%icKs>8PIq&h+UudntS)>1pF6JwtH3l4=}}q#+MZz^YpPvD;ipzoJ=(MA89ZGIu;3M>(&g zA%K*m|D{Zt-F&qPeXUJl<#8X70*T*2{5s&PD$o+UUT`uO+O ze_UMdO8TT`eU?Z{t<#ct9*=U~`d$c7z-CKDxADog``n!UQu85>-{zUR($7DW%yC{z z5FAH8%z;bw6^DWWug%ZHbHKh7zR}NF4_I3E3=dV|j}e4g?1@xhlr>*{Ax z0ARSYML*v{=n?#Q9*}Zg{VV{;y(afxTaMi9=4_tkLmZV`b9MIkewkxQcO-Lb*{pjE zjb&Y_`4C6(`6mrgd;qo{9|w8f2l3{agS~*wu?pP>F8_7J@Wn|_nu<6mQ_r~WTtM6_ zL*HCl{xg?qDu=gl#8Ek%uOZ_l})ZcnXe?`u zrXr5wbFGgLDGvA`-Ya5?5$j&pLtMiJFKIOuar|--vS5op(l4cunK{ArE z!4VusQu1=CxCHMyucS2lfbEtDsaOOWM`|3ibC2=wi*W5e>LkR0O)L@>;FsDzzY~&4vD2;PE^%*KPI5PWaF`$UWmA-yH|}%{a&j zAH=Iw=2>Yq=GTvI>nO3{I9g@CT`IHU0U(@Lt7Ulhw{@lCv>Fv0uU0jVN2@WxIRKw0 zsO{X|J;&ARX+ePDVxrYBB)Abz7l#Qm?gEWt5l4V^;~=d*h}WLWLE(ep1n@%L60LS?#~Pkr&rue(&A)l|gsQ&kGpB=~d@ zyIiUfO+_4kA4jdKa_^k5+_|17I8M1!vo6*3ek#u_X%+ASHhVgyZBkJa-j<&|pugqU zIG%Ek3(iLPJR$Dct2SZSViNtmmMhLOwbuZ=9(X)WPC0K0a@6Op8qNE9-*4TVrJzNn zb4P|}Ylv$tE5||Bj)Pn?4)PDQ_g)N{K?X?3_RTIUf!r|C(IiYQacVZeLzzJIs8*0G#EuhfGJmR6Nlhy7@t zn@XI#3x>%$Pp>!hWi@f!gTn%0Q3{%eeuC}TWWoy;paSx#Xzj%@{n(PFGPkapK=b;( z6?dE9CI@qZy=SYg5ANT^D+ze69xDsSDr>`F$x?PU3a>2jDayN%QW(hn8%oI1Xn0j^ zWg@ILcdlH9QkI>X$^v_Qe3-?0^(E-od{l+YYGc*fc!UG?gu-ClO`$$cYq^6Ix#r#y zvRWDOUIL@FM@8v_B-MQml>5}z)zpM>L{V+nv;EX(gowggq|@o;5jbu8>|7}Pw44xeVWDB1>m7U>A54JHz< zO;kq1V>TFSdZkm?tWcpKoeNI1;Z)(9dBaiPk6|viF!ipqG+a}I3-QKoSJX-P&Q3&g zT&ZsWtm@c_ef#`CImWN^v0cKXBUP@cgI}O)qzN&&d5|PErb)7_epp2~va(|+U#9yY@+A?9eND2z0vQ=fkM-6L}56ndyrtHeQTTNc1X82_R zNuQF0_-F#;f|1si%D#>($G6zzf+SJ<-r(NT;vMF8^_h;|Kx^*ds~*_Iu^${_qKR} zh;{C5DY|fpy61)Wwwz^c#Jw$-WAeut8{I_rw(R4C!0WQc-`ny6UORjPc(nJgROxO2PKU-jS-OY7V;68{EwrrN_+?>Z z)kNpA&jQ{r5bt&23C;@-0paZl@%-m(-vPWiSV;dGesrgj<8k2d&J((m$x(#3mo-k_ z`NYI7puF+-=&VJ|0>pnva88}>M}hNMjd!wi6R@c-0q3t+WWEiHt)*7Wg!(H$y03ET zmr1bcJx^?OIt;{^Nn zj;4R_XnKn`%Di_pJQMsjN_4)4LG20V>^EYLkz{JkUUd3yZ+-bd8)-2EC9ySfB~?*QZ+ z`u~kit)D=GzjKiNOL)E5h4&wmtY7F*meq?lpL|I^$=anuS=J?ZeVHS$hz@00hxy8X z&D!Dl} z&_X<`5MRHmP^A;v6gnr_LD4^oE+=%K6FTCAe(Ho?cS0GcX)3iz$dz&dIpAoQoT-KDkO54? z@({li!qy?|;o;XHljU^5JUR4sm$ea)DRKf#zBPpKE`5OP#}S?>$KKAejv`zj=W5QC zlQhq^-T`Ehm4m!2wdTOzCC98Svv?BNCDz68FSRP+uaqwi%B&9}Tx;D7KVk7WuqKNq zjjXZ04S&7$efYa9?sQsjjlkb*{RjMZ>urH^3sAe22LCGSeeic#W6yss0F<8|G1hYy zlbrwDaCNiU_hyb`qPo;^Oblh=2k}6v9M#HrvOLTdXif3)<&O_8xdTD(L1=7L2q((m zl0#!+*-|i;Sc6OM854WIjwROM5;h%P&JXKYVht{NU`#9vgPe&qxMX-t>{B|HSc6NR z923h1g0#dMT*9Wto9+ubmRN&JM#jYcO2-mwaLLPKVt=P&i8Z){6~@c?k2;oEgG<;f zcw^tuvBVl5n+hXfo{2TMZZbs(hp@n{p3#`R99-wEw=@D4h# zJDt#HoX{5>y#K-8o4`j|o%`cwGLvM;LIMmJF+h-rs1XARih^abOcu#9Btrrf8MYvV zki=wgD^f6Gjbpsf+QqiNUah@dtgW`Sw`y$#rA1rYYpuP%VhswY%xi z10z;Y5dL}U2>kL1!y%`QETqlQ@x!6(8n87SvhaF1B&3H!CZS!HKn%%Nw2J~W zC&dR(?3n?5xTQuJD|C9&$^z}7lt7nj(TWP#LkT6`wu32jXK2-c-5DKgPs|JhBN|&1 zB@+4qNyJ0oN(l@aQz;{@KCR((ZSv*LjuSI05t{VFhKK)neAw@`qhdNa=R0;&tqdL? z@<9yC;d2$5C0~h=&~Nlj&&BUK zFwn?Z_B{BxV#p;=zV@3cO`t%&8!S{i5jqWX8R>V!pDDHvPE`j0&z9M@SY}_SX5UP` z?1NohyJ&+4`^Sq8&ziHgC(B&=h!^k>lYZJgwN1 z7$-BM`5b|_l=6)>*aX5ew)b1wf%!8_Utl7NW2T^bx_U29?4TW;JMwVCc#K9B$LR1c%ck|KDU-jxQ%L7ZQ zR{YD}-)@YLAJ*T-sEQ5MFDsu+RRTC0wc%C3I^R$+bd4ho(WF_+JM5Mw>=LjPz?Ub2 z2!fhydzfLCni)cx875Dcp?tE2U`Vz)@Dj)Jj^zEN9LcpRV@pNx3&23HCiE1CqG;mf z_(jFlqI7l7X_{7Opoabd*5k$l$C%n3qM>7X7e{dW>^Kxt?*&O> zp({EpUgfn}9V|~2Sy(9{zrvx{0*Q-e0o?mhQl-O zKnjUz2cMXjSQ!#q)E!El*ted1@<}EZFp1s6lFj^Nn#2;Nl}M}{C|!vJmP-PGaS3E-**q)>JfKUELN>KXAlzM)njK3v7CXn7*vun3 zu?ezClr|x;hRI6vBooj}&=l;{md21kw7Y!r(nzhNrk;_~Je9UI8<5yKDNV6QHp#~y zIHU31rGNa{IlukRul>J0`fFkD)#3c-q;y>Pq^|mHNN`hkS?bc=m0bJ~tKKTzPo#7| zOq*B_65H`s8|6!q7+Zbnk|mH>|66U8zn8>bPLo)obT1OSda_!4lL_c$cZyoPzm&sK z^0w0b{KK|g=n=mq@4K93I+z;YG^K}&?GCLMoFln4>;#|%+zfhpmM=u$COlcPvDK6E z9Q@Xk_c?$xZY7}0gsuv{p5)_p=sN(tT|)Q6*P%&3Ixbhxop`duwu}ya)DC?f5XW|H zRw5>JFT!6VxL4pu1v&v=uQId25kG*>Qd}eJ^iBb!bE^ilNMf`C(lMw#SwjcyP=0`~ zaojv>=xICj7dGxUHZ%wGkWTq*KsrXb4Q;eTciFfrZ0Jrq^Z^_9RU3NA4t?Fmov@+v zaDb-stplXEkSP{uK773#%n@Zid1AjU zU(~T27W;gKIObq_*TA2pZh(J^*bOQY!w!eV7|I;=8Q|xsFT*bpvnBIo?{HZCD=-Vi zkjPo;4}i~BnW*(Lv0!kn=(k_2N`X17&VgScdcP}G9pGiE3I6%A%Q&oh0AHy3;a{YZ z@K>l0z+b685C5?2GFGXt01nH+OqKd6;A(Y3LbFic5tReKPR)m3ug-+upu+GEt9tmW z)oS=nY76{kwF7>OIspH$x(WUobqoA9^$Gax>VEh!^=8N)ra)W5^OUi}&Vkn*GT+@Po|?XX$^|3>^3|B$K?JQx15+=pGJor9LCPAp7esdMnkIKBw3+0nIi*WjMrw9w=xr4jU@1VL!WlcoxDyiL&S7(J36_dNpJVnKef_ZcMAH(90oXymoZF5bd>|~S@#k%qpm1#L zETqdSpnF%rPmyPsT?MT<2FV7EOmM5Q7e*!$h>xuXHxc{IPuC`b+l?E5=9{uC{p!rx zMzF8xl{cXrJovB*1(}b(KE;ui?T!V+d=$j2lBdlpaVJr9@YUhi<9Wl0#|!s`OfXj7 zSVnW3h$XZrlu-{bk&TZr?S4F2qKr`Ybe=J3Tn`}a{G#4m>z2=wL)V~e2Xn+~NWPo} z6o}ctLi9WDmL!ZM_=(*rJZqgTiP+0>e@8NIhn5HV1QF#DMDgvQ)rdU&qD-^7QH0?@ zZe=)C`XPMT%21>sLzJa=aF$5PiWVs$Ez&R`IvY~&T3OkO`^gqc5qzw3!I z!}yd*io~iV<1gW_Q;Rv16zOH=kpFwebJt?-WTkoy)OWtgD4`MfRxNUenXa+$C?c89 zCGXK61`Ox|y?%-8^_L?QO|{hC%9rYq$~0@N zkJ;mIz%zbvoC{n?bh921XbJp$q2mdd9@@46+Ap{s8}}|7BJVoJdu-@#K>c{K#L^jK zh1797^j~b~r+{?m>o(3=92Y@OI`mvXIuGYyn2Qx1y2%c84t)39p|{zg&N7*c7#;WP zcIcBf^fNn@@0oPI8CYg$s0fgbTV~^y+E9ZXdYO%b^(zzi8as5v#=X~uK5d6SV&lGM zLwu92^ZlKTd(DQX%VLFcUI<8+w9JOM3^K9;q-(VYklw89vvD*cuR}RP>bX213)d`} zMrqugGXf{OeAx(1Ra*cTilNDAa%y>zu_c}azDPX+|04Bu__Nh30<+r`%M$b=S%S`0 z>mcQeR2+VZx<%mkz&~AmRp76|FIB%4_;vUTRVlbeT=10z@LKqlY8(7zsvrLO>U#Lg)gky7s`tUaNOjRneF;}W zTmf-0bQSa(S@8I&n_HG_aLKqGX{PQ;mqFIL$DFvPS?{ol^yExPPtMG`1i!5H4nw@g zV_4;XZ{sms;{8_}kD+=F9uYdut(XI1fa19lR5{ggocQKHzod_WNgXgz{E$?Jk83Qx z(9pQllu%B7A77(WNl5#1AHrJ;DKPLW@z7<7GNv_dYdr6VN$x!jliN2jC1>3($i_6<(T&zM-G@wU|vFn-?xMuGdw zui9`(Wl8E)6N@z7SR4iXzEcn~2M3ruvtI`p!0>gvM@BtTQLps5h3YMHL~Y z-!}~3D#f%3edko6agSq$#?^OtitU$vK}9xugFkt&^mNcu2su;MrP|T{cEa#jTXk5s&IW(Lz7m%$EEJ7 zWk#*7a|;7%eQ^!LPWi9tAtVEG??5CGt%``UTNmHlJ}}Hu6=|4jhEl>vBekNgTBb{) zwL&i2352a-n8(C+QEc6)j$U5~6aO9cmCzJR9I6RZme!fldm~()`~B8 zt|~X;VadXlCd=xEaC1v*jipwW#T6N%mX?8S!;PgA*wT5}&vt%R(aN~!qPl&>aS z*8u&+vdct0>22ot(xubksMBZ;SJyPxhRwEgT-==VmQ++$lsL}TskqF+5wdkEE?IWr z5(%PC#pNmvor=G_7#4s`pHHPz@fohh-7bYr#hDoG{{p%hXJ|rBL*W!U6}dZF0h$%q zI~~U}6+84)y3siBojA*#Dbf=igI=9yoPOtEOY?C&bQ}WH={$P~G~Y0E9D`HoUfd7- zGoXo`qtpX|KFhhs8d!m2V9Q9tK^$ISrYt zeDguG#L%TH-zKED0yH1Ob1$9@yB~S`?-ihX1>svN0KiR_@0Fmr(a@#Kw;yR7B26U@ zcJQQ=3+rtQ!rd;FT>3z8Gw5D7w3C%De;LLiJap;Gw;y3=g60!=K8MGLCBJU>Ub$=o z-Omxe+H4*t%Qp_1K0}u--!Rg<1~d=i`4Jx44^EXY=}sVg)dc|HCd;=SG+PbbWcls} z&1dj@4^IFiQL22ak=N@8U%?k1aFgZR3Yxf~OPB8^q_Gn;PvCh2kJApka*lxRoD1>tlTy7* z?KIX?P9zqukF-SEs+y>>lt>JLKt`LY)<@b34K71v1J@XfG+R;q61BOpy}hw1GR=?$ zR1jp%tsRlJlL}BFlm0@!>nez~{r4(BJ*nC>-X3d>va$9;;#j-J+T!g{8OO#-Os2{K zroOGJqcOIgjdc@{xDgdu7paN2w02Sl7g6Xtf@*AOkF>=sEY?bbt%^n?Ew$9&dZ|Ru zs%~11*lg)Upx+P?YpidGF%RN0RFJsN#@fhCpl%8=+q~+g)|%CkTEuOM%rR)63R&oA zRa@Kocy(Lr>PX9JCOAV)w}Pu;tK-$JYg=j}#U>D+nOcD^b)r_(fD=`RHbv@UR@6)< zYEx@xq%GdY;#*O(oTxgKQ7INOlC5&BTp|4V1{+jG7S>gkc(kqck`hBQMV;a$VX8u5 zC6ePL;wqIVkz6Mcr)WZPs>vn~(~l7}$|pgrs&=WnDeYC&9i+9{k=ZF*9*DI3g5)uty^o7Th{ zJ7i#3kI`bBYST1&HaV+NKO_cRs6gYC!O4Xfp9%s~-Gs#jQPd8KIjyd_Bi>ls6yZEY zD%>yy6$Uyh8t%#hA>)=64Jk1i*L+rXm_#MNHr9Y7inP{o7-iC#P;MWK>w%F& zAgQn})FnW{VnmWKOXYyDxe6=ISQUp*QU&E2@u68wXRzAYCEmumPk~{4P=Z;s*|csPpUS>D%ozfZbXPmlqacrfrljjP7_|sJ`@r_)F#ADWQwLlM7)$P&QhOSgi zBONgD+Q#f-D)fY6cs*753#Z`3ZaNP@2fFzBziS&! za>fVK2PLT9uM-IdxAymJ?(K>Xjz=WsgTjw=XS>tIwTi7fHgDP4gJahC;9n<6gpkVr zKeUp51>A}%z|CMHKA4As{Q{^=vNw2Av8Xg2SLKQ>%<(!z|JNuMrDnxUG;XaMQaVc! zP>X?@MmxCrMZ#bLS9jurg$TJ7O=U{Fuea;!or!oNEo~wfv?b`{fi2f0@QtOva6W!y zT?M1TaTuTS7k&!q6zG>0@twQ-`vwy6K^A5zTj!R+{BZI?-dQ zOQ`jjjz>!GX2!v*wkEFW@6rWkdehk2nJX;%()@Nj!7@%~856M58<&_gOclIhOJ5&e zvGlTVJQdB^x@FJy$kkn2_z@S!I%!8qPF$Nv&y9%RMJi*?$5!hTY{T|&suv@F{+zwp!j?M9Y*kfn8 zI4$RFg=9Bx=`m&hpRKZVDwvu?KPd;(3N+DtHWV}f-j0tCvIh6C2C3vn*G@Kw3R%^< zmF$FV==dP3EmeSMMP+Nrz6xXeKs>?r&c-t3iXEGKw^6bz7aK|TR#vudG#eoNtSh^= zR>l(?OT!4x#80h}SlTYH#5I@{SjY?$qe92P+^aI<(dN1q2DX~Or8+l$tDJr1W^{+a z#20WqX$F$dRbMg?_U^g-PM^4Z13`f)eygFEirUv!JiFqtj?O)Eb`WEI7YjW&P-(?a z&ef&R?DH6uW0fWI7y0ll-(Dz$`NPgvZ$ps(l@)L7S(3c*7QjYd&8>$3Ti<*J;g<4bXX$W9WwL(JaNY7`Yr}BMwq$4RaL1-(ebaE=j$~_exTPoA85{2CPu8y+ zu1h3aHw?F2o$TB++_5)Vzis%&{m3=hx+7V)ZTQw32zT}jzwagh!@Z&7Szrwxa-u`3 zif4!ZHAL4WTXtA-3H{>T2pf7Wqu?N~e~s0bjc#nv ziB^r(myd32(myK4>MKV#M)i*~$Lg1lZj9+4D9FmujqCIe6eK*lafAGL$63kFvf++~ zWPSN?T~o5Pa=0a$>|8$F5lhyu9IjiJYz+^$Y>=`gJ43@ArOEoD;krf1*5cuova$N$ z=*A*DhrH2^#dZ#bqZ>4NJ?DhSRM`Q%;(&CFVuLH2W@9UM=~ZOquutf3 z-)9MQ8hrMhEcu8~hqmK4d$U%thM@w`b?^%XBF7q{W)vOcDnJDi`bpdo&~YCEG*xg< z0@A7Qqse^1p;H={DfHP`GhQC^Oiqh0&Y7Kb3Ky87)TwM--rP>GoZStvPwfZ-}wdy7K5%m}N zb;=K(8`MnrtJO;Q&8h|d8nq67Ol^bTsji2=PTc|j?dl%*8x%j4+^C*{ze)WX{#L~g zCbv^*x$W(lNw z-Ra4h9H4g|;m{1t0zrx3e>7_KhrGw4-bA4Xz$B_W8v6)RFb$cd#Dz(ek&Re)j0J#r z<1*yxBD}<+oBmoryz;6$%OXHorkN6A^VD%m0cpqEV>|+92MkDPp)~s-l)A7RZGc}W zDv@%a_JlHer(jt1y3!jlUtd(B>#5|7ZI-@~fz7>_L*dAHI?VHO+h1DB&R%>di^biw zY%Z1Klw9mbK6K3QLZ`V*^`@Aju~3Nx8_Ri!6yR#YY6Ik2w*f-B4eSR*ho&HoA)*9? z6?>tn*d==AH5D5R7O`@Nr|IfW#tMsv*96Ru+QO3Is^Iu~t}P8gPss5wi=~c-1M-KS z(nBK4qHB;fts&N)hH#0`KsA6^+gUOY=@wzGlL70K?iEyFz*BGp#CmOoA3&oOj9q7~ z13NF@*_*!B#&=!TJRQ?n;nan6UEKjI96+J#c3nnI?Q09jluKtfu8R?-|s=on%TYKf(0 z$Vw;4KpIIhHQg8~C=GG8)=(Ls%kX3gLt2#U@mo7Msu|r zC--3KMLB+$c$>+E-NGeG*D%5KCJ`bFs)a~M3(-o{5+Xz1x)9Sf$G2I?a9~g1!t%t_s!YzOE55P!rH$y-$>@Dl&xFx8dOwHV@BuKP4}4Iu3TSfOzpSOPy=zRlNdG9c4xA=Xq3#jRg((*i#ay2gm987H)u zP*4*Y)?UuQIEO;hLt^Xp<~|&AcJ55Wa5sk!EO90oCs}MQR6<&)%$N>0 zy`+&c#A%_8rkhur0rMiyfEf!m_>Y>;}$c!%&|@^{~tg ze*>JmPRJ)ZSjp&%d1-MCn%NZsRX zJC+IQTl4r~fjxLvZAYnkggUhTR$*# z3_)Ah8+S<0Swc89AghOHiPS*p@S412bkXpd!eq2;cui<5+%Ot08e3m97H%317muwk z9t%fD!zE+uOUA-62`U{6ualrfW8n=FRF;fx8(veM4DVBS$rH`Is%rd4i&@Ws2;ya?l&R`p5Qxj_x`a&1Wo~mM9@DQ7bQNLBJ3+bQwIJu6Sa_qx%+D9O+0d;|MZ*TRE5L_K!pI zgQR8*`S#v_)$0A7hU+Z2_~ouMpK0hW;IzXg0YCsdILeEQ<7`OHD;L~g7spVS4t1H< z+qwq35_+xFgd<#gW5OIX&xAD3Ryshipo$?D&rfJuH6x7}LCN#+fUF<%kKv}mkRDj= zL37L=6({HUEaahizK>ao%aHwXwuf_$jM>;{dO7DvNyktZ=d;)%8hfwA8sFX}?(DL8 zXHJ@TLYj9gB_PBx#PE)zvR~n_>}&fPY4}IxjFHOh3m5M>GkGiP-Fr0gS)yKG8aPWE z{_G(D(rRiB9GCfIbnjP00ll0_II;TLtPR(l@eRq%Y$_zH)%62p)q4EG(uWvOia6M zmR~U>8>fq*waIhY{5va-z+lg>tg(E5>tpo=x3X1<5Zj@HzqDhdpWB+U3tOUlt{Tf4 zU4SE^qOrQb=+=NfKnjj-g^eH_AVIsBi1qf0N6&e5=(R=HH2_uYMJ)rWWE3jM7=*vY z&mUzxKt+K5G#V={U`d3vRgr`*=)Zp^cZuFXL95 zwUmVdYvGsL5IKJmPe}FJ&^G|Ft8%%y1b(gzZ+WmB!y_CnKMLfKW||zyOjrK|Oh|nS z{!H~b_(639{%rL){L>~3e$0(01q`ibtI$pczm_h%uNySo+#38iahRPC6;}p9pTLtN zGrzppmspte#`ax}vbX7%vpweMs0!~nErF43bMRwv$NV&Rgfw?n4rt%v7=n?4@WCS;iSyBX zf(MUW=O23fgdP*aD;~YBL{ARM$9Fz)8wma19=cHN$qyem%3rV^^)fU^+9M`qz|?i4 zqpzXUZRlr!w8P~f0Dd$fHobEAS@sr40mQREgl@WS6s4+K_*tu~mssMoz5vxZ-$KiEy~_s)M=|lcfIRFRw@`sOf1rPB~QMz5*LuWoF#eA zEJ9;Te!qngu0QRHoy%P}-AWkPvEgRY7JEL(*h`8Y;> z$r_k`lXM>C<3n?lGhu26(9SKNe4rfpy!y>^QBhXOsNs^1G+y~IcP*bUkid49d?*{C zvE{SN!bl+>wqp=*j~i3*+wa=~-zr7k1o`l_kyk#3#w8!NTdiz~8V7vIrDcwMzHX8( z6#2A(lE-n>PN1DzK3qEZrS&rG13!85-A>7VV$vavS3b;L%jX!Q+0HE=p|Rz|5;(EG zX~!VomJgS@ejj(;mV62)$Y+MoFg2@17#f#+LP8UU&o8Ej?>+AZhq{1>j8a@FDm4SO8<95s9ui+tVzniw8xhtSSF$1xqv=^w0M`D<~? zu~2AiPMMYyOD-hXG2NVU8SEETY8I!(6F8kKG;U4}jf+zrIQV`2@Yxb}9r*FTIGny{ zIGrb)CPA|s5A{)K=WYolKsi0-$g+38tz=={Du_?CR;O_0y&LgSW?p>fG)fza%S&(rVMzjWz6j(oy~uLUBX4}fML z9_qu;&fOB2j^>ocEgWZY%2`@yY)+Y$6KkWWi~3}xH=OWn^UIc#JboU z%f;!LpwqLS#p%KcoN|@r9sLZAi_^30bg0MUtoP6Vqr>UVhSRfz)6au)IUef#(9X>% z)6twpyk$0=W+7Z?Y)+Y$6U$O5YEpJ_%H4dM@bvz6gA) zPRk~6%B739P7RHV)ANMpDfrY?^4pcyM;%VTX*fMkIQqc)Z7w_eu^ZV|CZ}EQK1l~FAdU-cAF5Wry_KP2iNniTq~XRdczcuhJo{>Dh_Xl?9x&~5~ms^F2;W9Px&Ff6*^!an$K;Leb zvupE}T}U1A#ud_v?~wBp&n9&jjieBVzC=z)Hb=_!%i8YPk+WPwXFwZKTs4M_t;2>73 zP=t<1qc$_FRv8V9Tl=pul3Ew7Ue`#rC)dqbvpU>T)zp|GD~m6~HSS6w8>d9$s*^dH z!Xw4%rWRL}Mws1TH2vaBNmcc`F1kKr4Ft_0e;9shI zIkR>n{IhuICd>Cx&^&GE(&f7!X*>s-4Oj*r!IOi3sq*EH_DzKEqgy)-hGScvS1?c`A;W2YEI9a~baeB3(OPB8ow{#x#19)!YveV_lh2`PJ zDd=uVMdw=6F^O03P)Fwha~?7oAMXXtKN-4oeDovWUeL_Lf^h^-E>9>6qnq5PKFs$c zcrvkIyvyuKC(HLspgC^nCd>CbpsBhLm#Xm0fCSUYZEYspR~AE!LS2sDcfUAlb3DELy)41{5Zvx@Kbahf9a>uIKq}HgxIA_Y{&@3z{=95Dw$X!F$V8a=9LK-$!^n^4Ien1kI44OP6myk{JQb zpYdeZarYKXneSoHU4Zb%@z71i?{lDe$c&6c9lH@yX9O9Wu(IqUGvp0j<`&0O18oTZnk_oY;dygE%M-U869`J zHe=UMJsJGo8Mk@bTbmlG3^PXk9mM%mzQ#f6OMSi8??QYA)GG>Yb#?1HD*@bmHpq6- z0Lst6IsUdoQA?F5JtKx1&R}z*4f?_uk*Ewc1t_i5lUiYj^Q);gF5bSrrG~0Qwn>V% zR^6JlqELj`x1wveNCgYep2jlK<>DX$S66A#aBvnvs1!iEDfWrZDZqc##^*>aVxQMF zIL8xEXa`)mb8sgswN79NZf!EWM`x*+A4b5h{ZBlupO<9H6mmp1JL}$G^sk+ z%7<#>h^ua`T~F;Mq{~u;f|GpW?a-Q1%Q|6DHni_Zv07Syu8Fi!H4HWDE`@3sk7ive z$15^{730JnLjD)3>ZRHmDs_N_uh_o1XRwQXtXB~ERFWHmDx%hwsa*jKdF*8qmb%PpdGj_3iVb^k!V${LDX*&joV^CL#b4hdZviU7Q!Z~XKsPg zC~B`FIw*u~&}hXWo0uukmnrIwW04wBgGnURW&l}L-QL<(ZKarNvaV{5H$bcAgZ8SxhfWeVp5I_ z41l^dE1)(~2fb|^hZrzTa+4UbhPKvDP6)(LSA{KWO$p*rs-|vd6lf@c^Qh7-xA0gt zNP*)`k&Z}HT(mQi9v@z~@uF9e_>(GmDQs$@Mg7!N#n+-;HO3n80_E+ITF!|K@~Hv@ zK@A!d=(V6hMPy!PNCxKRDlQfpTH6}mjwZ=gK|MWay*uJNc3!@N6+=o08k8mh5VBDa zACMFXMTIvzNNr)+6650{(>AQ+8m4xUdP6AqmB+0NI+!5c_*PGaiMJ1a*X{l?r z3ff|;YLOt997JYg$x#Ir;Em0ZS_>BxT-9VMc`c>1NI(<-p47cdy-WXPx_8rPJZ1$k zpOY$i`H2KIC)ci~>dK{De^W3gRq~!x$tw-vq)Oh_PT7C5SDY_h1xkji)~v1KqNNVV zEUnG80lIdrVdVmh`=XS&v1K)9D3WDsjiDsNWYk(?(JmKSXle#6aiqn(LCv06W3-4Z z4C1C}&7yU%h10&i-HLso$%)#`Eghuz07KM;IyQG$_KQqDmfmxwnX9$M);F}SZCc9N zjf5+N$)*^`15xcvO03vK*Jx8?6mQJiY)$Vgje>X=X}%_HYHW{5VXbs8c8xP9Rq`sT z%s;7;myN3Zq)OhtfvsIIItE2tFm3hUqLMeAe#Z2Q8^`PHov6e&g`U&DuC(`mj$U7C z73Hz&R9=j;PE^w>R2{D-RkYcTM~X7bzq?{!YCN67;hr}Z69b#KLhWn{+}}YdFO}5t z{J4N3?b>#Em(dgJ!EZ+a4W3GAGdTT_9$Hy&nN@2Ly%k7DWA1-MFK$XDxNP(DQ9fI> zEt~i_-Og0cOCC;YyM-WldOmfqZ%^;G8mM#a?ds9`b$NE4%a*naN?&`mCf)(y@^>b> zcCQ`ms@uF1l$3Tau))Lt?-J^$+)L+f?d$E;`jLf*Hd=ycw9uHmM}{F;B<=3no!ET2 zPMqq?^WBQiyZ(x{TUPAv5J_}2vnA?|{h)Bgl zcdOj_-3={56V&HYhcRDj8FlI|jo6}2J$2B3K!q;LxDe%$a+@AcJ-B~AwYuc=MT=9u zkaGsm^g)T6(XR^evNKoRY9Ot6H&1Z?1RS9p^+iC_1^1wVa?}%mW(e+E2Fg)S;`eL# zl`G#46UtFP18%zDercc_QMQ>YxD33KC6uF10hA}W(+mU^nSk;Icaec|R2!ffg6l9) zj`}$wjtK5W1LdfWuL7ZxSqG0Ka-t_@@*VEbvB2>xVu!vSIPe#>U#Y!6u(cT=F{7xY z01!)@rRLi>h!zeE;OL7VDt`Z6@t}?onmx#KT8Yto(Xy4IyRd3Y1 zt+SLkFb}PRPGP#~_I; zjk2V~(rGCX(o(XnYWaCl3l0QzBYvnA#}l*A3K{^S6%0$;(7tX9$Y<~O;+A~0 zat{`ZZBwh@)l$NRSA#np5Zh~(d`rZmOO~btey*y3KNa7mdSyfjlZv4(l{Q6`k<%(_ zdF2HcgB>+MWuVs_6VeayLe=d3 z>bO>9NY=DLd`*Zlbga;%!us|~jO|KGj4fD8>=YYE*|9fgL3ytwyK`+EInwg%1f)~h z1W2dSZHKajd0XdH{LY3Z8gAN`z|VyuU&iBQr+m@xI#mq{rea);u+fnVhR$?aZ9Z$n zt_Q2lh9R9y-gdwQ;ppu2clF}lfNrf!PPb~Sv9hqb>ImtoBNd(1SQ(P7bY)q6cMX7G z+ZspYkFl1uDA*Y_L^ie4gHk{~Kh2z=lBdK_v0J#<6qP*Du7TaK8Pc0zll#xG%ED+? z329bK0MT(2p<@X3E)`Lw(xQ%JqO=r!G?@k6M`g*DK(ZqUB|AmK(1$b}gMOsil|@v^ zgx`f@8vsKc@L282y!O#;rR7kjT}WlxC2JV;0#nx_Y#)i07PpBiZcBW}14GA(hfd_} zeQ$iDD0tWX+wx?XjVDK>CJmKt^A!Z8%$ceNetNoua~^$bnL5N?;@W zJo(yo>V$dWdW5mH?!$A6)81rWs2$jRm0cM%1AT)s2%^ooRm0la_ka!z;_HctO^+B$ zS(4LSExpfdu2$nDXS&7+=^A4Rv+&@(zf>ASSYyjEv#d-)2VwxVP?Ri0orIDNLHqzN z$QnyFFbI120{E4eWKgNlm1sI>-3zuOs7w^d^;g%AVqiJOCEz8GhZ!`F@*lkdwbxUY8lT@HVBe~7` z6}t_;ZYi_F$`Dqj(;JJG#>O_>RyLMxe$PYLazhy_%|qDoF-dc@@;<2HY8VULG}?4a z$=EkW^A0`#=-3mZJ*81->}n8Y^}qJ zx1mqi5Emvo^f4Ryjt%|DhJIy3Zvg7TlcjFPaIDAv+W_gl_z@dN%{F=lx!Z<54@l1& zM{Vfe0qMA}+t6mDuScRx(~r-=?`-*YF(|sva-`I`qTn%4y#t~7DhdA-H5aMOQ`f*R zSNjFN3I2TbZukq-2jG{gkHTN5J_~=5dIJj+osIS4Fr@jS$vHCgu^F+yfInv#~ zN~t5^@p@*nG1Bvjp&x%wb;bzMGb>{RO+3l?;2EuDk;G*aS1p{XvU>Y4viI2PIe`vP zAsP{!ojDB!64(banUF!~*^4CB5E8(Ev6P6XjOKVEpq$cCC7&g8;!-B_IB4!g;+b-} zjYQ9xSej^wHS}yoetPI3q=z0d&cQKLb+GR%hH&WVL6^U}eJy8;y<=IOqbm7u=?w_$ zE=LcBn$N&!T>udDd|(`dm@V9 zO3V~7%ps*=3|O(TdXrl1*b~4t;n8+OV0i+|Xrzx6Vh?guHeGY9aOg;0PKl&9^ zt{QLCcifHL;px+m@E9FKg;O$jl?QT z+S<(&hxL9bP)(Ja){MNPyb}w5F4aK0yxZ4l5e*$HkBl^*7FK~!S8_b$!1gMxi+3;v$wbh;VV_NAIfF1X=|4~yBV z)6L4jr`Czf&T$*$or|<}=a>b|9l+!Ole=Y0-_=|D26|yI$?74LjP4);@)y8YTh1DbC#{}>P>fh$K=9!=HfsKR5l*9S43g@7m?^Nq5(s!=G-#P5=^s(_8437FEcsvwt> z8o8zobfrL-zraW+q3$U((Sk~l!-g!Wi(Bw3OO&DLR$gX@a{DnNp)niU0%%xp-SBk` z_BKuTDI0nSkY18LW8;2cL%*^iPMkXK*(eqVjV!gohWI&=#>D~Y^sWbuc2i_SpDRZI z`FPjLyIwW$r;BRoklF-zmbwD|sp{>zlnui;`lRALh)ZU7po9>yQw&CbQ8e@MN2m+2^cf zud@)g<~8?1m@?6QjganZ%ry(Yd}?|Ke-uMZUpw$p03n=_?k^1iLXS()OPtPDc@(oz z2?*KYl6Aqv)eV@73JY#}8fhlyNVkCE*O48*7XuvLlO1{fr*yktc?gSRPs^`(`rwIz z4?j9|G;btu2;CsmmJGdTc+JZijJ+o?yyo}P_>-}rAX6J&^O|IL&BtEsf^Ou^t_-0g zxh^j`Q+oc_k}I!IlUL-eWrmDa^al6dlf0$07|dd#3`N)4rd`;74jiN4T$7EfFY$0d z_oY%mx@VjVNVo2o4ehcaF3@!7*KCOMlg9nrhAL2#^YAMqvkCyXY?)^)J;eCJ5G#*r z_=U0zouLK*hosJDN`IXtDuYjz`R6og`)8=9Kr>f84}YH6A1YCQ06bq&iBhS08~igS z%rg;SxqoNqoD}m6+p;+-OV^~izGE|YmTGwh6WHFfv!BzG`qPOMc}U%yoaF)a=IdHr zu5YI`!ElPzjh>Kh^eo;1JbqOqjh-Rd>VZ7;IvEGij=6SB=972JGTSgT6c^m`BBHH0 zS}?+;cQXGOgpZVkkNy-5IzQn5#fry(%-|R$`Z#%=T?OG_tJ}Hq@*}{jFr+=D#|fRUA3^ z?7rL!6E_qmGQ%q#+xv$VkL}4n@P@*8a$V+d;={!?NFEc^-cP{DToJldDA^ncuQ-Z6 z94feFDJCuGj()b_R*uE826P?H{*8xlAs*!--@RYe-GzdGOrr`$K7{m>wGS8TxpyS* zD0}ycukFc!*?~ftdrN2$PJU*9_Qh$KiebXdOvSP}2c@1hqsgiOX2_Ai_0gnnBrj}E z`9?xFyUzLQSG+M?#@(DMxaCan=_=G3W2wnrTok$jt%DWw7kyrR8c#^hoOSoCz;6xl zyhKAgZRjdMdN6n=AUzno%MN9Ubc{!Bhz(LttfPQ*jAdwwx%ic(RsqtuIvckdP`-q= z17aV_QX6dCRvUL1kk0KX8{$4rr~F$$I^`39bSiw4akr#550DQ1IDYG1mMdqJ)5VrU zNT%9ZvhOTXdq6Q;ChTH$81P*6VfZELqwp7q1Y_zxzzfw;_=^-f(%Fj3f^%g7e4ct4 z@DlYV{0cP%_!lc`GFzoCfnTLI!LLzQ!;h(V!f#MX_>Ho! zy+nNy@M`rX_)Y2?@Ykp};kT)L@D@`c_*2!{0`s-g_<6qM((*FkF3Z8UJ>DfZ_JT4j zGwxhxD72^bDx~Ha1DQM)46`wsSz}+QLQBi(Diu|_(+T2Rmv&M&W~ zFgDjBc%O;U5Hw!~Hb5-b3BNayyr;LUG(AKT(nBPR?MD~QQ1fJnWC+#;PvKAdS_}|* z2Y=OBaLWhr6HD5WcjK=a4fpO=M}Lmtupr=nz2aG}yxF2Vq+2VDFnT2PKlWC}LJXh9 z2cNJ<#K2P+2*Vf%PfbP(Ve{d8*bWvIy!Ysuwhn9g3KNz!D@OOee`EZzOCO7_-GQuK zJA*=E-MtnyY#RMs8;aOan++YL)Xhl5pVHw^jjI|?7- zk#`=Cyg%bP@{S?b3-N@+wjw$J;Jn}st5GuKQ595Ff$Kv79GqHTmBXz-`de_H~_Cj8rzWShSKFP&iekSJ`BfdV>y%1zd)0R(Wt>}n>#v3 znP{>8IoivExk@0+wtBQT2*mQSN0DTyoUkndRE86EtI*L=hLwMR%wTY4H+mEpCQ@tT zmJ1H=07^?ox0O;%rGOWW{ut0AKxLyp0#x?>(eIDGz_LQ5>pF1~P}!jm9XcW1$_{<9 zH*~BtzH#Un?Etyld5HB3JR#9A%tW#<|LJ9LmJCQda>^3@-ai&-uN}%Mp-XW0+qg#o z?GPO6TSJVeAs-rphIpewLucC1+X3lL%Pp{muCyU;K&*~D4N#_>Xk#q{I9rbLg0h0Z zIv$uD^)UPbwGr_P6*sxlWX_+iK3o5zYeS#?%_HXTDv(X+^h2QMx`(TTdCW{ZyVF+< z4D?;aF_V2F4A0qj2Mvb%ZcfbB7&?VV#c~sXeF<~2?n|4QlA!sr)jE5o@ei4zp~Ge<^=j`~Hl6`^cGc(tVMT?u+DyEia&QGw???bJ^;^OZx%0b9>LZ zEt%EX?d#6et))BA?H}1#G_o(Rz4HYGVh3G%21~G7E0lfh31s%PzPfEOI!0qYRJx1^g86kY>1GCG0nL08z@ zeWDFHUdb2GoQpj+cF$$;QJ$4;EIl%5in5r%Zg{pX(226| z=sv;o`5qDX(6QxC>F#8YMBKc#_D)?rB1{Nq4a!l@av~GMp;UPT8I(bsU67rY6K*-D0`S6^4-C|Iw!krG@xzlnTM1@ zYxI%~tq3nKK)OGyo59erki(d3AOcu~^tfCI$pVS3HzcOWxZwtm<{#XKlJ4*`X2i2_0h-pg&4_R{%OD&>!IQ(+Q3^#qhJm z7H^Ka1n}vyuPGIymuHCOp)=)3BSTK3l6+lXUk`%SFO!TzqUZPucJg4F{RAw5u$jS~FAX(V_0a?)fh z70KjILvM-PVVOnmBEhaB#U1|4=Kv*NPS%B198Fw(VI~9iW@##EprdCHV%x)@( zy@$J!kh;dE+XqOeHv}kG=!OC5ln;{*PnP;W@O3I51;iQ&sccYd2PGE(f^r#fio6fV z<+~?LDvRM4$n}tEqJ)2jx(XO=n|-G2Vos60(W&Yaz|S`IjE=c#yzRJ8BAkwNuH~p) z8sQ$sG~u2uZf0=N+*y%kb9;*|v(>U#Zr!p7>6T@s4uo*UkZi^KIl;9ZocMh0Qq#$0 z&mjNgOleXt?)p{n$jVE(pKZDz;Qvd-5$rbnzdZPaoQd6fkd&>#?~0>)3NVuvx0&G-*~`IPt8*~-4s@<$B*d-uz75F;TD7$2$IzaWl|f{> z3adh7`X#kznaPxg9G*;z$7h<`>B=w?;+FbjJoxf19uFPj&PWg0Awar4&bFa?8*+Bi z@3L|41;hiJkh%xZJb}JvhrVe;ISA2oa{y^N`nn>srTtEk)8-tRIP&C#8%sY>6pER* zX^L}JNG?3gQr7}LRlNuPY3gI}=cwcGOXQq;f%*~PQaNT?sD1;xP zvI!RLmmn+%+H(9|;0(TE7Q3#euWy^Q*!V!IHcK4iCh%l$?b!n(Zvz}y^N7RX62MpD zT|Doxh@6vc3PCq>Lb{o=D0F@mWQ~Zp%&|?!NFE!k>NNHdafzud`I>I@FY5--8P$Jb zf8KLPl!@xfF1yl*tzq28ng@-C{9kHm6L>iPh?jB@M2$ok$KO zejnEfTH1^?p3^Bp1a+n ztzh|Uamv~g8kg>K zR-HZrEM2~Ex&lxF50wpT=jN2@Xij%q!SdJQlspNI%_-AzV(}%BP zCvaLIH10YzG%ijV>i3nvr^@0}{_g{iI-GJgq$?Co8vvEyp?YKO+?+BU&FQR(WQyz$+)8R*6Bp^WHW^35Pj6?P1kf;9F9iH9@Mgg~lyaL*tU_X+qNv4yZPI^pu4tl3_>fGr(!8 z1TE?+Q1Xr&RZKhXA1z|icv=)w*1Z4NAqQmf&UPU*Ht*IAIvtCL4vus4jwJ(l{|J1G z_tPfuj=>HzZr%-zi}$%gL*A*n`rdbb4Zp2SA2h&RMc!{k2y2;YuC;Twjd?&hZR0oJ zdhTAQWdCB)Ar0i?Qh8k>u~?6E8=m{iQ%%o$Eth}MDcO5XI;6=^@%Yvqy9N`xbQ(z6({ouKEwO8@VhEun zG4dodw!~N_C)T&Uv0M`4y4LSQ_pl{)<^+kIEi`V485)x9&3p{;BfkeNqVtx`gPEB za(yi{Hm6L>i8aMyLy~rn##~_deTU&&B#S3-S}rv1IyE#dPM6p;Oey@qqu+HnoyAQR z+!Emw0n$IT@^#|foH8BF=`^cAB(dimB8A50lmc;Lo#Tz=s#7i}{IasLNR~|Cv_fdy zoEjPzrLHQaJr3DES(U>fW_;&pSMF@cUSEbRT}_{m(mf z&}z~l4SKh0CBy04iS_WCc_^~Q&*df-X}qy6kXQlujN+xkzXZArUH^ zKiL1dk2|$Guu6w@9id@Lnr4Zr%-zi}#4ogyGXr!FkXA_w(x?|2w=_I7F$Cj!Dbu0c zylxmpTP69)*MqQE7_Dl6*+Uy;l;Ya~c(Y}P4FXGIuPz1aY9B49t)mqvQ>CS-w^O7RixS*QaiF z5@HH7y$MJ6mpBrK*6yqfmTWc|Xgi73mxSx8S{lRVyP)x=B3CUN*xY-0munPE-$2hcRx&jSp>dd|K?YslSm?rPGmaJ$d?#h_tR+(bSa)n}S{>#K z)pWTpTUA=uRKBX*3NNi|vDt7Z?rD?_PUfsWxix8t-LWh(#T|o{-#)4MRu? zim0{--ff-n66kknV_4gs-gauzm@JaX3l(VTGP3K_nA>nwY;>S&+s>^CZU40y_bYZo zr3F(*XO%YK))EyCi`~YCB}*C_&^v6~j17GQJFkWE>CHVI=57a6T(QiO5ScHJI>s*B z`nK-sN-+5C7CGtC$jH2&7ltK6-LRHaUs4~on~BIRylTlRyElroHp3K%yehR~hbx7r z@nWuWD%W&#Q=4j)W#;8ACEjd$i^uS-sEB(@(K!yg?83a|IP4_O`^@-&<`xxbR}h6z zqu&KH(5X2mnnZFn((V!x0K5bGlU4HK9Ys>rzctk6rMuB zaYc~My5=0voNMUFZYt}VQQ$8C&Aag2i-(r&Q(1}PdhfdkU&xaUxXJRp2sD=%x^($& zLK-p9+>hsHcry8dF@@E_ZJ;Z}NlAjIC2*7FdlP6rVCd52TY`X(g67f1O10qZVyY@J z`FgE;ap5(UmEv;Rnx2=ANBFgGfsPB^4JqloR@5#B-4&o4HMEoQ`x0p0G<50s-H(7Q zoNnBR(~DYc_4#^8%h}5Z#GwM*XS-Y~e$fQf(v);wK6*iS8R))gXeZ<22cY?lp-acd z9Z2tW(AnGbgZ=ua@l4@M>=f283qkif_w+88s(jpLPYFZ&6&||D%J=p#j#%-~ zr7Pck2up&}#iioobcE!@41xKRsvYo+K^f@w7~0AB7zWMlhAtf+s9JRwXnu$1 zG#r4XTPIe5ZWY4!%e8LzY=qWtXezG(70BEGwo5sUn}2iDCAqZ9U8tx3#u5&p{m!pP@nqU)4mj!|S6> zRW%VYa>!s9z-w=4j5N{8F{8~h(E@4~j3=&+w8c%d+DNpib$z7vq}kS{)$tf@UDA-# zr6S>AHE^AcwGmncyeY(npI2>ctkUu?>w;*X3R&oARU4|Rx~+9}q{XtmnxUp!!Bw%< zFhWe5!o?=8U(K)rPnvDLgytbB(L78WM$jkCwrcaFC(X9fNbE_ot(=6f#PEbkIMUV@ zud9kxHF3xy4j1Hzt8HtIa%>_B^8``tk+zOVn`2a!22mLdEhG}dwzf*EaSVXU0S2^0 zBDL|F+LLBm<0s9wHbpG!wAjJJT%Bb)kmh(YVFJ3j14eLLqY>L0;D4FfR?EEMN&Bq) zFyp`0K5H72xR&MD(^RfD2MbHtElao%qEX0Vm`9GqVfhj(9iT1ZIYQjg6svD-s$F7P zdYmgI9*3M~*bqu9eu<7>yIQa`mC4NJ!VbDK=P%$s_J zCE0UDh>%QMq;`qbNfsL$pl;krv#lr1wxS)KG~23o$m~o$ zbd@JoNUJ&`^;OLgb~U1BXxq5$v8q^O4L8e7qeh)H+lnuu3Qn4B^{E+MZhM2xC(X7d zLa_OF4|+*H?TilY8Q?i$TnrnYU_ax{N2o_lz-+-*T)9I~$_NRXW_%M7#57}X-!>2u zHI*o)jN7=o;wjCmrbPaKV{c8aa#q2TZb#Gr!6f_BmuBmW})S z25`q$k7?tPGJJ)RbLN#@TjOG*nJ;Vdw(soeYS`SnjTOSQsmm=3Bo%Rq5yQ{Sc(l2$ zg@LUmaH%eNKW=DdU%440>0n|H-tPSz3FeA9DMC4F1h`zm9X3#o+MBO6LFB6a2Fl?* z7_DhqJ{@0ibl?03ih-(lx+A&lIRL}4^1S4-rvOzA9VuS%?Y%E-e2j5W8eC>8vZ2#$ zXeuD>{Gt;e6LxZVfndB2vT{SkP?zaS(LvUR`?FVenQOVcX=~fCVd`4%5TP7N!%7K1 zSTtO@V1A-Mn^v>bibwaIpUfvWP{5fe%@Ym}U6=^w?U{PKHkgM1Xw+tSat=AICa2%s z`}{_a4lajl^3F$VmDAAqHjd)c&M(Tysh5R^Eqq0uEn0eDgm#=tLFz%v58hI zxl(LI;n59j21b`MHfF7bLr4q9N*cxI%VMKf@y?e4TEdAW^M8+@S~#5#;4EKNoPc-& zdvb>N1_L@2zk~7{TE$77oWmp_st`o=H1te*^p&L&)?(0WVeu`thRCpn&H|*J-=)7Q z8#>-`YAX6?b43H>RBCx-6x+oN#A_%nWp?v<_ggolsC3RjBgD4<*WR~>S6N-@@54DH z2M8qK;i3W_F(?RXAOwL3Ik}QR2!VuvRtW)uL?FRj1gA)K0%|-)X~$`8>rB1Wb~@u! zJJz!#Mu*7glyP0N|mWQkOogjAX?FYt#OTB>3RN)sFNV~}3aTL{s9^!DoXLP}|O zUjO36zWI6Gade*qy3cQmpX?dGax>GuO0V}|ym{@{D6S73=#TaF&$%JJn-*IV#m9Pv zc`@m=@#5zL|Mwp68QNDBdp&#aOFdWgRmHDcc#Oo*{CABD(vJBQ7P5Uq4_^B1cYoB^ zy&xyOFos+o{Yfm{JujYaoR?$i!8n9e7;mV}!Ji zF*`cE29Z9-7^^;V?@Lf1nR`nEFp6cU&V_kTv{O|f`9E8ZPfXX2&)IvVzhZpO?&;`8 z6N(@284hiVwgER-8zZ*0(!dCt>(SWwc=stpuUE~K(kr2Y5vn04^u^OKDdRdz0>dAB zQeR_ko`xQeA&9N-EIZr?VWldu5k?zS-lohWJhdG)tEW-+?S3Hi8R?wyGn18k1u_8B7cof;p zO*iIFxa()k0}3x^rei~ZJRu|b*?zJr*kXIam(FG+b)ynS4iSx~Hkdb=v~TiGm_jvx zaKQ~dsSdvO(l$V>v4r^ue8o$9(BFH|KYGwTfVfo25|tO4g7Q>|Q#z?9%veAgHqC=d zyx3YVY$KqRLaz;wmWmW~b)beJXncTuobyjgK2<%%;JO^(OW}_<>*1d&jW#8{d!pFx zoGhbJQhM|h>CyS-L13OO8qiZ_Kj7)+CHUu>SK!Yyzkz?gsCX?9g|KIfvf3hZ7D_hH z%!9vBG!z$!otP3a7ML;{5FR&O@Q2A4KPlg=+_^ydELH$XY|4}9!t$k~ zvHgtWLw83H_URklSiqo`Zr9T>Ff1G}neITQ?1uc%Xg{T`ZoKy)Rk#5Ei!RTq&@N9% zyF7EH8)AlYppgpqETB+dvnf8%w0ig7z!*v*Ei;*PsRNvdYB_bmE^Wh66Yr^m@>iHM zJG#3vU9Ej#%aNJU$E`(_2=JqaiI>&8GspA{FYA4DX7TrSz4H3FRbIzOr|C$6&d%K~C_XQV;3?qz!kM7v@iJEeKN=l_eQ9Hn9tEH9Sl-N92gw>&d1b zA-U3^M@!>ONaM^AttqNub%MDSIFk%J*JRNEJYJgUWaJ-SD*Xd6SmHbIT`v}y@y)iO)Eh!KmhGJ9ghG?oJ@SL5;YAud8{^WxFRP;*Ci z&s*IOBXZSPpuC4<(I?V5x9VD|Kc}xh=hpdG#?te!`nfvi^=RMKdB?d(DJy7 z)#n6?6yFD~Z|$@_#x6qtga}zQ6(J!NA+w;1h<-Te^a70DK?&-b9W%~hn!&?NC==D; zicvBCljdu?&+6SPzcrB2F0= zOuIzy;fd%K4_f?+QSttZMy-;`ZUqg0O3l&mXL{^!k!OF-wNTjHKk+6vjWM$%W~Rja zrLmsu^!UDpoY#k@v-`^Pj%Ry0SrcjZ2f4Uxcdc;2CZdeM?!kP_`90?Z80k4ph@^9} z6sfOvywAwfC{VeU{}DlpLYsM9bUN3h>tNV`sN2gkd!;KyZ?H&iwPBV@rnQuLeWiY1`Y(%#32rrNRQ zCg6`Vx5GbGtTdfw9tC{5c>?|J#L z)`v;b)z77-uI@V!Ko@E;QG$=0aJv6cS_qjK3fl_sE zn>t_#I>=s<1KTJ(35?XPft~I_XL`^)K)R~rxqvpr4Ibooo~sa6heu6wD&CFw-y&iD zdiB%zPl+eYo$wX!a~^cR2R-CLPXX%3lV$z`zOF<20O`>|49%W#_=p&*#RB-lWZj%2 z`(9m{j*%rmLQIyODwF?dqH6tgDcwX_0!%X7koF979sDz8eLB^A2JkteYJIvG7Cl$& z`i(O`MEH2~6Zq$PJHqnXRSk`mD;qL)eLn?S6c5qM$geupw2pTGc3SgJ=E#~hSwh-m zNkd(fq{N(}UDw(3My%@A$zhZ>(Pw2{Co8<8u|@Ijv$atc*cCwR+Wy!Leeu5fSYLfy zlBMo>3v|;9pN3z`7WLGw{a6VMXh)&5slZ4)8mY)ymK-@LROE$Kdk`Cl#x{D;MnM07 zCrk9+YxVN;NOdt;)r~bt{LPk19%i>3#LP9N@bhGOFejKgL6_?bEL7%h`uc|XFKf_PDr~w?sL9%?Sn{%J#K&O378X% z^jws#&ckt8vN-1xu+&hUfTh$ocaPXNKj#KoO8xe(qs8BrJu9pzTxWVl)u*3XxylVU zdD!@JcD?3PFt(#bKGAY_zb_2ycW z1{^IWib;c0#H7JEIpvukCIe5Cec(i_8pD-y57Kb_xf{=8ERZ^}5>wvM4g*!)tY3^yo=qEQviPe3VK7{#_ z6Nnz$sEL&5@6(O(czSuPaDNpnq`)+%T1lbQPG%(q_EDr4UW#5={2l3lY7pfao(xwE z!9g&3@$>IKxA(>FIqyEZ_vxPVr3Q03EEm`AHSDB^V9xkZ&sen~e9g=iO{=86&|b=0 zu<-&q*rYG_t)|EXpFTvBCX~H@!lYr|36tN4&jc20NbTb(wAu^X;X&U3^ldx|^E3EI z@MOt?PX}Yh$eIs*eJG%8QI{E);dX>9Ek}y6l3Y2(%`;a4$1O8I4tRn+xxEwcX<{pP zlDQx78DfSd-#iXDE_3QM^D^M+=D*;dY2JoE%^Z~w|ID=%U;H#+CJ#5tcY(!)FtHE$ zjdBJXCDh53ZoC2)FjU!0*Xp+J&9$vvUC>L^#n%@!7K!T^@4vNj&B>Qt93h6=5ds5C z*y73f08$R#9!pk11C$i2HfTcHpveYZ)Qpv}gfSRP^0(XC*0!tW?dKpceTXM9kK!a| zb@xa;P`U0Pu@6Y|3HPqJB`}lDTKlQ5%-(1lL zgO@N5UX9;5g)gCV)Z=NCcA9>?_h3FcO>KS>u`nLqi$17EzPCOyM{N=z>9qc>u&xVZ zF(R+%)c_Pd(`|Z6Wznm#gk*ANhI04L z#<@nCsS0|3`p3OTcU@NeWcS7RI}>oc_{rS8qk#a{+q97z}EbH zDc)IW&_t@e&*tvorjmaP^zU5!Wto52zbBuWG`Kwnb|F0@(1>7QP?`{VUBT7@rre%= zAP&r{zp1tVlJV;kjDt@#EY(j-=8xiV31{m^`noZ~!cb!FEuRK@x<2QwN0=%&Y2sELQxs6bt`yZ{A7E zR1jkE+dU%}7ym&eI}?G$e;ClgKq(29j_+Q$FJ1fPIeI{{<;cYT*yvtNDHRBk7aY<- zd*jJ;Xj!#n`^bm3{D(A^=srpe~l2tUL85&oHC z+v+Sc96ariGl;2TrtoYt1tDjd8Stl@BKR{*Dg5(I6Z`_R2L5bwIsAo&r{pE(!|+pL zPQBFpJ>YV45By5=Ap9!xP59MjKm0l7Ap9cpH2k^dMffNc{CVb=@E4fh!!I_cLUt3) zB>1O_$@MGD`GA+3Iq+AQ)$kk5cKAEY4){%mT6lMuPs3khz98@e@Gmh3;D5;c0{&&@ zxA51RKf>Q3TgY`L7gBC9=fK}!&WFFzERc{z@Hd&o@Yk9K_?t}!{12Hf_*a-c@VA;< z;O{Vh55L`fM&LW)Z#NIZ?=;_r-(`LP|0?q`{2h2f+SS#DOHTI1<^sI(zHbAGwYD?%CoZ<_bQ0OGS>)L) z94*P=m_?Nwwr_1|XUUlL4_pNPGlgs-gqJ&myf7FTU5t6pCQ&XOF~+>*Vu0#%$fd~} zHpbh+Fz;6f#@J(r zrq%2rxZhHIX!lsPz!p6wXJ7lG=*`c2R}bvu0@xF~UX{ZXUl?OSLq%|g z2XQ&84&O=x7%J8WvNJZxJp7`YfhWM0Y?AfrPU+UI0}e4rTX`a+JUKcD5XTt4WO@s~ zdeHPt)9#6PacaTcuJrczV5>3FJI{14kZU72B|i@h39w#4oRq_I&}g1DIM zp0njb%SbtGO30b|SUGbVW@>;nTn;uyhymTPa*UWOJApj27qO$|Fk>u6Po5aL7sScU zEnP|65#jjYULj*J9UMveeE_Ryz>wRAYI(!vh0=>2Ch31BVJ^qB3 z*-ix!t*xnm_zocpN2#tp3cc7eK&MIU5Dfl^3^CJz% zg-sou8(KL$c-4VXfditw^wTm325P2!fXo{~mg7bPod3M8S+y6ogb1B&04&iouwHqL@9HD2^T+(w)=$czjSv{5UL$K@Y17kgbZM$b;re z8CagMD5fDKTW;D7$HFjt`als-6l|^mQB0vI8d|#pawv6|CkM!dxvE?Usa!}^oyvtV zkPCwv@Q%3n+qrvk&<^CykbOD5t034vW71Ett2=G5(A+&wf}o%b=E)$BL*!v@dl&)86j@9N1N45$}1AI5A`~5T}VNgFMAr1rY4qL%hPH&PsKj4l@nze@>rV zlI=V17?ArW@!gl?Q6)ZJo;~G&LrPB*-t`vHF-#R7=$jM=nEuV~>EB8K5Z=-`*((CW znMKaQXqG@n`hiYVwg~opU5GeK(R*-0@d1#X^({6dIsDK!=C#=|OWabBTEamt$meme zEPS>QNA%dg%0+|TM`P(@wu?v7ujbzWYV_&oJH3zQE${i26fF1t$8_`95PeIT>(9Ar zMX)?53U`tRP%7J|xl+>BodmQQ5m~ZSZv~W)t=SamIm>*{!}}2+oh;~IDzU%x!rt}pc&Mah;RL8q9MC5b4$~!oI8i3dctFHR zm?V6@n#T$hzUDC#kfy!RgDO2}IiMyyS@KF;7aab}eag5&Vy}d+^te4$de;D|m)JdC zY@Zi+2xDZn+&v?+UJ?MV`Ey05uy%<6?#YjMlB`o2EmE*s<7?w7~ z=i+pPye!C-_dKJ`#Rxe?7DD>kZM?i1I9=ZGOcV)DHvb5mGt9rjKT~cePLVgMQ>E=p zlY4#Vn*TxU3==_)Gi8Z(z8H5eFe4E%TPDaNvDCakHu;MT?<_8mO9v@w-Q}hSArw07dYaBFfs)Ze#uP9H7_x;wZ8 z#8l`h+;`iOz{NtY45w}!6pQN@i`kXjAXDl_Qg+LkK%iaUOx>tA8FjBdT((BKKkAe( zL0n2LhmplmuzVU~^Te&SjF&%2NF$qdiQm9XCog|$+S{PFU95p4soOfS1?kL2NM|-u zQJ2l(*f1t+;F=@R|FwZ@%eI)fPHpJew*CCJjg4o`GRKc|EfCZckK$rHIG05axu8KR zvIqk;r?bxlT~I@ORB&Q8y7lr$zUE`PP~yOdRzP1oW1R8on0dBu4t9Mk5#2cb!O}Qs zhD6w73-C~*yzjWyaV~70iq8K@z3KNV*Z-vy;H6v2NzQ`PmL zMh&Dd9jagI^A1p4w(vd~a3vmUwO1E3#ltqNoGx7*N8zeUe zIF%r$1YINlOH5U-10CwdzpUg-5BZ$7B9v~pa7qTbouD3lbwN(qJ( ziw6QHWMq}QgT%6E3npXQf!zfDD)aH?EM#jPdX-S6Ik(`Uya7oc>+(Xf1!M_qCN zoje3bBRtljyX3r0Z7vOT8{1UG3HQN~2+{i5#AKdx^_4`3;CS^#iTJ6wcJW=XzBn30 zBbUQ>++-Tu=9)2V-YwJM_9=pMEpp{e-HDbHp>@d)C@IOGZlqMA}%=kap;dm z&bKj3wq1Zz0avoLr9+%>?NFZ4i0jlNE~)z`Kb35p5l@`3R9R+~>Ro_*7nG{tcv5A# z{Zv2olK=`zl_PH0;BBUX>+yoay0&bAGDpPVsLu8ljob;Jwhdmbie2Vob3H;g!6YHo z4S;xIigpmx1^YYcD5tNvX!&)VvK0u9$0=#~skr|2U64~$4@$TNzN@7P%7u=8RZPXh zgK+z?IDz>KQzCHI(Z@KmvUydD!NdAe}A9XL&RXn8?hkWTLw#MZ+h6#?x zDQWqs&I+drjNv?RiAFvI-*Nhvn3#S5`Otnt&Gozzom|e1A{cI_aQbyX9e8Nr!*@*<#}Ef* z#!hD3n|Y};_@dc&u3vD>6dX?)%+F8tR5(>Y8s`BoY>;zihBP?Whoxb00@AoZa3}!U z68UOV)en4Wv|COu5NSLCOrGV??ufczzbHVE-!HBmu^3hA3jcXahdAMW!Q53o&pTux z?c~GRUT{45umpaph*uX(7Mwk2;eXh;?gbh0nJqYZ@WH+~ixZGfA;O~(+BKmqli7D( zg(=rz^Ew7yp~&Y&KzxHsyC>>`@|lC6XoURG)jT%+KYaQ8*3uzPSU${M`>95=8Nj9Rgxe3xtWvGDI0%4qBNF$og5yb*<@Qsxgi{5i zS_-^qgz|S%U6di!GQkP9ABz)^YPsO7gHP)=i3#_)eZ+yPK7w9BI|*egj#Io%yDv+b2xh!-4>Q_}KN-55?4;FLT@Bc<>ir_~vpE)kp{ zrxqu`DW|7s#But{+n@f4&nZ|Jw^TTt2ToZBv;?Fs$SLV4r~ATX4sa?s9;c+`r}|Vl zRe)2@YSBm?e8=h13{EkW04K<)#R+gq3eiXsL}*XwvmaZZ^f{ejIjs{;w}4aP(e{wK zU{B$M6^(F3L03L%^-jNJRhABM!aao&jz%Uk3EZy>_f7Fr_1aX#38%s&hg4@X30%`h zj|E1pM{FwMgi~?Y^j8-}Z;pP>&+C{?MVxRd4h#N?S?zOAANEsCW0!;@PB;~Nrl0B~ zhsqxEQ?0hCh!al5&JvBd`n>7YU;W-sb&E|!oNy{OylBKVl#A{gfhu)0?zX9j6Hc{S zQk@2$?x*QJU4E)>*;K?)N=I!7T7V516PJYW7!qs=7$Q-gF*f?}cjy1qQNgzpHWhJ{ za@`5(aKG=bmVbF@chsf9n`4`bI7;W{5FMC0@9x-Yi=ZW3zsdcTZ$hWFjFEA|4B;3iQfL5F3qfrqfa}6_M?#y9%J_A_@1(5DuG#d=EO9(ff~s z%aVWzpnw_sOucGi+n8qTp(pPI2F`;D$OPT9oqSU5T4B_no*>3p6WO&Lmp8BOZ0l|n z?E2D*OFaAN6^m2VFpsWp2uq51_sN+-FKX*5De~1Gl@vkmQOdKcUX!Y+uUwkqB^Lkl z8&Bm?Nq%W5a2Z?K*@<*0%$iWfWmT#2>hk5O_KuPwmwU&ia0z@OgJ@+5@TV5JL2P-& zk~%5UAowMPN*s4*Jub>?QQ%&RN+F>;`iLLah9wt?iO zsq!V|a9=)=BdSKHOq1s-$Zk1?4;N$Ki2SFZ2qfGzL#R0_7j1-HCoTQlr> z!*INm0*1Y-Yn%w*=cii2J?RNSD}vHg)#Ccfl;2e4OR*piC%%p@1cSsDrJdO(t0nkTr4RmLczV8B|7r?EyIdsajL$o zVrjhRTS`BujgiP&K6t5N9YGZ>!Ngcj6tdpVFRW4uRwIVG| z;lSy^?`4|Htg-8I*Rcx`ArYe`#Q}A9iSf*N3>0i7S>}03O zFb2s?-MSH@R7dC4tVj$}OF2eWb+)$pp_uO0Fw|y*CRn+&E|qbq#+J3VZGBTqC#W~I zZ0(VGdKsq6Kza;dHRzR+-U=J{Xf!p}SX;Y$x>`4y3uYC~E=c-rR>7=UvuDqmS2WuX zBQ&d^VD8+x$>i+9!ug87Zg_2EvAJ|;)kRn1aAJY1uDDw2#3%GuwQ?my$5ZW@BLwul z;dyRV#pSoSbFfiw0^T+G`ag!B6ik<$zrG8rTi@j+eb_Aex%2D58$T6R!12&=?RO#z);|Z%I~I@Z3SMA8#`Jl3jsqw6Y@GJsiGbo@ z`Eoxs74hA8=uVdJjlj9x;+-hp?VxctaK@a2{Vbj#IFlMI-bg!oz0nCr>&tpv_0 zi+7@Y$!{}oI`CYL=S2LnqW2>Hc|3F{{KzwuOc%`!y(<|SAaeN)3R{`fCJV)@z{Zp|RAD%z<0`E=4cNPwyrzZyY41;>^MQa6BiPn*kJPoD4jz*%JRPLyvw3SJGI+vkDU0$AI|M?!!Yn8j|kgLmEs-WkA?mlXkmgVCd0lYFTWa3{i>@;>n5pp!o+UbtPY1l~;G?Y6il ztKW|S=WdI4B01-Q-hCG55&0c_JiQlqPa?jHFUjCemhTO~`GmzgQNHz{aTjpj##4%y zYVi|{rz}!4;y=X~Z*V8e_lv;!ro}r^zUx5aao|kDf!@dQz~14Y?V0(07xCF_*l;Jy z_jKUQuy|g++TR*AwZ1tivN$e`>)1cfa(fv{OIQ5oTW*IPpDPPLu-lG_dqfrX+py5x zTv=B^vxu~#GQHiOXKC8(wj28tV9DB8P(me$v! z7tq)q?XlxhFzvC|EoT`S5HZ6T@PW~GXDU5lK)$(t^G0Yu z+JF}t3?yzAEFPD_%y?-`GY!jE(j?@k@s)*&a zHI;RZ4X#xeN~?yY`O+1uN;$?d^&D$yo?#r!nNLj3XIH@9I!9@TS|q3yONr`og4S#n zX;s})>yPIEOUMP)fjHOs__S`A!B@j{zCC zl9(WfTiFCQU5SQiiK=R9D;q9uaH;3poXRgQt#g>e6?1WAUFFKsT8Fv7=0i+Z8zZzf z7FRD{RqKrh#eqSh(3SoJ>+By`XK!w(F0H^;xN=S7B->CYngknaLtRDlviib?M(BQC zR$Z~uMNjghD=w}pT~<@RY*j-|`2?H#1MBSQ>wmU&cG}$LdVNGIul3cpbZ%?@>)5WQ zo!{{woI}gyP{!TXeRXqJ9s+Mc;IQV7_ST(kFswWRAxZ2OV(YK&Zl%TEGw~;DM_W7M za`E>pV8^>Qbhd5pZtfZwa00{YgIib60X3c)4rPJFuJ{=I8zIHp-qP0D+(nz+gBisp zy`8`vxxJ@-Lw661Ms~ETVeO1iu?Rg1xC0EfcY~{(4Og{vI?Kgmg{;PRY@nL(=I#jy zAl7J_Ue?<*xMbG4Q;i&tp;U0M42VoQ6gkA*Wjh+G<`L8I4eNV0Rqmv*AmatQZe*d0pYBG0Wi#FbXjIF3f}$!iAcA|^GU;kjb+_X1y% zr?KIcHPkQb*x0&t85++rG?wL^ZI`#Tv*ICD8HD277>^dnM(G5c)zW_X)>awKToW98 zcw-_ryk&I=aaS`eva(Gm%r+%T$C&J3r3mlrLFytI26o-J!T4D|v!cm+Rr}Vq_AOPN z9oxWmZEMR_tzE9C)0ub!PxElWzEf@wB8lN_}Cq0tYzm0 zen8+DWAT(RLW48L7@1RIsorA|Saumo(d`-%u1AJ(>5*lwhp*0!1Y__wiaCLYI|J*M z10Wq^1Evq8ZtGficB6i^ZaMY4UWTdPV}aQz3xt#fN7OYu#wZK0Og>5(xF$=7u+4~r zmR6@F7uwWa^CT^0X*{4$;8De$tfVY4ZU_J_VkbWx%f}%k3M1TPb{hO_gSAEy1;$P- zWEgvRh5~v{4RlNvkcB9q_vBF1z7oSp>xsnicSx(^Af)1Obe%XDV=a8GqG7MR)lG+@ zstg!vhM@_#Hhs}U343*yXlDq<9a6UIntfDsXl@~O_82az59ps z9vZUeNY76S_rE^$^!>fh9|w_9>5s(s9`AWvEh-&AK1mqj>aRLpzrtC^&1pVVQFz>} zy-cd&Lr(BIWOMPzk|wOSR0{nX{J&Si?txFyQ`r2}Q%xMIYX4l(*O+a#AbgY~GGpia-BCtF`R1Uiqmy;Pt?km*s|QvC|8un2j;0#j z(t0(Q2_(n=L$BgD3vNxzfhNXnitCHyNNbLe)*MSiheJ_z5Yf;B^K$7odVhB8x;O4X zNP1ZgEI&1+dtgziuPWYG73<5|d@UldywAr{?^S@%u$%`4)yV?6Yn}2B!Nn>ZZ$|loV*@UoPgQY?& z&STfTaV`Eg!MNc*{JM&aqaqJyA;5J~R%aY$3$H~GYc!_%#aRi?i97qWq=6V?AUVhiDaAxKX9Cl}Tb~{`XJZ%UZ+~ke6C<59@f}y6b?F>mD+Scp0MofzVB_xzXz<%D%IT2-+OV$9wVB0qZzFa!_6 z&t9(TB!dw4mtY0Z1;o^}94qL6u=V=%%}5knG7gGLegsitg#m|{7oZu62xfMo#4rIx z>w;1sH@x!~Vz-?k+k?0mrQM4xn4`xy2`C}vNLWV+(I}?f=OV;LB#Z+)msM&=T4O(q zAcd~?Ag+%z#od7ZfG5j50{{1T66R(2zZ2*k_{Rh~6;$69=zKsLTM9^H*8@^|oq&`c zS<&5;I(61%zH9)_T6u$z*9+xohczD!GuVJ(^t(4CM z^h-&54j@fC)5D{&OT~K)IO^1BPPUwQjgV=xM83crDFa5r>;&4W<|FVYn!Dgn7URNa z$n={Oi|A9N6w}Qsh&@+K^UV;82{X+!ly$b54ZqN^7tb+Q!k=rXQ*)8I4}OW*Dae(R zm@($-2pMOdkl61_?2q8*i+R1N<~M-P=GGdivf;xj0Q^N_aIeH90nank8av+Yn9S|?7{MTx+l~+1kIG1hc#t!tehJ-KLn9B3Yuhg0jD=$0pjM8r-P)gv z86Hl%QwILWx#ULZAs`Bga+;2Iw&HHS9{9+#eK}^7c5V+QSd7?u>=zus^vq_CYML2-IO5QS=6F8FKU55w{)yrf^Es1h5PgXMgrqG#K7 zG`tFY6z9Z5;wmOWDkew5Qj!8>o7FP%9+&2lKGw^5O6I7(k(7u;-a{$LJdNoM2j*;9 zI%C@@8VBQosIntph5MVW*w}(th6JZxJ5rqnNCil-=~$WXg>jLtv4wyr;wVCYb2x+KLW_<8~#&k*({h$Eqk@s#aS#$ zf*YXWxXA)G3pLW<)?H1c)$Z1Qw5c?A$u zA;l&cRv~3^0=#qC;&6tT`&Rrrnv&yvBgw+~W+_OKss_{rIVBzCbf1fsU&kp+DL5Xd zq~)jjXgF1XQ+DKNWI24t>0e@&f^Crs3#xu`WS-CIbvAc3OTnX)4S1;Bz;};%VA7U^ z^&@I)go!FSU5OH5aAwBe-u=6g4d z^QG~M&3&W+UlEQRtShQqP#5HMB!ZOF`(3pBI!;+i!SOgHEkD%*;Zy-mMRa> z332MDdc;oxD5zk0H2#M<&CBS^V+4oPY>|-{$AI8C#zQ#2FTeEib66ZW?3orgML2B) zCOM^A33WkENk=(7=%VGbOusnI8TlgSvpnL0U*RF=_sc!Gs<&8P6a2#sh{d+UJ3$1PIWuqhfv4q#0*X+BQ{*87AL?d zm!Z)}5ylZc5%mce(No{_=nnSv9nQ;QSebc)~<(8pXqZvIm^!LSU6APz=U zNTM#NEc7e{`3jZ~-tpoMe#yA0rXx;x7G~}$pJPPuoRbe%AA;k_hb8b+9rscY2)2ZL z{MQwu%^ayHZHrSy{HcNyl#j&;$meXqxsyK5N$>d5d5`(>S!79{E%NysaQ+St6{4tX z?&|Jr-?05^{g)iTJ1Hyg*-qes=y>N5q~LhGle(X3TsT#rZE#T(ja(1k@qTs&?_4T` zdx6CX@J?ArBM;EWdTjJAnp?U%oGdU_4B%@fkd&{&a0vs-r3J_1 zi`4y8PTiX373>8Zl%f$#NFHB*iQ$ZOLMO}IJ!|flecpd)c~`?3&j5#|qq-V(5!xMR_kfA@70{;@wYG6HXPVQyJ4DXjmTanMN_#T*JK}(jjg-K5 z?Rj>_2*3&o^KNkhBLEq}C<-D}#q;v*w_#i3GM!`jDiYo~hVihGYJ1cLXNS26ibl9I zqRV@;=Tg69D=Z!2Xlc8{5(|tQ7Xrs0H$F9I>$@%ulm^*U#KE``NHtGVaaN@pIq9a& zeyT@oD&lDF?}Tz^3b_nSfSk(j(wO`NLN;cETo(!nmIn<8Tqq?dZOZ=Wr(E9lSPk*S z33EZg`l%M)`JM0jslICSB9791GL$=l&3hRkXL3RmmmH8+F+!sej;D09MrNPl=t8Nz zO+}pW_{`R#?U^d(edoq!&P#&hwP&^%Kh-~nQw7@dMMxQqtc35RR+Q167Ya^rHn%u| z_Pof$0lfh$*jCHeBGz&wfwHh6sCpy-p%pCYD5w7xF0<{qOer`Xr(THQe>t2gz$yD| zG;%L|$7!bFjFjL6In6YjQ7Sm~@Tp|!w5J+(`8~JKa$0K0=@gV@3Gk?p$#-{IoXk;+ zl$G}ZhPo{8Oei=W??T;6^=;(myWnh9hTyQ#kkX7=E*G32?-nOe%N2sN4n7qun{ zLuKB+x?0IZu5o9QCS_L+pj0=U90e!%gIr;joNXZ;u|e+t+5(Cwc{!Mpbm$=LU&JM% z<<;S_oGNchEO4`xxRSNgZO-`6)lb3jRHP##mAAbK>Bm|X!b?(1>S}6JsPB>@yokiT z%aWpwo^E*1o8QUHlb-5hW;MvIJ|zjo!oFhm!ETRvXtpV6{>xI!@a3{-aNddxsggPH z8`9N3@Vb;ou-RTu-+YnRohDr%v!9j}$4%p32OZLQ(O za!FBJdr1*09Qw!c+R3XnvZaNPVxy(``LjLNqf74Gj{AO%{LYKt;fc^fc-8ET_B$|b z#n38U-P69sS555{RyTCxJIRWUp7mQ>SM+prx1!annFi+NYq}mhvC4DS(((#42?#N$ zR(n=`RaF^-Yi%$J4$}o2rP!H89#~+gRaYrgZEd;S6)GSKX&!uSr&vM80$8Z9Y8gSa zq!&U7N=?eXz_-Pc9@|jwzx*5f&c#iX>+s3 diff --git a/CODEmp/Release/cgamex86.lib b/CODEmp/Release/cgamex86.lib deleted file mode 100644 index c9d3a393fd436c5173a18f422a0fe421296736ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmcIl-EI;=6#f=ysn{4oHC}19Nn`2_vdcoNX$-ZkkrZe{>GhUEEhJDHM59-}fbZd@ z58zD`?|NesFHD-4=o9z|c+Tw1GL(YQv=erI&V0i;-}#xDUn#dMwdav1W`DC1mSras zj{US>o{&o`t!8@>0Aav51w!Y*bc~i~@~hEUbKPuyd#hM-*Ee?7irMYbR?)2-mYWCf zm(y_F!fq}%h`>h$@c^Y)yM;}6eYLboN9xUE*L~N_m+MFHM^9R9G&YVp?GJGM*~HwI zdfcXn+^GSahk)2La7IjP^wAFn0+>Qbd_l76Dl8=z-_{Gwn9$oXcR|lR(qqtDpkCL0E&l+O Cwqc9_ diff --git a/CODEmp/Release/jk2mpgamex86.lib b/CODEmp/Release/jk2mpgamex86.lib deleted file mode 100644 index 270c44e4f05cabd7046b2362aaedede63a1dca46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2186 zcmcIlOK%cU6#iy_g6N{DZj3P*O*OdTF$|AI(@<@Vqyudz-I)vsrA46-M58PJfIq>d zKfpy7F1v8y!nJGT%7209+?fj(r$VXqCUYO>d^6{M=QVfM>VwA7dNg57k5n?1GSf*b zZB5IQ-Z7QUd%Ic`Kp4-jc?e0{n&gRzMqe^kNx>IqUzc9P~ z!+Q7NO+E|9Dev31ABA@+%mr1S?3cHl&5h~?z1Hsb9jDppY#k2=Z=vj5&FgNd-adxo ztqXI^O*n>#WK0M0v}r8?C&bu@2;$J7BZ!cA0(7g3vi0$qW-;OE@tN(N#2<9$Ml>fQ zU5l!2kCRMQtsBpZ6cH{n98K$d5k&?W#sjoHdq7N&XJbzyySj zfQ;oytm9?IoBv-GZyr2*b-21GEm2{hL;TfI!1BX*yICLBS4}CuL7R_+`|M$vV*$xi z50{m=7214Pa4avtI3<^nkFW3%S~7;~%ao{aJw>%i`;oCyYBvVGm%Y}|h*cgKcCoz8 zaNoE_5`L4v;6@@WT+Fo)hA&4@X!N>$y6DIVVlTnl9?$lei_{71~+((iE!6 zq~uFlN;zLX$b+|XzFcM=oF}fg$@X8{_`==8%=x>=H?rVH`D|~!_jzGlT^Xt3T>K&r z-l|lWB~^_3Dh~?oU%h%BPu?Yamz#T*(%Gs0sWNSi`|&NoETa53eKoys3NEv?Iutfq^6!sJo_;` zHGTk34IjXR2hYZ%pP*NKZ+2#Ok%C~_$?nX&Kf7;!@83M$X!M%L&r(m#(P3pR%eJlJ zdUlkrNGs<^!C?vjk^t-yAU*&{Tp@WO-x97R&dZg(-CCV*ZSTLRmG|nqHGbxw7xTb* z^}zGS#qdGM18M!`L3M|3ZPqtY-|w7q{;pGL_$Q#(fZJ-fw@>=L_rUdTZdCaYRRUpM zGJruG;0lQg#8|=?A7EfW0^;J0;i=}vCxPgL{sk=LOQ;k4A-t49Z3*;WQ7c#~eupWK z#o%M2wDB7;E+D2~2KI&Q@*@?QKt3!)!EU?zOv-v zrj7Wc!-e$ojNfYX8!NWr-^a}t$_1%Q7+uH?q+VX>Q7Qb4=n>xqbAT>GH!Knfi#lkl zu$-oB3Ooitz8{)P6~Ec*zU{v0o2#`ardO`+&}U=g9&+eQ`a=+rq;NImZ4$H*aGTxE zDIRoa#$h;A)>H)PWCkd_Eps->legsAnim & ~ANIM_TOGGLEBIT); - int newAnim = (anim & ~ANIM_TOGGLEBIT); - - if (oldAnim < MAX_TOTALANIMATIONS && oldAnim >= BOTH_DEATH1 && - newAnim < MAX_TOTALANIMATIONS && newAnim >= BOTH_DEATH1) - { - Com_Printf("OLD: %s\n", animTable[oldAnim]); - Com_Printf("NEW: %s\n", animTable[newAnim]); - } -} - -qboolean PM_InRoll( playerState_t *ps, int anim ); - -/* -====================== -BG_ParseAnimationFile - -Read a configuration file containing animation coutns and rates -models/players/visor/animation.cfg, etc - -====================== -*/ -char BGPAFtext[40000]; -qboolean BG_ParseAnimationFile( const char *filename, animation_t *animations) -{ - char *text_p; - int len; - int i; - char *token; - float fps; - int skip; - - fileHandle_t f; - int animNum; - - - // load the file - len = trap_FS_FOpenFile( filename, &f, FS_READ ); - if ( len <= 0 ) - { - return qfalse; - } - if ( len >= sizeof( BGPAFtext ) - 1 ) - { -// gi.Printf( "File %s too long\n", filename ); - return qfalse; - } - - trap_FS_Read( BGPAFtext, len, f ); - BGPAFtext[len] = 0; - trap_FS_FCloseFile( f ); - - // parse the text - text_p = BGPAFtext; - skip = 0; // quiet the compiler warning - - //FIXME: have some way of playing anims backwards... negative numFrames? - - //initialize anim array so that from 0 to MAX_ANIMATIONS, set default values of 0 1 0 100 - for(i = 0; i < MAX_ANIMATIONS; i++) - { - animations[i].firstFrame = 0; - animations[i].numFrames = 0; - animations[i].loopFrames = -1; - animations[i].frameLerp = 100; - animations[i].initialLerp = 100; - } - - // read information for each frame - while(1) - { - token = COM_Parse( (const char **)(&text_p) ); - - if ( !token || !token[0]) - { - break; - } - - animNum = GetIDForString(animTable, token); - if(animNum == -1) - { -//#ifndef FINAL_BUILD -#ifdef _DEBUG - Com_Printf(S_COLOR_RED"WARNING: Unknown token %s in %s\n", token, filename); -#endif - continue; - } - - token = COM_Parse( (const char **)(&text_p) ); - if ( !token ) - { - break; - } - animations[animNum].firstFrame = atoi( token ); - - token = COM_Parse( (const char **)(&text_p) ); - if ( !token ) - { - break; - } - animations[animNum].numFrames = atoi( token ); - - token = COM_Parse( (const char **)(&text_p) ); - if ( !token ) - { - break; - } - animations[animNum].loopFrames = atoi( token ); - - token = COM_Parse( (const char **)(&text_p) ); - if ( !token ) - { - break; - } - fps = atof( token ); - if ( fps == 0 ) - { - fps = 1;//Don't allow divide by zero error - } - if ( fps < 0 ) - {//backwards - animations[animNum].frameLerp = floor(1000.0f / fps); - } - else - { - animations[animNum].frameLerp = ceil(1000.0f / fps); - } - - animations[animNum].initialLerp = ceil(1000.0f / fabs(fps)); - } - - return qtrue; -} - - - -/* -=================== -LEGS Animations -Base animation for overall body -=================== -*/ -static void PM_StartLegsAnim( int anim ) { - if ( pm->ps->pm_type >= PM_DEAD ) { - return; - } - if ( pm->ps->legsTimer > 0 ) { - return; // a high priority animation is running - } - - if (pm->ps->usingATST) - { //animation is handled mostly client-side with only a few exceptions - return; - } - - if (anim == BOTH_STAND2 && pm->ps->weapon == WP_SABER && pm->ps->dualBlade) - { //a bit of a hack, but dualblade is cheat-only anyway - anim = BOTH_STAND1; - } - - pm->ps->legsAnim = ( ( pm->ps->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) - | anim; - - if ( pm->debugLevel ) { - Com_Printf("%d: StartLegsAnim %d, on client#%d\n", pm->cmd.serverTime, anim, pm->ps->clientNum); - } -} - -void PM_ContinueLegsAnim( int anim ) { - if ( ( pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) { - return; - } - if ( pm->ps->legsTimer > 0 ) { - return; // a high priority animation is running - } - - PM_StartLegsAnim( anim ); -} - -void PM_ForceLegsAnim( int anim) { - if (BG_InSpecialJump(pm->ps->legsAnim) && - pm->ps->legsTimer > 0 && - !BG_InSpecialJump(anim)) - { - return; - } - - if (PM_InRoll(pm->ps, pm->ps->legsAnim) && - pm->ps->legsTimer > 0 && - !PM_InRoll(pm->ps, anim)) - { - return; - } - - pm->ps->legsTimer = 0; - PM_StartLegsAnim( anim ); -} - - - -/* -=================== -TORSO Animations -Override animations for upper body -=================== -*/ -void PM_StartTorsoAnim( int anim ) { - if ( pm->ps->pm_type >= PM_DEAD ) { - return; - } - - if (pm->ps->usingATST) - { //animation is handled mostly client-side with only a few exceptions - return; - } - - if (anim == BOTH_STAND2 && pm->ps->weapon == WP_SABER && pm->ps->dualBlade) - { //a bit of a hack, but dualblade is cheat-only anyway - anim = BOTH_STAND1; - } - - pm->ps->torsoAnim = ( ( pm->ps->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) - | anim; -} - -static void PM_ContinueTorsoAnim( int anim ) { - if ( ( pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) == anim ) { - return; - } - if ( pm->ps->torsoTimer > 0 ) { - return; // a high priority animation is running - } - PM_StartTorsoAnim( anim); -} - - -/* -============== -PM_TorsoAnimation - -============== -*/ -void PM_TorsoAnimation( void ) { - if ( pm->ps->weaponstate == WEAPON_READY ) { - if ( pm->ps->weapon == WP_SABER ) { - PM_ContinueTorsoAnim( BOTH_STAND2 ); - } else { - PM_ContinueTorsoAnim( WeaponReadyAnim[pm->ps->weapon] ); - } - return; - } -} - - -/* -------------------------- -PM_SetLegsAnimTimer -------------------------- -*/ - -void PM_SetLegsAnimTimer(int time ) -{ - pm->ps->legsTimer = time; - - if (pm->ps->legsTimer < 0 && time != -1 ) - {//Cap timer to 0 if was counting down, but let it be -1 if that was intentional. NOTENOTE Yeah this seems dumb, but it mirrors SP. - pm->ps->legsTimer = 0; - } -} - -/* -------------------------- -PM_SetTorsoAnimTimer -------------------------- -*/ - -void PM_SetTorsoAnimTimer(int time ) -{ - pm->ps->torsoTimer = time; - - if (pm->ps->torsoTimer < 0 && time != -1 ) - {//Cap timer to 0 if was counting down, but let it be -1 if that was intentional. NOTENOTE Yeah this seems dumb, but it mirrors SP. - pm->ps->torsoTimer = 0; - } -} - -void PM_SaberStartTransAnim( int saberAnimLevel, int anim, float *animSpeed ) -{ - if ( ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T1_BR__R && - (anim&~ANIM_TOGGLEBIT) <= BOTH_T1_BL_TL ) || - ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T2_BR__R && - (anim&~ANIM_TOGGLEBIT) <= BOTH_T2_BL_TL ) || - ( (anim&~ANIM_TOGGLEBIT) >= BOTH_T3_BR__R && - (anim&~ANIM_TOGGLEBIT) <= BOTH_T3_BL_TL ) ) - { - if ( saberAnimLevel == FORCE_LEVEL_1 ) - { - *animSpeed *= 1.5; - } - else if ( saberAnimLevel == FORCE_LEVEL_3 ) - { - *animSpeed *= 0.75; - } - } -} - -/* -------------------------- -PM_SetAnimFinal -------------------------- -*/ -void PM_SetAnimFinal(int setAnimParts,int anim,int setAnimFlags, - int blendTime) // default blendTime=350 -{ - animation_t *animations = pm->animations; - - float editAnimSpeed = 0; - - if (!animations) - { - return; - } - - //NOTE: Setting blendTime here breaks actual blending.. - blendTime = 0; - - PM_SaberStartTransAnim(pm->ps->fd.saberAnimLevel, anim, &editAnimSpeed); - - // Set torso anim - if (setAnimParts & SETANIM_TORSO) - { - // Don't reset if it's already running the anim - if( !(setAnimFlags & SETANIM_FLAG_RESTART) && (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) == anim ) - { - goto setAnimLegs; - } - // or if a more important anim is running - if( !(setAnimFlags & SETANIM_FLAG_OVERRIDE) && ((pm->ps->torsoTimer > 0)||(pm->ps->torsoTimer == -1)) ) - { - goto setAnimLegs; - } - - PM_StartTorsoAnim( anim ); - - if (setAnimFlags & SETANIM_FLAG_HOLD) - {//FIXME: allow to set a specific time? - if (setAnimFlags & SETANIM_FLAG_HOLDLESS) - { // Make sure to only wait in full 1/20 sec server frame intervals. - int dur; - - dur = (animations[anim].numFrames ) * fabs(animations[anim].frameLerp); - //dur = ((int)(dur/50.0)) * 50 / timeScaleMod; - dur -= blendTime+fabs(animations[anim].frameLerp)*2; - if (dur > 1) - { - pm->ps->torsoTimer = dur-1; - } - else - { - pm->ps->torsoTimer = fabs(animations[anim].frameLerp); - } - } - else - { - pm->ps->torsoTimer = ((animations[anim].numFrames ) * fabs(animations[anim].frameLerp)); - } - - if (pm->ps->fd.forcePowersActive & (1 << FP_RAGE)) - { - pm->ps->torsoTimer /= 1.7; - } - - if (editAnimSpeed) - { - pm->ps->torsoTimer /= editAnimSpeed; - } - } - } - -setAnimLegs: - // Set legs anim - if (setAnimParts & SETANIM_LEGS) - { - // Don't reset if it's already running the anim - if( !(setAnimFlags & SETANIM_FLAG_RESTART) && (pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) - { - goto setAnimDone; - } - // or if a more important anim is running - if( !(setAnimFlags & SETANIM_FLAG_OVERRIDE) && ((pm->ps->legsTimer > 0)||(pm->ps->legsTimer == -1)) ) - { - goto setAnimDone; - } - - PM_StartLegsAnim(anim); - - if (setAnimFlags & SETANIM_FLAG_HOLD) - {//FIXME: allow to set a specific time? - if (setAnimFlags & SETANIM_FLAG_HOLDLESS) - { // Make sure to only wait in full 1/20 sec server frame intervals. - int dur; - - dur = (animations[anim].numFrames -1) * fabs(animations[anim].frameLerp); - //dur = ((int)(dur/50.0)) * 50 / timeScaleMod; - dur -= blendTime+fabs(animations[anim].frameLerp)*2; - if (dur > 1) - { - pm->ps->legsTimer = dur-1; - } - else - { - pm->ps->legsTimer = fabs(animations[anim].frameLerp); - } - } - else - { - pm->ps->legsTimer = ((animations[anim].numFrames ) * fabs(animations[anim].frameLerp)); - } - - /* - PM_DebugLegsAnim(anim); - Com_Printf("%i\n", pm->ps->legsTimer); - */ - - if (pm->ps->fd.forcePowersActive & (1 << FP_RAGE)) - { - pm->ps->legsTimer /= 1.3; - } - else if (pm->ps->fd.forcePowersActive & (1 << FP_SPEED)) - { - pm->ps->legsTimer /= 1.7; - } - } - } - -setAnimDone: - return; -} - - - -// Imported from single-player, this function is mainly intended to make porting from SP easier. -void PM_SetAnim(int setAnimParts,int anim,int setAnimFlags, int blendTime) -{ - if (BG_InSpecialJump(anim)) - { - setAnimFlags |= SETANIM_FLAG_RESTART; - } - - if (PM_InRoll(pm->ps, pm->ps->legsAnim)) - { - //setAnimFlags |= SETANIM_FLAG_RESTART; - return; - } - - if (setAnimFlags&SETANIM_FLAG_OVERRIDE) - { - if (setAnimParts & SETANIM_TORSO) - { - if( (setAnimFlags & SETANIM_FLAG_RESTART) || (pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) != anim ) - { - PM_SetTorsoAnimTimer(0); - } - } - if (setAnimParts & SETANIM_LEGS) - { - if( (setAnimFlags & SETANIM_FLAG_RESTART) || (pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) != anim ) - { - PM_SetLegsAnimTimer(0); - } - } - } - - PM_SetAnimFinal(setAnimParts, anim, setAnimFlags, blendTime); -} - - diff --git a/CODEmp/renderer/tr_shade.cpp b/CODEmp/renderer/tr_shade.cpp deleted file mode 100644 index 41e38b6..0000000 --- a/CODEmp/renderer/tr_shade.cpp +++ /dev/null @@ -1,2771 +0,0 @@ -// tr_shade.c - -#include "tr_local.h" - -#include "tr_quicksprite.h" - -/* - - THIS ENTIRE FILE IS BACK END - - This file deals with applying shaders to surface data in the tess struct. -*/ - -color4ub_t styleColors[MAX_LIGHT_STYLES]; - -/* -================ -R_ArrayElementDiscrete - -This is just for OpenGL conformance testing, it should never be the fastest -================ -*/ -static void APIENTRY R_ArrayElementDiscrete( GLint index ) { - qglColor4ubv( tess.svars.colors[ index ] ); - if ( glState.currenttmu ) { - qglMultiTexCoord2fARB( 0, tess.svars.texcoords[ 0 ][ index ][0], tess.svars.texcoords[ 0 ][ index ][1] ); - qglMultiTexCoord2fARB( 1, tess.svars.texcoords[ 1 ][ index ][0], tess.svars.texcoords[ 1 ][ index ][1] ); - } else { - qglTexCoord2fv( tess.svars.texcoords[ 0 ][ index ] ); - } - qglVertex3fv( tess.xyz[ index ] ); -} - -/* -=================== -R_DrawStripElements - -=================== -*/ -static int c_vertexes; // for seeing how long our average strips are -static int c_begins; -static void R_DrawStripElements( int numIndexes, const glIndex_t *indexes, void ( APIENTRY *element )(GLint) ) { - int i; - int last[3] = { -1, -1, -1 }; - qboolean even; - - c_begins++; - - if ( numIndexes <= 0 ) { - return; - } - - qglBegin( GL_TRIANGLE_STRIP ); - - // prime the strip - element( indexes[0] ); - element( indexes[1] ); - element( indexes[2] ); - c_vertexes += 3; - - last[0] = indexes[0]; - last[1] = indexes[1]; - last[2] = indexes[2]; - - even = qfalse; - - for ( i = 3; i < numIndexes; i += 3 ) - { - // odd numbered triangle in potential strip - if ( !even ) - { - // check previous triangle to see if we're continuing a strip - if ( ( indexes[i+0] == last[2] ) && ( indexes[i+1] == last[1] ) ) - { - element( indexes[i+2] ); - c_vertexes++; - assert( indexes[i+2] < tess.numVertexes ); - even = qtrue; - } - // otherwise we're done with this strip so finish it and start - // a new one - else - { - qglEnd(); - - qglBegin( GL_TRIANGLE_STRIP ); - c_begins++; - - element( indexes[i+0] ); - element( indexes[i+1] ); - element( indexes[i+2] ); - - c_vertexes += 3; - - even = qfalse; - } - } - else - { - // check previous triangle to see if we're continuing a strip - if ( ( last[2] == indexes[i+1] ) && ( last[0] == indexes[i+0] ) ) - { - element( indexes[i+2] ); - c_vertexes++; - - even = qfalse; - } - // otherwise we're done with this strip so finish it and start - // a new one - else - { - qglEnd(); - - qglBegin( GL_TRIANGLE_STRIP ); - c_begins++; - - element( indexes[i+0] ); - element( indexes[i+1] ); - element( indexes[i+2] ); - c_vertexes += 3; - - even = qfalse; - } - } - - // cache the last three vertices - last[0] = indexes[i+0]; - last[1] = indexes[i+1]; - last[2] = indexes[i+2]; - } - - qglEnd(); -} - - - -/* -================== -R_DrawElements - -Optionally performs our own glDrawElements that looks for strip conditions -instead of using the single glDrawElements call that may be inefficient -without compiled vertex arrays. -================== -*/ -static void R_DrawElements( int numIndexes, const glIndex_t *indexes ) { - int primitives; - - primitives = r_primitives->integer; - - // default is to use triangles if compiled vertex arrays are present - if ( primitives == 0 ) { - if ( qglLockArraysEXT ) { - primitives = 2; - } else { - primitives = 1; - } - } - - - if ( primitives == 2 ) { - qglDrawElements( GL_TRIANGLES, - numIndexes, - GL_INDEX_TYPE, - indexes ); - return; - } - - if ( primitives == 1 ) { - R_DrawStripElements( numIndexes, indexes, qglArrayElement ); - return; - } - - if ( primitives == 3 ) { - R_DrawStripElements( numIndexes, indexes, R_ArrayElementDiscrete ); - return; - } - - // anything else will cause no drawing -} - - -unsigned char randomindex, randominterval; -float randomchart[256] = { - 0.6554, 0.6909, 0.4806, 0.6218, 0.5717, 0.3896, 0.0677, 0.7356, - 0.8333, 0.1105, 0.4445, 0.8161, 0.4689, 0.0433, 0.7152, 0.0336, - 0.0186, 0.9140, 0.1626, 0.6553, 0.8340, 0.7094, 0.2020, 0.8087, - 0.9119, 0.8009, 0.1339, 0.8492, 0.9173, 0.5003, 0.6012, 0.6117, - 0.5525, 0.5787, 0.1586, 0.3293, 0.9273, 0.7791, 0.8589, 0.4985, - 0.0883, 0.8545, 0.2634, 0.4727, 0.3624, 0.1631, 0.7825, 0.0662, - 0.6704, 0.3510, 0.7525, 0.9486, 0.4685, 0.1535, 0.1545, 0.1121, - 0.4724, 0.8483, 0.3833, 0.1917, 0.8207, 0.3885, 0.9702, 0.9200, - 0.8348, 0.7501, 0.6675, 0.4994, 0.0301, 0.5225, 0.8011, 0.1696, - 0.5351, 0.2752, 0.2962, 0.7550, 0.5762, 0.7303, 0.2835, 0.4717, - 0.1818, 0.2739, 0.6914, 0.7748, 0.7640, 0.8355, 0.7314, 0.5288, - 0.7340, 0.6692, 0.6813, 0.2810, 0.8057, 0.0648, 0.8749, 0.9199, - 0.1462, 0.5237, 0.3014, 0.4994, 0.0278, 0.4268, 0.7238, 0.5107, - 0.1378, 0.7303, 0.7200, 0.3819, 0.2034, 0.7157, 0.5552, 0.4887, - 0.0871, 0.3293, 0.2892, 0.4545, 0.0088, 0.1404, 0.0275, 0.0238, - 0.0515, 0.4494, 0.7206, 0.2893, 0.6060, 0.5785, 0.4182, 0.5528, - 0.9118, 0.8742, 0.3859, 0.6030, 0.3495, 0.4550, 0.9875, 0.6900, - 0.6416, 0.2337, 0.7431, 0.9788, 0.6181, 0.2464, 0.4661, 0.7621, - 0.7020, 0.8203, 0.8869, 0.2145, 0.7724, 0.6093, 0.6692, 0.9686, - 0.5609, 0.0310, 0.2248, 0.2950, 0.2365, 0.1347, 0.2342, 0.1668, - 0.3378, 0.4330, 0.2775, 0.9901, 0.7053, 0.7266, 0.4840, 0.2820, - 0.5733, 0.4555, 0.6049, 0.0770, 0.4760, 0.6060, 0.4159, 0.3427, - 0.1234, 0.7062, 0.8569, 0.1878, 0.9057, 0.9399, 0.8139, 0.1407, - 0.1794, 0.9123, 0.9493, 0.2827, 0.9934, 0.0952, 0.4879, 0.5160, - 0.4118, 0.4873, 0.3642, 0.7470, 0.0866, 0.5172, 0.6365, 0.2676, - 0.2407, 0.7223, 0.5761, 0.1143, 0.7137, 0.2342, 0.3353, 0.6880, - 0.2296, 0.6023, 0.6027, 0.4138, 0.5408, 0.9859, 0.1503, 0.7238, - 0.6054, 0.2477, 0.6804, 0.1432, 0.4540, 0.9776, 0.8762, 0.7607, - 0.9025, 0.9807, 0.0652, 0.8661, 0.7663, 0.2586, 0.3994, 0.0335, - 0.7328, 0.0166, 0.9589, 0.4348, 0.5493, 0.7269, 0.6867, 0.6614, - 0.6800, 0.7804, 0.5591, 0.8381, 0.0910, 0.7573, 0.8985, 0.3083, - 0.3188, 0.8481, 0.2356, 0.6736, 0.4770, 0.4560, 0.6266, 0.4677 -}; - -#define WIND_DAMP_INTERVAL 50 -#define WIND_GUST_TIME 2500.0 -#define WIND_GUST_DECAY (1.0 / WIND_GUST_TIME) -extern bool R_GetWindVector(vec3_t windVector); - -int lastWindTime = 0; -float curWindSpeed=0; -vec3_t curWindBlowVect={0,0,0}, targetWindBlowVect={0,0,0}; -vec3_t curWindGrassDir={0,0,0}, targetWindGrassDir={0,0,0}; -int totalsurfsprites=0, sssurfaces=0; - -qboolean curWindPointActive=qfalse; -float curWindPointForce = 0; -vec3_t curWindPoint; -int nextGustTime=0; -float gustLeft=0; - -static void R_UpdateWind(void) -{ - float dtime, dampfactor; // Time since last update and damping time for wind changes - float ratio; - vec3_t ang, diff, retwindvec; - float targetspeed; - - if (backEnd.refdef.time == lastWindTime) - return; - - if (backEnd.refdef.time < lastWindTime) - { - curWindSpeed = r_windSpeed->value; - nextGustTime = 0; - gustLeft = 0; - } - - targetspeed = r_windSpeed->value; // Minimum gust delay, in seconds. - - if (targetspeed > 0 && r_windGust->value) - { - if (gustLeft > 0) - { // We are gusting - // Add an amount to the target wind speed - targetspeed *= 1.0 + gustLeft; - - gustLeft -= (float)(backEnd.refdef.time - lastWindTime)*WIND_GUST_DECAY; - if (gustLeft <= 0) - { - nextGustTime = backEnd.refdef.time + (r_windGust->value*1000)*flrand(1.0,4.0); - } - } - else if (backEnd.refdef.time >= nextGustTime) - { // See if there is another right now - // Gust next time, mano - gustLeft = flrand(0.75,1.5); - } - } - - // See if there is a weather system that will tell us a windspeed. - if (R_GetWindVector(retwindvec)) - { - retwindvec[2]=0; - VectorScale(retwindvec, -1.0, retwindvec); - vectoangles(retwindvec, ang); - } - else - { // Calculate the target wind vector based off cvars - ang[YAW] = r_windAngle->value; - } - - ang[PITCH] = -90.0 + targetspeed; - if (ang[PITCH]>-45.0) - { - ang[PITCH] = -45.0; - } - ang[ROLL] = 0; - - if (targetspeed>0) - { -// ang[YAW] += cos(tr.refdef.time*0.01+flrand(-1.0,1.0))*targetspeed*0.5; -// ang[PITCH] += sin(tr.refdef.time*0.01+flrand(-1.0,1.0))*targetspeed*0.5; - } - - // Get the grass wind vector first - AngleVectors(ang, targetWindGrassDir, NULL, NULL); - targetWindGrassDir[2]-=1.0; -// VectorScale(targetWindGrassDir, targetspeed, targetWindGrassDir); - - // Now get the general wind vector (no pitch) - ang[PITCH]=0; - AngleVectors(ang, targetWindBlowVect, NULL, NULL); - - // Start calculating a smoothing factor so wind doesn't change abruptly between speeds. - dampfactor = 1.0-r_windDampFactor->value; // We must exponent the amount LEFT rather than the amount bled off - dtime = (float)(backEnd.refdef.time - lastWindTime) * (1.0/(float)WIND_DAMP_INTERVAL); // Our dampfactor is geared towards a time interval equal to "1". - - // Note that since there are a finite number of "practical" delta millisecond values possible, - // the ratio should be initialized into a chart ultimately. - ratio = pow(dampfactor, dtime); - - // Apply this ratio to the windspeed... - curWindSpeed = targetspeed - (ratio * (targetspeed-curWindSpeed)); - - // Use the curWindSpeed to calculate the final target wind vector (with speed) - VectorScale(targetWindBlowVect, curWindSpeed, targetWindBlowVect); - VectorSubtract(targetWindBlowVect, curWindBlowVect, diff); - VectorMA(targetWindBlowVect, -ratio, diff, curWindBlowVect); - - // Update the grass vector now - VectorSubtract(targetWindGrassDir, curWindGrassDir, diff); - VectorMA(targetWindGrassDir, -ratio, diff, curWindGrassDir); - - lastWindTime = backEnd.refdef.time; - - curWindPointForce = r_windPointForce->value - (ratio * (r_windPointForce->value - curWindPointForce)); - if (curWindPointForce < 0.01) - { - curWindPointActive = qfalse; - } - else - { - curWindPointActive = qtrue; - curWindPoint[0] = r_windPointX->value; - curWindPoint[1] = r_windPointY->value; - curWindPoint[2] = 0; - } - - if (r_surfaceSprites->integer >= 2) - { - ri.Printf( PRINT_DEVELOPER, "Surfacesprites Drawn: %d, on %d surfaces\n", totalsurfsprites, sssurfaces); - } - - totalsurfsprites=0; - sssurfaces=0; -} - - - -///////////////////////////////////////////// -// Surface sprite calculation and drawing. -///////////////////////////////////////////// - -#define FADE_RANGE 250.0 -#define WINDPOINT_RADIUS 750.0 - -float SSVertAlpha[SHADER_MAX_VERTEXES]; -float SSVertWindForce[SHADER_MAX_VERTEXES]; -vec2_t SSVertWindDir[SHADER_MAX_VERTEXES]; - -qboolean SSAdditiveTransparency=qfalse; -qboolean SSUsingFog=qfalse; - - -///////////////////////////////////////////// -// Vertical surface sprites - -static void RB_VerticalSurfaceSprite(vec3_t loc, float width, float height, byte light, - byte alpha, float wind, float windidle, vec2_t fog, int hangdown, vec2_t skew) -{ - vec3_t loc2, right; - float angle; - float windsway; - float points[16]; - color4ub_t color; - - angle = ((loc[0]+loc[1])*0.02+(tr.refdef.time*0.0015)); - - if (windidle>0.0) - { - windsway = (height*windidle*0.075); - loc2[0] = loc[0]+skew[0]+cos(angle)*windsway; - loc2[1] = loc[1]+skew[1]+sin(angle)*windsway; - - if (hangdown) - { - loc2[2] = loc[2]-height; - } - else - { - loc2[2] = loc[2]+height; - } - } - else - { - loc2[0] = loc[0]+skew[0]; - loc2[1] = loc[1]+skew[1]; - if (hangdown) - { - loc2[2] = loc[2]-height; - } - else - { - loc2[2] = loc[2]+height; - } - } - - if (wind>0.0 && curWindSpeed > 0.001) - { - windsway = (height*wind*0.075); - - // Add the angle - VectorMA(loc2, height*wind, curWindGrassDir, loc2); - // Bob up and down - if (curWindSpeed < 40.0) - { - windsway *= curWindSpeed*(1.0/100.0); - } - else - { - windsway *= 0.4; - } - loc2[2] += sin(angle*2.5)*windsway; - } - - VectorScale(backEnd.viewParms.or.axis[1], width*0.5, right); - - color[0]=light; - color[1]=light; - color[2]=light; - color[3]=alpha; - - // Bottom right -// VectorAdd(loc, right, point); - points[0] = loc[0] + right[0]; - points[1] = loc[1] + right[1]; - points[2] = loc[2] + right[2]; - points[3] = 0; - - // Top right -// VectorAdd(loc2, right, point); - points[4] = loc2[0] + right[0]; - points[5] = loc2[1] + right[1]; - points[6] = loc2[2] + right[2]; - points[7] = 0; - - // Top left -// VectorSubtract(loc2, right, point); - points[8] = loc2[0] - right[0]; - points[9] = loc2[1] - right[1]; - points[10] = loc2[2] - right[2]; - points[11] = 0; - - // Bottom left -// VectorSubtract(loc, right, point); - points[12] = loc[0] - right[0]; - points[13] = loc[1] - right[1]; - points[14] = loc[2] - right[2]; - points[15] = 0; - - // Add the sprite to the render list. - SQuickSprite.Add(points, color, fog); -} - -static void RB_VerticalSurfaceSpriteWindPoint(vec3_t loc, float width, float height, byte light, - byte alpha, float wind, float windidle, vec2_t fog, - int hangdown, vec2_t skew, vec2_t winddiff, float windforce) -{ - vec3_t loc2, right; - float angle; - float windsway; - float points[16]; - color4ub_t color; - - if (windforce > 1) - windforce = 1; - -// wind += 1.0-windforce; - - angle = (loc[0]+loc[1])*0.02+(tr.refdef.time*0.0015); - - if (curWindSpeed <80.0) - { - windsway = (height*windidle*0.1)*(1.0+windforce); - loc2[0] = loc[0]+skew[0]+cos(angle)*windsway; - loc2[1] = loc[1]+skew[1]+sin(angle)*windsway; - } - else - { - loc2[0] = loc[0]+skew[0]; - loc2[1] = loc[1]+skew[1]; - } - if (hangdown) - { - loc2[2] = loc[2]-height; - } - else - { - loc2[2] = loc[2]+height; - } - - if (curWindSpeed > 0.001) - { - // Add the angle - VectorMA(loc2, height*wind, curWindGrassDir, loc2); - } - - loc2[0] += height*winddiff[0]*windforce; - loc2[1] += height*winddiff[1]*windforce; - loc2[2] -= height*windforce*(0.75 + 0.15*sin((tr.refdef.time + 500*windforce)*0.01)); - - VectorScale(backEnd.viewParms.or.axis[1], width*0.5, right); - - color[0]=light; - color[1]=light; - color[2]=light; - color[3]=alpha; - - // Bottom right -// VectorAdd(loc, right, point); - points[0] = loc[0] + right[0]; - points[1] = loc[1] + right[1]; - points[2] = loc[2] + right[2]; - points[3] = 0; - - // Top right -// VectorAdd(loc2, right, point); - points[4] = loc2[0] + right[0]; - points[5] = loc2[1] + right[1]; - points[6] = loc2[2] + right[2]; - points[7] = 0; - - // Top left -// VectorSubtract(loc2, right, point); - points[8] = loc2[0] - right[0]; - points[9] = loc2[1] - right[1]; - points[10] = loc2[2] - right[2]; - points[11] = 0; - - // Bottom left -// VectorSubtract(loc, right, point); - points[12] = loc[0] - right[0]; - points[13] = loc[1] - right[1]; - points[14] = loc[2] - right[2]; - points[15] = 0; - - // Add the sprite to the render list. - SQuickSprite.Add(points, color, fog); -} - -static void RB_DrawVerticalSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) -{ - int curindex, curvert; - vec3_t dist; - float triarea; - vec2_t vec1to2, vec1to3; - - vec3_t v1,v2,v3; - float a1,a2,a3; - float l1,l2,l3; - vec2_t fog1, fog2, fog3; - vec2_t winddiff1, winddiff2, winddiff3; - float windforce1, windforce2, windforce3; - - float posi, posj; - float step; - float fa,fb,fc; - - vec3_t curpoint; - float width, height; - float alpha, alphapos, thisspritesfadestart, light; - - byte randomindex2; - - vec2_t skew={0,0}; - vec2_t fogv; - vec2_t winddiffv; - float windforce=0; - qboolean usewindpoint = (qboolean) !!(curWindPointActive && stage->ss.wind > 0); - - float cutdist=stage->ss.fadeMax, cutdist2=cutdist*cutdist; - float fadedist=stage->ss.fadeDist, fadedist2=fadedist*fadedist; - - assert(cutdist2 != fadedist2); - float inv_fadediff = 1.0/(cutdist2-fadedist2); - - // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 - float faderange = FADE_RANGE/(cutdist-fadedist); - - if (faderange > 1.0) - { // Don't want to force a new fade_rand - faderange = 1.0; - } - - // Quickly calc all the alphas and windstuff for each vertex - for (curvert=0; curvertnumVertexes; curvert++) - { - // Calc alpha at each point - VectorSubtract(backEnd.viewParms.or.origin, input->xyz[curvert], dist); - SSVertAlpha[curvert] = 1.0 - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; - } - - // Wind only needs initialization once per tess. - if (usewindpoint && !tess.SSInitializedWind) - { - for (curvert=0; curvertnumVertexes;curvert++) - { // Calc wind at each point - dist[0]=input->xyz[curvert][0] - curWindPoint[0]; - dist[1]=input->xyz[curvert][1] - curWindPoint[1]; - step = (dist[0]*dist[0] + dist[1]*dist[1]); // dist squared - - if (step >= (float)(WINDPOINT_RADIUS*WINDPOINT_RADIUS)) - { // No wind - SSVertWindDir[curvert][0] = 0; - SSVertWindDir[curvert][1] = 0; - SSVertWindForce[curvert]=0; // Should be < 1 - } - else - { - if (step<1) - { // Don't want to divide by zero - SSVertWindDir[curvert][0] = 0; - SSVertWindDir[curvert][1] = 0; - SSVertWindForce[curvert] = curWindPointForce * stage->ss.wind; - } - else - { - step = Q_rsqrt(step); // Equals 1 over the distance. - SSVertWindDir[curvert][0] = dist[0] * step; - SSVertWindDir[curvert][1] = dist[1] * step; - step = 1.0 - (1.0 / (step * WINDPOINT_RADIUS)); // 1- (dist/maxradius) = a scale from 0 to 1 linearly dropping off - SSVertWindForce[curvert] = curWindPointForce * stage->ss.wind * step; // *step means divide by the distance. - } - } - } - tess.SSInitializedWind = qtrue; - } - - for (curindex=0; curindexnumIndexes-2; curindex+=3) - { - curvert = input->indexes[curindex]; - VectorCopy(input->xyz[curvert], v1); - if (stage->ss.facing) - { // Hang down - if (input->normal[curvert][2] > -0.5) - { - continue; - } - } - else - { // Point up - if (input->normal[curvert][2] < 0.5) - { - continue; - } - } - l1 = input->vertexColors[curvert][2]; - a1 = SSVertAlpha[curvert]; - fog1[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); - fog1[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); - winddiff1[0] = SSVertWindDir[curvert][0]; - winddiff1[1] = SSVertWindDir[curvert][1]; - windforce1 = SSVertWindForce[curvert]; - - curvert = input->indexes[curindex+1]; - VectorCopy(input->xyz[curvert], v2); - if (stage->ss.facing) - { // Hang down - if (input->normal[curvert][2] > -0.5) - { - continue; - } - } - else - { // Point up - if (input->normal[curvert][2] < 0.5) - { - continue; - } - } - l2 = input->vertexColors[curvert][2]; - a2 = SSVertAlpha[curvert]; - fog2[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); - fog2[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); - winddiff2[0] = SSVertWindDir[curvert][0]; - winddiff2[1] = SSVertWindDir[curvert][1]; - windforce2 = SSVertWindForce[curvert]; - - curvert = input->indexes[curindex+2]; - VectorCopy(input->xyz[curvert], v3); - if (stage->ss.facing) - { // Hang down - if (input->normal[curvert][2] > -0.5) - { - continue; - } - } - else - { // Point up - if (input->normal[curvert][2] < 0.5) - { - continue; - } - } - l3 = input->vertexColors[curvert][2]; - a3 = SSVertAlpha[curvert]; - fog3[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); - fog3[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); - winddiff3[0] = SSVertWindDir[curvert][0]; - winddiff3[1] = SSVertWindDir[curvert][1]; - windforce3 = SSVertWindForce[curvert]; - - if (a1 <= 0.0 && a2 <= 0.0 && a3 <= 0.0) - { - continue; - } - - // Find the area in order to calculate the stepsize - vec1to2[0] = v2[0] - v1[0]; - vec1to2[1] = v2[1] - v1[1]; - vec1to3[0] = v3[0] - v1[0]; - vec1to3[1] = v3[1] - v1[1]; - - // Now get the cross product of this sum. - triarea = vec1to3[0]*vec1to2[1] - vec1to3[1]*vec1to2[0]; - triarea=fabs(triarea); - if (triarea <= 1.0) - { // Insanely small abhorrent triangle. - continue; - } - step = stage->ss.density * Q_rsqrt(triarea); - - randomindex = (byte)(v1[0]+v1[1]+v2[0]+v2[1]+v3[0]+v3[1]); - randominterval = (byte)(v1[0]+v2[1]+v3[2])|0x03; // Make sure the interval is at least 3, and always odd - - for (posi=0; posi<1.0; posi+=step) - { - for (posj=0; posj<(1.0-posi); posj+=step) - { - fa=posi+randomchart[randomindex]*step; - randomindex += randominterval; - - fb=posj+randomchart[randomindex]*step; - randomindex += randominterval; - - if (fa>1.0) - continue; - - if (fb>(1.0-fa)) - continue; - - fc = 1.0-fa-fb; - - // total alpha, minus random factor so some things fade out sooner. - alphapos = a1*fa + a2*fb + a3*fc; - - // Note that the alpha at this point is a value from 1.0 to 0.0, but represents when to START fading - thisspritesfadestart = faderange + (1.0-faderange) * randomchart[randomindex]; - randomindex += randominterval; - - // Find where the alpha is relative to the fadestart, and calc the real alpha to draw at. - alpha = 1.0 - ((thisspritesfadestart-alphapos)/faderange); - if (alpha > 0.0) - { - if (alpha > 1.0) - alpha=1.0; - - if (SSUsingFog) - { - fogv[0] = fog1[0]*fa + fog2[0]*fb + fog3[0]*fc; - fogv[1] = fog1[1]*fa + fog2[1]*fb + fog3[1]*fc; - } - - if (usewindpoint) - { - winddiffv[0] = winddiff1[0]*fa + winddiff2[0]*fb + winddiff3[0]*fc; - winddiffv[1] = winddiff1[1]*fa + winddiff2[1]*fb + winddiff3[1]*fc; - windforce = windforce1*fa + windforce2*fb + windforce3*fc; - } - - VectorScale(v1, fa, curpoint); - VectorMA(curpoint, fb, v2, curpoint); - VectorMA(curpoint, fc, v3, curpoint); - - light = l1*fa + l2*fb + l3*fc; - if (SSAdditiveTransparency) - { // Additive transparency, scale light value - light *= alpha; - } - - randomindex2 = randomindex; - width = stage->ss.width*(1.0 + (stage->ss.variance[0]*randomchart[randomindex2])); - height = stage->ss.height*(1.0 + (stage->ss.variance[1]*randomchart[randomindex2++])); - if (randomchart[randomindex2++]>0.5) - { - width = -width; - } - if (stage->ss.fadeScale!=0 && alphapos < 1.0) - { - width *= 1.0 + (stage->ss.fadeScale*(1.0-alphapos)); - } - - if (stage->ss.vertSkew != 0) - { // flrand(-vertskew, vertskew) - skew[0] = height * ((stage->ss.vertSkew*2.0f*randomchart[randomindex2++])-stage->ss.vertSkew); - skew[1] = height * ((stage->ss.vertSkew*2.0f*randomchart[randomindex2++])-stage->ss.vertSkew); - } - - if (usewindpoint && windforce > 0 && stage->ss.wind > 0.0) - { - if (SSUsingFog) - { - RB_VerticalSurfaceSpriteWindPoint(curpoint, width, height, (byte)light, (byte)(alpha*255.0), - stage->ss.wind, stage->ss.windIdle, fogv, stage->ss.facing, skew, - winddiffv, windforce); - } - else - { - RB_VerticalSurfaceSpriteWindPoint(curpoint, width, height, (byte)light, (byte)(alpha*255.0), - stage->ss.wind, stage->ss.windIdle, NULL, stage->ss.facing, skew, - winddiffv, windforce); - } - } - else - { - if (SSUsingFog) - { - RB_VerticalSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), - stage->ss.wind, stage->ss.windIdle, fogv, stage->ss.facing, skew); - } - else - { - RB_VerticalSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), - stage->ss.wind, stage->ss.windIdle, NULL, stage->ss.facing, skew); - } - } - - totalsurfsprites++; - } - } - } - } -} - - -///////////////////////////////////////////// -// Oriented surface sprites - -static void RB_OrientedSurfaceSprite(vec3_t loc, float width, float height, byte light, byte alpha, vec2_t fog, int faceup) -{ - vec3_t loc2, right; - float points[16]; - color4ub_t color; - - color[0]=light; - color[1]=light; - color[2]=light; - color[3]=alpha; - - if (faceup) - { - width *= 0.5; - height *= 0.5; - - // Bottom right - // VectorAdd(loc, right, point); - points[0] = loc[0] + width; - points[1] = loc[1] - width; - points[2] = loc[2] + 1.0; - points[3] = 0; - - // Top right - // VectorAdd(loc, right, point); - points[4] = loc[0] + width; - points[5] = loc[1] + width; - points[6] = loc[2] + 1.0; - points[7] = 0; - - // Top left - // VectorSubtract(loc, right, point); - points[8] = loc[0] - width; - points[9] = loc[1] + width; - points[10] = loc[2] + 1.0; - points[11] = 0; - - // Bottom left - // VectorSubtract(loc, right, point); - points[12] = loc[0] - width; - points[13] = loc[1] - width; - points[14] = loc[2] + 1.0; - points[15] = 0; - } - else - { - VectorMA(loc, height, backEnd.viewParms.or.axis[2], loc2); - VectorScale(backEnd.viewParms.or.axis[1], width*0.5, right); - - // Bottom right - // VectorAdd(loc, right, point); - points[0] = loc[0] + right[0]; - points[1] = loc[1] + right[1]; - points[2] = loc[2] + right[2]; - points[3] = 0; - - // Top right - // VectorAdd(loc2, right, point); - points[4] = loc2[0] + right[0]; - points[5] = loc2[1] + right[1]; - points[6] = loc2[2] + right[2]; - points[7] = 0; - - // Top left - // VectorSubtract(loc2, right, point); - points[8] = loc2[0] - right[0]; - points[9] = loc2[1] - right[1]; - points[10] = loc2[2] - right[2]; - points[11] = 0; - - // Bottom left - // VectorSubtract(loc, right, point); - points[12] = loc[0] - right[0]; - points[13] = loc[1] - right[1]; - points[14] = loc[2] - right[2]; - points[15] = 0; - } - - // Add the sprite to the render list. - SQuickSprite.Add(points, color, fog); -} - -static void RB_DrawOrientedSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) -{ - int curindex, curvert; - vec3_t dist; - float triarea, minnormal; - vec2_t vec1to2, vec1to3; - - vec3_t v1,v2,v3; - float a1,a2,a3; - float l1,l2,l3; - vec2_t fog1, fog2, fog3; - - float posi, posj; - float step; - float fa,fb,fc; - - vec3_t curpoint; - float width, height; - float alpha, alphapos, thisspritesfadestart, light; - byte randomindex2; - vec2_t fogv; - - float cutdist=stage->ss.fadeMax, cutdist2=cutdist*cutdist; - float fadedist=stage->ss.fadeDist, fadedist2=fadedist*fadedist; - - assert(cutdist2 != fadedist2); - float inv_fadediff = 1.0/(cutdist2-fadedist2); - - // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 - float faderange = FADE_RANGE/(cutdist-fadedist); - - if (faderange > 1.0) - { // Don't want to force a new fade_rand - faderange = 1.0; - } - - if (stage->ss.facing) - { // Faceup sprite. - minnormal = 0.99; - } - else - { // Normal oriented sprite - minnormal = 0.5; - } - - // Quickly calc all the alphas for each vertex - for (curvert=0; curvertnumVertexes; curvert++) - { - // Calc alpha at each point - VectorSubtract(backEnd.viewParms.or.origin, input->xyz[curvert], dist); - SSVertAlpha[curvert] = 1.0 - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; - } - - for (curindex=0; curindexnumIndexes-2; curindex+=3) - { - curvert = input->indexes[curindex]; - VectorCopy(input->xyz[curvert], v1); - if (input->normal[curvert][2] < minnormal) - { - continue; - } - l1 = input->vertexColors[curvert][2]; - a1 = SSVertAlpha[curvert]; - fog1[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); - fog1[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); - - curvert = input->indexes[curindex+1]; - VectorCopy(input->xyz[curvert], v2); - if (input->normal[curvert][2] < minnormal) - { - continue; - } - l2 = input->vertexColors[curvert][2]; - a2 = SSVertAlpha[curvert]; - fog2[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); - fog2[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); - - curvert = input->indexes[curindex+2]; - VectorCopy(input->xyz[curvert], v3); - if (input->normal[curvert][2] < minnormal) - { - continue; - } - l3 = input->vertexColors[curvert][2]; - a3 = SSVertAlpha[curvert]; - fog3[0] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)); - fog3[1] = *((float *)(tess.svars.texcoords[0])+(curvert<<1)+1); - - if (a1 <= 0.0 && a2 <= 0.0 && a3 <= 0.0) - { - continue; - } - - // Find the area in order to calculate the stepsize - vec1to2[0] = v2[0] - v1[0]; - vec1to2[1] = v2[1] - v1[1]; - vec1to3[0] = v3[0] - v1[0]; - vec1to3[1] = v3[1] - v1[1]; - - // Now get the cross product of this sum. - triarea = vec1to3[0]*vec1to2[1] - vec1to3[1]*vec1to2[0]; - triarea=fabs(triarea); - if (triarea <= 1.0) - { // Insanely small abhorrent triangle. - continue; - } - step = stage->ss.density * Q_rsqrt(triarea); - - randomindex = (byte)(v1[0]+v1[1]+v2[0]+v2[1]+v3[0]+v3[1]); - randominterval = (byte)(v1[0]+v2[1]+v3[2])|0x03; // Make sure the interval is at least 3, and always odd - - for (posi=0; posi<1.0; posi+=step) - { - for (posj=0; posj<(1.0-posi); posj+=step) - { - fa=posi+randomchart[randomindex]*step; - randomindex += randominterval; - if (fa>1.0) - continue; - - fb=posj+randomchart[randomindex]*step; - randomindex += randominterval; - if (fb>(1.0-fa)) - continue; - - fc = 1.0-fa-fb; - - // total alpha, minus random factor so some things fade out sooner. - alphapos = a1*fa + a2*fb + a3*fc; - - // Note that the alpha at this point is a value from 1.0 to 0.0, but represents when to START fading - thisspritesfadestart = faderange + (1.0-faderange) * randomchart[randomindex]; - randomindex += randominterval; - - // Find where the alpha is relative to the fadestart, and calc the real alpha to draw at. - alpha = 1.0 - ((thisspritesfadestart-alphapos)/faderange); - - randomindex += randominterval; - if (alpha > 0.0) - { - if (alpha > 1.0) - alpha=1.0; - - if (SSUsingFog) - { - fogv[0] = fog1[0]*fa + fog2[0]*fb + fog3[0]*fc; - fogv[1] = fog1[1]*fa + fog2[1]*fb + fog3[1]*fc; - } - - VectorScale(v1, fa, curpoint); - VectorMA(curpoint, fb, v2, curpoint); - VectorMA(curpoint, fc, v3, curpoint); - - light = l1*fa + l2*fb + l3*fc; - if (SSAdditiveTransparency) - { // Additive transparency, scale light value - light *= alpha; - } - - randomindex2 = randomindex; - width = stage->ss.width*(1.0 + (stage->ss.variance[0]*randomchart[randomindex2])); - height = stage->ss.height*(1.0 + (stage->ss.variance[1]*randomchart[randomindex2++])); - if (randomchart[randomindex2++]>0.5) - { - width = -width; - } - if (stage->ss.fadeScale!=0 && alphapos < 1.0) - { - width *= 1.0 + (stage->ss.fadeScale*(1.0-alphapos)); - } - - if (SSUsingFog) - { - RB_OrientedSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), fogv, stage->ss.facing); - } - else - { - RB_OrientedSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), NULL, stage->ss.facing); - } - - totalsurfsprites++; - } - } - } - } -} - - -///////////////////////////////////////////// -// Effect surface sprites - -static void RB_EffectSurfaceSprite(vec3_t loc, float width, float height, byte light, byte alpha, float life, int faceup) -{ - vec3_t loc2, right; - float points[16]; - color4ub_t color; - - color[0]=light; - color[1]=light; - color[2]=light; - color[3]=alpha; - - if (faceup) - { - width *= 0.5; - height *= 0.5; - - // Bottom right - // VectorAdd(loc, right, point); - points[0] = loc[0] + width; - points[1] = loc[1] - width; - points[2] = loc[2] + 1.0; - points[3] = 0; - - // Top right - // VectorAdd(loc, right, point); - points[4] = loc[0] + width; - points[5] = loc[1] + width; - points[6] = loc[2] + 1.0; - points[7] = 0; - - // Top left - // VectorSubtract(loc, right, point); - points[8] = loc[0] - width; - points[9] = loc[1] + width; - points[10] = loc[2] + 1.0; - points[11] = 0; - - // Bottom left - // VectorSubtract(loc, right, point); - points[12] = loc[0] - width; - points[13] = loc[1] - width; - points[14] = loc[2] + 1.0; - points[15] = 0; - } - else - { - VectorMA(loc, height, backEnd.viewParms.or.axis[2], loc2); - VectorScale(backEnd.viewParms.or.axis[1], width*0.5, right); - - // Bottom right - // VectorAdd(loc, right, point); - points[0] = loc[0] + right[0]; - points[1] = loc[1] + right[1]; - points[2] = loc[2] + right[2]; - points[3] = 0; - - // Top right - // VectorAdd(loc2, right, point); - points[4] = loc2[0] + right[0]; - points[5] = loc2[1] + right[1]; - points[6] = loc2[2] + right[2]; - points[7] = 0; - - // Top left - // VectorSubtract(loc2, right, point); - points[8] = loc2[0] - right[0]; - points[9] = loc2[1] - right[1]; - points[10] = loc2[2] - right[2]; - points[11] = 0; - - // Bottom left - // VectorSubtract(loc, right, point); - points[12] = loc[0] - right[0]; - points[13] = loc[1] - right[1]; - points[14] = loc[2] - right[2]; - points[15] = 0; - } - - // Add the sprite to the render list. - SQuickSprite.Add(points, color, NULL); -} - -static void RB_DrawEffectSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) -{ - int curindex, curvert; - vec3_t dist; - float triarea, minnormal; - vec2_t vec1to2, vec1to3; - - vec3_t v1,v2,v3; - float a1,a2,a3; - float l1,l2,l3; - - float posi, posj; - float step; - float fa,fb,fc; - float effecttime, effectpos; - float density; - - vec3_t curpoint; - float width, height; - float alpha, alphapos, thisspritesfadestart, light; - byte randomindex2; - - float cutdist=stage->ss.fadeMax, cutdist2=cutdist*cutdist; - float fadedist=stage->ss.fadeDist, fadedist2=fadedist*fadedist; - - float fxalpha = stage->ss.fxAlphaEnd - stage->ss.fxAlphaStart; - - assert(cutdist2 != fadedist2); - float inv_fadediff = 1.0/(cutdist2-fadedist2); - - // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 - float faderange = FADE_RANGE/(cutdist-fadedist); - if (faderange > 1.0) - { // Don't want to force a new fade_rand - faderange = 1.0; - } - - if (stage->ss.facing) - { // Faceup sprite. - minnormal = 0.99; - } - else - { // Normal oriented sprite - minnormal = 0.5; - } - - if (stage->ss.surfaceSpriteType == SURFSPRITE_WEATHERFX) - { // This effect is affected by weather settings. - if (r_surfaceWeather->value < 0.01) - { // Don't show these effects - return; - } - else - { - density = stage->ss.density / r_surfaceWeather->value; - } - } - else - { - density = stage->ss.density; - } - - // Quickly calc all the alphas for each vertex - for (curvert=0; curvertnumVertexes; curvert++) - { - // Calc alpha at each point - VectorSubtract(backEnd.viewParms.or.origin, input->xyz[curvert], dist); - SSVertAlpha[curvert] = 1.0 - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; - - // Note this is the proper equation, but isn't used right now because it would be just a tad slower. - // Formula for alpha is 1.0 - ((len-fade)/(cut-fade)) - // Which is equal to (1.0+fade/(cut-fade)) - (len/(cut-fade)) - // So mult=1/(cut-fade), and base=(1+fade*mult). - // SSVertAlpha[curvert] = fadebase - (VectorLength(dist) * fademult); - - } - - for (curindex=0; curindexnumIndexes-2; curindex+=3) - { - curvert = input->indexes[curindex]; - VectorCopy(input->xyz[curvert], v1); - if (input->normal[curvert][2] < minnormal) - { - continue; - } - l1 = input->vertexColors[curvert][2]; - a1 = SSVertAlpha[curvert]; - - curvert = input->indexes[curindex+1]; - VectorCopy(input->xyz[curvert], v2); - if (input->normal[curvert][2] < minnormal) - { - continue; - } - l2 = input->vertexColors[curvert][2]; - a2 = SSVertAlpha[curvert]; - - curvert = input->indexes[curindex+2]; - VectorCopy(input->xyz[curvert], v3); - if (input->normal[curvert][2] < minnormal) - { - continue; - } - l3 = input->vertexColors[curvert][2]; - a3 = SSVertAlpha[curvert]; - - if (a1 <= 0.0 && a2 <= 0.0 && a3 <= 0.0) - { - continue; - } - - // Find the area in order to calculate the stepsize - vec1to2[0] = v2[0] - v1[0]; - vec1to2[1] = v2[1] - v1[1]; - vec1to3[0] = v3[0] - v1[0]; - vec1to3[1] = v3[1] - v1[1]; - - // Now get the cross product of this sum. - triarea = vec1to3[0]*vec1to2[1] - vec1to3[1]*vec1to2[0]; - triarea=fabs(triarea); - if (triarea <= 1.0) - { // Insanely small abhorrent triangle. - continue; - } - step = density * Q_rsqrt(triarea); - - randomindex = (byte)(v1[0]+v1[1]+v2[0]+v2[1]+v3[0]+v3[1]); - randominterval = (byte)(v1[0]+v2[1]+v3[2])|0x03; // Make sure the interval is at least 3, and always odd - - for (posi=0; posi<1.0; posi+=step) - { - for (posj=0; posj<(1.0-posi); posj+=step) - { - effecttime = (tr.refdef.time+10000.0*randomchart[randomindex])/stage->ss.fxDuration; - effectpos = (float)effecttime - (int)effecttime; - - randomindex2 = randomindex+effecttime; - randomindex += randominterval; - fa=posi+randomchart[randomindex2++]*step; - if (fa>1.0) - continue; - - fb=posj+randomchart[randomindex2++]*step; - if (fb>(1.0-fa)) - continue; - - fc = 1.0-fa-fb; - - // total alpha, minus random factor so some things fade out sooner. - alphapos = a1*fa + a2*fb + a3*fc; - - // Note that the alpha at this point is a value from 1.0 to 0.0, but represents when to START fading - thisspritesfadestart = faderange + (1.0-faderange) * randomchart[randomindex2]; - randomindex2 += randominterval; - - // Find where the alpha is relative to the fadestart, and calc the real alpha to draw at. - alpha = 1.0 - ((thisspritesfadestart-alphapos)/faderange); - if (alpha > 0.0) - { - if (alpha > 1.0) - alpha=1.0; - - VectorScale(v1, fa, curpoint); - VectorMA(curpoint, fb, v2, curpoint); - VectorMA(curpoint, fc, v3, curpoint); - - light = l1*fa + l2*fb + l3*fc; - randomindex2 = randomindex; - width = stage->ss.width*(1.0 + (stage->ss.variance[0]*randomchart[randomindex2])); - height = stage->ss.height*(1.0 + (stage->ss.variance[1]*randomchart[randomindex2++])); - - width = width + (effectpos*stage->ss.fxGrow[0]*width); - height = height + (effectpos*stage->ss.fxGrow[1]*height); - alpha = alpha*(stage->ss.fxAlphaStart+(fxalpha*effectpos)); - - if (SSAdditiveTransparency) - { // Additive transparency, scale light value - light *= alpha; - } - - if (randomchart[randomindex2]>0.5) - { - width = -width; - } - if (stage->ss.fadeScale!=0 && alphapos < 1.0) - { - width *= 1.0 + (stage->ss.fadeScale*(1.0-alphapos)); - } - - if (stage->ss.wind>0.0 && curWindSpeed > 0.001) - { - vec3_t drawpoint; - - VectorMA(curpoint, effectpos*stage->ss.wind, curWindBlowVect, drawpoint); - RB_EffectSurfaceSprite(drawpoint, width, height, (byte)light, (byte)(alpha*255.0), stage->ss.fxDuration, stage->ss.facing); - } - else - { - RB_EffectSurfaceSprite(curpoint, width, height, (byte)light, (byte)(alpha*255.0), stage->ss.fxDuration, stage->ss.facing); - } - - totalsurfsprites++; - } - } - } - } -} - - -static void RB_DrawSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) -{ - fog_t *fog; - unsigned long glbits=stage->stateBits; - - R_UpdateWind(); - - // - // Check fog - // - if ( tess.fogNum && tess.shader->fogPass)// && r_drawfog->value) - { - fog = tr.world->fogs + tess.fogNum; - SSUsingFog = qtrue; - SQuickSprite.StartGroup(&stage->bundle[0], glbits, fog->colorInt); - } - else - { - SSUsingFog = qfalse; - SQuickSprite.StartGroup(&stage->bundle[0], glbits); - } - - // Special provision in case the transparency is additive. - if (glbits & GLS_SRCBLEND_ONE) - { // Additive transparency, scale light value - SSAdditiveTransparency=qtrue; - } - else - { - SSAdditiveTransparency=qfalse; - } - - switch(stage->ss.surfaceSpriteType) - { - case SURFSPRITE_VERTICAL: - RB_DrawVerticalSurfaceSprites(stage, input); - break; - case SURFSPRITE_ORIENTED: - RB_DrawOrientedSurfaceSprites(stage, input); - break; - case SURFSPRITE_EFFECT: - case SURFSPRITE_WEATHERFX: - RB_DrawEffectSurfaceSprites(stage, input); - break; - } - - SQuickSprite.EndGroup(); - - sssurfaces++; -} - - - - - -/* -============================================================= - -SURFACE SHADERS - -============================================================= -*/ - -shaderCommands_t tess; -static qboolean setArraysOnce; - -/* -================= -R_BindAnimatedImage - -================= -*/ -// de-static'd because tr_quicksprite wants it -void R_BindAnimatedImage( textureBundle_t *bundle ) { - int index; - - if ( bundle->isVideoMap ) { - ri.CIN_RunCinematic(bundle->videoMapHandle); - ri.CIN_UploadCinematic(bundle->videoMapHandle); - return; - } - - if ((r_fullbright->value /*|| tr.refdef.doFullbright */) && bundle->isLightmap) - { - GL_Bind( tr.whiteImage ); - return; - } - - if ( bundle->numImageAnimations <= 1 ) { - GL_Bind( bundle->image[0] ); - return; - } - - // it is necessary to do this messy calc to make sure animations line up - // exactly with waveforms of the same frequency - index = myftol( tess.shaderTime * bundle->imageAnimationSpeed * FUNCTABLE_SIZE ); - index >>= FUNCTABLE_SIZE2; - - if ( index < 0 ) { - index = 0; // may happen with shader time offsets - } - if ( bundle->oneShotAnimMap ) - { - if ( index >= bundle->numImageAnimations ) - { - // stick on last frame - index = bundle->numImageAnimations - 1; - } - } - else - { - // loop - index %= bundle->numImageAnimations; - } - - GL_Bind( bundle->image[ index ] ); -} - -/* -================ -DrawTris - -Draws triangle outlines for debugging -================ -*/ -static void DrawTris (shaderCommands_t *input) { - GL_Bind( tr.whiteImage ); - qglColor3f (1,1,1); - - GL_State( GLS_POLYMODE_LINE | GLS_DEPTHMASK_TRUE ); - qglDepthRange( 0, 0 ); - - qglDisableClientState (GL_COLOR_ARRAY); - qglDisableClientState (GL_TEXTURE_COORD_ARRAY); - - qglVertexPointer (3, GL_FLOAT, 16, input->xyz); // padded for SIMD - - if (qglLockArraysEXT) { - qglLockArraysEXT(0, input->numVertexes); - GLimp_LogComment( "glLockArraysEXT\n" ); - } - - R_DrawElements( input->numIndexes, input->indexes ); - - if (qglUnlockArraysEXT) { - qglUnlockArraysEXT(); - GLimp_LogComment( "glUnlockArraysEXT\n" ); - } - qglDepthRange( 0, 1 ); -} - - -/* -================ -DrawNormals - -Draws vertex normals for debugging -================ -*/ -static void DrawNormals (shaderCommands_t *input) { - int i; - vec3_t temp; - - GL_Bind( tr.whiteImage ); - qglColor3f (1,1,1); - qglDepthRange( 0, 0 ); // never occluded - GL_State( GLS_POLYMODE_LINE | GLS_DEPTHMASK_TRUE ); - - qglBegin (GL_LINES); - for (i = 0 ; i < input->numVertexes ; i++) { - qglVertex3fv (input->xyz[i]); - VectorMA (input->xyz[i], 2, input->normal[i], temp); - qglVertex3fv (temp); - } - qglEnd (); - - qglDepthRange( 0, 1 ); -} - -/* -============== -RB_BeginSurface - -We must set some things up before beginning any tesselation, -because a surface may be forced to perform a RB_End due -to overflow. -============== -*/ -void RB_BeginSurface( shader_t *shader, int fogNum ) { - - shader_t *state = (shader->remappedShader) ? shader->remappedShader : shader; - - tess.numIndexes = 0; - tess.numVertexes = 0; - tess.shader = state; - tess.fogNum = fogNum; - tess.dlightBits = 0; // will be OR'd in by surface functions - tess.xstages = state->stages; - tess.numPasses = state->numUnfoggedPasses; - tess.currentStageIteratorFunc = state->optimalStageIteratorFunc; - - tess.shaderTime = backEnd.refdef.floatTime - tess.shader->timeOffset; - if (tess.shader->clampTime && tess.shaderTime >= tess.shader->clampTime) { - tess.shaderTime = tess.shader->clampTime; - } - - -} - -/* -=================== -DrawMultitextured - -output = t0 * t1 or t0 + t1 - -t0 = most upstream according to spec -t1 = most downstream according to spec -=================== -*/ -static void DrawMultitextured( shaderCommands_t *input, int stage ) { - shaderStage_t *pStage; - - pStage = tess.xstages[stage]; - - GL_State( pStage->stateBits ); - - // this is an ugly hack to work around a GeForce driver - // bug with multitexture and clip planes - if ( backEnd.viewParms.isPortal ) { - qglPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); - } - - // - // base - // - GL_SelectTexture( 0 ); - qglTexCoordPointer( 2, GL_FLOAT, 0, input->svars.texcoords[0] ); - R_BindAnimatedImage( &pStage->bundle[0] ); - - // - // lightmap/secondary pass - // - GL_SelectTexture( 1 ); - qglEnable( GL_TEXTURE_2D ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - - if ( r_lightmap->integer ) { - GL_TexEnv( GL_REPLACE ); - } else { - GL_TexEnv( tess.shader->multitextureEnv ); - } - - qglTexCoordPointer( 2, GL_FLOAT, 0, input->svars.texcoords[1] ); - - R_BindAnimatedImage( &pStage->bundle[1] ); - - R_DrawElements( input->numIndexes, input->indexes ); - - // - // disable texturing on TEXTURE1, then select TEXTURE0 - // - //qglDisableClientState( GL_TEXTURE_COORD_ARRAY ); - qglDisable( GL_TEXTURE_2D ); - - GL_SelectTexture( 0 ); -} - - - -/* -=================== -ProjectDlightTexture - -Perform dynamic lighting with another rendering pass -=================== -*/ -static void ProjectDlightTexture( void ) { - int i, l; - vec3_t origin; - float *texCoords; - byte *colors; - byte clipBits[SHADER_MAX_VERTEXES]; - MAC_STATIC float texCoordsArray[SHADER_MAX_VERTEXES][2]; - byte colorArray[SHADER_MAX_VERTEXES][4]; - unsigned hitIndexes[SHADER_MAX_INDEXES]; - int numIndexes; - float scale; - float radius; - vec3_t floatColor; - - if ( !backEnd.refdef.num_dlights ) { - return; - } - - for ( l = 0 ; l < backEnd.refdef.num_dlights ; l++ ) { - dlight_t *dl; - - if ( !( tess.dlightBits & ( 1 << l ) ) ) { - continue; // this surface definately doesn't have any of this light - } - texCoords = texCoordsArray[0]; - colors = colorArray[0]; - - dl = &backEnd.refdef.dlights[l]; - VectorCopy( dl->transformed, origin ); - radius = dl->radius; - scale = 1.0f / radius; - floatColor[0] = dl->color[0] * 255.0f; - floatColor[1] = dl->color[1] * 255.0f; - floatColor[2] = dl->color[2] * 255.0f; - - for ( i = 0 ; i < tess.numVertexes ; i++, texCoords += 2, colors += 4 ) { - vec3_t dist; - int clip; - float modulate; - - backEnd.pc.c_dlightVertexes++; - - VectorSubtract( origin, tess.xyz[i], dist ); - texCoords[0] = 0.5f + dist[0] * scale; - texCoords[1] = 0.5f + dist[1] * scale; - - clip = 0; - if ( texCoords[0] < 0.0f ) { - clip |= 1; - } else if ( texCoords[0] > 1.0f ) { - clip |= 2; - } - if ( texCoords[1] < 0.0f ) { - clip |= 4; - } else if ( texCoords[1] > 1.0f ) { - clip |= 8; - } - // modulate the strength based on the height and color - if ( dist[2] > radius ) { - clip |= 16; - modulate = 0.0f; - } else if ( dist[2] < -radius ) { - clip |= 32; - modulate = 0.0f; - } else { - dist[2] = Q_fabs(dist[2]); - if ( dist[2] < radius * 0.5f ) { - modulate = 1.0f; - } else { - modulate = 2.0f * (radius - dist[2]) * scale; - } - } - clipBits[i] = clip; - - colors[0] = myftol(floatColor[0] * modulate); - colors[1] = myftol(floatColor[1] * modulate); - colors[2] = myftol(floatColor[2] * modulate); - colors[3] = 255; - } - - // build a list of triangles that need light - numIndexes = 0; - for ( i = 0 ; i < tess.numIndexes ; i += 3 ) { - int a, b, c; - - a = tess.indexes[i]; - b = tess.indexes[i+1]; - c = tess.indexes[i+2]; - if ( clipBits[a] & clipBits[b] & clipBits[c] ) { - continue; // not lighted - } - hitIndexes[numIndexes] = a; - hitIndexes[numIndexes+1] = b; - hitIndexes[numIndexes+2] = c; - numIndexes += 3; - } - - if ( !numIndexes ) { - continue; - } - - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - qglTexCoordPointer( 2, GL_FLOAT, 0, texCoordsArray[0] ); - - qglEnableClientState( GL_COLOR_ARRAY ); - qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, colorArray ); - - GL_Bind( tr.dlightImage ); - // include GLS_DEPTHFUNC_EQUAL so alpha tested surfaces don't add light - // where they aren't rendered - if ( dl->additive ) { - GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_EQUAL ); - } - else { - GL_State( GLS_SRCBLEND_DST_COLOR | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_EQUAL ); - } - R_DrawElements( numIndexes, hitIndexes ); - backEnd.pc.c_totalIndexes += numIndexes; - backEnd.pc.c_dlightIndexes += numIndexes; - } -} - - -/* -=================== -RB_FogPass - -Blends a fog texture on top of everything else -=================== -*/ -static void RB_FogPass( void ) { - fog_t *fog; - int i; - - qglEnableClientState( GL_COLOR_ARRAY ); - qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.svars.colors ); - - qglEnableClientState( GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer( 2, GL_FLOAT, 0, tess.svars.texcoords[0] ); - - fog = tr.world->fogs + tess.fogNum; - - for ( i = 0; i < tess.numVertexes; i++ ) { - * ( int * )&tess.svars.colors[i] = fog->colorInt; - } - - RB_CalcFogTexCoords( ( float * ) tess.svars.texcoords[0] ); - - GL_Bind( tr.fogImage ); - - if ( tess.shader->fogPass == FP_EQUAL ) { - GL_State( GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA | GLS_DEPTHFUNC_EQUAL ); - } else { - GL_State( GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA ); - } - - R_DrawElements( tess.numIndexes, tess.indexes ); -} - -/* -=============== -ComputeColors -=============== -*/ -static void ComputeColors( shaderStage_t *pStage, int forceRGBGen ) -{ - int i; - color4ub_t *colors = tess.svars.colors; - qboolean killGen = qfalse; - - if ( tess.shader != tr.projectionShadowShader && tess.shader != tr.shadowShader && - ( backEnd.currentEntity->e.renderfx & (RF_DISINTEGRATE1|RF_DISINTEGRATE2))) - { - RB_CalcDisintegrateColors( (unsigned char *)tess.svars.colors ); - RB_CalcDisintegrateVertDeform(); - - // We've done some custom alpha and color stuff, so we can skip the rest. Let it do fog though - killGen = qtrue; - } - - // - // rgbGen - // - if ( !forceRGBGen ) - { - forceRGBGen = pStage->rgbGen; - } - - if ( backEnd.currentEntity->e.renderfx & RF_VOLUMETRIC ) // does not work for rotated models, technically, this should also be a CGEN type, but that would entail adding new shader commands....which is too much work for one thing - { - int i; - float *normal, dot; - unsigned char *color; - int numVertexes; - - normal = tess.normal[0]; - color = tess.svars.colors[0]; - - numVertexes = tess.numVertexes; - - for ( i = 0 ; i < numVertexes ; i++, normal += 4, color += 4) - { - dot = DotProduct( normal, backEnd.refdef.viewaxis[0] ); - - dot *= dot * dot * dot; - - if ( dot < 0.2f ) // so low, so just clamp it - { - dot = 0.0f; - } - - color[0] = color[1] = color[2] = color[3] = myftol( backEnd.currentEntity->e.shaderRGBA[0] * (1-dot) ); - - } - - killGen = qtrue; - } - - if (killGen) - { - goto avoidGen; - } - - // - // rgbGen - // - switch ( forceRGBGen ) - { - case CGEN_IDENTITY: - Com_Memset( tess.svars.colors, 0xff, tess.numVertexes * 4 ); - break; - default: - case CGEN_IDENTITY_LIGHTING: - Com_Memset( tess.svars.colors, tr.identityLightByte, tess.numVertexes * 4 ); - break; - case CGEN_LIGHTING_DIFFUSE: - RB_CalcDiffuseColor( ( unsigned char * ) tess.svars.colors ); - break; - case CGEN_EXACT_VERTEX: - Com_Memcpy( tess.svars.colors, tess.vertexColors, tess.numVertexes * sizeof( tess.vertexColors[0] ) ); - break; - case CGEN_CONST: - for ( i = 0; i < tess.numVertexes; i++ ) { - *(int *)tess.svars.colors[i] = *(int *)pStage->constantColor; - } - break; - case CGEN_VERTEX: - if ( tr.identityLight == 1 ) - { - Com_Memcpy( tess.svars.colors, tess.vertexColors, tess.numVertexes * sizeof( tess.vertexColors[0] ) ); - } - else - { - for ( i = 0; i < tess.numVertexes; i++ ) - { - tess.svars.colors[i][0] = tess.vertexColors[i][0] * tr.identityLight; - tess.svars.colors[i][1] = tess.vertexColors[i][1] * tr.identityLight; - tess.svars.colors[i][2] = tess.vertexColors[i][2] * tr.identityLight; - tess.svars.colors[i][3] = tess.vertexColors[i][3]; - } - } - break; - case CGEN_ONE_MINUS_VERTEX: - if ( tr.identityLight == 1 ) - { - for ( i = 0; i < tess.numVertexes; i++ ) - { - tess.svars.colors[i][0] = 255 - tess.vertexColors[i][0]; - tess.svars.colors[i][1] = 255 - tess.vertexColors[i][1]; - tess.svars.colors[i][2] = 255 - tess.vertexColors[i][2]; - } - } - else - { - for ( i = 0; i < tess.numVertexes; i++ ) - { - tess.svars.colors[i][0] = ( 255 - tess.vertexColors[i][0] ) * tr.identityLight; - tess.svars.colors[i][1] = ( 255 - tess.vertexColors[i][1] ) * tr.identityLight; - tess.svars.colors[i][2] = ( 255 - tess.vertexColors[i][2] ) * tr.identityLight; - } - } - break; - case CGEN_FOG: - { - fog_t *fog; - - fog = tr.world->fogs + tess.fogNum; - - for ( i = 0; i < tess.numVertexes; i++ ) { - * ( int * )&tess.svars.colors[i] = fog->colorInt; - } - } - break; - case CGEN_WAVEFORM: - RB_CalcWaveColor( &pStage->rgbWave, ( unsigned char * ) tess.svars.colors ); - break; - case CGEN_ENTITY: - RB_CalcColorFromEntity( ( unsigned char * ) tess.svars.colors ); - break; - case CGEN_ONE_MINUS_ENTITY: - RB_CalcColorFromOneMinusEntity( ( unsigned char * ) tess.svars.colors ); - break; - case CGEN_LIGHTMAP0: - memset( colors, 0xff, tess.numVertexes * 4 ); - break; - case CGEN_LIGHTMAP1: - for ( i = 0; i < tess.numVertexes; i++ ) - { - *(unsigned *)&colors[i] = *(unsigned *)styleColors[pStage->lightmapStyle]; - } - break; - case CGEN_LIGHTMAP2: - for ( i = 0; i < tess.numVertexes; i++ ) - { - *(unsigned *)&colors[i] = *(unsigned *)styleColors[pStage->lightmapStyle]; - } - break; - case CGEN_LIGHTMAP3: - for ( i = 0; i < tess.numVertexes; i++ ) - { - *(unsigned *)&colors[i] = *(unsigned *)styleColors[pStage->lightmapStyle]; - } - break; - - } - - // - // alphaGen - // - switch ( pStage->alphaGen ) - { - case AGEN_SKIP: - break; - case AGEN_IDENTITY: - if ( forceRGBGen != CGEN_IDENTITY ) { - if ( ( forceRGBGen == CGEN_VERTEX && tr.identityLight != 1 ) || - forceRGBGen != CGEN_VERTEX ) { - for ( i = 0; i < tess.numVertexes; i++ ) { - tess.svars.colors[i][3] = 0xff; - } - } - } - break; - case AGEN_CONST: - if ( forceRGBGen != CGEN_CONST ) { - for ( i = 0; i < tess.numVertexes; i++ ) { - tess.svars.colors[i][3] = pStage->constantColor[3]; - } - } - break; - case AGEN_WAVEFORM: - RB_CalcWaveAlpha( &pStage->alphaWave, ( unsigned char * ) tess.svars.colors ); - break; - case AGEN_LIGHTING_SPECULAR: - RB_CalcSpecularAlpha( ( unsigned char * ) tess.svars.colors ); - break; - case AGEN_ENTITY: - RB_CalcAlphaFromEntity( ( unsigned char * ) tess.svars.colors ); - break; - case AGEN_ONE_MINUS_ENTITY: - RB_CalcAlphaFromOneMinusEntity( ( unsigned char * ) tess.svars.colors ); - break; - case AGEN_VERTEX: - if ( forceRGBGen != CGEN_VERTEX ) { - for ( i = 0; i < tess.numVertexes; i++ ) { - tess.svars.colors[i][3] = tess.vertexColors[i][3]; - } - } - break; - case AGEN_ONE_MINUS_VERTEX: - for ( i = 0; i < tess.numVertexes; i++ ) - { - tess.svars.colors[i][3] = 255 - tess.vertexColors[i][3]; - } - break; - case AGEN_PORTAL: - { - unsigned char alpha; - - for ( i = 0; i < tess.numVertexes; i++ ) - { - float len; - vec3_t v; - - VectorSubtract( tess.xyz[i], backEnd.viewParms.or.origin, v ); - len = VectorLength( v ); - - len /= tess.shader->portalRange; - - if ( len < 0 ) - { - alpha = 0; - } - else if ( len > 1 ) - { - alpha = 0xff; - } - else - { - alpha = len * 0xff; - } - - tess.svars.colors[i][3] = alpha; - } - } - break; - case AGEN_BLEND: - if ( forceRGBGen != CGEN_VERTEX ) - { - for ( i = 0; i < tess.numVertexes; i++ ) - { - //colors[i][3] = tess.vertexAlphas[i][pStage->index]; // only used on SOF2, needs implementing if you want it - } - } - break; - } -avoidGen: - // - // fog adjustment for colors to fade out as fog increases - // - if ( tess.fogNum ) - { - switch ( pStage->adjustColorsForFog ) - { - case ACFF_MODULATE_RGB: - RB_CalcModulateColorsByFog( ( unsigned char * ) tess.svars.colors ); - break; - case ACFF_MODULATE_ALPHA: - RB_CalcModulateAlphasByFog( ( unsigned char * ) tess.svars.colors ); - break; - case ACFF_MODULATE_RGBA: - RB_CalcModulateRGBAsByFog( ( unsigned char * ) tess.svars.colors ); - break; - case ACFF_NONE: - break; - } - } -} - -/* -=============== -ComputeTexCoords -=============== -*/ -static void ComputeTexCoords( shaderStage_t *pStage ) { - int i; - int b; - float *texcoords; - - for ( b = 0; b < NUM_TEXTURE_BUNDLES; b++ ) { - int tm; - - texcoords = (float *)tess.svars.texcoords[b]; - // - // generate the texture coordinates - // - switch ( pStage->bundle[b].tcGen ) - { - case TCGEN_IDENTITY: - Com_Memset( tess.svars.texcoords[b], 0, sizeof( float ) * 2 * tess.numVertexes ); - break; - case TCGEN_TEXTURE: - for ( i = 0 ; i < tess.numVertexes ; i++ ) { - tess.svars.texcoords[b][i][0] = tess.texCoords[i][0][0]; - tess.svars.texcoords[b][i][1] = tess.texCoords[i][0][1]; - } - break; - case TCGEN_LIGHTMAP: - for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { - texcoords[0] = tess.texCoords[i][1][0]; - texcoords[1] = tess.texCoords[i][1][1]; - } - break; - case TCGEN_LIGHTMAP1: - for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { - texcoords[0] = tess.texCoords[i][2][0]; - texcoords[1] = tess.texCoords[i][2][1]; - } - break; - case TCGEN_LIGHTMAP2: - for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { - texcoords[0] = tess.texCoords[i][3][0]; - texcoords[1] = tess.texCoords[i][3][1]; - } - break; - case TCGEN_LIGHTMAP3: - for ( i = 0 ; i < tess.numVertexes ; i++,texcoords+=2 ) { - texcoords[0] = tess.texCoords[i][4][0]; - texcoords[1] = tess.texCoords[i][4][1]; - } - break; - case TCGEN_VECTOR: - for ( i = 0 ; i < tess.numVertexes ; i++ ) { - tess.svars.texcoords[b][i][0] = DotProduct( tess.xyz[i], pStage->bundle[b].tcGenVectors[0] ); - tess.svars.texcoords[b][i][1] = DotProduct( tess.xyz[i], pStage->bundle[b].tcGenVectors[1] ); - } - break; - case TCGEN_FOG: - RB_CalcFogTexCoords( ( float * ) tess.svars.texcoords[b] ); - break; - case TCGEN_ENVIRONMENT_MAPPED: - RB_CalcEnvironmentTexCoords( ( float * ) tess.svars.texcoords[b] ); - break; - case TCGEN_BAD: - return; - } - - // - // alter texture coordinates - // - for ( tm = 0; tm < pStage->bundle[b].numTexMods ; tm++ ) { - switch ( pStage->bundle[b].texMods[tm].type ) - { - case TMOD_NONE: - tm = TR_MAX_TEXMODS; // break out of for loop - break; - - case TMOD_TURBULENT: - RB_CalcTurbulentTexCoords( &pStage->bundle[b].texMods[tm].wave, - ( float * ) tess.svars.texcoords[b] ); - break; - - case TMOD_ENTITY_TRANSLATE: - RB_CalcScrollTexCoords( backEnd.currentEntity->e.shaderTexCoord, - ( float * ) tess.svars.texcoords[b] ); - break; - - case TMOD_SCROLL: - RB_CalcScrollTexCoords( pStage->bundle[b].texMods[tm].scroll, - ( float * ) tess.svars.texcoords[b] ); - break; - - case TMOD_SCALE: - RB_CalcScaleTexCoords( pStage->bundle[b].texMods[tm].scale, - ( float * ) tess.svars.texcoords[b] ); - break; - - case TMOD_STRETCH: - RB_CalcStretchTexCoords( &pStage->bundle[b].texMods[tm].wave, - ( float * ) tess.svars.texcoords[b] ); - break; - - case TMOD_TRANSFORM: - RB_CalcTransformTexCoords( &pStage->bundle[b].texMods[tm], - ( float * ) tess.svars.texcoords[b] ); - break; - - case TMOD_ROTATE: - RB_CalcRotateTexCoords( pStage->bundle[b].texMods[tm].rotateSpeed, - ( float * ) tess.svars.texcoords[b] ); - break; - - default: - ri.Error( ERR_DROP, "ERROR: unknown texmod '%d' in shader '%s'\n", pStage->bundle[b].texMods[tm].type, tess.shader->name ); - break; - } - } - } -} - -void ForceAlpha(unsigned char *dstColors, int TR_ForceEntAlpha) -{ - int i; - - dstColors += 3; - - for ( i = 0; i < tess.numVertexes; i++, dstColors += 4 ) - { - *dstColors = TR_ForceEntAlpha; - } -} - -/* -** RB_IterateStagesGeneric -*/ -static void RB_IterateStagesGeneric( shaderCommands_t *input ) -{ - int stage; - - for ( stage = 0; stage < MAX_SHADER_STAGES; stage++ ) - { - shaderStage_t *pStage = tess.xstages[stage]; - int forceRGBGen = 0; - int stateBits = 0; - - if ( !pStage ) - { - break; - } - - if ( stage && r_lightmap->integer && !( pStage->bundle[0].isLightmap || pStage->bundle[1].isLightmap || pStage->bundle[0].vertexLightmap ) ) - { - break; - } - - stateBits = pStage->stateBits; - - if ( backEnd.currentEntity ) - { - if ( backEnd.currentEntity->e.renderfx & RF_DISINTEGRATE1 ) - { - // we want to be able to rip a hole in the thing being disintegrated, and by doing the depth-testing it avoids some kinds of artefacts, but will probably introduce others? - stateBits = GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA | GLS_DEPTHMASK_TRUE | GLS_DEPTHTEST_DISABLE; - } - - if ( backEnd.currentEntity->e.renderfx & RF_RGB_TINT ) - {//want to use RGBGen from ent - forceRGBGen = CGEN_ENTITY; - } - } - - if (pStage->ss.surfaceSpriteType) - { - // We check for surfacesprites AFTER drawing everything else - continue; - } - - ComputeColors( pStage, forceRGBGen ); - ComputeTexCoords( pStage ); - - if ( !setArraysOnce ) - { - qglEnableClientState( GL_COLOR_ARRAY ); - qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, input->svars.colors ); - } - - // - // do multitexture - // - if ( pStage->bundle[1].image[0] != 0 ) - { - DrawMultitextured( input, stage ); - } - else - { - if ( !setArraysOnce ) - { - qglTexCoordPointer( 2, GL_FLOAT, 0, input->svars.texcoords[0] ); - } - - // - // set state - // - if ( pStage->bundle[0].vertexLightmap && ( r_vertexLight->integer && !r_uiFullScreen->integer ) && r_lightmap->integer ) - { - GL_Bind( tr.whiteImage ); - } - else - R_BindAnimatedImage( &pStage->bundle[0] ); - - if (backEnd.currentEntity && (backEnd.currentEntity->e.renderfx & RF_FORCE_ENT_ALPHA)) - { - ForceAlpha((unsigned char *) tess.svars.colors, backEnd.currentEntity->e.shaderRGBA[3]); - GL_State(GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA); - } - else - { - GL_State( stateBits ); - } - - // - // draw - // - R_DrawElements( input->numIndexes, input->indexes ); - } - } -} - - -/* -** RB_StageIteratorGeneric -*/ -void RB_StageIteratorGeneric( void ) -{ - shaderCommands_t *input; - int stage; - - input = &tess; - - RB_DeformTessGeometry(); - - // - // log this call - // - if ( r_logFile->integer ) - { - // don't just call LogComment, or we will get - // a call to va() every frame! - GLimp_LogComment( va("--- RB_StageIteratorGeneric( %s ) ---\n", tess.shader->name) ); - } - - // - // set face culling appropriately - // - GL_Cull( input->shader->cullType ); - - // set polygon offset if necessary - if ( input->shader->polygonOffset ) - { - qglEnable( GL_POLYGON_OFFSET_FILL ); - qglPolygonOffset( r_offsetFactor->value, r_offsetUnits->value ); - } - - // - // if there is only a single pass then we can enable color - // and texture arrays before we compile, otherwise we need - // to avoid compiling those arrays since they will change - // during multipass rendering - // - if ( tess.numPasses > 1 || input->shader->multitextureEnv ) - { - setArraysOnce = qfalse; - qglDisableClientState (GL_COLOR_ARRAY); - qglDisableClientState (GL_TEXTURE_COORD_ARRAY); - } - else - { - setArraysOnce = qtrue; - - qglEnableClientState( GL_COLOR_ARRAY); - qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.svars.colors ); - - qglEnableClientState( GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer( 2, GL_FLOAT, 0, tess.svars.texcoords[0] ); - } - - // - // lock XYZ - // - qglVertexPointer (3, GL_FLOAT, 16, input->xyz); // padded for SIMD - if (qglLockArraysEXT) - { - qglLockArraysEXT(0, input->numVertexes); - GLimp_LogComment( "glLockArraysEXT\n" ); - } - - // - // enable color and texcoord arrays after the lock if necessary - // - if ( !setArraysOnce ) - { - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - qglEnableClientState( GL_COLOR_ARRAY ); - } - - // - // call shader function - // - RB_IterateStagesGeneric( input ); - - // - // now do any dynamic lighting needed - // - if ( tess.dlightBits && tess.shader->sort <= SS_OPAQUE - && !(tess.shader->surfaceFlags & (SURF_NODLIGHT | SURF_SKY) ) ) { - ProjectDlightTexture(); - } - - // - // now do fog - // - if ( tess.fogNum && tess.shader->fogPass ) { - RB_FogPass(); - } - - // - // unlock arrays - // - if (qglUnlockArraysEXT) - { - qglUnlockArraysEXT(); - GLimp_LogComment( "glUnlockArraysEXT\n" ); - } - - // - // reset polygon offset - // - if ( input->shader->polygonOffset ) - { - qglDisable( GL_POLYGON_OFFSET_FILL ); - } - - // Now check for surfacesprites. - if (r_surfaceSprites->integer) - { - for ( stage = 1; stage < MAX_SHADER_STAGES; stage++ ) - { - if (!tess.xstages[stage]) - { - break; - } - if (tess.xstages[stage]->ss.surfaceSpriteType) - { // Draw the surfacesprite - RB_DrawSurfaceSprites(tess.xstages[stage], input); - } - } - } -} - - -/* -** RB_StageIteratorVertexLitTexture -*/ -void RB_StageIteratorVertexLitTexture( void ) -{ - shaderCommands_t *input; - shader_t *shader; - int stage; - - input = &tess; - - shader = input->shader; - - // - // compute colors - // - RB_CalcDiffuseColor( ( unsigned char * ) tess.svars.colors ); - - // - // log this call - // - if ( r_logFile->integer ) - { - // don't just call LogComment, or we will get - // a call to va() every frame! - GLimp_LogComment( va("--- RB_StageIteratorVertexLitTexturedUnfogged( %s ) ---\n", tess.shader->name) ); - } - - // - // set face culling appropriately - // - GL_Cull( input->shader->cullType ); - - // - // set arrays and lock - // - qglEnableClientState( GL_COLOR_ARRAY); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY); - - qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.svars.colors ); - qglTexCoordPointer( 2, GL_FLOAT, 16, tess.texCoords[0][0] ); - qglVertexPointer (3, GL_FLOAT, 16, input->xyz); - - if ( qglLockArraysEXT ) - { - qglLockArraysEXT(0, input->numVertexes); - GLimp_LogComment( "glLockArraysEXT\n" ); - } - - // - // call special shade routine - // - R_BindAnimatedImage( &tess.xstages[0]->bundle[0] ); - GL_State( tess.xstages[0]->stateBits ); - R_DrawElements( input->numIndexes, input->indexes ); - - // - // now do any dynamic lighting needed - // - if ( tess.dlightBits && tess.shader->sort <= SS_OPAQUE ) { - ProjectDlightTexture(); - } - - // - // now do fog - // - if ( tess.fogNum && tess.shader->fogPass ) { - RB_FogPass(); - } - - // - // unlock arrays - // - if (qglUnlockArraysEXT) - { - qglUnlockArraysEXT(); - GLimp_LogComment( "glUnlockArraysEXT\n" ); - } - - // Now check for surfacesprites. - if (r_surfaceSprites->integer) - { - for ( stage = 1; stage < MAX_SHADER_STAGES; stage++ ) - { - if (!tess.xstages[stage]) - { - break; - } - if (tess.xstages[stage]->ss.surfaceSpriteType) - { // Draw the surfacesprite - RB_DrawSurfaceSprites(tess.xstages[stage], input); - } - } - } -} - -//define REPLACE_MODE - -void RB_StageIteratorLightmappedMultitexture( void ) { - shaderCommands_t *input; - int stage; - - input = &tess; - - // - // log this call - // - if ( r_logFile->integer ) { - // don't just call LogComment, or we will get - // a call to va() every frame! - GLimp_LogComment( va("--- RB_StageIteratorLightmappedMultitexture( %s ) ---\n", tess.shader->name) ); - } - - // - // set face culling appropriately - // - GL_Cull( input->shader->cullType ); - - // - // set color, pointers, and lock - // - GL_State( GLS_DEFAULT ); - qglVertexPointer( 3, GL_FLOAT, 16, input->xyz ); - -#ifdef REPLACE_MODE - qglDisableClientState( GL_COLOR_ARRAY ); - qglColor3f( 1, 1, 1 ); - qglShadeModel( GL_FLAT ); -#else - qglEnableClientState( GL_COLOR_ARRAY ); - qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tess.constantColor255 ); -#endif - - // - // select base stage - // - GL_SelectTexture( 0 ); - - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - R_BindAnimatedImage( &tess.xstages[0]->bundle[0] ); - qglTexCoordPointer( 2, GL_FLOAT, 16, tess.texCoords[0][0] ); - - // - // configure second stage - // - GL_SelectTexture( 1 ); - qglEnable( GL_TEXTURE_2D ); - if ( r_lightmap->integer ) { - GL_TexEnv( GL_REPLACE ); - } else { - GL_TexEnv( GL_MODULATE ); - } - R_BindAnimatedImage( &tess.xstages[0]->bundle[1] ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - qglTexCoordPointer( 2, GL_FLOAT, 16, tess.texCoords[0][1] ); - - // - // lock arrays - // - if ( qglLockArraysEXT ) { - qglLockArraysEXT(0, input->numVertexes); - GLimp_LogComment( "glLockArraysEXT\n" ); - } - - R_DrawElements( input->numIndexes, input->indexes ); - - // - // disable texturing on TEXTURE1, then select TEXTURE0 - // - qglDisable( GL_TEXTURE_2D ); - qglDisableClientState( GL_TEXTURE_COORD_ARRAY ); - - GL_SelectTexture( 0 ); -#ifdef REPLACE_MODE - GL_TexEnv( GL_MODULATE ); - qglShadeModel( GL_SMOOTH ); -#endif - - // - // now do any dynamic lighting needed - // - if ( tess.dlightBits && tess.shader->sort <= SS_OPAQUE ) { - ProjectDlightTexture(); - } - - // - // now do fog - // - if ( tess.fogNum && tess.shader->fogPass ) { - RB_FogPass(); - } - - // - // unlock arrays - // - if ( qglUnlockArraysEXT ) { - qglUnlockArraysEXT(); - GLimp_LogComment( "glUnlockArraysEXT\n" ); - } - - // Now check for surfacesprites. - if (r_surfaceSprites->integer) - { - for ( stage = 1; stage < MAX_SHADER_STAGES; stage++ ) - { - if (!tess.xstages[stage]) - { - break; - } - if (tess.xstages[stage]->ss.surfaceSpriteType) - { // Draw the surfacesprite - RB_DrawSurfaceSprites(tess.xstages[stage], input); - } - } - } -} - -/* -** RB_EndSurface -*/ -void RB_EndSurface( void ) { - shaderCommands_t *input; - - input = &tess; - - if (input->numIndexes == 0) { - return; - } - - if (input->indexes[SHADER_MAX_INDEXES-1] != 0) { - ri.Error (ERR_DROP, "RB_EndSurface() - SHADER_MAX_INDEXES hit"); - } - if (input->xyz[SHADER_MAX_VERTEXES-1][0] != 0) { - ri.Error (ERR_DROP, "RB_EndSurface() - SHADER_MAX_VERTEXES hit"); - } - - if ( tess.shader == tr.shadowShader ) { - RB_ShadowTessEnd(); - return; - } - - // for debugging of sort order issues, stop rendering after a given sort value - if ( r_debugSort->integer && r_debugSort->integer < tess.shader->sort ) { - return; - } - - // - // update performance counters - // - backEnd.pc.c_shaders++; - backEnd.pc.c_vertexes += tess.numVertexes; - backEnd.pc.c_indexes += tess.numIndexes; - backEnd.pc.c_totalIndexes += tess.numIndexes * tess.numPasses; - if (tess.fogNum && tess.shader->fogPass > FP_NONE && tess.shader->fogPass < FP_GLFOG)// && r_drawfog->value) - { - backEnd.pc.c_totalIndexes += tess.numIndexes; - } - - // - // call off to shader specific tess end function - // - tess.currentStageIteratorFunc(); - - // - // draw debugging stuff - // - if ( r_showtris->integer && com_developer->integer ) { - DrawTris (input); - } - if ( r_shownormals->integer && com_developer->integer ) { - DrawNormals (input); - } - // clear shader so we can tell we don't have any unclosed surfaces - tess.numIndexes = 0; - - GLimp_LogComment( "----------\n" ); -} - diff --git a/code/0_compiled_first/0_SH_Leak.cpp b/code/0_compiled_first/0_SH_Leak.cpp index ce1d4ab..adfd5a5 100644 --- a/code/0_compiled_first/0_SH_Leak.cpp +++ b/code/0_compiled_first/0_SH_Leak.cpp @@ -418,6 +418,7 @@ public: MemPoolSetSmallBlockAllocator(MyPool,MEM_SMALL_BLOCK_SH3); #if MEM_DEBUG dbgMemSetGuardSize(2); + EnableChecking(100000); #endif } diff --git a/code/0_compiled_first/vssver.scc b/code/0_compiled_first/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..f854df8c5fb803ba58d4c69262a51fcb25d7649a GIT binary patch literal 48 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

9q^0& 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�v84zg~zu&kQ3}5oQPSR5L^;$39b(wiWOb}N$(1M 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 z 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 Q);^4@xszbMn4aVQ4_fB7S^xk5 literal 0 HcmV?d00001 diff --git a/code/SHDebug/jk2gamex86.lib b/code/SHDebug/jk2gamex86.lib deleted file mode 100644 index 3926c115a2007b830d303bd3142905a40dd6653d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2672 zcmc&$Pj3=Y5T9Mz(qdzXe~u<=Y+}7o{w<{mfkjJN!a@m!rgGULV2eU&aBJ$xegF^s z8Xo-sCcXFpJb3VC;;mONz2VI6d+e@sX+en--oE!{=DnFWznS-Vn5gyY2T9+G*;bDQX5Tu12;$)vx@ROT})SK zJFR(g)a~h-t|*+->Tr%yMN>G{CR>|&+sW5jhh%MYK-Qiv(p00}&K&B!ceHM|7{j&I zsXi8!5N!ynAR9L$0MA{%)ojHTPj+~YJ^7W@rn zY^_U_nbZZjQQ2oDW&rnIk*=$n)d(-AJ)bIgAa|Te{1UKM5RV@K!YzSN8$o`QiG-ay zA>>G?NV~_|X*r!|emkF%C(# zJe(6H9b~{jN47Y`e?%Wfv^zk8&8QP$7r)cElzq;FUtbqtIXZYvR6#WA;currentState.weapon == WP_SABER && cent->gent ) { -// value = cent->gent->client->ps.forcePower; + // don't need to draw ammo, but we will draw the current saber style in this window + switch ( cg.saberAnimLevelPending ) + { + case 1://FORCE_LEVEL_1: + CG_DrawPic( x, y, 80, 40, cgs.media.HUDSaberStyle1 ); + break; + case 2://FORCE_LEVEL_2: + CG_DrawPic( x, y, 80, 40, cgs.media.HUDSaberStyle2 ); + break; + case 3://FORCE_LEVEL_3: + CG_DrawPic( x, y, 80, 40, cgs.media.HUDSaberStyle3 ); + break; + } return; } else @@ -518,7 +530,7 @@ static void CG_DrawArmor(int x,int y) calcColor[2] *= armorPercent; cgi_R_SetColor( calcColor); CG_DrawPic( x, y, 80, 80, cgs.media.HUDArmor2 ); // Inner Armor circular - +/* if (ps->stats[STAT_ARMOR]) // Is there armor? Draw the HUD Armor TIC { // Make tic flash if inner armor is at 50% (25% of full armor) @@ -552,7 +564,7 @@ static void CG_DrawArmor(int x,int y) cgi_R_SetColor( colorTable[CT_HUD_GREEN] ); CG_DrawPic( x, y, 80, 80, cgs.media.HUDArmorTic ); } - +*/ cgi_R_SetColor( colorTable[CT_HUD_GREEN] ); CG_DrawNumField (x + 16 + 14, y + 40 + 14, 3, ps->stats[STAT_ARMOR], 6, 12, NUM_FONT_SMALL,qfalse); @@ -743,7 +755,6 @@ void CG_DrawDataPadHUD( centity_t *cent ) CG_DrawHUDLeftFrame1(x,y); CG_DrawArmor(x,y); CG_DrawHealth(x,y); - CG_DrawHUDLeftFrame2(x,y); x = 526; @@ -751,7 +762,9 @@ void CG_DrawDataPadHUD( centity_t *cent ) CG_DrawForcePower(cent,x,y); CG_DrawAmmo(cent,x,y); CG_DrawMessageLit(cent,x,y); - CG_DrawHUDRightFrame2(x,y); + + cgi_R_SetColor( colorTable[CT_WHITE]); + CG_DrawPic( 0, 0, 640, 480, cgs.media.dataPadFrame ); } @@ -1227,12 +1240,22 @@ static void CG_DrawCrosshair( vec3_t worldPoint ) { ecolor[0] = ecolor[1] = ecolor[2] = 1.0f; } - else if ( cg_forceCrosshair ) + else if ( cg_forceCrosshair && cg_crosshairForceHint.integer ) { - //force-affectable targets are blue - ecolor[0] = 0.2f; - ecolor[1] = 0.5f; - ecolor[2] = 1.0f; + if ( cg_crosshairForceHint.integer == 1 ) + { + // force-affectable targets are blue..do subtle for level 1 hint + ecolor[0] = 0.55f; + ecolor[1] = 0.8f; + ecolor[2] = 1.0f; + } + else + { + // level 2 hint or higher, make it more obvious blue + ecolor[0] = 0.2f; + ecolor[1] = 0.5f; + ecolor[2] = 1.0f; + } corona = qtrue; } else @@ -1309,6 +1332,7 @@ static void CG_DrawCrosshair( vec3_t worldPoint ) } ecolor[3] = 1.0; + cgi_R_SetColor( ecolor ); if ( cg.forceCrosshairStartTime ) { @@ -1339,8 +1363,6 @@ static void CG_DrawCrosshair( vec3_t worldPoint ) } } - cgi_R_SetColor( ecolor ); - if ( corona ) // we are pointing at a crosshair item { if ( !cg.forceCrosshairStartTime ) @@ -1413,16 +1435,16 @@ static void CG_DrawCrosshair( vec3_t worldPoint ) w, h, 0, 0, 1, 1, hShader ); } - if ( cg.forceCrosshairStartTime ) + if ( cg.forceCrosshairStartTime && cg_crosshairForceHint.integer > 1 ) // drawing extra bits { ecolor[0] = ecolor[1] = ecolor[2] = 1.0f; - ecolor[3] = 1 - ecolor[3]; + ecolor[3] = (1 - ecolor[3]) * 0.25f; float sc = 1.0f + sin( cg.time * 0.0005f ) * 0.4f; cgi_R_SetColor( ecolor ); - cgi_R_DrawStretchPic( x + cg.refdef.x + 0.5 * (640 - w * 3 * (sc+1)), - y + cg.refdef.y + 0.5 * (480 - h * 3), w * 3 * (sc+1), h * 3, 0, 0, 1, 1, cgs.media.forceCoronaShader ); + cgi_R_DrawStretchPic( x + cg.refdef.x + 0.5 * (640 - w * 2.5f * (sc+1)), + y + cg.refdef.y + 0.5 * (480 - h * 2), w * 2.5f * (sc+1), h * 2, 0, 0, 1, 1, cgs.media.forceCoronaShader ); } } @@ -1570,7 +1592,7 @@ static void CG_ScanForCrosshairEntity( qboolean scanAll ) //FIXME: debounce this to about 10fps? cg_forceCrosshair = qfalse; - if ( cg_crosshairForceHint.integer && cg_entities[0].gent && cg_entities[0].gent->client ) + if ( cg_entities[0].gent && cg_entities[0].gent->client ) // <-Mike said it should always do this //if (cg_crosshairForceHint.integer && {//try to check for force-affectable stuff first vec3_t d_f, d_rt, d_up; @@ -1842,7 +1864,7 @@ static void CG_DrawRocketLocking( int lockEntNum, int lockTime ) if ( cg.zoomMode > 0 ) { - if ( cg.overrides.fov ) + if ( cg.overrides.active & CG_OVERRIDE_FOV ) { sz -= ( cg.overrides.fov - cg_zoomFov ) / 80.0f; } diff --git a/code/cgame/cg_ents.cpp b/code/cgame/cg_ents.cpp index f2864bb..d7e6ca3 100644 --- a/code/cgame/cg_ents.cpp +++ b/code/cgame/cg_ents.cpp @@ -509,12 +509,9 @@ const weaponData_t *wData = NULL; if ( !( cc->currentState.eFlags & EF_FIRING ) && !( cc->currentState.eFlags & EF_ALT_FIRING )) { - // not animating - gi.G2API_PauseBoneAnim( ¢->gent->ghoul2[cent->gent->playerModel], "model_root", cg.time ); - /* + // not animating..pausing was leaving the barrels in a bad state gi.G2API_SetBoneAnimIndex( ¢->gent->ghoul2[cent->gent->playerModel], cent->gent->rootBone, - 0, 0, BONE_ANIM_OVERRIDE_LOOP, 1, cg.time, -1, 0 ); - */ + 0, 0, BONE_ANIM_OVERRIDE, 1.0f, cg.time ); } // get alternating muzzle end bolts @@ -559,7 +556,7 @@ const weaponData_t *wData = NULL; if ( cc->currentState.eFlags & EF_FIRING || cc->currentState.eFlags & EF_ALT_FIRING ) { gi.G2API_SetBoneAnimIndex( ¢->gent->ghoul2[cent->gent->playerModel], cent->gent->rootBone, - 0, 2, BONE_ANIM_OVERRIDE_LOOP, 1.0f, cg.time, -1, 0 ); + 0, 3, BONE_ANIM_OVERRIDE_FREEZE, 0.6f, cg.time ); if ( effect ) { @@ -636,7 +633,7 @@ const weaponData_t *wData = NULL; if ( cent->gent->owner->health ) { //make sure we can always be seen - ent.renderfx |= RF_MINLIGHT | RF_PULSATE; + ent.renderfx |= RF_PULSATE; } } } @@ -671,7 +668,7 @@ const weaponData_t *wData = NULL; if ( cent->gent->owner->health ) { //make sure we can always be seen - ent.renderfx |= RF_MINLIGHT | RF_PULSATE; + ent.renderfx |= RF_PULSATE; } } } @@ -956,11 +953,11 @@ Ghoul2 Insert End // items without glow textures need to keep a minimum light value // so they are always visible - if (( item->giType == IT_WEAPON ) || ( item->giType == IT_ARMOR )) +/* if (( item->giType == IT_WEAPON ) || ( item->giType == IT_ARMOR )) { ent.renderfx |= RF_MINLIGHT; } - +*/ // increase the size of the weapons when they are presented as items // if ( item->giType == IT_WEAPON ) { // VectorScale( ent.axis[0], 1.5f, ent.axis[0] ); @@ -1617,7 +1614,7 @@ Ghoul2 Insert End cent->lerpOrigin[2] = current[2] + f * ( next[2] - current[2] ); /* - if(cent->gent && cent->currentState.eFlags & EF_NPC && !VectorCompare(current, next)) + if ( cent->gent && cent->currentState.eFlags & EF_NPC ) { Com_Printf("%s last/next/lerp pos %s/%s/%s, f = %4.2f\n", cent->gent->script_targetname, vtos(current), vtos(next), vtos(cent->lerpOrigin), f); } @@ -1625,6 +1622,24 @@ Ghoul2 Insert End return;//FIXME: should this be outside this if? } } + else + { + if ( cent->currentState.apos.trType == TR_INTERPOLATE ) + { + EvaluateTrajectory( ¢->currentState.apos, cg.snap->serverTime, cent->lerpAngles ); + } + if ( cent->currentState.pos.trType == TR_INTERPOLATE ) + { + EvaluateTrajectory( ¢->currentState.pos, cg.snap->serverTime, cent->lerpOrigin ); + /* + if(cent->gent && cent->currentState.eFlags & EF_NPC ) + { + Com_Printf("%s last/next/lerp pos %s, f = 1.0\n", cent->gent->script_targetname, vtos(cent->lerpOrigin) ); + } + */ + return; + } + } // FIXME: if it's blocked, it wigs out, draws it in a predicted spot, but never // makes it there - we need to predict it in the right place if this is happens... @@ -1818,9 +1833,11 @@ void CG_MatrixEffect ( centity_t *cent ) float totalElapsedTime = (float)(cg.time - cent->currentState.time); float elapsedTime = totalElapsedTime; if ( totalElapsedTime > cent->currentState.eventParm //MATRIX_EFFECT_TIME - || (cent->currentState.weapon&&g_entities[cent->currentState.otherEntityNum].client&&g_entities[cent->currentState.otherEntityNum].client->ps.groundEntityNum!=ENTITYNUM_NONE) ) - {//time is up or this is a falling spin and they hit the ground - cg.overrides.thirdPersonEntity = 0; + || (cent->currentState.weapon&&g_entities[cent->currentState.otherEntityNum].client&&g_entities[cent->currentState.otherEntityNum].client->ps.groundEntityNum!=ENTITYNUM_NONE) + || cg.missionStatusShow ) + {//time is up or this is a falling spin and they hit the ground or mission end screen is up + cg.overrides.active &= ~(/*CG_OVERRIDE_3RD_PERSON_ENT|*/CG_OVERRIDE_3RD_PERSON_RNG|CG_OVERRIDE_3RD_PERSON_ANG|CG_OVERRIDE_3RD_PERSON_POF); + //cg.overrides.thirdPersonEntity = 0; cg.overrides.thirdPersonAngle = 0; cg.overrides.thirdPersonPitchOffset = 0; cg.overrides.thirdPersonRange = 0; @@ -1840,9 +1857,11 @@ void CG_MatrixEffect ( centity_t *cent ) MatrixMode = qtrue; //FIXME: move the position towards them and back? + //cg.overrides.active |= CG_OVERRIDE_3RD_PERSON_ENT; //cg.overrides.thirdPersonEntity = cent->currentState.otherEntityNum; //rotate + cg.overrides.active |= CG_OVERRIDE_3RD_PERSON_ANG; cg.overrides.thirdPersonAngle = 360.0f*elapsedTime/MATRIX_EFFECT_TIME; if ( !cent->currentState.weapon ) @@ -1857,6 +1876,7 @@ void CG_MatrixEffect ( centity_t *cent ) //pitch //dip - FIXME: use pitchOffet? + cg.overrides.active |= CG_OVERRIDE_3RD_PERSON_POF; cg.overrides.thirdPersonPitchOffset = cg_thirdPersonPitchOffset.value; if ( elapsedTime < MATRIX_EFFECT_TIME*0.33f ) { @@ -1872,6 +1892,7 @@ void CG_MatrixEffect ( centity_t *cent ) } //pull back + cg.overrides.active |= CG_OVERRIDE_3RD_PERSON_RNG; cg.overrides.thirdPersonRange = cg_thirdPersonRange.value; if ( elapsedTime < MATRIX_EFFECT_TIME*0.33 ) { @@ -1886,7 +1907,11 @@ void CG_MatrixEffect ( centity_t *cent ) cg.overrides.thirdPersonRange += 80.0f; } } - //else FIXME: if they're on the ground, stop spinning... + else + {//FIXME: if they're on the ground, stop spinning and stop timescale + //FIXME: if they go to the menu, restore timescale + cgi_Cvar_Set( "timescale", "0.25f" ); + } } static void CG_Think ( centity_t *cent ) @@ -2037,18 +2062,27 @@ void CG_AddPacketEntities( void ) { playerState_t *ps; // set cg.frameInterpolation - if ( cg.nextSnap ) { + if ( cg.nextSnap ) + { int delta; delta = (cg.nextSnap->serverTime - cg.snap->serverTime); - if ( delta == 0 ) { + if ( delta == 0 ) + { cg.frameInterpolation = 0; - } else { +// Com_Printf("identical frames\n"); + } + else + { cg.frameInterpolation = (float)( cg.time - cg.snap->serverTime ) / delta; +// Com_Printf("interp %6.4f\n",cg.frameInterpolation); } - } else { + } + else + { cg.frameInterpolation = 0; // actually, it should never be used, because // no entities should be marked as interpolating +// Com_Printf("no next snap!\n"); } // the auto-rotating items will all have the same axis diff --git a/code/cgame/cg_event.cpp b/code/cgame/cg_event.cpp index ae93f02..1332cea 100644 --- a/code/cgame/cg_event.cpp +++ b/code/cgame/cg_event.cpp @@ -760,8 +760,8 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) { } else { - VectorCopy( es->angles, axis[0] ); - VectorCopy( es->angles2, axis[1] ); + VectorCopy( cent->gent->pos3, axis[0] ); + VectorCopy( cent->gent->pos4, axis[1] ); CrossProduct( axis[0], axis[1], axis[2] ); // the entNum the effect may be attached to diff --git a/code/cgame/cg_local.h b/code/cgame/cg_local.h index dfecd41..130da4f 100644 --- a/code/cgame/cg_local.h +++ b/code/cgame/cg_local.h @@ -250,13 +250,23 @@ typedef struct { } powerupInfo_t; +#define CG_OVERRIDE_3RD_PERSON_ENT 0x00000001 +#define CG_OVERRIDE_3RD_PERSON_RNG 0x00000002 +#define CG_OVERRIDE_3RD_PERSON_ANG 0x00000004 +#define CG_OVERRIDE_3RD_PERSON_VOF 0x00000008 +#define CG_OVERRIDE_3RD_PERSON_POF 0x00000010 +#define CG_OVERRIDE_3RD_PERSON_CDP 0x00000020 +#define CG_OVERRIDE_FOV 0x00000040 + typedef struct { //NOTE: these probably get cleared in save/load!!! + int active; //bit-flag field of which overrides are active int thirdPersonEntity; //who to center on float thirdPersonRange; //how far to be from them float thirdPersonAngle; //what angle to look at them from float thirdPersonVertOffset; //how high to be above them float thirdPersonPitchOffset; //what offset pitch to apply the the camera view + float thirdPersonCameraDamp; //how tightly to move the camera pos behind the player float fov; //what fov to use //NOTE: could put Alpha and HorzOffset and the target & camera damps, but no-one is trying to override those, so... } overrides_t; @@ -1099,7 +1109,7 @@ void CG_CreateBBRefEnts(entityState_t *s1, vec3_t origin ); /* Ghoul2 Insert End */ - +void trap_Com_SetOrgAngles(vec3_t org,vec3_t angles); void trap_R_GetLightStyle(int style, color4ub_t color); void trap_R_SetLightStyle(int style, int color); diff --git a/code/cgame/cg_localents.cpp b/code/cgame/cg_localents.cpp index 5ad66d9..19aea17 100644 --- a/code/cgame/cg_localents.cpp +++ b/code/cgame/cg_localents.cpp @@ -206,6 +206,9 @@ void CG_AddFragment( localEntity_t *le ) // calculate new position EvaluateTrajectory( &le->pos, cg.time, newOrigin ); + le->refEntity.renderfx |= RF_LIGHTING_ORIGIN; + VectorCopy( newOrigin, le->refEntity.lightingOrigin ); + // trace a line from previous position to new position CG_Trace( &trace, le->refEntity.origin, NULL, NULL, newOrigin, le->ownerGentNum, CONTENTS_SOLID ); if ( trace.fraction == 1.0 ) { diff --git a/code/cgame/cg_main.cpp b/code/cgame/cg_main.cpp index 0981c89..990fe6f 100644 --- a/code/cgame/cg_main.cpp +++ b/code/cgame/cg_main.cpp @@ -54,7 +54,15 @@ char *inv_names[] = "LIGHT AMP GOGGLES", "ASSAULT SENTRY", "GOODIE KEY", -"SECURITY KEY" +"GOODIE KEY", +"GOODIE KEY", +"GOODIE KEY", +"GOODIE KEY", +"SECURITY KEY", +"SECURITY KEY", +"SECURITY KEY", +"SECURITY KEY", +"SECURITY KEY", }; int force_icons[NUM_FORCE_POWERS]; @@ -272,6 +280,8 @@ vmCvar_t cg_debugBB; Ghoul2 Insert End */ +vmCvar_t cg_VariantSoundCap; // 0 = no capping, else cap to (n) max (typically just 1, but allows more) + typedef struct { vmCvar_t *vmCvar; char *cvarName; @@ -361,7 +371,7 @@ Ghoul2 Insert Start /* Ghoul2 Insert End */ - + { &cg_VariantSoundCap, "cg_VariantSoundCap", "0" }, }; int cvarTableSize = sizeof( cvarTable ) / sizeof( cvarTable[0] ); @@ -1165,6 +1175,7 @@ static void CG_RegisterGraphics( void ) { cgs.media.forceIconBackground = cgi_R_RegisterShaderNoMip( "gfx/hud/background_f"); cgs.media.inventoryIconBackground= cgi_R_RegisterShaderNoMip( "gfx/hud/background_i"); cgs.media.inventoryProngsOn = cgi_R_RegisterShaderNoMip( "gfx/hud/prong_on_i"); + cgs.media.dataPadFrame = cgi_R_RegisterShaderNoMip( "gfx/hud/datapad2"); cg.loadLCARSStage = 5; CG_LoadingString( "game media models" ); @@ -1204,7 +1215,7 @@ static void CG_RegisterGraphics( void ) { cgs.media.HUDArmor2= cgi_R_RegisterShaderNoMip( "gfx/hud/armor2" ); cgs.media.HUDHealth= cgi_R_RegisterShaderNoMip( "gfx/hud/health" ); cgs.media.HUDHealthTic= cgi_R_RegisterShaderNoMip( "gfx/hud/health_tic" ); - cgs.media.HUDArmorTic= cgi_R_RegisterShaderNoMip( "gfx/hud/armor_tic" ); +// cgs.media.HUDArmorTic= cgi_R_RegisterShaderNoMip( "gfx/hud/armor_tic" ); cgs.media.HUDRightFrame= cgi_R_RegisterShaderNoMip( "gfx/hud/hudrightframe" ); cgs.media.HUDInnerRight = cgi_R_RegisterShaderNoMip( "gfx/hud/hudright_innerframe" ); @@ -1847,6 +1858,13 @@ void CG_DrawEdge( vec3_t start, vec3_t end, int type ) FX_AddLine( start, end, 8.0f, 4.0f, 0.0f, 0.5f, 0.5f, color, color, 51, cgi_R_RegisterShader( "gfx/misc/nav_line" ), 0 ); } break; + case EDGE_MOVEDIR: + { + vec3_t color = { 0, 255, 0 }; + + FX_AddLine( start, end, 8.0f, 4.0f, 0.0f, 0.5f, 0.5f, color, color, 51, cgi_R_RegisterShader( "gfx/misc/nav_line" ), 0 ); + } + break; default: break; } @@ -2695,8 +2713,9 @@ void CG_DrawInventorySelect( void ) int count; int holdX,x,y,pad; int height; - int tag; +// int tag; float addX; + vec4_t textColor = { .312f, .75f, .621f, 1.0f }; // don't display if dead if ( cg.predicted_player_state.stats[STAT_HEALTH] <= 0 ) @@ -2818,11 +2837,15 @@ void CG_DrawInventorySelect( void ) if (inv_names[cg.inventorySelect]) { // FIXME :this has to use the bg_itemlist pickup name - tag = FindInventoryItemTag(cg.inventorySelect); +// tag = FindInventoryItemTag(cg.inventorySelect); + + int w = cgi_R_Font_StrLenPixels(inv_names[cg.inventorySelect], cgs.media.qhFontSmall, 1.0f); + int x = ( SCREEN_WIDTH - w ) / 2; + cgi_R_Font_DrawString(x, (SCREEN_HEIGHT - 24), inv_names[cg.inventorySelect], textColor, cgs.media.qhFontSmall, -1, 1.0f); // if (tag) // { - CG_DrawProportionalString(320, y + 53, inv_names[cg.inventorySelect], CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); +// CG_DrawProportionalString(320, y + 53, inv_names[cg.inventorySelect], CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); // CG_DrawProportionalString(320, y + 53, bg_itemlist[i].pickup_name, CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); // } } @@ -2871,23 +2894,24 @@ int cgi_UI_GetItemText(char *menuFile,char *itemName, char *text); char *inventoryDesc[15] = { -"Neuro-Saav Model TD2.3 Electrobinoculars\nElectrobinoculars operate in low-light and normal light conditions to magnify distant objects and provide a heads-up display that features detailed information on the area viewed. The heads-up display measures distances and offers various telemetry readouts on the object or area in view. Powered by normal battery cells that drain power at a minimal rate, Electrobinoculars also feature an optional, infrared mode.", -"BioTech Bacta Canister\nBacta canisters are portable, disposable packs of bacta ointments and emergency care tools. Designed for use in the field, bacta canisters can be used to heal wounds and restore vitality during medical recovery. No field medic should be without them.", -"Arakyd Mark VII Inquisitor \nAn attack drone similar to the training drones used by Jedi to practice their lightsaber skills, the Inquisitor hovers around its user and attacks any enemy the user fires upon. The drone operates automatically for a limited time and then self-destructs when its power is depleted.", -"Light Amplification Goggles\nAlso known as infra-goggles, this helpful creates a balance of light levels that allows the user to see well in most situations. The resulting effect enhances the overall brightness but casts everything in a greenish hue. The goggles require batteries to function, draining them at roughly the same rate as Electrobinoculars. Light Amplification Goggles can be worn during combat, but will not function without an available power source.", -"Portable Assault Sentry \nThis deadly weapon is roughly the size of a large backpack, but don't let its size fool you. Once activated, the weapon unfurls and is set to auto-target any enemy threat. The Sentry drains battery life at an accelerated rate and, once it's deployed, can't be restored to its original portable condition. ", -"Security Key", -"Security Key", -"Security Key", -"Security Key", -"Security Key", -"Security Key", -"Security Key", -"Security Key", -"Security Key", -"Security Key", +"NEURO_SAAV_DESC", +"BACTA_DESC", +"INQUISITOR_DESC", +"LA_GOGGLES_DESC", +"PORTABLE_SENTRY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", +"SECURITY_KEY_DESC", }; + /* =================== CG_DrawDataPadInventorySelect @@ -2903,6 +2927,7 @@ void CG_DrawDataPadInventorySelect( void ) int holdX,x,y,pad; int height; float addX; + char text[1024]={0}; // count the number of items owned @@ -2918,7 +2943,8 @@ void CG_DrawDataPadInventorySelect( void ) if (!count) { - CG_DrawProportionalString(320, 300 + 22, "EMPTY INVENTORY", CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); + cgi_SP_GetStringTextString("INGAME_EMPTY_INV",text, sizeof(text) ); + CG_DrawProportionalString(320, 300 + 22, text, CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); return; } @@ -3060,11 +3086,16 @@ void CG_DrawDataPadInventorySelect( void ) if ((cg.DataPadInventorySelect>=0) && (cg.DataPadInventorySelect<13)) { - CG_DisplayBoxedText(70,50,500,300,inventoryDesc[cg.DataPadInventorySelect], - cgs.media.qhFontSmall, - 0.7f, - colorTable[CT_WHITE] - ); + cgi_SP_GetStringTextString( va("INGAME_%s",inventoryDesc[cg.DataPadInventorySelect]), text, sizeof(text) ); + + if (text) + { + CG_DisplayBoxedText(70,50,500,300,text, + cgs.media.qhFontSmall, + 0.7f, + colorTable[CT_WHITE] + ); + } } } @@ -3145,16 +3176,16 @@ void CG_NextForcePower_f( void ) return; } + SetForcePowerTime(); + if ((cg.forcepowerSelectTime + WEAPON_SELECT_TIME) < cg.time) { - SetForcePowerTime(); return; } - SetForcePowerTime(); const int original = cg.forcepowerSelect; - for ( i = 0 ;showPowers[i]!=NUM_FORCE_POWERS ; i++ ) + for ( i = 0; i < MAX_SHOWPOWERS; i++ ) { cg.forcepowerSelect++; @@ -3163,7 +3194,7 @@ void CG_NextForcePower_f( void ) cg.forcepowerSelect = 0; } - if (ForcePower_Valid(i)) // Does he have the force power? + if (ForcePower_Valid(cg.forcepowerSelect)) // Does he have the force power? { return; } @@ -3186,16 +3217,16 @@ void CG_PrevForcePower_f( void ) return; } + SetForcePowerTime(); + if ((cg.forcepowerSelectTime + WEAPON_SELECT_TIME) < cg.time) { - SetForcePowerTime(); return; } - SetForcePowerTime(); const int original = cg.forcepowerSelect; - for ( i = 0 ;showPowers[i]!=NUM_FORCE_POWERS ; i++ ) + for ( i = 0; i < MAX_SHOWPOWERS; i++ ) { cg.forcepowerSelect--; @@ -3204,7 +3235,7 @@ void CG_PrevForcePower_f( void ) cg.forcepowerSelect = MAX_SHOWPOWERS; } - if (ForcePower_Valid(i)) // Does he have the force power? + if (ForcePower_Valid(cg.forcepowerSelect)) // Does he have the force power? { return; } @@ -3367,7 +3398,9 @@ void CG_DrawForceSelect( void ) if ( showPowersName[cg.forcepowerSelect] ) { - CG_DrawProportionalString(320, y + 38, showPowersName[cg.forcepowerSelect], CG_CENTER | CG_SMALLFONT, colorTable[CT_ICON_BLUE]); + int w = cgi_R_Font_StrLenPixels(showPowersName[cg.forcepowerSelect], cgs.media.qhFontSmall, 1.0f); + int x = ( SCREEN_WIDTH - w ) / 2; + cgi_R_Font_DrawString(x, (SCREEN_HEIGHT - 24), showPowersName[cg.forcepowerSelect], colorTable[CT_ICON_BLUE], cgs.media.qhFontSmall, -1, 1.0f); } } @@ -3444,21 +3477,20 @@ void CG_DPPrevForcePower_f( void ) char *forcepowerDesc[NUM_FORCE_POWERS] = { -"Force Heal\nDuration: Instantaneous effect\nArea Of Effect: Jedi only\nEffect: The Jedi has the ability to heal himself after injury.\n· Rank 1 - Jedi goes into a meditative stance for a short time and must remain stationary. Any movement or attack will prevent healing.\n· Rank 2 - Jedi no longer needs to be stationary. The Jedi will heal over a short period of time.\n· Rank 3 - Jedi heals instantly.", -"Force Jump\nDuration: Immediate\nArea Of Effect: Jedi only\nEffect: Allows Jedi to make a tremendous vertical leap. \n· Rank 1 - Jedi can leap up to twice his normal jump height. \n· Rank 2 - Jedi can leap up to four times his normal jump height.\n· Rank 3 - Jedi can leap up to eight times his normal jump height.", -"Force Speed\nDuration: 5 seconds\nArea of Effect: Jedi and surroundings\nEffect: Jedi speeds up and slows the world around him.\n· Rank 1 - Jedi moves 25% faster than normal\n· Rank 2 - Jedi moves 50% faster than normal\n· Rank 3 - Jedi moves 100% faster than normal", -"Force Push\nDuration: Instantaneous effect\nArea Of Effect: Objects or Persons\nEffect: Allows Jedi to push objects away from himself and defend himself from missile and Force Grip attacks.\n· Rank 1 - Jedi uses the Force to push a specific enemy or object focused on.\n· Rank 2 - Jedi uses the Force to push back multiple enemies or objects in a limited arc.\n· Rank 3 - Jedi can push back multiple enemies with enough force to do damage by pushing the enemies into solid surfaces or off ledges.", -"Force Pull\nDuration: Instantaneous effect\nArea Of Effect: Objects only\nEffect: Allows Jedi to pull different objects to him\n· Rank 1 - Jedi can pull weapons and items to him from the ground in front of him from a distance\n· Rank 2 - Jedi can pull projectile weapons from enemies in an arc from a distance\n· Rank 3 - Jedi can pull and alter specific architecture, levers or objects in an arc from a distance ", -"Mind Trick\nDuration: 3 seconds\nArea Of Effect: Humanoids\nEffect: Allows Jedi to confuse and/or misdirect attention \n· Rank 1 - Jedi can distract and confuse a single enemy for 5 seconds\n· Rank 2 - Jedi can distract and confuse multiple enemies for 10 seconds.\n· Rank 3 - Jedi can distract and confuse multiple enemies for 15 seconds or befriend one enemy. \nNote: Aggressive action or loud noises made by the Jedi will alert the enemy and cancel the effect. Mind tricks don't work on some, more powerful enemies like Dark Jedi or Reborn.", -"Force Grip\nDuration: Instantaneous\nArea Of Effect: Living persons only\nEffect: Allows Jedi to choke or constrict the organs of a living being\n· Rank 1 - Affected enemy is gripped and held undamaged, but immobile for 5 seconds. Jedi must remain stationary.\n· Rank 2 - Enemy is affected similarly to rank 1, but the grip can damage and lift enemies with prolonged focus of the grip. Jedi must remain stationary.\n· Rank 3- Enemy is affected similarly to rank 2, but the Jedi can move freely and smash the enemy into walls and other obstacles around him or use the enemy as a shield while still doing choke damage.", -"Force Lightning\nDuration: Variable\nAOE: Living persons only\nEffect: Allows Jedi to hurl a devastating electrical attack against enemies.\n· Rank 1 - Jedi launches a single bolt that fires forward, doing instant damage.\n· Rank 2 - Jedi can maintain the Force Lightning for a sustained forward attack.\n· Rank 3 - Jedi emanates a sustained fan of electricity in a large forward arc, damaging anything in front of him.", -"Lightsaber Defense\nDuration: Always on\nArea Of Effect: N/A\nEffect: Jedi can block damage with his lightsaber \n· Rank 1 - Jedi can deflect projectiles and melee attacks in a small arc directly in front of him.\n· Rank 2 - Jedi can deflect projectiles and melee attacks in a larger arc directly in front of him. Increased deflection speed.\n· Rank 3 - Jedi has a larger defense area and can deflect attacks back at the attacker. Increased deflection speed.", -"Lightsaber Offense\nDuration: Always on\nArea Of Effect: N/A\nEffect: As Jedi gains combat experience his lighsaber attack effectiveness increases. \nJedi Sense\nDuration: Always on\nArea Of Effect: N/A\nEffect: Jedi can sense enemies, concealed areas, hidden items and enemies around him.", -"Lightsaber Throw\nDuration: Instant\nArea Of Effect: Player arc\nEffect: Jedi can throw his lightsaber and use it as a missile weapon.\n· Rank 1 - Lightsaber flies straight from the player and returns.\n· Rank 2 - Jedi can exert minimal control over the flying lightsaber as it arcs out, but the lightsaber still returns directly to the player. \n· Rank 3 - Jedi can exert great control over the lightsaber in the air." +"FORCE_HEAL_DESC", +"FORCE_JUMP_DESC", +"FORCE_SPEED_DESC", +"FORCE_PUSH_DESC", +"FORCE_PULL_DESC", +"FORCE_MIND_TRICK", +"FORCE_GRIP_DESC", +"FORCE_LIGHTNING_DESC", +"FORCE_SABER_DEFENSE_DESC", +"FORCE_SABER_OFFENSE_DESC", +"FORCE_SABER_THROW_DESC", }; - /* =================== CG_DrawDataPadForceSelect @@ -3472,6 +3504,7 @@ void CG_DrawDataPadForceSelect( void ) int holdX,x,y,pad,length; int sideLeftIconCnt,sideRightIconCnt; int sideMax,holdCount,iconCnt; + char text[1024]={0}; // count the number of powers owned count = 0; @@ -3589,31 +3622,19 @@ void CG_DrawDataPadForceSelect( void ) } } - CG_DisplayBoxedText(70,50,500,300,forcepowerDesc[cg.DataPadforcepowerSelect], - cgs.media.qhFontSmall, - 0.7f, - colorTable[CT_WHITE] - ); + cgi_SP_GetStringTextString( va("INGAME_%s",forcepowerDesc[cg.DataPadforcepowerSelect]), text, sizeof(text) ); + + if (text) + { + + CG_DisplayBoxedText(70,50,500,300,text, + cgs.media.qhFontSmall, + 0.7f, + colorTable[CT_WHITE] + ); + } } -/* -=============== -CG_ToggleThirdPersonView_f -=============== -*/ -void CG_ToggleThirdPersonView_f( void ) -{ - - if ( !cg.renderingThirdPerson ) - { - cgi_Cvar_Set( "cg_thirdperson", "1" ); - } - else - { - cgi_Cvar_Set( "cg_thirdperson", "0" ); - } - -} // actually, these are pretty pointless so far in CHC, since in TA codebase they were used only so init some HUD // function ptrs to allow cinematics in onscreen displays. So far, we don't use those, but here they are anyway... // diff --git a/code/cgame/cg_media.h b/code/cgame/cg_media.h index 8a7ec97..a54d922 100644 --- a/code/cgame/cg_media.h +++ b/code/cgame/cg_media.h @@ -177,9 +177,15 @@ typedef struct { qhandle_t HUDArmorTic; qhandle_t HUDInnerLeft; + qhandle_t HUDSaberStyle1; + qhandle_t HUDSaberStyle2; + qhandle_t HUDSaberStyle3; + qhandle_t HUDRightFrame; qhandle_t HUDInnerRight; + qhandle_t dataPadFrame; + qhandle_t talkingtop; qhandle_t talkingbot; @@ -287,6 +293,7 @@ typedef struct // loaded or calculated from the gamestate. It will NOT // be cleared when a tournement restart is done, allowing // all clients to begin playing instantly +#define STRIPED_LEVELNAME_VARIATIONS 3 // sigh, to cope with levels that use text from >1 SP file typedef struct { gameState_t gameState; // gamestate from server glconfig_t glconfig; // rendering configuration @@ -299,7 +306,7 @@ typedef struct { int timelimit; int maxclients; char mapname[MAX_QPATH]; - char stripLevelName[MAX_QPATH]; + char stripLevelName[STRIPED_LEVELNAME_VARIATIONS][MAX_QPATH]; // // locally derived information from gamestate diff --git a/code/cgame/cg_players.cpp b/code/cgame/cg_players.cpp index c8138d3..ff86ffb 100644 --- a/code/cgame/cg_players.cpp +++ b/code/cgame/cg_players.cpp @@ -35,6 +35,7 @@ extern int PM_AnimLength( int index, animNumber_t anim ); extern qboolean PM_InRoll( playerState_t *ps ); //Basic set of custom sounds that everyone needs +// (keep numbers in ascending order in order for variant-capping to work) const char *cg_customBasicSoundNames[MAX_CUSTOM_BASIC_SOUNDS] = { "*death1.wav", @@ -54,6 +55,7 @@ const char *cg_customBasicSoundNames[MAX_CUSTOM_BASIC_SOUNDS] = }; //Used as a supplement to the basic set for enemies and hazard team +// (keep numbers in ascending order in order for variant-capping to work) const char *cg_customCombatSoundNames[MAX_CUSTOM_COMBAT_SOUNDS] = { "*anger1.wav", //Say when acquire an enemy when didn't have one before @@ -74,6 +76,7 @@ const char *cg_customCombatSoundNames[MAX_CUSTOM_COMBAT_SOUNDS] = }; //Used as a supplement to the basic set for stormtroopers +// (keep numbers in ascending order in order for variant-capping to work) const char *cg_customExtraSoundNames[MAX_CUSTOM_EXTRA_SOUNDS] = { "*chase1.wav", @@ -115,6 +118,7 @@ const char *cg_customExtraSoundNames[MAX_CUSTOM_EXTRA_SOUNDS] = }; //Used as a supplement to the basic set for jedi +// (keep numbers in ascending order in order for variant-capping to work) const char *cg_customJediSoundNames[MAX_CUSTOM_JEDI_SOUNDS] = { "*combat1.wav", @@ -141,6 +145,70 @@ const char *cg_customJediSoundNames[MAX_CUSTOM_JEDI_SOUNDS] = "*pushfail.wav", }; + +// done at registration time only... +// +// cuts down on sound-variant registration for low end machines, +// eg *gloat1.wav (plus...2,...3) can be capped to all be just *gloat1.wav +// +static const char *GetCustomSound_VariantCapped(const char *ppsTable[], int iEntryNum) +{ + extern vmCvar_t cg_VariantSoundCap; + +// const int iVariantCap = 2; // test + const int &iVariantCap = cg_VariantSoundCap.integer; + + if (iVariantCap) + { + char *p = strchr(ppsTable[iEntryNum],'.'); + if (p && p-2 > ppsTable[iEntryNum] && isdigit(p[-1]) && !isdigit(p[-2])) + { + int iThisVariant = p[-1]-'0'; + + if (iThisVariant > iVariantCap) + { + // ok, let's not load this variant, so pick a random one below the cap value... + // + for (int i=0; i<2; i++) // 1st pass, choose random, 2nd pass (if random not in list), choose xxx1, else fall through... + { + char sName[MAX_QPATH]; + + Q_strncpyz(sName, ppsTable[iEntryNum], sizeof(sName)); + p = strchr(sName,'.'); + if (p) + { + *p = '\0'; + sName[strlen(sName)-1] = '\0'; // strip the digit + + int iRandom = !i ? Q_irand(1,iVariantCap) : 1; + + strcat(sName,va("%d.wav",iRandom)); + + // does this exist in the entries before the original one?... + // + for (int iScanNum=0; iScanNumgent->ghoul2, cent->gent->playerModel, cent->gent->motionBolt, &boltMatrix, vec3_origin, cent->lerpOrigin, cg.time, cgs.model_draw, cent->currentState.modelScale ); gi.G2API_GiveMeVectorFromMatrix( boltMatrix, NEGATIVE_Y, motionFwd ); + gi.G2API_GiveMeVectorFromMatrix( boltMatrix, NEGATIVE_X, motionRt ); vectoangles( motionFwd, motionAngles ); + vectoangles( motionRt, tempAng ); + motionAngles[ROLL] = -tempAng[PITCH]; + for ( int ang = 0; ang < 3; ang++ ) { viewAngles[ang] = AngleNormalize180( viewAngles[ang] - AngleNormalize180( motionAngles[ang] ) ); @@ -1957,6 +2029,9 @@ void CG_G2PlayerAngles( centity_t *cent, vec3_t legs[3], vec3_t angles ) } else { + //FIXME: we need to override the hips bone with a turn anim when turning + // and clear it when we're not... does beld from and to parent actually work? + //FIXME: this needs to properly set the legs.yawing field so we don't erroneously play the turning anim, but we do play it when turning in place if ( angles[YAW] == cent->pe.legs.yawAngle ) { @@ -4700,6 +4775,10 @@ void CG_Player( centity_t *cent ) { ent.renderfx |= RF_SHADOW_PLANE; } ent.renderfx |= RF_LIGHTING_ORIGIN; // use the same origin for all + if ( cent->gent->NPC->scriptFlags & SCF_MORELIGHT ) + { + ent.renderfx |= RF_MORELIGHT; //bigger than normal min light + } VectorCopy( cent->lerpOrigin, ent.origin ); VectorCopy( cent->lerpOrigin, ent.oldorigin ); @@ -4844,8 +4923,11 @@ Ghoul2 Insert Start { ent.renderfx |= RF_SHADOW_PLANE; } - ent.renderfx |= RF_LIGHTING_ORIGIN; // use the same origin for all + if ( cent->gent->NPC && cent->gent->NPC->scriptFlags & SCF_MORELIGHT ) + { + ent.renderfx |= RF_MORELIGHT; //bigger than normal min light + } CG_RegisterWeapon( cent->currentState.weapon ); @@ -5408,6 +5490,10 @@ Ghoul2 Insert End renderfx |= RF_SHADOW_PLANE; } renderfx |= RF_LIGHTING_ORIGIN; // use the same origin for all + if ( cent->gent->NPC->scriptFlags & SCF_MORELIGHT ) + { + renderfx |= RF_MORELIGHT; //bigger than normal min light + } if ( cg.snap->ps.viewEntity > 0 && cg.snap->ps.viewEntity < ENTITYNUM_WORLD && cg.snap->ps.viewEntity == cent->currentState.clientNum ) {//player is in an entity camera view, ME diff --git a/code/cgame/cg_players.dsp b/code/cgame/cg_players.dsp deleted file mode 100644 index f47f86f..0000000 --- a/code/cgame/cg_players.dsp +++ /dev/null @@ -1,88 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cg_players" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=cg_players - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cg_players.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cg_players.mak" CFG="cg_players - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cg_players - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "cg_players - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cg_players - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "cg_players - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "cg_players - Win32 Release" -# Name "cg_players - Win32 Debug" -# Begin Source File - -SOURCE=.\cg_players.cpp -# End Source File -# End Target -# End Project diff --git a/code/cgame/cg_predict.cpp b/code/cgame/cg_predict.cpp index 70a9995..c84d9e1 100644 --- a/code/cgame/cg_predict.cpp +++ b/code/cgame/cg_predict.cpp @@ -212,6 +212,72 @@ void CG_SetClientViewAngles( vec3_t angles ) } cgi_SetUserCmdAngles( angles[PITCH], angles[YAW], angles[ROLL] ); } + +extern qboolean PM_AdjustAnglesToGripper( gentity_t *gent, usercmd_t *cmd ); +extern qboolean PM_AdjustAngleForWallRun( gentity_t *ent, usercmd_t *ucmd, qboolean doMove ); +extern qboolean PM_AdjustAnglesForSpinningFlip( gentity_t *ent, usercmd_t *ucmd, qboolean anglesOnly ); +extern qboolean PM_AdjustAnglesForBackAttack( gentity_t *ent, usercmd_t *ucmd ); +extern qboolean PM_AdjustAnglesForSaberLock( gentity_t *ent, usercmd_t *ucmd ); +extern qboolean PM_AdjustAnglesForKnockdown( gentity_t *ent, usercmd_t *ucmd, qboolean angleClampOnly ); +extern qboolean G_CheckClampUcmd( gentity_t *ent, usercmd_t *ucmd ); +qboolean CG_CheckModifyUCmd( usercmd_t *cmd, vec3_t viewangles ) +{ + qboolean overridAngles = qfalse; + if ( cg.snap->ps.viewEntity > 0 && cg.snap->ps.viewEntity < ENTITYNUM_WORLD ) + {//controlling something else + memset( cmd, 0, sizeof( usercmd_t ) ); + //to keep pointing in same dir, need to set cmd.angles + cmd->angles[PITCH] = cmd->angles[ROLL] = 0; + cmd->angles[YAW] = ANGLE2SHORT( cg.snap->ps.viewangles[YAW] ) - cg.snap->ps.delta_angles[YAW]; + //CG_SetClientViewAngles( cg.snap->ps.viewangles ); + } + else if ( cg.snap->ps.vehicleModel != 0 ) + {//in vehicle flight mode + float speed = VectorLength( cg.snap->ps.velocity ); + if ( !speed || cg.snap->ps.groundEntityNum != ENTITYNUM_NONE ) + { + cmd->rightmove = 0; + cmd->angles[PITCH] = 0; + cmd->angles[YAW] = ANGLE2SHORT( cg.snap->ps.viewangles[YAW] ) - cg.snap->ps.delta_angles[YAW]; + CG_SetClientViewAngles( cg.snap->ps.viewangles ); + } + } + + if ( &g_entities[0] && g_entities[0].client ) + { + if ( !PM_AdjustAnglesToGripper( &g_entities[0], cmd ) ) + { + if ( PM_AdjustAnglesForSpinningFlip( &g_entities[0], cmd, qtrue ) ) + { + CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); + if ( viewangles ) + { + VectorCopy( g_entities[0].client->ps.viewangles, viewangles ); + overridAngles = qtrue; + } + } + } + else + { + CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); + if ( viewangles ) + { + VectorCopy( g_entities[0].client->ps.viewangles, viewangles ); + overridAngles = qtrue; + } + } + if ( G_CheckClampUcmd( &g_entities[0], cmd ) ) + { + CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); + if ( viewangles ) + { + VectorCopy( g_entities[0].client->ps.viewangles, viewangles ); + overridAngles = qtrue; + } + } + } + return overridAngles; +} /* ======================== CG_InterpolatePlayerState @@ -220,17 +286,12 @@ Generates cg.predicted_player_state by interpolating between cg.snap->player_state and cg.nextFrame->player_state ======================== */ -extern qboolean PM_AdjustAnglesToGripper( gentity_t *gent, usercmd_t *cmd ); -extern qboolean PM_AdjustAngleForWallRun( gentity_t *ent, usercmd_t *ucmd, qboolean doMove ); -extern qboolean PM_AdjustAnglesForSpinningFlip( gentity_t *ent, usercmd_t *ucmd, qboolean anglesOnly ); -extern qboolean PM_AdjustAnglesForBackAttack( gentity_t *ent, usercmd_t *ucmd ); -extern qboolean PM_AdjustAnglesForSaberLock( gentity_t *ent, usercmd_t *ucmd ); -extern qboolean PM_AdjustAnglesForKnockdown( gentity_t *ent, usercmd_t *ucmd, qboolean angleClampOnly ); void CG_InterpolatePlayerState( qboolean grabAngles ) { float f; int i; playerState_t *out; snapshot_t *prev, *next; + qboolean skip = qfalse; out = &cg.predicted_player_state; prev = cg.snap; @@ -246,71 +307,13 @@ void CG_InterpolatePlayerState( qboolean grabAngles ) { cmdNum = cgi_GetCurrentCmdNumber(); cgi_GetUserCmd( cmdNum, &cmd ); - if ( cg.snap->ps.viewEntity > 0 && cg.snap->ps.viewEntity < ENTITYNUM_WORLD ) - {//controlling something else - memset( &cmd, 0, sizeof( usercmd_t ) ); - //to keep pointing in same dir, need to set cmd.angles - cmd.angles[PITCH] = cmd.angles[ROLL] = 0; - cmd.angles[YAW] = ANGLE2SHORT( cg.snap->ps.viewangles[YAW] ) - cg.snap->ps.delta_angles[YAW]; - //CG_SetClientViewAngles( cg.snap->ps.viewangles ); - } - else if ( cg.snap->ps.vehicleModel != 0 ) - {//in vehicle flight mode - float speed = VectorLength( cg.snap->ps.velocity ); - if ( !speed || cg.snap->ps.groundEntityNum != ENTITYNUM_NONE ) - { - cmd.rightmove = 0; - cmd.angles[PITCH] = 0; - cmd.angles[YAW] = ANGLE2SHORT( cg.snap->ps.viewangles[YAW] ) - cg.snap->ps.delta_angles[YAW]; - CG_SetClientViewAngles( cg.snap->ps.viewangles ); - } - } + skip = CG_CheckModifyUCmd( &cmd, out->viewangles ); - if ( &g_entities[0] && g_entities[0].client ) + if ( !skip ) { - if ( !PM_AdjustAnglesToGripper( &g_entities[0], &cmd ) ) - { - if ( !PM_AdjustAnglesForSaberLock( &g_entities[0], &cmd ) ) - { - if ( !PM_AdjustAnglesForSpinningFlip( &g_entities[0], &cmd, qtrue ) ) - { - if ( !PM_AdjustAnglesForBackAttack( &g_entities[0], &cmd ) ) - { - if ( !PM_AdjustAngleForWallRun( &g_entities[0], &cmd, qfalse ) ) - { - if ( PM_AdjustAnglesForKnockdown( &g_entities[0], &cmd, qtrue ) ) - { - CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); - } - } - else - { - CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); - } - } - else - { - CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); - } - } - else - { - CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); - } - } - else - { - CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); - } - } - else - { - CG_SetClientViewAngles( g_entities[0].client->ps.viewangles ); - } + //NULL so that it doesn't execute a block of code that must be run from game + PM_UpdateViewAngles( out, &cmd, NULL ); } - - //NULL so that it doesn't execute a block of code that must be run from game - PM_UpdateViewAngles( out, &cmd, NULL ); } // if the next frame is a teleport, we can't lerp to it @@ -599,6 +602,7 @@ void CG_PredictPlayerState( void ) { cg_pmove.cmd.buttons = 0; cg_pmove.cmd.upmove = 0; } + CG_CheckModifyUCmd( &cg_pmove.cmd, NULL ); //FIXME: prediction on clients in timescale results in jerky positional translation Pmove( &cg_pmove ); diff --git a/code/cgame/cg_public.h b/code/cgame/cg_public.h index 7367db3..fcf933b 100644 --- a/code/cgame/cg_public.h +++ b/code/cgame/cg_public.h @@ -135,6 +135,7 @@ typedef enum { CG_AS_ADDENTRY, CG_AS_GETBMODELSOUND, CG_S_GETSAMPLELENGTH, + COM_SETORGANGLES, /* Ghoul2 Insert Start */ diff --git a/code/cgame/cg_servercmds.cpp b/code/cgame/cg_servercmds.cpp index beb448c..3251f38 100644 --- a/code/cgame/cg_servercmds.cpp +++ b/code/cgame/cg_servercmds.cpp @@ -28,9 +28,88 @@ void CG_ParseServerinfo( void ) { cgs.maxclients = 1; mapname = Info_ValueForKey( info, "mapname" ); Com_sprintf( cgs.mapname, sizeof( cgs.mapname ), "maps/%s.bsp", mapname ); - strcpy( cgs.stripLevelName, mapname ); - strupr( cgs.stripLevelName ); - cgi_SP_Register(cgs.stripLevelName, qfalse); //do not keep around after level + strcpy( cgs.stripLevelName[0], mapname ); + strupr( cgs.stripLevelName[0] ); + for (int i=1; ips.viewEntity > 0 && cg.snap->ps.viewEntity < ENTITYNUM_WORLD && !cg.renderingThirdPerson ) { + else if ( cg.snap && cg.snap->ps.viewEntity > 0 && cg.snap->ps.viewEntity < ENTITYNUM_WORLD && !cg.renderingThirdPerson ) + { // if in entity camera view, use a special FOV if ( &g_entities[cg.snap->ps.viewEntity] && g_entities[cg.snap->ps.viewEntity].NPC ) @@ -1168,7 +1192,7 @@ static qboolean CG_CalcFov( void ) { } else { - if ( cg.overrides.fov ) // allow overriding the fov with a viewent + if ( cg.overrides.active & CG_OVERRIDE_FOV ) { fov_x = cg.overrides.fov; } @@ -1197,7 +1221,7 @@ static qboolean CG_CalcFov( void ) { } } else { // user selectable - if ( cg.overrides.fov ) + if ( cg.overrides.active & CG_OVERRIDE_FOV ) { fov_x = cg.overrides.fov; } @@ -1228,7 +1252,7 @@ static qboolean CG_CalcFov( void ) { } // Clamp zoomFov - float actualFOV = cg.overrides.fov ? cg.overrides.fov : cg_fov.value; + float actualFOV = (cg.overrides.active&CG_OVERRIDE_FOV) ? cg.overrides.fov : cg_fov.value; if ( cg_zoomFov < MAX_ZOOM_FOV ) { cg_zoomFov = MAX_ZOOM_FOV; @@ -1396,6 +1420,10 @@ static qboolean CG_CalcViewValues( void ) { ps = &cg.predicted_player_state; +#if _DEBUG + trap_Com_SetOrgAngles(ps->origin,ps->viewangles); +#endif + // intermission view if ( ps->pm_type == PM_INTERMISSION ) { VectorCopy( ps->origin, cg.refdef.vieworg ); @@ -1412,14 +1440,21 @@ static qboolean CG_CalcViewValues( void ) { if ( cg.snap->ps.viewEntity > 0 && cg.snap->ps.viewEntity < ENTITYNUM_WORLD ) {//in an entity camera view - VectorCopy( cg_entities[cg.snap->ps.viewEntity].lerpOrigin, cg.refdef.vieworg ); + if ( g_entities[cg.snap->ps.viewEntity].client && cg.renderingThirdPerson ) + { + VectorCopy( g_entities[cg.snap->ps.viewEntity].client->renderInfo.eyePoint, cg.refdef.vieworg ); + } + else + { + VectorCopy( cg_entities[cg.snap->ps.viewEntity].lerpOrigin, cg.refdef.vieworg ); + } VectorCopy( cg_entities[cg.snap->ps.viewEntity].lerpAngles, cg.refdefViewAngles ); if ( !Q_stricmp( "misc_camera", g_entities[cg.snap->ps.viewEntity].classname )) { viewEntIsCam = qtrue; } } - else if ( cg.renderingThirdPerson && !cg.zoomMode && cg.overrides.thirdPersonEntity ) + else if ( cg.renderingThirdPerson && !cg.zoomMode && (cg.overrides.active&CG_OVERRIDE_3RD_PERSON_ENT) ) {//different center, same angle VectorCopy( cg_entities[cg.overrides.thirdPersonEntity].lerpOrigin, cg.refdef.vieworg ); VectorCopy( ps->viewangles, cg.refdefViewAngles ); @@ -1680,6 +1715,31 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView ) { inwater = CG_CalcViewValues(); } + //check for opaque water + if ( 1 ) + { + vec3_t camTest; + VectorCopy( cg.refdef.vieworg, camTest ); + camTest[2] += 6; + if ( !(CG_PointContents( camTest, ENTITYNUM_NONE )&CONTENTS_SOLID) && !gi.inPVS( cg.refdef.vieworg, camTest ) ) + {//crossed visible line into another room + cg.refdef.vieworg[2] -= 6; + } + else + { + VectorCopy( cg.refdef.vieworg, camTest ); + camTest[2] -= 6; + if ( !(CG_PointContents( camTest, ENTITYNUM_NONE )&CONTENTS_SOLID) && !gi.inPVS( cg.refdef.vieworg, camTest ) ) + { + cg.refdef.vieworg[2] += 6; + } + } + /* + if ( (trace.contents&(CONTENTS_WATER|CONTENTS_OPAQUE)) ) + {//opaque water + } + */ + } //This is done from the vieworg to get origin for non-attenuated sounds cgi_S_UpdateAmbientSet( CG_ConfigString( CS_AMBIENT_SET ), cg.refdef.vieworg ); diff --git a/code/cgame/cg_weapons.cpp b/code/cgame/cg_weapons.cpp index 246c02e..cefea2c 100644 --- a/code/cgame/cg_weapons.cpp +++ b/code/cgame/cg_weapons.cpp @@ -206,6 +206,10 @@ void CG_RegisterWeapon( int weaponNum ) { cgs.effects.forceLightning = theFxScheduler.RegisterEffect( "force/lightning" ); cgs.effects.forceLightningWide = theFxScheduler.RegisterEffect( "force/lightningwide" ); + cgs.media.HUDSaberStyle1 = cgi_R_RegisterShader( "gfx/hud/saber_styles1" ); + cgs.media.HUDSaberStyle2 = cgi_R_RegisterShader( "gfx/hud/saber_styles2" ); + cgs.media.HUDSaberStyle3 = cgi_R_RegisterShader( "gfx/hud/saber_styles3" ); + //saber sounds cgi_S_RegisterSound( "sound/weapons/saber/saberon.wav" ); cgi_S_RegisterSound( "sound/weapons/saber/enemy_saber_on.wav" ); @@ -287,7 +291,7 @@ void CG_RegisterWeapon( int weaponNum ) { cgs.media.purpleSaberGlowShader = cgi_R_RegisterShader( "gfx/effects/sabers/purple_glow" ); cgs.media.purpleSaberCoreShader = cgi_R_RegisterShader( "gfx/effects/sabers/purple_line" ); - cgs.media.forceCoronaShader = cgi_R_RegisterShader( "gfx/2d/corona" ); + cgs.media.forceCoronaShader = cgi_R_RegisterShaderNoMip( "gfx/2d/corona" ); break; case WP_BRYAR_PISTOL: @@ -855,7 +859,7 @@ void CG_AddViewWeapon( playerState_t *ps ) } // drop gun lower at higher fov - float actualFOV = cg.overrides.fov ? cg.overrides.fov : cg_fov.value; + float actualFOV = (cg.overrides.active&CG_OVERRIDE_FOV) ? cg.overrides.fov : cg_fov.value; if ( actualFOV > 80 ) { fovOffset = -0.1 * ( actualFOV - 80 ); @@ -914,7 +918,7 @@ void CG_AddViewWeapon( playerState_t *ps ) AnglesToAxis( angles, gun.axis ); CG_PositionEntityOnTag( &gun, &hand, weapon->handsModel, "tag_weapon"); - gun.renderfx = RF_MINLIGHT | RF_DEPTHHACK | RF_FIRST_PERSON; + gun.renderfx = RF_DEPTHHACK | RF_FIRST_PERSON; //--------- // OK, we are making an assumption here that if we have the phaser that it is always on.... @@ -1246,22 +1250,21 @@ void CG_DrawIconBackground(void) int cgi_UI_GetItemText(char *menuFile,char *itemName, char *text); - char *weaponDesc[13] = { -"Lightsaber -\nAn elegant weapon for a more civilized age, the lightsaber is the preferred weapon of the Jedi Knight. The lightsaber is an energy blade of great power that can be used by the wielder for both attack and defense.\nPrimary Fire - Slashing and swinging attacks\nSecondary Fire - Force powered saber throw\nDefensive Ability - Deflects blaster and energy weapon fire, parries enemy lightsaber attacks\nAmmo Type - N/A", -"Bryar Blaster Pistol \nKyle Katarn's weapon of choice, the Bryar Blaster Pistol is a common hand-held energy weapon with a slow rate of fire and incredible accuracy.\nPrimary Fire - Slow, single shot with great accuracy and damage.\nSecondary Fire - Charged energy buildup for increased damage blast attack.\nAmmo Type - Blaster Pack", -"E-11 Blaster Rifle \nThe primary weapon of the Imperial forces, the E-11 is a sturdy and deadly blaster rifle capable of inflicting great damage despite its small size. The E-11's compact design makes it easy to carry and conceal.\nPrimary Fire - Slow, single shot with moderate accuracy and great damage.\nSecondary Fire - Rapid, burst fire with low accuracy and expanded firing area.\nAmmo Type - Blaster Pack", -"Tenloss DXR-6 Disruptor rifle \nThis nefarious weapon affects matter at the molecular level, ripping apart living material with ease. Because of the weapon's inhumane nature, the DXR-6 is outlawed throughout the galaxy and is generally only used by scattered droid and Remnant forces.\nPrimary Fire - Single shot with slow fire rate, fast projectile and small radius damage.\nSecondary Fire - Scoped mode: Single shot with slow fire rate, increased damage and high weapon energy consumption\nAmmo Type - Power cell", -"Wookiee Bowcaster\nThis archaic-looking weapon fires powerful bolts of metal enveloped in pockets of energy. Capable of inflicting incredible damage, the bowcaster requires tremendous physical strength to fire. Most bowcasters sold outside the Wookiee home world come equipped with self-cocking actions that allow physically weaker creatures to fire them.\nPrimary Fire - Extremely accurate and powerful single shot with radius damage\nSecondary Fire - Charged energy buildup for multiple shots with radius damage \nAmmo Type - Power cell", -"Imperial Heavy Repeater with Concussion Launcher\nThis destructive projectile weapon is extremely deadly, firing rapid streams of metal bullets. Imperial forces use the Heavy Repeater's deadly suppressive fire and concussion launcher for crowd control and to spread heavy fire over large areas.\nPrimary Fire - Fully automatic projectile fire \nSecondary Fire - Single shot, concussion explosive round.\nAmmo type - Metallic bolts", -"Destructive Electro-Magnetic Pulse 2 Gun\nCommonly referred to as the DEMP 2, this pulse rifle is primarily used against droids and electrical devices. The DEMP 2 fires high-powered ion bursts that disrupt electrical systems. Unlike previous incarnations of the weapon, the DEMP 2's ion charges are capable of damaging living material.\nPrimary Fire - Single shot, stuns humans, damages droids\nSecondary Fire - Chain lightning arcs from the weapon and moves from target to target and is deadly to both droids and humanoid enemies. \nAmmo Type - Power cell", -"Golan Arms FC1 Flechette Weapon \nWidely used by the Corporate Sector Authority's police squads, the FC1 fires shards of metal in a widespread pattern. The weapon is designed to hit multiple targets in close proximity, but great care must be taken to avoid ricochet damage.\nPrimary Fire - Single shot, spread fire\nSecondary Fire -Launches a self-adhesive, explosive proximity mine\nAmmo Type - Metallic Bolts", -"Merr-Sonn PLX-2M Portable Missile System \nThe PLX-2M is an extremely powerful weapon that fires Arakyd 3T3 missiles. The sheer explosive power of the PLL-2M makes it dangerous to fire blindly in close quarters, but is extremely effective when used as a 'smart' tracking weapon.\nPrimary Fire - Fires a single, forward-firing explosive missile\nSecondary Fire - Fires a single 'smart' missile that tracks acquired and locked targets.\nAmmo Type - Rockets", -"Thermal Detonator \nThe thermal detonator is a radius-damage grenade that releases a barrage of thermal energy capable of disintegrating all matter around it.\nPrimary Fire - Long distance throw, grenade explodes on contact\nSecondary Fire - Short distance roll, grenade bounces and explodes", -"Trip Mines \nTrip mines consist of a beam projector affixed to a shaped explosive casing. The laser activates when the mine is placed and extends a beam from the charge to the nearest surface that intersects its path. If the beam is broken or the charge is fired upon, the mine detonates and causes radius damage to anything in range.\nPrimary Fire - Once placed, acts as proximity mine with attached laser.\nSecondary Fire - Once placed, explodes after two seconds. No laser.", -"Detonation Packs \nA detonation pack is essentially a small explosive device with a remote detonation trigger. The pack is placed or thrown and can be detonated at will by the user. Detonation packs are commonly used to ambush enemies or open sealed doors.\nPrimary Fire - Sets charge at the user's feet\nSecondary Fire - Explodes all set charges", -"Stun Baton \nCommonly used to subdue unruly prisoners, the stun baton was designed for use in melee combat where killing your opponent is not necessarily the desired outcome.\nPrimary Fire - Slashing and swinging attacks.\nSecondary Fire - Special slashing and swinging attacks.", +"SABER_DESC", +"BLASTER_PISTOL_DESC", +"BLASTER_RIFLE_DESC", +"DISRUPTOR_RIFLE_DESC", +"BOWCASTER_DESC", +"HEAVYREPEATER_DESC", +"DEMP2_DESC", +"FLECHETTE_DESC", +"MERR_SONN_DESC", +"THERMAL_DETONATOR_DESC", +"TRIP_MINE_DESC", +"DET_PACK_DESC", +"STUN_BATON_DESC", }; @@ -1281,6 +1284,7 @@ void CG_DrawDataPadWeaponSelect( void ) int sideMax,holdCount,iconCnt; int height; vec4_t calcColor; + char text[1024]={0}; // showing weapon select clears pickup item display, but not the blend blob cg.itemPickupTime = 0; @@ -1452,11 +1456,23 @@ void CG_DrawDataPadWeaponSelect( void ) x= 40; y= 70; - CG_DisplayBoxedText(70,50,500,300,weaponDesc[cg.DataPadWeaponSelect-1], + cgi_SP_GetStringTextString( va("INGAME_%s",weaponDesc[cg.DataPadWeaponSelect-1]), text, sizeof(text) ); + + if (text) + { + CG_DisplayBoxedText(70,50,500,300,text, cgs.media.qhFontSmall, 0.7f, colorTable[CT_WHITE] ); + } + +/* CG_DisplayBoxedText(70,50,500,300,weaponDesc[cg.DataPadWeaponSelect-1], + cgs.media.qhFontSmall, + 0.7f, + colorTable[CT_WHITE] + ); +*/ cgi_R_SetColor( NULL ); } @@ -1618,6 +1634,7 @@ void CG_DrawWeaponSelect( void ) int sideMax,holdCount,iconCnt; int height; vec4_t calcColor; + vec4_t textColor = { .875f, .718f, .121f, 1.0f }; if (!cgi_UI_GetMenuInfo("weaponselecthud",&x2,&y2)) { @@ -1808,7 +1825,7 @@ void CG_DrawWeaponSelect( void ) //#ifdef _DEBUG int w = cgi_R_Font_StrLenPixels(name, cgs.media.qhFontSmall, 1.0f); int x = ( SCREEN_WIDTH - w ) / 2; - cgi_R_Font_DrawString(x, y + 48, name, colorTable[CT_ICON_BLUE], cgs.media.qhFontSmall, -1, 1.0f); + cgi_R_Font_DrawString(x, (SCREEN_HEIGHT - 24), name, textColor, cgs.media.qhFontSmall, -1, 1.0f); //#endif } } diff --git a/code/cgame/vssver.scc b/code/cgame/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..fef8e043a27069bfa604b7c88c4a643b1b30e51b GIT binary patch literal 880 zcmW;KdoWZ{90%}A>$%omd-v|O6nQLpj~PT%Q!=6{Ge}c;MkQ}6d4)eH3QeL|GpL4k z#;Z|(DD1>eDU(N;k(v-SYI-neSeqI8-aY@E`JCUJIp6a;$3vh+Y{YKdJZT-^Us*ss z%KszNvZ?*Rk=PTOaTc?Fr^~A3r>lu6Rw7~N6Ah}ssW;>fI0_EuO;;EMG?M0UG<-OK zUa~TeCOhF6csiL}5dSD7X*d>cZ|QULbzw+5I1V;GcS|cZS4ri-@$g9fl6Cy@B6SQ- zfcpoen|(c9lmtExFElCX)~;OYDtrO%uH8}(kD614@I_dcTg?w~JtI)UiSWARFjwzp zo`B7J3HFe0yUx7n};aP4J~LgCU}Qa2jlAZKNx{o+V=QXTV`=7Ki3@c8l14Wx`$s6@2=h zQq0~*3coH@`HV_u#g=du{QQW*J;-cbEP&f!dT~V|+y7Cd1GmF=j-Sa8`I5$6F!dyj zr?wquv{8Qw*O(-zeMfjAV|WCvGw=Ko=MzA&?=c3Cj_DQ=Gxz`SsQEXl#))sRmlScI#^I*@`0|QasMJCOt%V2eA yU|CtOlwtD^!UKtoQ^h*Q4EtZ~oC%_+^wo@k!JOv2D0hNz@J(EmbLzxwzy1TW2kOZH literal 0 HcmV?d00001 diff --git a/code/client/OpenAL/vssver.scc b/code/client/OpenAL/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..652b9343755ec479b8d0cece111fb30923d87e64 GIT binary patch literal 128 zcmXpJVr2M{@S`hK$value:1.0f))) : 256; - for (z=0;z>1); //*sizeof(short)); diff --git a/code/client/cl_main.cpp b/code/client/cl_main.cpp index 584ac26..12b2329 100644 --- a/code/client/cl_main.cpp +++ b/code/client/cl_main.cpp @@ -23,6 +23,7 @@ cvar_t *cl_maxpackets; cvar_t *cl_packetdup; cvar_t *cl_timeNudge; cvar_t *cl_showTimeDelta; +cvar_t *cl_newClock=0; cvar_t *cl_shownet; cvar_t *cl_avidemo; @@ -39,6 +40,7 @@ cvar_t *cl_showMouseRate; cvar_t *cl_VideoQuality; cvar_t *cl_VidFadeUp; // deliberately kept as "Vid" rather than "Video" so tab-matching matches only VideoQuality cvar_t *cl_VidFadeDown; +cvar_t *cl_framerate; cvar_t *m_pitch; cvar_t *m_pitchOverride; @@ -427,9 +429,6 @@ void CL_Snd_Restart_f( void ) { S_Init(); - S_FreeAllSFXMem(); - S_UnCacheDynamicMusic(); - // CL_Vid_Restart_f(); extern qboolean s_soundMuted; @@ -758,7 +757,10 @@ CL_Frame ================== */ -void CL_Frame ( int msec ) { +extern cvar_t *cl_newClock; +static unsigned int frameCount; +float avgFrametime=0.0; +void CL_Frame ( int msec,float fractionMsec ) { if ( !com_cl_running->integer ) { return; } @@ -798,7 +800,30 @@ void CL_Frame ( int msec ) { // decide the simulation time cls.frametime = msec; + if(cl_framerate->integer) + { + avgFrametime+=msec; + char mess[256]; + if(!(frameCount&0x1f)) + { + sprintf(mess,"Frame rate=%f\n\n",1000.0f*(1.0/(avgFrametime/32.0f))); + // OutputDebugString(mess); + Com_Printf(mess); + avgFrametime=0.0f; + } + frameCount++; + } + cls.frametimeFraction=fractionMsec; cls.realtime += msec; + cls.realtimeFraction+=fractionMsec; + if (cls.realtimeFraction>=1.0f) + { + if (cl_newClock&&cl_newClock->integer) + { + cls.realtime++; + } + cls.realtimeFraction-=1.0f; + } if ( cl_timegraph->integer ) { SCR_DebugGraph ( cls.realFrametime * 0.25, 0 ); } @@ -1044,6 +1069,7 @@ void CL_Init( void ) { cls.state = CA_DISCONNECTED; // no longer CA_UNINITIALIZED cls.keyCatchers = KEYCATCH_CONSOLE; cls.realtime = 0; + cls.realtimeFraction=0.0f; // fraction of a msec accumulated CL_InitInput (); @@ -1057,6 +1083,7 @@ void CL_Init( void ) { cl_timeNudge = Cvar_Get ("cl_timeNudge", "0", CVAR_TEMP ); cl_shownet = Cvar_Get ("cl_shownet", "0", CVAR_TEMP ); cl_showTimeDelta = Cvar_Get ("cl_showTimeDelta", "0", CVAR_TEMP ); + cl_newClock = Cvar_Get ("cl_newClock", "1", 0); cl_activeAction = Cvar_Get( "activeAction", "", CVAR_TEMP ); cl_avidemo = Cvar_Get ("cl_avidemo", "0", 0); @@ -1082,6 +1109,7 @@ void CL_Init( void ) { cl_VideoQuality = Cvar_Get ("cl_VideoQuality", "0", CVAR_ARCHIVE); cl_VidFadeUp = Cvar_Get ("cl_VidFadeUp", "1", CVAR_TEMP); cl_VidFadeDown = Cvar_Get ("cl_VidFadeDown", "1", CVAR_TEMP); + cl_framerate = Cvar_Get ("cl_framerate", "0", CVAR_TEMP); // init autoswitch so the ui will have it correctly even // if the cgame hasn't been started @@ -1116,7 +1144,7 @@ void CL_Init( void ) { Cmd_AddCommand ("cinematic", CL_PlayCinematic_f); Cmd_AddCommand ("ingamecinematic", CL_PlayInGameCinematic_f); Cmd_AddCommand ("setenv", CL_Setenv_f ); - Cmd_AddCommand ("genericmenu", CL_GenericMenu_f); + Cmd_AddCommand ("uimenu", CL_GenericMenu_f); Cmd_AddCommand ("datapad", CL_DataPad_f); Cmd_AddCommand ("endscreendissolve", CL_EndScreenDissolve_f); diff --git a/code/client/cl_mp3.org b/code/client/cl_mp3.org new file mode 100644 index 0000000..1db5f52 --- /dev/null +++ b/code/client/cl_mp3.org @@ -0,0 +1,419 @@ +// Filename:- cl_mp3.cpp +// +// (The interface module between all the MP3 stuff and Trek) +// +#include "client.h" +#include "cl_mp3.h" //(only included directly from snd_mem.cpp, so not in client.h) +#include "../mp3code/mp3struct.h" // keep this rather awful file secret from the rest of the program + +// call the real worker code in the messy C stuff... +// +#ifdef __cplusplus +extern "C" +{ +#endif + +char* C_MP3_IsValid (void *pvData, int iDataLen); +char* C_MP3_GetUnpackedSize (void *pvData, int iDataLen, int *piUnpackedSize); +char* C_MP3_UnpackRawPCM (void *pvData, int iDataLen, int *piUnpackedSize, void *pbUnpackBuffer); +char* C_MP3_GetHeaderData (void *pvData, int iDataLen, int *piRate, int *piWidth, int *piChannels); +char* C_MP3Stream_DecodeInit (LP_MP3STREAM pSFX_MP3Stream, void *pvSourceData, int iSourceBytesRemaining, + int iGameAudioSampleRate, int iGameAudioSampleBits ); +unsigned int C_MP3Stream_Decode (LP_MP3STREAM pSFX_MP3Stream); +char* C_MP3Stream_Rewind (LP_MP3STREAM pSFX_MP3Stream); + + +// these two are temp and will eventually be deleted... honest... +// +char* C_TEST_MP3_GetUnpackedSize( const char *_FILENAME1, const char *_FILENAME2, const char *_FILENAME3, + void *data1,void *data2,void *data3, + int size1,int size2,int size3, + int *iUnpackedSize1,int *iUnpackedSize2,int *iUnpackedSize3 + ); +char * C_TEST_MP3_UnpackRawPCM(const char *_FILENAME1, const char *_FILENAME2, const char *_FILENAME3, + void *data1,void *data2,void *data3, + int iSourceBytesRemaining1,int iSourceBytesRemaining2,int iSourceBytesRemaining3, + int *piUnpackedSize1,int *piUnpackedSize2,int *piUnpackedSize3, + void *pbUnpackBuffer1,void *pbUnpackBuffer2,void *pbUnpackBuffer3 + ); + + +#ifdef __cplusplus +} +#endif + + + +// expects data already loaded, filename arg is for error printing only +// +// returns success/fail +// +qboolean MP3_IsValid( const char *psLocalFilename, void *pvData, int iDataLen ) +{ + char *psError = C_MP3_IsValid(pvData, iDataLen); + + if (psError) + { + Com_Printf(va(S_COLOR_RED"%s\n(File: %s)\n",psError, psLocalFilename)); + } + + return !psError; +} + + + +// expects data already loaded, filename arg is for error printing only +// +// returns unpacked length, or 0 for errors (which will be printed internally) +// +int MP3_GetUnpackedSize( const char *psLocalFilename, void *pvData, int iDataLen, qboolean qbIgnoreID3Tag /* = qfalse */) +{ + int iUnpackedSize = 0; + + if (qbIgnoreID3Tag || !MP3_ReadSpecialTagInfo((byte *)pvData, iDataLen, NULL, &iUnpackedSize)) + { + char *psError = C_MP3_GetUnpackedSize( pvData, iDataLen, &iUnpackedSize); + + if (psError) + { + Com_Printf(va(S_COLOR_RED"%s\n(File: %s)\n",psError, psLocalFilename)); + return 0; + } + } + + return iUnpackedSize; +} + + + +// expects data already loaded, filename arg is for error printing only +// +// returns byte count of unpacked data (effectively a success/fail bool) +// +int MP3_UnpackRawPCM( const char *psLocalFilename, void *pvData, int iDataLen, byte *pbUnpackBuffer ) +{ + int iUnpackedSize; + char *psError = C_MP3_UnpackRawPCM( pvData, iDataLen, &iUnpackedSize, pbUnpackBuffer); + + if (psError) + { + Com_Printf(va(S_COLOR_RED"%s\n(File: %s)\n",psError, psLocalFilename)); + return 0; + } + + return iUnpackedSize; +} + + + +// expects data already loaded, filename arg is for error printing only +// +qboolean MP3_FakeUpWAVInfo( const char *psLocalFilename, void *pvData, int iDataLen, int iUnpackedDataLength, int &format, int &rate, int &width, int &channels, int &samples, int &dataofs) +{ + // some things can be done instantly... + // + format = 1; // 1 for MS format + dataofs= 0; // will be 0 for me (since there's no header in the unpacked data) + + // some things need to be read... + // + char *psError = C_MP3_GetHeaderData(pvData, iDataLen, &rate, &width, &channels); + if (psError) + { + Com_Printf(va(S_COLOR_RED"%s\n(File: %s)\n",psError, psLocalFilename)); + } + + // and some stuff needs calculating... + // + samples = iUnpackedDataLength / width; + + + return !psError; + +} + + + +const char sKEY_MAXVOL[]="#MAXVOL"; // formerly #defines +const char sKEY_UNCOMP[]="#UNCOMP"; // " " + +// returns qtrue for success... +// +qboolean MP3_ReadSpecialTagInfo(byte *pbLoadedFile, int iLoadedFileLen, // (in) + id3v1_1** ppTAG, // (out), can be NULL + int *piUncompressedSize, float *pfMaxVol // (out), can be NULL + ) +{ + qboolean qbError = qfalse; + + id3v1_1* pTAG = (id3v1_1*) ((pbLoadedFile+iLoadedFileLen)-sizeof(id3v1_1)); // sizeof = 128 + + if (!strncmp(pTAG->id, "TAG", 3)) + { + // TAG found... + // + + // read MAXVOL key... + // + if (strncmp(pTAG->comment, sKEY_MAXVOL, strlen(sKEY_MAXVOL))) + { + qbError = qtrue; + } + else + { + if ( pfMaxVol) + { + *pfMaxVol = atof(pTAG->comment + strlen(sKEY_MAXVOL)); + } + } + + // + // read UNCOMP key... + // + if (strncmp(pTAG->album, sKEY_UNCOMP, strlen(sKEY_UNCOMP))) + { + qbError = qtrue; + } + else + { + if ( piUncompressedSize) + { + *piUncompressedSize = atoi(pTAG->album + strlen(sKEY_UNCOMP)); + } + } + } + else + { + pTAG = NULL; + } + + if (ppTAG) + { + *ppTAG = pTAG; + } + + return (pTAG && !qbError); +} + + + +qboolean TEST_MP3_GetUnpackedSize(const char *_FILENAME1, const char *_FILENAME2, const char *_FILENAME3, + void *data1,void *data2,void *data3, + int size1,int size2,int size3, + int *iUnpackedSize1,int *iUnpackedSize2,int *iUnpackedSize3 + ) +{ + char *psError = C_TEST_MP3_GetUnpackedSize(_FILENAME1, _FILENAME2, _FILENAME3, + data1,data2,data3, + size1,size2,size3, + iUnpackedSize1,iUnpackedSize2,iUnpackedSize3 + ); + + if (psError) + { + Com_Printf(va(S_COLOR_RED"%s\n",psError)); + return qfalse; + } + + return qtrue; +} + + +// expects data already loaded, filename arg is for error printing only +// +// returns byte count of unpacked data (effectively a success/fail bool) +// +qboolean TEST_MP3_UnpackRawPCM( const char *_FILENAME1, const char *_FILENAME2, const char *_FILENAME3, + void *data1,void *data2,void *data3, + int iSourceBytesRemaining1,int iSourceBytesRemaining2,int iSourceBytesRemaining3, + int *piUnpackedSize1,int *piUnpackedSize2,int *piUnpackedSize3, + void *pbUnpackBuffer1,void *pbUnpackBuffer2,void *pbUnpackBuffer3 + ) +{ + char *psError = C_TEST_MP3_UnpackRawPCM(_FILENAME1, _FILENAME2, _FILENAME3, + data1,data2,data3, + iSourceBytesRemaining1,iSourceBytesRemaining2,iSourceBytesRemaining3, + piUnpackedSize1,piUnpackedSize2,piUnpackedSize3, + pbUnpackBuffer1,pbUnpackBuffer2,pbUnpackBuffer3 + ); + if (psError) + { + Com_Printf(va(S_COLOR_RED"%s\n",psError)); + return qfalse; + } + + return qtrue; +} + + + + + +// a file has been loaded in memory, see if we want to keep it as MP3, else as normal WAV... +// +// return = qtrue if keeping as MP3 +// +// (note: the reason I pass in the unpacked size rather than working it out here is simply because I already have it) +// +qboolean MP3Stream_InitFromFile( sfx_t* sfx, byte *pbSrcData, int iSrcDatalen, const char *psSrcDataFilename, int iMP3UnPackedSize ) +{ + // first, make a decision based on size here as to whether or not it's worth it because of MP3 buffer space + // making small files much bigger (and therefore best left as WAV)... + // +#define FUZZY_AMOUNT (5*1024) // so it has to be significantly over, not just break even, because of + // the xtra CPU time versus memory saving + + if (iSrcDatalen + sizeof(MP3STREAM) + FUZZY_AMOUNT < iMP3UnPackedSize) + { + // ok, let's keep it as MP3 then... + // + + float fMaxVol = 128; // seems to be a reasonable typical default for maxvol (for lip synch). Naturally there's no #define I can use instead... + + MP3_ReadSpecialTagInfo(pbSrcData, iSrcDatalen, NULL, NULL, &fMaxVol ); // try and read a read maxvol from MP3 header + + // fill in some sfx_t fields... + // + sfx->eCompressionType = ct_MP3; + sfx->data = (byte*) Hunk_Alloc( iSrcDatalen ); // will err_drop if fails + memcpy ( sfx->data, pbSrcData, iSrcDatalen ); // ... so the -> data field is MP3, not PCM + sfx->width = 2;//(s_compression->value == 1)?1:2; + sfx->length = (iMP3UnPackedSize / sfx->width) / (44100 / dma.speed); + sfx->vol_range = fMaxVol; + + // now init the low-level MP3 stuff... + // + MP3STREAM SFX_MP3Stream = {0}; + char *psError = C_MP3Stream_DecodeInit( &SFX_MP3Stream, sfx->data, iSrcDatalen, + dma.speed,//(s_khz->value == 44)?44100:(s_khz->value == 22)?22050:11025, + sfx->width * 8 + ); + if (psError) + { + // This should never happen, since any errors or problems with the MP3 file would have stopped us getting + // to this whole function, but just in case... + // + Com_Printf(va(S_COLOR_YELLOW"File \"%s\": %s\n",psSrcDataFilename,psError)); + + // This will leave iSrcDatalen bytes on the hunk stack (since you can't dealloc that), but MP3 files are + // usually small, and like I say, it should never happen. + // + // Strictly speaking, I should do a Z_Malloc above, then I could do a Z_Free if failed, else do a Hunk_Alloc + // to copy the Z_Malloc data into, then Z_Free, but for something that shouldn't happen it seemed bad to + // penalise the rest of the game with extra malloc demands. + // + return qfalse; + } + + // success ( ...on a plate). + // + // make a copy of the filled-in stream struct and attach to the sfx_t struct... + // + sfx->pMP3StreamHeader = (MP3STREAM *) Hunk_Alloc( sizeof(MP3STREAM) ); + memcpy( sfx->pMP3StreamHeader, &SFX_MP3Stream, sizeof(MP3STREAM) ); + // + return qtrue; + } + + return qfalse; +} + + +// return is decoded byte count, else 0 for finished +// +int MP3Stream_Decode( LP_MP3STREAM lpMP3Stream ) +{ + lpMP3Stream->iCopyOffset = 0; + return C_MP3Stream_Decode( lpMP3Stream ); +} + +// returns qtrue for all ok +// +// (this can be optimised by copying the whole header from the sfx struct sometime) +// +qboolean MP3Stream_Rewind( channel_t *ch ) +{ +/* char *psError = C_MP3Stream_Rewind( lpMP3Stream ); + + if (psError) + { + Com_Printf(S_COLOR_YELLOW"%s\n",psError); + return qfalse; + } + + return qtrue; +*/ + memcpy(&ch->MP3StreamHeader, ch->sfx->pMP3StreamHeader, sizeof(ch->MP3StreamHeader)); + return qtrue; +} + +void MP3Stream_GetSamples( channel_t *ch, int startingSampleNum, int count, short *buf ) +{ + static const int iQuarterOfSlidingBuffer = sizeof(ch->MP3SlidingDecodeBuffer)/4; + static const int iThreeQuartersOfSlidingBuffer = (sizeof(ch->MP3SlidingDecodeBuffer)*3)/4; + +// Com_Printf("startingSampleNum %d\n",startingSampleNum); + + count *= ch->sfx->width; // count arg was for words, so double it for bytes; + + startingSampleNum *= ch->sfx->width; + + if ( startingSampleNum < ch->iMP3SlidingDecodeWindowPos) + { + // what?!?!?! Fucking time travel needed or something?, forget it + memset(buf,0,count); + return; + } + +// OutputDebugString(va("\nRequest: startingSampleNum %d, count %d\n",startingSampleNum,count)); +// OutputDebugString(va("WindowPos %d, WindowWritePos %d\n",ch->iMP3SlidingDecodeWindowPos,ch->iMP3SlidingDecodeWritePos)); + + while (! + ( + (startingSampleNum >= ch->iMP3SlidingDecodeWindowPos) + && + (startingSampleNum + count < ch->iMP3SlidingDecodeWindowPos + ch->iMP3SlidingDecodeWritePos) + ) + ) + { +// OutputDebugString("Scrolling..."); + + int _iBytesDecoded = MP3Stream_Decode( (LP_MP3STREAM) &ch->MP3StreamHeader ); +// OutputDebugString(va("%d bytes decoded\n",_iBytesDecoded)); + if (_iBytesDecoded == 0) + { + // no more source data left so clear the remainder of the buffer... + // + memset(ch->MP3SlidingDecodeBuffer + ch->iMP3SlidingDecodeWritePos, 0, sizeof(ch->MP3SlidingDecodeBuffer)-ch->iMP3SlidingDecodeWritePos); + //MP3Stream_Rewind(ch); // should I do this??? +// OutputDebugString("Finished\n"); + break; + } + else + { + memcpy(ch->MP3SlidingDecodeBuffer + ch->iMP3SlidingDecodeWritePos,ch->MP3StreamHeader.bDecodeBuffer,_iBytesDecoded); + + ch->iMP3SlidingDecodeWritePos += _iBytesDecoded; + + // if reached 3/4 of buffer pos, backscroll the decode window by one quarter... + // + if (ch->iMP3SlidingDecodeWritePos > (sizeof(ch->MP3SlidingDecodeBuffer)*3)/4) + { + memmove(ch->MP3SlidingDecodeBuffer, ((byte *)ch->MP3SlidingDecodeBuffer + (sizeof(ch->MP3SlidingDecodeBuffer)/4)), (sizeof(ch->MP3SlidingDecodeBuffer)*3)/4); + ch->iMP3SlidingDecodeWritePos -= sizeof(ch->MP3SlidingDecodeBuffer)/4; + ch->iMP3SlidingDecodeWindowPos+= sizeof(ch->MP3SlidingDecodeBuffer)/4; + } + } +// OutputDebugString(va("WindowPos %d, WindowWritePos %d\n",ch->iMP3SlidingDecodeWindowPos,ch->iMP3SlidingDecodeWritePos)); + } + + assert(startingSampleNum >= ch->iMP3SlidingDecodeWindowPos); + memcpy( buf, ch->MP3SlidingDecodeBuffer + (startingSampleNum-ch->iMP3SlidingDecodeWindowPos), count); + + +// OutputDebugString("OK\n"); +} + + +///////////// eof ///////////// + diff --git a/code/client/cl_ui.cpp b/code/client/cl_ui.cpp index c22b460..9ff0758 100644 --- a/code/client/cl_ui.cpp +++ b/code/client/cl_ui.cpp @@ -297,7 +297,7 @@ void CL_GenericMenu_f(void) { char *arg = Cmd_Argv( 1 ); - UI_SetActiveMenu("genericmenu",arg); + UI_SetActiveMenu("ingame",arg); } diff --git a/code/client/client.h b/code/client/client.h index 6945b7a..c3dc515 100644 --- a/code/client/client.h +++ b/code/client/client.h @@ -195,8 +195,10 @@ typedef struct { int framecount; int frametime; // msec since last frame + float frametimeFraction; // fraction of a msec since last frame int realtime; // ignores pause + float realtimeFraction; // fraction of a msec accumulated int realFrametime; // ignoring pause, so console always works // update server info diff --git a/code/client/eax/eax-util.cpp b/code/client/eax/eax-util.cpp deleted file mode 100644 index 769064c..0000000 --- a/code/client/eax/eax-util.cpp +++ /dev/null @@ -1,706 +0,0 @@ -/***********************************************************************************************\ -* * -* EAX-UTIL.CPP - utilities for EAX 3.0 * -* Function declaration for EAX Morphing * -* String names of the all the presets defined in eax-util.h * -* Arrays grouping together all the EAX presets in a scenario * -* * -************************************************************************************************/ - -#include "eax-util.h" -#include - -// Function prototypes used by EAX3ListenerInterpolate -void Clamp(EAXVECTOR *eaxVector); -bool CheckEAX3LP(LPEAXLISTENERPROPERTIES lpEAX3LP); - - -/***********************************************************************************************\ -* -* Definition of the EAXMorph function - EAX3ListenerInterpolate -* -\***********************************************************************************************/ - -/* - EAX3ListenerInterpolate - lpStart - Initial EAX 3 Listener parameters - lpFinish - Final EAX 3 Listener parameters - flRatio - Ratio Destination : Source (0.0 == Source, 1.0 == Destination) - lpResult - Interpolated EAX 3 Listener parameters - bCheckValues - Check EAX 3.0 parameters are in range, default = false (no checking) -*/ -bool EAX3ListenerInterpolate(LPEAXLISTENERPROPERTIES lpStart, LPEAXLISTENERPROPERTIES lpFinish, - float flRatio, LPEAXLISTENERPROPERTIES lpResult, bool bCheckValues) -{ - EAXVECTOR StartVector, FinalVector; - - float flInvRatio; - - if (bCheckValues) - { - if (!CheckEAX3LP(lpStart)) - return false; - - if (!CheckEAX3LP(lpFinish)) - return false; - } - - if (flRatio >= 1.0f) - { - memcpy(lpResult, lpFinish, sizeof(EAXLISTENERPROPERTIES)); - return true; - } - else if (flRatio <= 0.0f) - { - memcpy(lpResult, lpStart, sizeof(EAXLISTENERPROPERTIES)); - return true; - } - - flInvRatio = (1.0f - flRatio); - - // Environment - lpResult->ulEnvironment = 26; // (UNDEFINED environment) - - // Environment Size - if (lpStart->flEnvironmentSize == lpFinish->flEnvironmentSize) - lpResult->flEnvironmentSize = lpStart->flEnvironmentSize; - else - lpResult->flEnvironmentSize = (float)exp( (log(lpStart->flEnvironmentSize) * flInvRatio) + (log(lpFinish->flEnvironmentSize) * flRatio) ); - - // Environment Diffusion - if (lpStart->flEnvironmentDiffusion == lpFinish->flEnvironmentDiffusion) - lpResult->flEnvironmentDiffusion = lpStart->flEnvironmentDiffusion; - else - lpResult->flEnvironmentDiffusion = (lpStart->flEnvironmentDiffusion * flInvRatio) + (lpFinish->flEnvironmentDiffusion * flRatio); - - // Room - if (lpStart->lRoom == lpFinish->lRoom) - lpResult->lRoom = lpStart->lRoom; - else - lpResult->lRoom = (int)( ((float)lpStart->lRoom * flInvRatio) + ((float)lpFinish->lRoom * flRatio) ); - - // Room HF - if (lpStart->lRoomHF == lpFinish->lRoomHF) - lpResult->lRoomHF = lpStart->lRoomHF; - else - lpResult->lRoomHF = (int)( ((float)lpStart->lRoomHF * flInvRatio) + ((float)lpFinish->lRoomHF * flRatio) ); - - // Room LF - if (lpStart->lRoomLF == lpFinish->lRoomLF) - lpResult->lRoomLF = lpStart->lRoomLF; - else - lpResult->lRoomLF = (int)( ((float)lpStart->lRoomLF * flInvRatio) + ((float)lpFinish->lRoomLF * flRatio) ); - - // Decay Time - if (lpStart->flDecayTime == lpFinish->flDecayTime) - lpResult->flDecayTime = lpStart->flDecayTime; - else - lpResult->flDecayTime = (float)exp( (log(lpStart->flDecayTime) * flInvRatio) + (log(lpFinish->flDecayTime) * flRatio) ); - - // Decay HF Ratio - if (lpStart->flDecayHFRatio == lpFinish->flDecayHFRatio) - lpResult->flDecayHFRatio = lpStart->flDecayHFRatio; - else - lpResult->flDecayHFRatio = (float)exp( (log(lpStart->flDecayHFRatio) * flInvRatio) + (log(lpFinish->flDecayHFRatio) * flRatio) ); - - // Decay LF Ratio - if (lpStart->flDecayLFRatio == lpFinish->flDecayLFRatio) - lpResult->flDecayLFRatio = lpStart->flDecayLFRatio; - else - lpResult->flDecayLFRatio = (float)exp( (log(lpStart->flDecayLFRatio) * flInvRatio) + (log(lpFinish->flDecayLFRatio) * flRatio) ); - - // Reflections - if (lpStart->lReflections == lpFinish->lReflections) - lpResult->lReflections = lpStart->lReflections; - else - lpResult->lReflections = (int)( ((float)lpStart->lReflections * flInvRatio) + ((float)lpFinish->lReflections * flRatio) ); - - // Reflections Delay - if (lpStart->flReflectionsDelay == lpFinish->flReflectionsDelay) - lpResult->flReflectionsDelay = lpStart->flReflectionsDelay; - else - lpResult->flReflectionsDelay = (float)exp( (log(lpStart->flReflectionsDelay+0.0001) * flInvRatio) + (log(lpFinish->flReflectionsDelay+0.0001) * flRatio) ); - - // Reflections Pan - - // To interpolate the vector correctly we need to ensure that both the initial and final vectors vectors are clamped to a length of 1.0f - StartVector = lpStart->vReflectionsPan; - FinalVector = lpFinish->vReflectionsPan; - - Clamp(&StartVector); - Clamp(&FinalVector); - - if (lpStart->vReflectionsPan.x == lpFinish->vReflectionsPan.x) - lpResult->vReflectionsPan.x = lpStart->vReflectionsPan.x; - else - lpResult->vReflectionsPan.x = FinalVector.x + (flInvRatio * (StartVector.x - FinalVector.x)); - - if (lpStart->vReflectionsPan.y == lpFinish->vReflectionsPan.y) - lpResult->vReflectionsPan.y = lpStart->vReflectionsPan.y; - else - lpResult->vReflectionsPan.y = FinalVector.y + (flInvRatio * (StartVector.y - FinalVector.y)); - - if (lpStart->vReflectionsPan.z == lpFinish->vReflectionsPan.z) - lpResult->vReflectionsPan.z = lpStart->vReflectionsPan.z; - else - lpResult->vReflectionsPan.z = FinalVector.z + (flInvRatio * (StartVector.z - FinalVector.z)); - - // Reverb - if (lpStart->lReverb == lpFinish->lReverb) - lpResult->lReverb = lpStart->lReverb; - else - lpResult->lReverb = (int)( ((float)lpStart->lReverb * flInvRatio) + ((float)lpFinish->lReverb * flRatio) ); - - // Reverb Delay - if (lpStart->flReverbDelay == lpFinish->flReverbDelay) - lpResult->flReverbDelay = lpStart->flReverbDelay; - else - lpResult->flReverbDelay = (float)exp( (log(lpStart->flReverbDelay+0.0001) * flInvRatio) + (log(lpFinish->flReverbDelay+0.0001) * flRatio) ); - - // Reverb Pan - - // To interpolate the vector correctly we need to ensure that both the initial and final vectors are clamped to a length of 1.0f - StartVector = lpStart->vReverbPan; - FinalVector = lpFinish->vReverbPan; - - Clamp(&StartVector); - Clamp(&FinalVector); - - if (lpStart->vReverbPan.x == lpFinish->vReverbPan.x) - lpResult->vReverbPan.x = lpStart->vReverbPan.x; - else - lpResult->vReverbPan.x = FinalVector.x + (flInvRatio * (StartVector.x - FinalVector.x)); - - if (lpStart->vReverbPan.y == lpFinish->vReverbPan.y) - lpResult->vReverbPan.y = lpStart->vReverbPan.y; - else - lpResult->vReverbPan.y = FinalVector.y + (flInvRatio * (StartVector.y - FinalVector.y)); - - if (lpStart->vReverbPan.z == lpFinish->vReverbPan.z) - lpResult->vReverbPan.z = lpStart->vReverbPan.z; - else - lpResult->vReverbPan.z = FinalVector.z + (flInvRatio * (StartVector.z - FinalVector.z)); - - // Echo Time - if (lpStart->flEchoTime == lpFinish->flEchoTime) - lpResult->flEchoTime = lpStart->flEchoTime; - else - lpResult->flEchoTime = (float)exp( (log(lpStart->flEchoTime) * flInvRatio) + (log(lpFinish->flEchoTime) * flRatio) ); - - // Echo Depth - if (lpStart->flEchoDepth == lpFinish->flEchoDepth) - lpResult->flEchoDepth = lpStart->flEchoDepth; - else - lpResult->flEchoDepth = (lpStart->flEchoDepth * flInvRatio) + (lpFinish->flEchoDepth * flRatio); - - // Modulation Time - if (lpStart->flModulationTime == lpFinish->flModulationTime) - lpResult->flModulationTime = lpStart->flModulationTime; - else - lpResult->flModulationTime = (float)exp( (log(lpStart->flModulationTime) * flInvRatio) + (log(lpFinish->flModulationTime) * flRatio) ); - - // Modulation Depth - if (lpStart->flModulationDepth == lpFinish->flModulationDepth) - lpResult->flModulationDepth = lpStart->flModulationDepth; - else - lpResult->flModulationDepth = (lpStart->flModulationDepth * flInvRatio) + (lpFinish->flModulationDepth * flRatio); - - // Air Absorption HF - if (lpStart->flAirAbsorptionHF == lpFinish->flAirAbsorptionHF) - lpResult->flAirAbsorptionHF = lpStart->flAirAbsorptionHF; - else - lpResult->flAirAbsorptionHF = (lpStart->flAirAbsorptionHF * flInvRatio) + (lpFinish->flAirAbsorptionHF * flRatio); - - // HF Reference - if (lpStart->flHFReference == lpFinish->flHFReference) - lpResult->flHFReference = lpStart->flHFReference; - else - lpResult->flHFReference = (float)exp( (log(lpStart->flHFReference) * flInvRatio) + (log(lpFinish->flHFReference) * flRatio) ); - - // LF Reference - if (lpStart->flLFReference == lpFinish->flLFReference) - lpResult->flLFReference = lpStart->flLFReference; - else - lpResult->flLFReference = (float)exp( (log(lpStart->flLFReference) * flInvRatio) + (log(lpFinish->flLFReference) * flRatio) ); - - // Room Rolloff Factor - if (lpStart->flRoomRolloffFactor == lpFinish->flRoomRolloffFactor) - lpResult->flRoomRolloffFactor = lpStart->flRoomRolloffFactor; - else - lpResult->flRoomRolloffFactor = (lpStart->flRoomRolloffFactor * flInvRatio) + (lpFinish->flRoomRolloffFactor * flRatio); - - // Flags - lpResult->ulFlags = (lpStart->ulFlags & lpFinish->ulFlags); - - // Clamp Delays - if (lpResult->flReflectionsDelay > EAXLISTENER_MAXREFLECTIONSDELAY) - lpResult->flReflectionsDelay = EAXLISTENER_MAXREFLECTIONSDELAY; - - if (lpResult->flReverbDelay > EAXLISTENER_MAXREVERBDELAY) - lpResult->flReverbDelay = EAXLISTENER_MAXREVERBDELAY; - - return true; -} - - -/* - CheckEAX3LP - Checks that the parameters in the EAX 3 Listener Properties structure are in-range -*/ -bool CheckEAX3LP(LPEAXLISTENERPROPERTIES lpEAX3LP) -{ - if ( (lpEAX3LP->lRoom < EAXLISTENER_MINROOM) || (lpEAX3LP->lRoom > EAXLISTENER_MAXROOM) ) - return false; - - if ( (lpEAX3LP->lRoomHF < EAXLISTENER_MINROOMHF) || (lpEAX3LP->lRoomHF > EAXLISTENER_MAXROOMHF) ) - return false; - - if ( (lpEAX3LP->lRoomLF < EAXLISTENER_MINROOMLF) || (lpEAX3LP->lRoomLF > EAXLISTENER_MAXROOMLF) ) - return false; - - if ( (lpEAX3LP->ulEnvironment < EAXLISTENER_MINENVIRONMENT) || (lpEAX3LP->ulEnvironment > EAXLISTENER_MAXENVIRONMENT) ) - return false; - - if ( (lpEAX3LP->flEnvironmentSize < EAXLISTENER_MINENVIRONMENTSIZE) || (lpEAX3LP->flEnvironmentSize > EAXLISTENER_MAXENVIRONMENTSIZE) ) - return false; - - if ( (lpEAX3LP->flEnvironmentDiffusion < EAXLISTENER_MINENVIRONMENTDIFFUSION) || (lpEAX3LP->flEnvironmentDiffusion > EAXLISTENER_MAXENVIRONMENTDIFFUSION) ) - return false; - - if ( (lpEAX3LP->flDecayTime < EAXLISTENER_MINDECAYTIME) || (lpEAX3LP->flDecayTime > EAXLISTENER_MAXDECAYTIME) ) - return false; - - if ( (lpEAX3LP->flDecayHFRatio < EAXLISTENER_MINDECAYHFRATIO) || (lpEAX3LP->flDecayHFRatio > EAXLISTENER_MAXDECAYHFRATIO) ) - return false; - - if ( (lpEAX3LP->flDecayLFRatio < EAXLISTENER_MINDECAYLFRATIO) || (lpEAX3LP->flDecayLFRatio > EAXLISTENER_MAXDECAYLFRATIO) ) - return false; - - if ( (lpEAX3LP->lReflections < EAXLISTENER_MINREFLECTIONS) || (lpEAX3LP->lReflections > EAXLISTENER_MAXREFLECTIONS) ) - return false; - - if ( (lpEAX3LP->flReflectionsDelay < EAXLISTENER_MINREFLECTIONSDELAY) || (lpEAX3LP->flReflectionsDelay > EAXLISTENER_MAXREFLECTIONSDELAY) ) - return false; - - if ( (lpEAX3LP->lReverb < EAXLISTENER_MINREVERB) || (lpEAX3LP->lReverb > EAXLISTENER_MAXREVERB) ) - return false; - - if ( (lpEAX3LP->flReverbDelay < EAXLISTENER_MINREVERBDELAY) || (lpEAX3LP->flReverbDelay > EAXLISTENER_MAXREVERBDELAY) ) - return false; - - if ( (lpEAX3LP->flEchoTime < EAXLISTENER_MINECHOTIME) || (lpEAX3LP->flEchoTime > EAXLISTENER_MAXECHOTIME) ) - return false; - - if ( (lpEAX3LP->flEchoDepth < EAXLISTENER_MINECHODEPTH) || (lpEAX3LP->flEchoDepth > EAXLISTENER_MAXECHODEPTH) ) - return false; - - if ( (lpEAX3LP->flModulationTime < EAXLISTENER_MINMODULATIONTIME) || (lpEAX3LP->flModulationTime > EAXLISTENER_MAXMODULATIONTIME) ) - return false; - - if ( (lpEAX3LP->flModulationDepth < EAXLISTENER_MINMODULATIONDEPTH) || (lpEAX3LP->flModulationDepth > EAXLISTENER_MAXMODULATIONDEPTH) ) - return false; - - if ( (lpEAX3LP->flAirAbsorptionHF < EAXLISTENER_MINAIRABSORPTIONHF) || (lpEAX3LP->flAirAbsorptionHF > EAXLISTENER_MAXAIRABSORPTIONHF) ) - return false; - - if ( (lpEAX3LP->flHFReference < EAXLISTENER_MINHFREFERENCE) || (lpEAX3LP->flHFReference > EAXLISTENER_MAXHFREFERENCE) ) - return false; - - if ( (lpEAX3LP->flLFReference < EAXLISTENER_MINLFREFERENCE) || (lpEAX3LP->flLFReference > EAXLISTENER_MAXLFREFERENCE) ) - return false; - - if ( (lpEAX3LP->flRoomRolloffFactor < EAXLISTENER_MINROOMROLLOFFFACTOR) || (lpEAX3LP->flRoomRolloffFactor > EAXLISTENER_MAXROOMROLLOFFFACTOR) ) - return false; - - if (lpEAX3LP->ulFlags & EAXLISTENERFLAGS_RESERVED) - return false; - - return true; -} - -/* - Clamp - Clamps the length of the vector to 1.0f -*/ -void Clamp(EAXVECTOR *eaxVector) -{ - float flMagnitude; - float flInvMagnitude; - - flMagnitude = (float)sqrt((eaxVector->x*eaxVector->x) + (eaxVector->y*eaxVector->y) + (eaxVector->z*eaxVector->z)); - - if (flMagnitude <= 1.0f) - return; - - flInvMagnitude = 1.0f / flMagnitude; - - eaxVector->x *= flInvMagnitude; - eaxVector->y *= flInvMagnitude; - eaxVector->z *= flInvMagnitude; -} - - -/***********************************************************************************************\ -* -* To assist those developers wishing to add EAX effects to their level editors, each of the - -* List of string names of the various EAX 3.0 presets defined in eax-util.h -* Arrays to group together presets of the same scenario -* -\***********************************************************************************************/ - - -////////////////////////////////////////////////////// -// Array of scenario names // -////////////////////////////////////////////////////// - -char* EAX30_SCENARIO_NAMES[] = -{ - "Castle", - "Factory", - "IcePalace", - "SpaceStation", - "WoodenShip", - "Sports", - "Prefab", - "Domes and Pipes", - "Outdoors", - "Mood", - "Driving", - "City", - "Miscellaneous", - "Original" -}; - -////////////////////////////////////////////////////// -// Array of standardised location names // -////////////////////////////////////////////////////// - -char* EAX30_LOCATION_NAMES[] = -{ - "Hall", - "Large Room", - "Medium Room", - "Small Room", - "Cupboard", - "Alcove", - "Long Passage", - "Short Passage", - "Courtyard" -}; - -////////////////////////////////////////////////////// -// Standardised Location effects can be accessed // -// from a matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_STANDARD_PRESETS[EAX30_NUM_STANDARD_SCENARIOS][EAX30_NUM_LOCATIONS]= -{ - {EAX30_PRESET_CASTLE_HALL, EAX30_PRESET_CASTLE_LARGEROOM, EAX30_PRESET_CASTLE_MEDIUMROOM, EAX30_PRESET_CASTLE_SMALLROOM, EAX30_PRESET_CASTLE_CUPBOARD, EAX30_PRESET_CASTLE_ALCOVE, EAX30_PRESET_CASTLE_LONGPASSAGE, EAX30_PRESET_CASTLE_SHORTPASSAGE, EAX30_PRESET_CASTLE_COURTYARD}, - {EAX30_PRESET_FACTORY_HALL, EAX30_PRESET_FACTORY_LARGEROOM, EAX30_PRESET_FACTORY_MEDIUMROOM, EAX30_PRESET_FACTORY_SMALLROOM, EAX30_PRESET_FACTORY_CUPBOARD, EAX30_PRESET_FACTORY_ALCOVE, EAX30_PRESET_FACTORY_LONGPASSAGE, EAX30_PRESET_FACTORY_SHORTPASSAGE, EAX30_PRESET_FACTORY_COURTYARD}, - {EAX30_PRESET_ICEPALACE_HALL, EAX30_PRESET_ICEPALACE_LARGEROOM, EAX30_PRESET_ICEPALACE_MEDIUMROOM, EAX30_PRESET_ICEPALACE_SMALLROOM, EAX30_PRESET_ICEPALACE_CUPBOARD, EAX30_PRESET_ICEPALACE_ALCOVE, EAX30_PRESET_ICEPALACE_LONGPASSAGE, EAX30_PRESET_ICEPALACE_SHORTPASSAGE, EAX30_PRESET_ICEPALACE_COURTYARD}, - {EAX30_PRESET_SPACESTATION_HALL,EAX30_PRESET_SPACESTATION_LARGEROOM,EAX30_PRESET_SPACESTATION_MEDIUMROOM, EAX30_PRESET_SPACESTATION_SMALLROOM,EAX30_PRESET_SPACESTATION_CUPBOARD, EAX30_PRESET_SPACESTATION_ALCOVE, EAX30_PRESET_SPACESTATION_LONGPASSAGE, EAX30_PRESET_SPACESTATION_SHORTPASSAGE, EAX30_PRESET_SPACESTATION_HALL}, - {EAX30_PRESET_WOODEN_HALL, EAX30_PRESET_WOODEN_LARGEROOM, EAX30_PRESET_WOODEN_MEDIUMROOM, EAX30_PRESET_WOODEN_SMALLROOM, EAX30_PRESET_WOODEN_CUPBOARD, EAX30_PRESET_WOODEN_ALCOVE, EAX30_PRESET_WOODEN_LONGPASSAGE, EAX30_PRESET_WOODEN_SHORTPASSAGE, EAX30_PRESET_WOODEN_COURTYARD}, -}; - - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of original environment names // -////////////////////////////////////////////////////// - -char* EAX30_ORIGINAL_PRESET_NAMES[] = -{ - "Generic", - "Padded Cell", - "Room", - "Bathroom", - "Living Room", - "Stone Room", - "Auditorium", - "Concert Hall", - "Cave", - "Arena", - "Hangar", - "Carpetted Hallway", - "Hallway", - "Stone Corridor", - "Alley", - "Forest", - "City", - "Mountains", - "Quarry", - "Plain", - "Parking Lot", - "Sewer Pipe", - "Underwater", - "Drugged", - "Dizzy", - "Psychotic" -}; - -////////////////////////////////////////////////////// -// Sports effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_ORIGINAL_PRESETS[] = -{ - EAX30_PRESET_GENERIC, - EAX30_PRESET_PADDEDCELL, - EAX30_PRESET_ROOM, - EAX30_PRESET_BATHROOM, - EAX30_PRESET_LIVINGROOM, - EAX30_PRESET_STONEROOM, - EAX30_PRESET_AUDITORIUM, - EAX30_PRESET_CONCERTHALL, - EAX30_PRESET_CAVE, - EAX30_PRESET_ARENA, - EAX30_PRESET_HANGAR, - EAX30_PRESET_CARPETTEDHALLWAY, - EAX30_PRESET_HALLWAY, - EAX30_PRESET_STONECORRIDOR, - EAX30_PRESET_ALLEY, - EAX30_PRESET_FOREST, - EAX30_PRESET_CITY, - EAX30_PRESET_MOUNTAINS, - EAX30_PRESET_QUARRY, - EAX30_PRESET_PLAIN, - EAX30_PRESET_PARKINGLOT, - EAX30_PRESET_SEWERPIPE, - EAX30_PRESET_UNDERWATER, - EAX30_PRESET_DRUGGED, - EAX30_PRESET_DIZZY, - EAX30_PRESET_PSYCHOTIC -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of sport environment names // -////////////////////////////////////////////////////// - -char* EAX30_SPORTS_PRESET_NAMES[] = -{ - "Empty Stadium", - "Full Stadium", - "Stadium Tannoy", - "Squash Court", - "Small Swimming Pool", - "Large Swimming Pool", - "Gymnasium" -}; - -////////////////////////////////////////////////////// -// Sports effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_SPORTS_PRESETS[] = -{ - EAX30_PRESET_SPORT_EMPTYSTADIUM, - EAX30_PRESET_SPORT_FULLSTADIUM, - EAX30_PRESET_SPORT_STADIUMTANNOY, - EAX30_PRESET_SPORT_SQUASHCOURT, - EAX30_PRESET_SPORT_SMALLSWIMMINGPOOL, - EAX30_PRESET_SPORT_LARGESWIMMINGPOOL, - EAX30_PRESET_SPORT_GYMNASIUM -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of prefab environment names // -////////////////////////////////////////////////////// - -char* EAX30_PREFAB_PRESET_NAMES[] = -{ - "Workshop", - "School Room", - "Practise Room", - "Outhouse", - "Caravan" -}; - -////////////////////////////////////////////////////// -// Prefab effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_PREFAB_PRESETS[] = -{ - EAX30_PRESET_PREFAB_WORKSHOP, - EAX30_PRESET_PREFAB_SCHOOLROOM, - EAX30_PRESET_PREFAB_PRACTISEROOM, - EAX30_PRESET_PREFAB_OUTHOUSE, - EAX30_PRESET_PREFAB_CARAVAN -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of Domes & Pipes environment names // -////////////////////////////////////////////////////// - -char* EAX30_DOMESNPIPES_PRESET_NAMES[] = -{ - "Domed Tomb", - "Saint Paul's Dome", - "Small Pipe", - "Long Thin Pipe", - "Large Pipe", - "Resonant Pipe" -}; - -////////////////////////////////////////////////////// -// Domes & Pipes effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_DOMESNPIPES_PRESETS[] = -{ - EAX30_PRESET_DOME_TOMB, - EAX30_PRESET_DOME_SAINTPAULS, - EAX30_PRESET_PIPE_SMALL, - EAX30_PRESET_PIPE_LONGTHIN, - EAX30_PRESET_PIPE_LARGE, - EAX30_PRESET_PIPE_RESONANT -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of Outdoors environment names // -////////////////////////////////////////////////////// - -char* EAX30_OUTDOORS_PRESET_NAMES[] = -{ - "Backyard", - "Rolling Plains", - "Deep Canyon", - "Creek", - "Valley" -}; - -////////////////////////////////////////////////////// -// Outdoors effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_OUTDOORS_PRESETS[] = -{ - EAX30_PRESET_OUTDOORS_BACKYARD, - EAX30_PRESET_OUTDOORS_ROLLINGPLAINS, - EAX30_PRESET_OUTDOORS_DEEPCANYON, - EAX30_PRESET_OUTDOORS_CREEK, - EAX30_PRESET_OUTDOORS_VALLEY -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of Mood environment names // -////////////////////////////////////////////////////// - -char* EAX30_MOOD_PRESET_NAMES[] = -{ - "Heaven", - "Hell", - "Memory" -}; - -////////////////////////////////////////////////////// -// Mood effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_MOOD_PRESETS[] = -{ - EAX30_PRESET_MOOD_HEAVEN, - EAX30_PRESET_MOOD_HELL, - EAX30_PRESET_MOOD_MEMORY -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of driving environment names // -////////////////////////////////////////////////////// - -char* EAX30_DRIVING_PRESET_NAMES[] = -{ - "Race Commentator", - "Pit Garage", - "In-car (Stripped out racer)", - "In-car (Sportscar)", - "In-car (Luxury)", - "Full Grandstand", - "Empty Grandstand", - "Tunnel" -}; - -////////////////////////////////////////////////////// -// Driving effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_DRIVING_PRESETS[] = -{ - EAX30_PRESET_DRIVING_COMMENTATOR, - EAX30_PRESET_DRIVING_PITGARAGE, - EAX30_PRESET_DRIVING_INCAR_RACER, - EAX30_PRESET_DRIVING_INCAR_SPORTS, - EAX30_PRESET_DRIVING_INCAR_LUXURY, - EAX30_PRESET_DRIVING_FULLGRANDSTAND, - EAX30_PRESET_DRIVING_EMPTYGRANDSTAND, - EAX30_PRESET_DRIVING_TUNNEL -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of City environment names // -////////////////////////////////////////////////////// - -char* EAX30_CITY_PRESET_NAMES[] = -{ - "City Streets", - "Subway", - "Museum", - "Library", - "Underpass", - "Abandoned City" -}; - -////////////////////////////////////////////////////// -// City effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_CITY_PRESETS[] = -{ - EAX30_PRESET_CITY_STREETS, - EAX30_PRESET_CITY_SUBWAY, - EAX30_PRESET_CITY_MUSEUM, - EAX30_PRESET_CITY_LIBRARY, - EAX30_PRESET_CITY_UNDERPASS, - EAX30_PRESET_CITY_ABANDONED -}; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Array of Misc environment names // -////////////////////////////////////////////////////// - -char* EAX30_MISC_PRESET_NAMES[] = -{ - "Dusty Box Room", - "Chapel", - "Small Water Room" -}; - -////////////////////////////////////////////////////// -// Misc effects matrix // -////////////////////////////////////////////////////// - -EAXLISTENERPROPERTIES EAX30_MISC_PRESETS[] = -{ - EAX30_PRESET_DUSTYROOM, - EAX30_PRESET_CHAPEL, - EAX30_PRESET_SMALLWATERROOM -}; - diff --git a/code/client/eax/eax-util.h b/code/client/eax/eax-util.h deleted file mode 100644 index ef917d5..0000000 --- a/code/client/eax/eax-util.h +++ /dev/null @@ -1,765 +0,0 @@ -/*******************************************************************\ -* * -* EAX-UTIL.H - utilities for Environmental Audio Extensions v. 3.0 * -* Definitions of the Original 26 EAX Presets * -* Definitions for some new EAX Presets * -* Definitions of some Material Presets * -* Function declaration for EAX Morphing * -* * -\*******************************************************************/ - -#ifndef EAXUTIL_INCLUDED -#define EAXUTIL_INCLUDED - -#include "eax.h" - -/*********************************************************************************************** -* Function : EAX3ListenerInterpolate -* Params : lpStart - Initial EAX 3 Listener parameters -* : lpFinish - Final EAX 3 Listener parameters -* : flRatio - Ratio Destination : Source (0.0 == Source, 1.0 == Destination) -* : lpResult - Interpolated EAX 3 Listener parameters -* : bCheckValues - Check EAX 3.0 parameters are in range, - - default == false (no checking) -************************************************************************************************/ -bool EAX3ListenerInterpolate(EAXLISTENERPROPERTIES *lpStartEAX3LP, EAXLISTENERPROPERTIES *lpFinishEAX3LP, - float flRatio, EAXLISTENERPROPERTIES *lpResultEAX3LP, bool bCheckValues = false); - - -/***********************************************************************************************\ -* -* Legacy environment presets for use with DSPROPERTY_EAXLISTENER_ALLPARAMETERS. -* Each array conforms to the DSPROPSETID_EAX30_ListenerProperties structure defined in EAX.H. -* -************************************************************************************************/ - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_GENERIC \ - {0, 7.5f, 1.000f, -1000, -100, 0, 1.49f, 0.83f, 1.00f, -2602, 0.007f, 0.00f,0.00f,0.00f, 200, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_PADDEDCELL \ - {1, 1.4f, 1.000f, -1000, -6000, 0, 0.17f, 0.10f, 1.00f, -1204, 0.001f, 0.00f,0.00f,0.00f, 207, 0.002f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_ROOM \ - {2, 1.9f, 1.000f, -1000, -454, 0, 0.40f, 0.83f, 1.00f, -1646, 0.002f, 0.00f,0.00f,0.00f, 53, 0.003f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_BATHROOM \ - {3, 1.4f, 1.000f, -1000, -1200, 0, 1.49f, 0.54f, 1.00f, -370, 0.007f, 0.00f,0.00f,0.00f, 1030, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_LIVINGROOM \ - {4, 2.5f, 1.000f, -1000, -6000, 0, 0.50f, 0.10f, 1.00f, -1376, 0.003f, 0.00f,0.00f,0.00f, -1104, 0.004f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_STONEROOM \ - {5, 11.6f, 1.000f, -1000, -300, 0, 2.31f, 0.64f, 1.00f, -711, 0.012f, 0.00f,0.00f,0.00f, 83, 0.017f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_AUDITORIUM \ - {6, 21.6f, 1.000f, -1000, -476, 0, 4.32f, 0.59f, 1.00f, -789, 0.020f, 0.00f,0.00f,0.00f, -289, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_CONCERTHALL \ - {7, 19.6f, 1.000f, -1000, -500, 0, 3.92f, 0.70f, 1.00f, -1230, 0.020f, 0.00f,0.00f,0.00f, -02, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_CAVE \ - {8, 14.6f, 1.000f, -1000, 0, 0, 2.91f, 1.30f, 1.00f, -602, 0.015f, 0.00f,0.00f,0.00f, -302, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_ARENA \ - {9, 36.2f, 1.000f, -1000, -698, 0, 7.24f, 0.33f, 1.00f, -1166, 0.020f, 0.00f,0.00f,0.00f, 16, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_HANGAR \ - {10, 50.3f, 1.000f, -1000, -1000, 0, 10.05f, 0.23f, 1.00f, -602, 0.020f, 0.00f,0.00f,0.00f, 198, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_CARPETTEDHALLWAY \ - {11, 1.9f, 1.000f, -1000, -4000, 0, 0.30f, 0.10f, 1.00f, -1831, 0.002f, 0.00f,0.00f,0.00f, -1630, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_HALLWAY \ - {12, 1.8f, 1.000f, -1000, -300, 0, 1.49f, 0.59f, 1.00f, -1219, 0.007f, 0.00f,0.00f,0.00f, 441, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_STONECORRIDOR \ - {13, 13.5f, 1.000f, -1000, -237, 0, 2.70f, 0.79f, 1.00f, -1214, 0.013f, 0.00f,0.00f,0.00f, 395, 0.020f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_ALLEY \ - {14, 7.5f, 0.300f, -1000, -270, 0, 1.49f, 0.86f, 1.00f, -1204, 0.007f, 0.00f,0.00f,0.00f, -4, 0.011f, 0.00f,0.00f,0.00f, 0.125f, 0.950f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_FOREST \ - {15, 38.0f, 0.300f, -1000, -3300, 0, 1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f,0.00f,0.00f, -229, 0.088f, 0.00f,0.00f,0.00f, 0.125f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_CITY \ - {16, 7.5f, 0.500f, -1000, -800, 0, 1.49f, 0.67f, 1.00f, -2273, 0.007f, 0.00f,0.00f,0.00f, -1691, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_MOUNTAINS \ - {17, 100.0f, 0.270f, -1000, -2500, 0, 1.49f, 0.21f, 1.00f, -2780, 0.300f, 0.00f,0.00f,0.00f, -1434, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_QUARRY \ - {18, 17.5f, 1.000f, -1000, -1000, 0, 1.49f, 0.83f, 1.00f, -10000, 0.061f, 0.00f,0.00f,0.00f, 500, 0.025f, 0.00f,0.00f,0.00f, 0.125f, 0.700f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_PLAIN \ - {19, 42.5f, 0.210f, -1000, -2000, 0, 1.49f, 0.50f, 1.00f, -2466, 0.179f, 0.00f,0.00f,0.00f, -1926, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_PARKINGLOT \ - {20, 8.3f, 1.000f, -1000, 0, 0, 1.65f, 1.50f, 1.00f, -1363, 0.008f, 0.00f,0.00f,0.00f, -1153, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_SEWERPIPE \ - {21, 1.7f, 0.800f, -1000, -1000, 0, 2.81f, 0.14f, 1.00f, 429, 0.014f, 0.00f,0.00f,0.00f, 1023, 0.021f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_UNDERWATER \ - {22, 1.8f, 1.000f, -1000, -4000, 0, 1.49f, 0.10f, 1.00f, -449, 0.007f, 0.00f,0.00f,0.00f, 1700, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 1.180f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_DRUGGED \ - {23, 1.9f, 0.500f, -1000, 0, 0, 8.39f, 1.39f, 1.00f, -115, 0.002f, 0.00f,0.00f,0.00f, 985, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_DIZZY \ - {24, 1.8f, 0.600f, -1000, -400, 0, 17.23f, 0.56f, 1.00f, -1713, 0.020f, 0.00f,0.00f,0.00f, -613, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.810f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_PSYCHOTIC \ - {25, 1.0f, 0.500f, -1000, -151, 0, 7.56f, 0.91f, 1.00f, -626, 0.020f, 0.00f,0.00f,0.00f, 774, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 4.000f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } - - -/***********************************************************************************************\ -* -* New environment presets for use with DSPROPERTY_EAXLISTENER_ALLPARAMETERS. -* Each array conforms to the DSPROPSETID_EAX30_ListenerProperties structure defined in EAX.H. -* -************************************************************************************************/ - -// STANDARDISED-LOCATION SCENARIOS - -// CASTLE PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_CASTLE_SMALLROOM \ - { 26, 8.3f, 0.890f, -1100, -800, -2000, 1.22f, 0.83f, 0.31f, -100, 0.022f, 0.00f,0.00f,0.00f, 0, 0.011f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_SHORTPASSAGE \ - { 26, 8.3f, 0.890f, -1000, -1000, -2000, 2.32f, 0.83f, 0.31f, -100, 0.007f, 0.00f,0.00f,0.00f, -500, 0.023f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_MEDIUMROOM \ - { 26, 8.3f, 0.930f, -1000, -1100, -2000, 2.04f, 0.83f, 0.46f, -300, 0.022f, 0.00f,0.00f,0.00f, -200, 0.011f, 0.00f,0.00f,0.00f, 0.155f, 0.030f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_LONGPASSAGE \ - { 26, 8.3f, 0.890f, -1000, -800, -2000, 3.42f, 0.83f, 0.31f, -200, 0.007f, 0.00f,0.00f,0.00f, -600, 0.023f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_LARGEROOM \ - { 26, 8.3f, 0.820f, -1000, -1100, -1800, 2.53f, 0.83f, 0.50f, -900, 0.034f, 0.00f,0.00f,0.00f, -400, 0.016f, 0.00f,0.00f,0.00f, 0.185f, 0.070f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_HALL \ - { 26, 8.3f, 0.810f, -1000, -1100, -1500, 3.14f, 0.79f, 0.62f, -1300, 0.056f, 0.00f,0.00f,0.00f, -500, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_CUPBOARD \ - { 26, 8.3f, 0.890f, -1000, -1100, -2000, 0.67f, 0.87f, 0.31f, 300, 0.010f, 0.00f,0.00f,0.00f, 300, 0.007f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } -#define EAX30_PRESET_CASTLE_COURTYARD \ - { 26, 8.3f, 0.420f, -1100, -700, -900, 2.13f, 0.61f, 0.23f, -2300, 0.112f, 0.00f,0.00f,0.00f, -1500, 0.036f, 0.00f,0.00f,0.00f, 0.250f, 0.370f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_CASTLE_ALCOVE \ - { 26, 8.3f, 0.890f, -1000, -600, -2000, 1.64f, 0.87f, 0.31f, -100, 0.007f, 0.00f,0.00f,0.00f, -500, 0.034f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 } - - -// FACTORY PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_FACTORY_ALCOVE \ - { 26, 1.8f, 0.590f, -1200, -200, -600, 3.14f, 0.65f, 1.31f, 300, 0.010f, 0.00f,0.00f,0.00f, -1200, 0.038f, 0.00f,0.00f,0.00f, 0.114f, 0.100f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_SHORTPASSAGE \ - { 26, 1.8f, 0.640f, -1200, -200, -600, 2.53f, 0.65f, 1.31f, 0, 0.010f, 0.00f,0.00f,0.00f, -600, 0.038f, 0.00f,0.00f,0.00f, 0.135f, 0.230f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_MEDIUMROOM \ - { 26, 1.9f, 0.820f, -1200, -200, -600, 2.76f, 0.65f, 1.31f, -1100, 0.022f, 0.00f,0.00f,0.00f, -400, 0.023f, 0.00f,0.00f,0.00f, 0.174f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_LONGPASSAGE \ - { 26, 1.8f, 0.640f, -1200, -200, -600, 4.06f, 0.65f, 1.31f, 0, 0.020f, 0.00f,0.00f,0.00f, -900, 0.037f, 0.00f,0.00f,0.00f, 0.135f, 0.230f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_LARGEROOM \ - { 26, 1.9f, 0.750f, -1200, -300, -400, 4.24f, 0.51f, 1.31f, -1500, 0.039f, 0.00f,0.00f,0.00f, -600, 0.023f, 0.00f,0.00f,0.00f, 0.231f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_HALL \ - { 26, 1.9f, 0.750f, -1000, -300, -400, 7.43f, 0.51f, 1.31f, -2400, 0.073f, 0.00f,0.00f,0.00f, -500, 0.027f, 0.00f,0.00f,0.00f, 0.250f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_CUPBOARD \ - { 26, 1.7f, 0.630f, -1200, -200, -600, 0.49f, 0.65f, 1.31f, 200, 0.010f, 0.00f,0.00f,0.00f, 200, 0.032f, 0.00f,0.00f,0.00f, 0.107f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_COURTYARD \ - { 26, 1.7f, 0.570f, -1000, -1000, -400, 2.32f, 0.29f, 0.56f, -2400, 0.090f, 0.00f,0.00f,0.00f, -2000, 0.039f, 0.00f,0.00f,0.00f, 0.250f, 0.290f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } -#define EAX30_PRESET_FACTORY_SMALLROOM \ - { 26, 1.8f, 0.820f, -1200, -200, -600, 1.72f, 0.65f, 1.31f, -300, 0.010f, 0.00f,0.00f,0.00f, -200, 0.024f, 0.00f,0.00f,0.00f, 0.119f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 } - -// ICE PALACE PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_ICEPALACE_ALCOVE \ - { 26, 2.7f, 0.840f, -1000, -500, -1100, 2.76f, 1.46f, 0.28f, 100, 0.010f, 0.00f,0.00f,0.00f, -1200, 0.030f, 0.00f,0.00f,0.00f, 0.161f, 0.090f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_SHORTPASSAGE \ - { 26, 2.7f, 0.750f, -1000, -500, -1100, 1.79f, 1.46f, 0.28f, -600, 0.010f, 0.00f,0.00f,0.00f, -700, 0.019f, 0.00f,0.00f,0.00f, 0.177f, 0.090f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_MEDIUMROOM \ - { 26, 2.7f, 0.870f, -1000, -500, -700, 2.22f, 1.53f, 0.32f, -800, 0.039f, 0.00f,0.00f,0.00f, -1200, 0.027f, 0.00f,0.00f,0.00f, 0.186f, 0.120f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_LONGPASSAGE \ - { 26, 2.7f, 0.770f, -1000, -500, -800, 3.01f, 1.46f, 0.28f, -200, 0.012f, 0.00f,0.00f,0.00f, -800, 0.025f, 0.00f,0.00f,0.00f, 0.186f, 0.040f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_LARGEROOM \ - { 26, 2.9f, 0.810f, -1000, -500, -700, 3.14f, 1.53f, 0.32f, -1200, 0.039f, 0.00f,0.00f,0.00f, -1300, 0.027f, 0.00f,0.00f,0.00f, 0.214f, 0.110f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_HALL \ - { 26, 2.9f, 0.760f, -1000, -700, -500, 5.49f, 1.53f, 0.38f, -1900, 0.054f, 0.00f,0.00f,0.00f, -1400, 0.052f, 0.00f,0.00f,0.00f, 0.226f, 0.110f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_CUPBOARD \ - { 26, 2.7f, 0.830f, -1000, -600, -1300, 0.76f, 1.53f, 0.26f, 100, 0.012f, 0.00f,0.00f,0.00f, 100, 0.016f, 0.00f,0.00f,0.00f, 0.143f, 0.080f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_COURTYARD \ - { 26, 2.9f, 0.590f, -1000, -1100, -1000, 2.04f, 1.20f, 0.38f, -2000, 0.073f, 0.00f,0.00f,0.00f, -2200, 0.043f, 0.00f,0.00f,0.00f, 0.235f, 0.480f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } -#define EAX30_PRESET_ICEPALACE_SMALLROOM \ - { 26, 2.7f, 0.840f, -1000, -500, -1100, 1.51f, 1.53f, 0.27f, -100, 0.010f, 0.00f,0.00f,0.00f, -900, 0.011f, 0.00f,0.00f,0.00f, 0.164f, 0.140f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 } - -// SPACE STATION PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_SPACESTATION_ALCOVE \ - { 26, 1.5f, 0.780f, -1100, -300, -100, 1.16f, 0.81f, 0.55f, 300, 0.007f, 0.00f,0.00f,0.00f, -500, 0.018f, 0.00f,0.00f,0.00f, 0.192f, 0.210f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_MEDIUMROOM \ - { 26, 1.5f, 0.750f, -1000, -400, -100, 3.01f, 0.50f, 0.55f, -1000, 0.034f, 0.00f,0.00f,0.00f, -700, 0.035f, 0.00f,0.00f,0.00f, 0.209f, 0.310f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_SHORTPASSAGE \ - { 26, 1.5f, 0.870f, -1000, -400, -100, 3.57f, 0.50f, 0.55f, 0, 0.012f, 0.00f,0.00f,0.00f, -600, 0.016f, 0.00f,0.00f,0.00f, 0.172f, 0.200f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_LONGPASSAGE \ - { 26, 1.9f, 0.820f, -1000, -400, -100, 4.62f, 0.62f, 0.55f, 0, 0.012f, 0.00f,0.00f,0.00f, -800, 0.031f, 0.00f,0.00f,0.00f, 0.250f, 0.230f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_LARGEROOM \ - { 26, 1.8f, 0.810f, -1000, -400, -100, 3.89f, 0.38f, 0.61f, -1200, 0.056f, 0.00f,0.00f,0.00f, -800, 0.035f, 0.00f,0.00f,0.00f, 0.233f, 0.280f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_HALL \ - { 26, 1.9f, 0.870f, -1000, -400, -100, 7.11f, 0.38f, 0.61f, -1500, 0.100f, 0.00f,0.00f,0.00f, -1000, 0.047f, 0.00f,0.00f,0.00f, 0.250f, 0.250f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_CUPBOARD \ - { 26, 1.4f, 0.560f, -1000, -300, -100, 0.79f, 0.81f, 0.55f, 200, 0.007f, 0.00f,0.00f,0.00f, 400, 0.018f, 0.00f,0.00f,0.00f, 0.181f, 0.310f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPACESTATION_SMALLROOM \ - { 26, 1.5f, 0.700f, -1000, -300, -100, 1.72f, 0.82f, 0.55f, -400, 0.007f, 0.00f,0.00f,0.00f, -500, 0.013f, 0.00f,0.00f,0.00f, 0.188f, 0.260f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 } - -// WOODEN GALLEON PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_WOODEN_ALCOVE \ - { 26, 7.5f, 1.000f, -1100, -1800, -1000, 1.22f, 0.62f, 0.91f, -100, 0.012f, 0.00f,0.00f,0.00f, -600, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_SHORTPASSAGE \ - { 26, 7.5f, 1.000f, -1100, -1800, -1000, 1.45f, 0.50f, 0.87f, -300, 0.012f, 0.00f,0.00f,0.00f, -700, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_MEDIUMROOM \ - { 26, 7.5f, 1.000f, -1200, -2000, -1100, 1.07f, 0.42f, 0.82f, -300, 0.039f, 0.00f,0.00f,0.00f, -400, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_LONGPASSAGE \ - { 26, 7.5f, 1.000f, -1100, -2000, -1000, 1.79f, 0.40f, 0.79f, -200, 0.020f, 0.00f,0.00f,0.00f, -1000, 0.036f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_LARGEROOM \ - { 26, 7.5f, 1.000f, -1200, -2100, -1100, 1.45f, 0.33f, 0.82f, -300, 0.056f, 0.00f,0.00f,0.00f, -500, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_HALL \ - { 26, 7.5f, 1.000f, -1200, -2200, -1100, 1.95f, 0.30f, 0.82f, -300, 0.068f, 0.00f,0.00f,0.00f, -500, 0.063f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_CUPBOARD \ - { 26, 7.5f, 1.000f, -1000, -1700, -1000, 0.56f, 0.46f, 0.91f, -100, 0.012f, 0.00f,0.00f,0.00f, -100, 0.028f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_SMALLROOM \ - { 26, 7.5f, 1.000f, -1200, -1900, -1000, 0.79f, 0.32f, 0.87f, -200, 0.032f, 0.00f,0.00f,0.00f, -300, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } -#define EAX30_PRESET_WOODEN_COURTYARD \ - { 26, 7.5f, 0.650f, -1700, -2200, -1000, 1.79f, 0.35f, 0.79f, -700, 0.063f, 0.00f,0.00f,0.00f, -2300, 0.032f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f } - - -// OTHER SCENARIOS - -// SPORTS PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_SPORT_EMPTYSTADIUM \ - { 26, 7.2f, 1.000f, -1300, -700, -200, 6.26f, 0.51f, 1.10f, -2400, 0.183f, 0.00f,0.00f,0.00f, -1100, 0.038f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 } -#define EAX30_PRESET_SPORT_SQUASHCOURT \ - { 26, 7.5f, 0.750f, -1100, -1000, -200, 2.22f, 0.91f, 1.16f, -700, 0.007f, 0.00f,0.00f,0.00f, -300, 0.011f, 0.00f,0.00f,0.00f, 0.126f, 0.190f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPORT_SMALLSWIMMINGPOOL \ - { 26, 36.2f, 0.700f, -1400, -200, -100, 2.76f, 1.25f, 1.14f, -400, 0.020f, 0.00f,0.00f,0.00f, -300, 0.030f, 0.00f,0.00f,0.00f, 0.179f, 0.150f, 0.895f, 0.190f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 } -#define EAX30_PRESET_SPORT_LARGESWIMMINGPOOL\ - { 26, 36.2f, 0.820f, -1200, -200, 0, 5.49f, 1.31f, 1.14f, -700, 0.039f, 0.00f,0.00f,0.00f, -800, 0.049f, 0.00f,0.00f,0.00f, 0.222f, 0.550f, 1.159f, 0.210f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 } -#define EAX30_PRESET_SPORT_GYMNASIUM \ - { 26, 7.5f, 0.810f, -1200, -700, -100, 3.14f, 1.06f, 1.35f, -800, 0.029f, 0.00f,0.00f,0.00f, -700, 0.045f, 0.00f,0.00f,0.00f, 0.146f, 0.140f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 } -#define EAX30_PRESET_SPORT_FULLSTADIUM \ - { 26, 7.2f, 1.000f, -1300, -2300, -200, 5.25f, 0.17f, 0.80f, -2000, 0.188f, 0.00f,0.00f,0.00f, -1300, 0.038f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 } -#define EAX30_PRESET_SPORT_STADIUMTANNOY \ - { 26, 3.0f, 0.780f, -900, -500, -600, 2.53f, 0.88f, 0.68f, -1100, 0.230f, 0.00f,0.00f,0.00f, -600, 0.063f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 } - -// PREFAB PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_PREFAB_WORKSHOP \ - { 26, 1.9f, 1.000f, -1000, -1700, -800, 0.76f, 1.00f, 1.00f, 0, 0.012f, 0.00f,0.00f,0.00f, -200, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 } -#define EAX30_PRESET_PREFAB_SCHOOLROOM \ - { 26, 1.86f, 0.690f, -1100, -400, -600, 0.98f, 0.45f, 0.18f, 300, 0.017f, 0.00f,0.00f,0.00f, 0, 0.015f, 0.00f,0.00f,0.00f, 0.095f, 0.140f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 } -#define EAX30_PRESET_PREFAB_PRACTISEROOM \ - { 26, 1.86f, 0.870f, -1000, -800, -600, 1.12f, 0.56f, 0.18f, 200, 0.010f, 0.00f,0.00f,0.00f, -200, 0.011f, 0.00f,0.00f,0.00f, 0.095f, 0.140f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 } -#define EAX30_PRESET_PREFAB_OUTHOUSE \ - { 26, 80.3f, 0.820f, -1100, -1900, -1600, 1.38f, 0.38f, 0.35f, -100, 0.024f, 0.00f,0.00f,-0.00f, -800, 0.044f, 0.00f,0.00f,0.00f, 0.121f, 0.170f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 } -#define EAX30_PRESET_PREFAB_CARAVAN \ - { 26, 8.3f, 1.000f, -1000, -2100, -1800, 0.43f, 1.50f, 1.00f, 0, 0.012f, 0.00f,0.00f,0.00f, 400, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f } - // for US developers, a caravan is the same as a trailer =o) - - -// DOME AND PIPE PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_DOME_TOMB \ - { 26, 51.8f, 0.790f, -1000, -900, -1300, 4.18f, 0.21f, 0.10f, -825, 0.030f, 0.00f,0.00f,0.00f, -125, 0.022f, 0.00f,0.00f,0.00f, 0.177f, 0.190f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 } -#define EAX30_PRESET_PIPE_SMALL \ - { 26, 50.3f, 1.000f, -1000, -900, -1300, 5.04f, 0.10f, 0.10f, -600, 0.032f, 0.00f,0.00f,0.00f, 400, 0.015f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f } -#define EAX30_PRESET_DOME_SAINTPAULS \ - { 26, 50.3f, 0.870f, -1000, -900, -1300, 10.48f, 0.19f, 0.10f, -1500, 0.090f, 0.00f,0.00f,0.00f, -500, 0.042f, 0.00f,0.00f,0.00f, 0.250f, 0.120f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f } -#define EAX30_PRESET_PIPE_LONGTHIN \ - { 26, 1.6f, 0.910f, -1200, -700, -1100, 9.21f, 0.18f, 0.10f, -300, 0.010f, 0.00f,0.00f,0.00f, -1000, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 } -#define EAX30_PRESET_PIPE_LARGE \ - { 26, 50.3f, 1.000f, -1000, -900, -1300, 8.45f, 0.10f, 0.10f, -800, 0.046f, 0.00f,0.00f,0.00f, 0, 0.032f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f } -#define EAX30_PRESET_PIPE_RESONANT \ - { 26, 1.3f, 0.910f, -1200, -700, -1100, 6.81f, 0.18f, 0.10f, -300, 0.010f, 0.00f,0.00f,0.00f, -700, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 } - -// OUTDOORS PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_OUTDOORS_BACKYARD \ - { 26, 80.3f, 0.450f, -1100, -1200, -600, 1.12f, 0.34f, 0.46f, -1100, 0.049f, 0.00f,0.00f,-0.00f, -1300, 0.023f, 0.00f,0.00f,0.00f, 0.218f, 0.340f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 } -#define EAX30_PRESET_OUTDOORS_ROLLINGPLAINS \ - { 26, 80.3f, 0.000f, -1100, -3900, -400, 2.13f, 0.21f, 0.46f, -2000, 0.300f, 0.00f,0.00f,-0.00f, -1500, 0.019f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 } -#define EAX30_PRESET_OUTDOORS_DEEPCANYON \ - { 26, 80.3f, 0.740f, -1100, -1500, -400, 3.89f, 0.21f, 0.46f, -2000, 0.193f, 0.00f,0.00f,-0.00f, -1100, 0.019f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 } -#define EAX30_PRESET_OUTDOORS_CREEK \ - { 26, 80.3f, 0.350f, -1100, -1500, -600, 2.13f, 0.21f, 0.46f, -1700, 0.115f, 0.00f,0.00f,-0.00f, -1100, 0.031f, 0.00f,0.00f,0.00f, 0.218f, 0.340f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 } -#define EAX30_PRESET_OUTDOORS_VALLEY \ - { 26, 80.3f, 0.280f, -1100, -3100, -1600, 2.88f, 0.26f, 0.35f, -3200, 0.163f, 0.00f,0.00f,-0.00f, -1000, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 0.340f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 } - - -// MOOD PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_MOOD_HEAVEN \ - { 26, 19.6f, 0.940f, -1000, -200, -700, 5.04f, 1.12f, 0.56f, -1230, 0.020f, 0.00f,0.00f,0.00f, -200, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.080f, 2.742f, 0.050f, -2.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_MOOD_HELL \ - { 26, 100.0f, 0.570f, -1000, -900, -700, 3.57f, 0.49f, 2.00f, -10000, 0.020f, 0.00f,0.00f,0.00f, 100, 0.030f, 0.00f,0.00f,0.00f, 0.110f, 0.040f, 2.109f, 0.520f, -5.0f, 5000.0f, 139.5f, 0.00f, 0x40 } -#define EAX30_PRESET_MOOD_MEMORY \ - { 26, 8.0f, 0.850f, -1000, -400, -900, 4.06f, 0.82f, 0.56f, -2800, 0.000f, 0.00f,0.00f,0.00f, -500, 0.000f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.474f, 0.450f, -2.0f, 5000.0f, 250.0f, 0.00f, 0x0 } - -// DRIVING SIMULATION PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_DRIVING_COMMENTATOR \ - { 26, 3.0f, 0.000f, -900, -500, -600, 2.42f, 0.88f, 0.68f, -1400, 0.093f, 0.00f,0.00f,0.00f, -1200, 0.017f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 } -#define EAX30_PRESET_DRIVING_PITGARAGE \ - { 26, 1.9f, 0.590f, -1400, -300, -500, 1.72f, 0.93f, 0.87f, -500, 0.000f, 0.00f,0.00f,0.00f, 0, 0.016f, 0.00f,0.00f,0.00f, 0.250f, 0.110f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 } -#define EAX30_PRESET_DRIVING_INCAR_RACER \ - { 26, 1.1f, 0.800f, -700, 0, -200, 0.17f, 2.00f, 0.41f, 500, 0.007f, 0.00f,0.00f,0.00f, -500, 0.015f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -0.0f, 10268.2f, 251.0f, 0.00f, 0x20 } -#define EAX30_PRESET_DRIVING_INCAR_SPORTS \ - { 26, 1.1f, 0.800f, -900, -400, 0, 0.17f, 0.75f, 0.41f, 0, 0.010f, 0.00f,0.00f,0.00f, -600, 0.000f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -0.0f, 10268.2f, 251.0f, 0.00f, 0x20 } -#define EAX30_PRESET_DRIVING_INCAR_LUXURY \ - { 26, 1.6f, 1.000f, -800, -2000, -600, 0.13f, 0.41f, 0.46f, -200, 0.010f, 0.00f,0.00f,0.00f, 300, 0.010f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -0.0f, 10268.2f, 251.0f, 0.00f, 0x20 } -#define EAX30_PRESET_DRIVING_FULLGRANDSTAND \ - { 26, 8.3f, 1.000f, -1100, -1100, -400, 3.01f, 1.37f, 1.28f, -900, 0.090f, 0.00f,0.00f,0.00f, -1700, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10420.2f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_DRIVING_EMPTYGRANDSTAND \ - { 26, 8.3f, 1.000f, -700, 0, -200, 4.62f, 1.75f, 1.40f, -1363, 0.090f, 0.00f,0.00f,0.00f, -1900, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10420.2f, 250.0f, 0.00f, 0x1f } -#define EAX30_PRESET_DRIVING_TUNNEL \ - { 26, 3.1f, 0.810f, -900, -800, -100, 3.42f, 0.94f, 1.31f, -300, 0.051f, 0.00f,0.00f,0.00f, -500, 0.047f, 0.00f,0.00f,0.00f, 0.214f, 0.050f, 0.250f, 0.000f, -0.0f, 5000.0f, 155.3f, 0.00f, 0x20 } - -// CITY PRESETS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_CITY_STREETS \ - { 26, 3.0f, 0.780f, -1100, -300, -100, 1.79f, 1.12f, 0.91f, -1700, 0.046f, 0.00f,0.00f,0.00f, -2800, 0.028f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 } -#define EAX30_PRESET_CITY_SUBWAY \ - { 26, 3.0f, 0.740f, -1100, -300, -100, 3.01f, 1.23f, 0.91f, -700, 0.046f, 0.00f,0.00f,0.00f, -1000, 0.028f, 0.00f,0.00f,0.00f, 0.125f, 0.210f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 } -#define EAX30_PRESET_CITY_MUSEUM \ - { 26, 80.3f, 0.820f, -1100, -1500, -1500, 3.28f, 1.40f, 0.57f, -1600, 0.039f, 0.00f,0.00f,-0.00f, -600, 0.034f, 0.00f,0.00f,0.00f, 0.130f, 0.170f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 } -#define EAX30_PRESET_CITY_LIBRARY \ - { 26, 80.3f, 0.820f, -1100, -1100, -2100, 2.76f, 0.89f, 0.41f, -1100, 0.029f, 0.00f,0.00f,-0.00f, -500, 0.020f, 0.00f,0.00f,0.00f, 0.130f, 0.170f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 } -#define EAX30_PRESET_CITY_UNDERPASS \ - { 26, 3.0f, 0.820f, -1500, -700, -100, 3.57f, 1.12f, 0.91f, -1500, 0.059f, 0.00f,0.00f,0.00f, -1100, 0.037f, 0.00f,0.00f,0.00f, 0.250f, 0.140f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 } -#define EAX30_PRESET_CITY_ABANDONED \ - { 26, 3.0f, 0.690f, -1100, -200, -100, 3.28f, 1.17f, 0.91f, -1400, 0.044f, 0.00f,0.00f,0.00f, -2400, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 } - -// MISC ROOMS - -// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS -#define EAX30_PRESET_DUSTYROOM \ - { 26, 1.8f, 0.560f, -1100, -200, -300, 1.79f, 0.38f, 0.21f, -600, 0.002f, 0.00f,0.00f,0.00f, 200, 0.006f, 0.00f,0.00f,0.00f, 0.202f, 0.050f, 0.250f, 0.000f, -3.0f, 13046.0f, 163.3f, 0.00f, 0x20 } -#define EAX30_PRESET_CHAPEL \ - { 26, 19.6f, 0.840f, -1000, -500, 0, 4.62f, 0.64f, 1.23f, -700, 0.032f, 0.00f,0.00f,0.00f, -800, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.110f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } -#define EAX30_PRESET_SMALLWATERROOM \ - { 26, 36.2f, 0.700f, -1200, -698, 0, 1.51f, 1.25f, 1.14f, -100, 0.020f, 0.00f,0.00f,0.00f, 200, 0.030f, 0.00f,0.00f,0.00f, 0.179f, 0.150f, 0.895f, 0.190f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 } - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Effect Scenarios enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - EAX30_SCENARIO_CASTLE = 0, - EAX30_SCENARIO_FACTORY, - EAX30_SCENARIO_ICEPALACE, - EAX30_SCENARIO_SPACESTATION, - EAX30_SCENARIO_WOODGALLEON, - EAX30_SCENARIO_SPORTS, - EAX30_SCENARIO_PREFAB, - EAX30_SCENARIO_DOMESNPIPES, - EAX30_SCENARIO_OUTDOORS, - EAX30_SCENARIO_MOOD, - EAX30_SCENARIO_DRIVING, - EAX30_SCENARIO_CITY, - EAX30_SCENARIO_MISC, - EAX30_SCENARIO_ORIGINAL -} -EAX30_SCENARIO; - -////////////////////////////////////////////////////// -// Number of Effect Scenarios // -////////////////////////////////////////////////////// - -#define EAX30_NUM_SCENARIOS 14 - -////////////////////////////////////////////////////// -// Number of Effect Scenarios with standardised // -// locations // -////////////////////////////////////////////////////// - -#define EAX30_NUM_STANDARD_SCENARIOS 5 - -////////////////////////////////////////////////////// -// Array of scenario names // -////////////////////////////////////////////////////// - -extern char* EAX30_SCENARIO_NAMES[]; - -////////////////////////////////////////////////////// -// Standardised Locations enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - EAX30_LOCATION_HALL = 0, - EAX30_LOCATION_LARGEROOM, - EAX30_LOCATION_MEDIUMROOM, - EAX30_LOCATION_SMALLROOM, - EAX30_LOCATION_CUPBOARD, - EAX30_LOCATION_ALCOVE, - EAX30_LOCATION_LONGPASSAGE, - EAX30_LOCATION_SHORTPASSAGE, - EAX30_LOCATION_COURTYARD -} -EAX30_LOCATION; - -////////////////////////////////////////////////////// -// Number of Standardised Locations // -////////////////////////////////////////////////////// - -#define EAX30_NUM_LOCATIONS 9 - -////////////////////////////////////////////////////// -// Array of standardised location names // -////////////////////////////////////////////////////// - -extern char* EAX30_LOCATION_NAMES[]; - -////////////////////////////////////////////////////// -// Number of effects in each scenario // -////////////////////////////////////////////////////// - -#define EAX30_NUM_ORIGINAL_PRESETS 26 -#define EAX30_NUM_CASTLE_PRESETS EAX30_NUM_LOCATIONS -#define EAX30_NUM_FACTORY_PRESETS EAX30_NUM_LOCATIONS -#define EAX30_NUM_ICEPALACE_PRESETS EAX30_NUM_LOCATIONS -#define EAX30_NUM_SPACESTATION_PRESETS EAX30_NUM_LOCATIONS -#define EAX30_NUM_WOODGALLEON_PRESETS EAX30_NUM_LOCATIONS -#define EAX30_NUM_SPORTS_PRESETS 7 -#define EAX30_NUM_PREFAB_PRESETS 5 -#define EAX30_NUM_DOMESNPIPES_PRESETS 6 -#define EAX30_NUM_OUTDOORS_PRESETS 5 -#define EAX30_NUM_MOOD_PRESETS 3 -#define EAX30_NUM_DRIVING_PRESETS 8 -#define EAX30_NUM_CITY_PRESETS 6 -#define EAX30_NUM_MISC_PRESETS 3 - -////////////////////////////////////////////////////// -// Standardised Location effects can be accessed // -// from a matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_STANDARD_PRESETS[EAX30_NUM_STANDARD_SCENARIOS][EAX30_NUM_LOCATIONS]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Original Preset effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - ORIGINAL_GENERIC = 0, - ORIGINAL_PADDEDCELL, - ORIGINAL_ROOM, - ORIGINAL_BATHROOM, - ORIGINAL_LIVINGROOM, - ORIGINAL_STONEROOM, - ORIGINAL_AUDITORIUM, - ORIGINAL_CONCERTHALL, - ORIGINAL_CAVE, - ORIGINAL_ARENA, - ORIGINAL_HANGAR, - ORIGINAL_CARPETTEDHALLWAY, - ORIGINAL_HALLWAY, - ORIGINAL_STONECORRIDOR, - ORIGINAL_ALLEY, - ORIGINAL_FOREST, - ORIGINAL_CITY, - ORIGINAL_MOUNTAINS, - ORIGINAL_QUARRY, - ORIGINAL_PLAIN, - ORIGINAL_PARKINGLOT, - ORIGINAL_SEWERPIPE, - ORIGINAL_UNDERWATER, - ORIGINAL_DRUGGED, - ORIGINAL_DIZZY, - ORIGINAL_PSYCHOTIC -} -EAX30_ORIGINAL_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of original environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_ORIGINAL_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Original effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_ORIGINAL_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Sports scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - SPORT_EMPTYSTADIUM=0, - SPORT_FULLSTADIUM, - SPORT_STADIUMTANNOY, - SPORT_SQUASHCOURT, - SPORT_SMALLSWIMMINGPOOL, - SPORT_LARGESWIMMINGPOOL, - SPORT_GYMNASIUM -} -EAX30_SPORTS_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of sport environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_SPORTS_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Sports effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_SPORTS_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Prefab scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - PREFAB_WORKSHOP, - PREFAB_SCHOOLROOM, - PREFAB_PRACTISEROOM, - PREFAB_OUTHOUSE, - PREFAB_CARAVAN -} -EAX30_PREFAB_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of prefab environment names // -////////////////////////////////////////////////////// - -char* EAX30_PREFAB_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Prefab effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_PREFAB_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Domes & Pipes effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - DOME_TOMB, - DOME_SAINTPAULS, - PIPE_SMALL, - PIPE_LONGTHIN, - PIPE_LARGE, - PIPE_RESONANT -} -EAX30_DOMESNPIPES_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of Domes & Pipes environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_DOMESNPIPES_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Domes & Pipes effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_DOMESNPIPES_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Outdoors scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - OUTDOORS_BACKYARD, - OUTDOORS_ROLLINGPLAINS, - OUTDOORS_DEEPCANYON, - OUTDOORS_CREEK, - OUTDOORS_VALLEY -} -EAX30_OUTDOORS_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of Outdoors environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_OUTDOORS_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Outdoors effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_OUTDOORS_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Mood scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - MOOD_HEAVEN, - MOOD_HELL, - MOOD_MEMORY -} -EAX30_MOOD_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of Mood environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_MOOD_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Mood effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_MOOD_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Driving scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - DRIVING_COMMENTATOR, - DRIVING_PITGARAGE, - DRIVING_INCAR_RACER, - DRIVING_INCAR_SPORTS, - DRIVING_INCAR_LUXURY, - DRIVING_FULLGRANDSTAND, - DRIVING_EMPTYGRANDSTAND, - DRIVING_TUNNEL -} -EAX30_DRIVING_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of driving environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_DRIVING_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Driving effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_DRIVING_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// City scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - CITY_STREETS, - CITY_SUBWAY, - CITY_MUSEUM, - CITY_LIBRARY, - CITY_UNDERPASS, - CITY_ABANDONED -} -EAX30_CITY_PRESET_ENUMS; - -////////////////////////////////////////////////////// -// Array of City environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_CITY_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// City effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_CITY_PRESETS[]; - -/********************************************************************************************************/ - -////////////////////////////////////////////////////// -// Misc scenario effects enumerated // -////////////////////////////////////////////////////// - -typedef enum -{ - DUSTYROOM, - CHAPEL, - SMALLWATERROOM -} -EAX30_MISC_PRESET_ENUMS; - - -////////////////////////////////////////////////////// -// Array of Misc environment names // -////////////////////////////////////////////////////// - -extern char* EAX30_MISC_PRESET_NAMES[]; - -////////////////////////////////////////////////////// -// Misc effects matrix // -////////////////////////////////////////////////////// - -extern EAXLISTENERPROPERTIES EAX30_MISC_PRESETS[]; - - -/***********************************************************************************************\ -* -* Material transmission presets -* -* Three values in this order :- -* -* 1. Occlusion (or Obstruction) -* 2. Occlusion LF Ratio (or Obstruction LF Ratio) -* 3. Occlusion Room Ratio -* -************************************************************************************************/ - - -// Single window material preset -#define EAX_MATERIAL_SINGLEWINDOW (-2800) -#define EAX_MATERIAL_SINGLEWINDOWLF 0.71f -#define EAX_MATERIAL_SINGLEWINDOWROOMRATIO 0.43f - -// Double window material preset -#define EAX_MATERIAL_DOUBLEWINDOW (-5000) -#define EAX_MATERIAL_DOUBLEWINDOWLF 0.40f -#define EAX_MATERIAL_DOUBLEWINDOWROOMRATIO 0.24f - -// Thin door material preset -#define EAX_MATERIAL_THINDOOR (-1800) -#define EAX_MATERIAL_THINDOORLF 0.66f -#define EAX_MATERIAL_THINDOORROOMRATIO 0.66f - -// Thick door material preset -#define EAX_MATERIAL_THICKDOOR (-4400) -#define EAX_MATERIAL_THICKDOORLF 0.64f -#define EAX_MATERIAL_THICKDOORROOMRATIO 0.27f - -// Wood wall material preset -#define EAX_MATERIAL_WOODWALL (-4000) -#define EAX_MATERIAL_WOODWALLLF 0.50f -#define EAX_MATERIAL_WOODWALLROOMRATIO 0.30f - -// Brick wall material preset -#define EAX_MATERIAL_BRICKWALL (-5000) -#define EAX_MATERIAL_BRICKWALLLF 0.60f -#define EAX_MATERIAL_BRICKWALLROOMRATIO 0.24f - -// Stone wall material preset -#define EAX_MATERIAL_STONEWALL (-6000) -#define EAX_MATERIAL_STONEWALLLF 0.68f -#define EAX_MATERIAL_STONEWALLROOMRATIO 0.20f - -// Curtain material preset -#define EAX_MATERIAL_CURTAIN (-1200) -#define EAX_MATERIAL_CURTAINLF 0.15f -#define EAX_MATERIAL_CURTAINROOMRATIO 1.00f - - -#endif // EAXUTIL_INCLUDED diff --git a/code/client/eax/vssver.scc b/code/client/eax/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..c3eaf0532ee5854ef3c6a51b58e5c509dcece1a1 GIT binary patch literal 64 zcmXpJVr2M{@S`hK$M6SwMP3SlidingDecodeBuffer); + + memset(p,0,(sizeof(*ch) - offsetof(channel_t,MP3SlidingDecodeBuffer)) - sizeof(ch->MP3SlidingDecodeBuffer)); +} // ==================================================================== // User-setable variables @@ -459,15 +476,23 @@ void S_Init( void ) { // clear out the lip synching override array memset(s_entityWavVol, 0, sizeof(s_entityWavVol)); - +/* if (s_khz->integer == 44) dma.speed = 44100; else if (s_khz->integer == 22) dma.speed = 22050; else dma.speed = 11025; +*/ + // Always at 22KHz for OpenAL + dma.speed = 22050; - return; + // These aren't really relevant for Open AL, but for completeness ... + dma.channels = 2; + dma.samplebits = 16; + dma.samples = 0; + dma.submission_chunk = 0; + dma.buffer = NULL; } else { @@ -510,6 +535,9 @@ void S_Shutdown( void ) return; } + S_FreeAllSFXMem(); + S_UnCacheDynamicMusic(); + if (s_UseOpenAL) { // Release all the AL Sources (including Music channel (Source 0)) @@ -518,9 +546,6 @@ void S_Shutdown( void ) alDeleteSources(1, &(s_channels[i].alSource)); } -// // Release all the AL Buffers here or not ? -// S_FreeAllSFXMem(); - // Release Streaming AL Buffers ch = s_channels + 1; for (i = 1; i < s_numChannels; i++, ch++) @@ -570,6 +595,32 @@ void S_Shutdown( void ) } + +/* + Mutes / Unmutes all OpenAL sound +*/ +void S_AL_MuteAllSounds(qboolean bMute) +{ + if (!s_soundStarted) + return; + + if (!s_UseOpenAL) + return; + + if (bMute) + { + alListenerf(AL_GAIN, 0.0f); + } + else + { + alListenerf(AL_GAIN, 1.0f); + } +} + + + + + // ======================================================================= // Load a sound // ======================================================================= @@ -950,7 +1001,7 @@ channel_t *S_PickChannel(int entnum, int entchannel) Com_Printf( S_COLOR_RED"***kicking %s\n", firstToDie->thesfx->sSoundName ); } - memset(firstToDie, 0, sizeof(*firstToDie)); + Channel_Clear(firstToDie); // memset(firstToDie, 0, sizeof(*firstToDie)); return firstToDie; } @@ -1096,7 +1147,7 @@ void S_SpatializeOrigin (const vec3_t origin, float master_vol, int *left_vol, i dist = VectorNormalize(source_vec); if ( channel == CHAN_VOICE ) { - dist -= SOUND_FULLVOLUME * 4.0f; + dist -= SOUND_FULLVOLUME * 3.0f; } else if ( channel == CHAN_VOICE_ATTEN ) { @@ -1371,15 +1422,18 @@ void S_ClearSoundBuffer( void ) { #endif s_rawend = 0; - if (dma.samplebits == 8) - clear = 0x80; - else - clear = 0; + if (!s_UseOpenAL) + { + if (dma.samplebits == 8) + clear = 0x80; + else + clear = 0; - SNDDMA_BeginPainting (); - if (dma.buffer) - memset(dma.buffer, clear, dma.samples * dma.samplebits/8); - SNDDMA_Submit (); + SNDDMA_BeginPainting (); + if (dma.buffer) + memset(dma.buffer, clear, dma.samples * dma.samplebits/8); + SNDDMA_Submit (); + } } @@ -1904,10 +1958,8 @@ void S_UpdateEntityPosition( int entityNum, const vec3_t origin ) } } } - else - { - VectorCopy( origin, s_entityPosition[entityNum] ); - } + + VectorCopy( origin, s_entityPosition[entityNum] ); } @@ -2143,7 +2195,7 @@ void S_Respatialize( int entityNum, const vec3_t head, vec3_t axis[3], qboolean continue; } if ( ch->loopSound ) { // loopSounds are regenerated fresh each frame - memset (ch, 0, sizeof(*ch)); + Channel_Clear(ch); // memset (ch, 0, sizeof(*ch)); continue; } @@ -2164,7 +2216,7 @@ void S_Respatialize( int entityNum, const vec3_t head, vec3_t axis[3], qboolean //NOTE: Made it so that voice sounds keep playing, even out of range // so that tasks waiting for sound completion keep proper timing if ( !( ch->entchannel == CHAN_VOICE || ch->entchannel == CHAN_VOICE_ATTEN || ch->entchannel == CHAN_VOICE_GLOBAL ) && !ch->leftvol && !ch->rightvol ) { - memset (ch, 0, sizeof(*ch)); + Channel_Clear(ch); // memset (ch, 0, sizeof(*ch)); continue; } } @@ -2372,8 +2424,8 @@ void S_Update_(void) { ch = s_channels; for ( i = 0; i < MAX_CHANNELS ; i++, ch++ ) - { - if ( !ch->thesfx || (ch->leftvol<0.25 && ch->rightvol<0.25 ) || (ch->bPlaying)) + { + if ( !ch->thesfx || (ch->bPlaying)) continue; // if ( ch->entchannel == CHAN_VOICE || ch->entchannel == CHAN_VOICE_ATTEN || ch->entchannel == CHAN_VOICE_GLOBAL ) @@ -2837,12 +2889,6 @@ void UpdateLoopingSounds() ch->master_vol = loop->volume; alSourcef(s_channels[i].alSource, AL_GAIN, (float)(ch->master_vol) / 255.f); -//#ifdef _DEBUG -// char szString[256]; -// sprintf(szString, "Updating position of Looping %s on channel %d to %.3f, %.3f, %.3f\n", ch->thesfx->sSoundName, i, pos[0], pos[1], pos[2]); -// OutputDebugString(szString); -//#endif - if (s_bEALFileLoaded) UpdateEAXBuffer(ch); @@ -2869,12 +2915,6 @@ void UpdateLoopingSounds() OutputDebugString(szString); } -//#ifdef _DEBUG -// char szString[256]; -// sprintf(szString, "Stopped looping %s on channel %d\n", ch->thesfx->sSoundName, i); -// OutputDebugString(szString); -//#endif - ch->thesfx = NULL; ch->bPlaying = false; } @@ -2934,12 +2974,6 @@ void UpdateLoopingSounds() alSourcePlay(s_channels[source].alSource); if (alGetError() == AL_NO_ERROR) s_channels[source].bPlaying = true; - -//#ifdef _DEBUG -// char szString[256]; -// sprintf(szString, "Looping %s on channel %d at %.3f, %.3f, %.3f\n", ch->thesfx->sSoundName, source, pos[0], pos[1], pos[2]); -// OutputDebugString(szString); -//#endif } } } @@ -3039,9 +3073,24 @@ void UpdateRawSamples() alGetSourcei(s_channels[0].alSource, AL_SOURCE_STATE, &state); if (state != AL_PLAYING) { -//#ifdef _DEBUG -// OutputDebugString("Restarting / Starting playback of Raw Samples\n"); -//#endif + // Stopped playing ... due to buffer underrun + // Unqueue any buffers still on the Source (they will be PROCESSED), and restart playback + alGetSourcei(s_channels[0].alSource, AL_BUFFERS_PROCESSED, &processed); + while (processed) + { + alSourceUnqueueBuffers(s_channels[0].alSource, 1, &buffer); + processed--; + alGetBufferi(buffer, AL_SIZE, &size); + alDeleteBuffers(1, &buffer); + + // Update sg.soundtime (+= number of samples played (number of bytes / 4)) + s_soundtime += (size >> 2); + } + +#ifdef _DEBUG + OutputDebugString("Restarting / Starting playback of Raw Samples\n"); +#endif + alSourcePlay(s_channels[0].alSource); } } @@ -3291,9 +3340,15 @@ void S_SoundList_f( void ) { int iTotalBytes = 0; qboolean bWavOnly = qfalse; + qboolean bShouldBeMP3 = qfalse; if ( Cmd_Argc() == 2 ) { + if (!stricmp(Cmd_Argv(1), "shouldbeMP3")) + { + bShouldBeMP3 = qtrue; + } + else if (!stricmp(Cmd_Argv(1), "wavonly")) { bWavOnly = qtrue; @@ -3318,7 +3373,7 @@ void S_SoundList_f( void ) { } else { - Com_Printf("( additional option available: 'wavonly', or '1'/'2'/'3' for %%d-variant capping )\n" ); + Com_Printf("( additional (mutually exclusive) options available:\n'wavonly', 'ShouldBeMP3', '1'/'2'/'3' for %%d-variant capping )\n" ); } @@ -3336,7 +3391,10 @@ void S_SoundList_f( void ) { for (sfx=s_knownSfx, i=0 ; ieSoundCompressionMethod == ct_16) + extern cvar_t *cv_MP3overhead; + qboolean bMP3DumpOverride = bShouldBeMP3 && cv_MP3overhead && !sfx->bDefaultSound && !sfx->pMP3StreamHeader && sfx->pSoundData && (Z_Size(sfx->pSoundData) > cv_MP3overhead->integer); + + if (bMP3DumpOverride || (!bShouldBeMP3 && (!bWavOnly || sfx->eSoundCompressionMethod == ct_16))) { qboolean bDumpThisOne = qtrue; if (iVariantCap >= 1 && iVariantCap <= 3) @@ -3538,7 +3596,7 @@ static void FreeMusic( MusicInfo_t *pMusicInfo ) } } -// called only by snd_restart +// called only by snd_shutdown (from snd_restart or app exit) // void S_UnCacheDynamicMusic( void ) { @@ -3548,7 +3606,7 @@ void S_UnCacheDynamicMusic( void ) } } -static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbDynamic, const char *intro, const char *loop ) +static qboolean S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbDynamic, const char *intro, const char *loop ) { int len; char dump[16]; @@ -3569,7 +3627,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD pMusicInfo->bIsMP3 = qfalse; if ( !intro[0] ) { - return; + return qfalse; } // new bit, if file requested is not same any loaded one (if prev was in-mem), ditch it... @@ -3593,7 +3651,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD if (!pMusicInfo->s_backgroundFile) { Com_Printf( S_COLOR_RED"Couldn't open music file %s\n", name ); - return; + return qfalse; } MP3MusicStream_Reset( pMusicInfo ); @@ -3602,7 +3660,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD int iInitialMP3ReadSize = 8192; // fairly arbitrary, whatever size this is then the decoder is allowed to // scan up to halfway of it to find floating headers, so don't make it // too small. 8k works fine. - + qboolean bMusicSucceeded = qfalse; if (qbDynamic) { if (!pMusicInfo->pLoadedData) @@ -3672,6 +3730,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD } pMusicInfo->bIsMP3 = qtrue; + bMusicSucceeded = qtrue; } else { @@ -3694,7 +3753,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD pMusicInfo->s_backgroundFile = 0; } - return; + return bMusicSucceeded; } else // not an mp3 file { @@ -3704,7 +3763,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD FS_FOpenFileRead( name, &pMusicInfo->s_backgroundFile, qtrue ); if ( !pMusicInfo->s_backgroundFile ) { Com_Printf( S_COLOR_YELLOW "WARNING: couldn't open music file %s\n", name ); - return; + return qfalse; } // skip the riff wav header @@ -3715,7 +3774,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD Com_Printf( S_COLOR_YELLOW "WARNING: No fmt chunk in %s\n", name ); FS_FCloseFile( pMusicInfo->s_backgroundFile ); pMusicInfo->s_backgroundFile = 0; - return; + return qfalse; } // save name for soundinfo @@ -3730,7 +3789,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD FS_FCloseFile( pMusicInfo->s_backgroundFile ); pMusicInfo->s_backgroundFile = 0; Com_Printf(S_COLOR_YELLOW "WARNING: Not a microsoft PCM format wav: %s\n", name); - return; + return qfalse; } if ( pMusicInfo->s_backgroundInfo.channels != 2 || pMusicInfo->s_backgroundInfo.rate != 22050 ) { @@ -3741,7 +3800,7 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD FS_FCloseFile( pMusicInfo->s_backgroundFile ); pMusicInfo->s_backgroundFile = 0; Com_Printf(S_COLOR_YELLOW "WARNING: No data chunk in %s\n", name); - return; + return qfalse; } pMusicInfo->s_backgroundInfo.samples = len / (pMusicInfo->s_backgroundInfo.width * pMusicInfo->s_backgroundInfo.channels); @@ -3753,6 +3812,8 @@ static void S_StartBackgroundTrack_Actual( MusicInfo_t *pMusicInfo, qboolean qbD // Sys_BeginStreamedFile( pMusicInfo->s_backgroundFile, 0x10000 ); } + + return qtrue; } @@ -4001,9 +4062,6 @@ void S_StartBackgroundTrack( const char *intro, const char *loop, qboolean bCall char sName[MAX_QPATH]; Q_strncpyz(sName,intro,sizeof(sName)); - if (!sName[0]) - return; // no music specified - COM_DefaultExtension( sName, sizeof( sName ), ".mp3" ); // if low physical memory, then just stream the explore music instead of playing dynamic... @@ -4017,7 +4075,6 @@ void S_StartBackgroundTrack( const char *intro, const char *loop, qboolean bCall } } - // conceptually we always play the 'intro'[/sName] track, intro-to-loop transition is handled in UpdateBackGroundTrack(). // if ( (strstr(sName,"/") && S_FileExists( sName )) ) // strstr() check avoids extra file-exists check at runtime if reverting from streamed music to dynamic since literal files all need at least one slash in their name (eg "music/blah") @@ -4031,15 +4088,18 @@ void S_StartBackgroundTrack( const char *intro, const char *loop, qboolean bCall { for (int i = eBGRNDTRACK_DATABEGIN; i != eBGRNDTRACK_DATAEND; i++) { + qboolean bOk = qfalse; LPCSTR psMusicName = Music_GetFileNameForState( (MusicState_e) i); if (psMusicName && (!Q_stricmp(tMusic_Info[i].sLoadedDataName, psMusicName) || S_FileExists( psMusicName )) ) { - S_StartBackgroundTrack_Actual( &tMusic_Info[i], qtrue, psMusicName, loop ); - tMusic_Info[i].bExists = qtrue; + bOk = S_StartBackgroundTrack_Actual( &tMusic_Info[i], qtrue, psMusicName, loop ); } - else + + tMusic_Info[i].bExists = bOk; + + if (!tMusic_Info[i].bExists) { - tMusic_Info[i].bExists = qfalse; + FreeMusic( &tMusic_Info[i] ); } } @@ -4049,7 +4109,6 @@ void S_StartBackgroundTrack( const char *intro, const char *loop, qboolean bCall for (i=0; ibInMemory && sfx->iLastTimeUsed < iOldest) + if (!sfx->bDefaultSound && sfx->bInMemory && sfx->iLastTimeUsed < iOldest) { // new bit, we can't throw away any sfx_t struct in use by a channel, else the paint code will crash... // @@ -4957,8 +5014,8 @@ void UpdateEAXBuffer(channel_t *ch) if (ch->fixed_origin) { EMSourcePoint.fX = ch->origin[0]; - EMSourcePoint.fY = ch->origin[1]; - EMSourcePoint.fZ = -ch->origin[2]; + EMSourcePoint.fY = ch->origin[2]; + EMSourcePoint.fZ = ch->origin[1]; } else { @@ -4967,15 +5024,16 @@ void UpdateEAXBuffer(channel_t *ch) // Source at same position as listener // Probably won't be any Occlusion / Obstruction effect -- unless the listener is underwater EMSourcePoint.fX = listener_pos[0]; - EMSourcePoint.fY = listener_pos[1]; - EMSourcePoint.fZ = -listener_pos[2]; + EMSourcePoint.fY = listener_pos[2]; + EMSourcePoint.fZ = listener_pos[1]; } else { // Get position of Entity EMSourcePoint.fX = loopSounds[ ch->entnum ].origin[0]; - EMSourcePoint.fY = loopSounds[ ch->entnum ].origin[1]; - EMSourcePoint.fZ = -loopSounds[ ch->entnum ].origin[2]; + EMSourcePoint.fY = loopSounds[ ch->entnum ].origin[2]; + EMSourcePoint.fZ = loopSounds[ ch->entnum ].origin[1]; + } } @@ -5036,3 +5094,328 @@ void EAXMorph() } } + +/***********************************************************************************************\ +* +* Definition of the EAXMorph function - EAX3ListenerInterpolate +* +\***********************************************************************************************/ + +/* + EAX3ListenerInterpolate + lpStart - Initial EAX 3 Listener parameters + lpFinish - Final EAX 3 Listener parameters + flRatio - Ratio Destination : Source (0.0 == Source, 1.0 == Destination) + lpResult - Interpolated EAX 3 Listener parameters + bCheckValues - Check EAX 3.0 parameters are in range, default = false (no checking) +*/ +bool EAX3ListenerInterpolate(LPEAXLISTENERPROPERTIES lpStart, LPEAXLISTENERPROPERTIES lpFinish, + float flRatio, LPEAXLISTENERPROPERTIES lpResult, bool bCheckValues) +{ + EAXVECTOR StartVector, FinalVector; + + float flInvRatio; + + if (bCheckValues) + { + if (!CheckEAX3LP(lpStart)) + return false; + + if (!CheckEAX3LP(lpFinish)) + return false; + } + + if (flRatio >= 1.0f) + { + memcpy(lpResult, lpFinish, sizeof(EAXLISTENERPROPERTIES)); + return true; + } + else if (flRatio <= 0.0f) + { + memcpy(lpResult, lpStart, sizeof(EAXLISTENERPROPERTIES)); + return true; + } + + flInvRatio = (1.0f - flRatio); + + // Environment + lpResult->ulEnvironment = 26; // (UNDEFINED environment) + + // Environment Size + if (lpStart->flEnvironmentSize == lpFinish->flEnvironmentSize) + lpResult->flEnvironmentSize = lpStart->flEnvironmentSize; + else + lpResult->flEnvironmentSize = (float)exp( (log(lpStart->flEnvironmentSize) * flInvRatio) + (log(lpFinish->flEnvironmentSize) * flRatio) ); + + // Environment Diffusion + if (lpStart->flEnvironmentDiffusion == lpFinish->flEnvironmentDiffusion) + lpResult->flEnvironmentDiffusion = lpStart->flEnvironmentDiffusion; + else + lpResult->flEnvironmentDiffusion = (lpStart->flEnvironmentDiffusion * flInvRatio) + (lpFinish->flEnvironmentDiffusion * flRatio); + + // Room + if (lpStart->lRoom == lpFinish->lRoom) + lpResult->lRoom = lpStart->lRoom; + else + lpResult->lRoom = (int)( ((float)lpStart->lRoom * flInvRatio) + ((float)lpFinish->lRoom * flRatio) ); + + // Room HF + if (lpStart->lRoomHF == lpFinish->lRoomHF) + lpResult->lRoomHF = lpStart->lRoomHF; + else + lpResult->lRoomHF = (int)( ((float)lpStart->lRoomHF * flInvRatio) + ((float)lpFinish->lRoomHF * flRatio) ); + + // Room LF + if (lpStart->lRoomLF == lpFinish->lRoomLF) + lpResult->lRoomLF = lpStart->lRoomLF; + else + lpResult->lRoomLF = (int)( ((float)lpStart->lRoomLF * flInvRatio) + ((float)lpFinish->lRoomLF * flRatio) ); + + // Decay Time + if (lpStart->flDecayTime == lpFinish->flDecayTime) + lpResult->flDecayTime = lpStart->flDecayTime; + else + lpResult->flDecayTime = (float)exp( (log(lpStart->flDecayTime) * flInvRatio) + (log(lpFinish->flDecayTime) * flRatio) ); + + // Decay HF Ratio + if (lpStart->flDecayHFRatio == lpFinish->flDecayHFRatio) + lpResult->flDecayHFRatio = lpStart->flDecayHFRatio; + else + lpResult->flDecayHFRatio = (float)exp( (log(lpStart->flDecayHFRatio) * flInvRatio) + (log(lpFinish->flDecayHFRatio) * flRatio) ); + + // Decay LF Ratio + if (lpStart->flDecayLFRatio == lpFinish->flDecayLFRatio) + lpResult->flDecayLFRatio = lpStart->flDecayLFRatio; + else + lpResult->flDecayLFRatio = (float)exp( (log(lpStart->flDecayLFRatio) * flInvRatio) + (log(lpFinish->flDecayLFRatio) * flRatio) ); + + // Reflections + if (lpStart->lReflections == lpFinish->lReflections) + lpResult->lReflections = lpStart->lReflections; + else + lpResult->lReflections = (int)( ((float)lpStart->lReflections * flInvRatio) + ((float)lpFinish->lReflections * flRatio) ); + + // Reflections Delay + if (lpStart->flReflectionsDelay == lpFinish->flReflectionsDelay) + lpResult->flReflectionsDelay = lpStart->flReflectionsDelay; + else + lpResult->flReflectionsDelay = (float)exp( (log(lpStart->flReflectionsDelay+0.0001) * flInvRatio) + (log(lpFinish->flReflectionsDelay+0.0001) * flRatio) ); + + // Reflections Pan + + // To interpolate the vector correctly we need to ensure that both the initial and final vectors vectors are clamped to a length of 1.0f + StartVector = lpStart->vReflectionsPan; + FinalVector = lpFinish->vReflectionsPan; + + Clamp(&StartVector); + Clamp(&FinalVector); + + if (lpStart->vReflectionsPan.x == lpFinish->vReflectionsPan.x) + lpResult->vReflectionsPan.x = lpStart->vReflectionsPan.x; + else + lpResult->vReflectionsPan.x = FinalVector.x + (flInvRatio * (StartVector.x - FinalVector.x)); + + if (lpStart->vReflectionsPan.y == lpFinish->vReflectionsPan.y) + lpResult->vReflectionsPan.y = lpStart->vReflectionsPan.y; + else + lpResult->vReflectionsPan.y = FinalVector.y + (flInvRatio * (StartVector.y - FinalVector.y)); + + if (lpStart->vReflectionsPan.z == lpFinish->vReflectionsPan.z) + lpResult->vReflectionsPan.z = lpStart->vReflectionsPan.z; + else + lpResult->vReflectionsPan.z = FinalVector.z + (flInvRatio * (StartVector.z - FinalVector.z)); + + // Reverb + if (lpStart->lReverb == lpFinish->lReverb) + lpResult->lReverb = lpStart->lReverb; + else + lpResult->lReverb = (int)( ((float)lpStart->lReverb * flInvRatio) + ((float)lpFinish->lReverb * flRatio) ); + + // Reverb Delay + if (lpStart->flReverbDelay == lpFinish->flReverbDelay) + lpResult->flReverbDelay = lpStart->flReverbDelay; + else + lpResult->flReverbDelay = (float)exp( (log(lpStart->flReverbDelay+0.0001) * flInvRatio) + (log(lpFinish->flReverbDelay+0.0001) * flRatio) ); + + // Reverb Pan + + // To interpolate the vector correctly we need to ensure that both the initial and final vectors are clamped to a length of 1.0f + StartVector = lpStart->vReverbPan; + FinalVector = lpFinish->vReverbPan; + + Clamp(&StartVector); + Clamp(&FinalVector); + + if (lpStart->vReverbPan.x == lpFinish->vReverbPan.x) + lpResult->vReverbPan.x = lpStart->vReverbPan.x; + else + lpResult->vReverbPan.x = FinalVector.x + (flInvRatio * (StartVector.x - FinalVector.x)); + + if (lpStart->vReverbPan.y == lpFinish->vReverbPan.y) + lpResult->vReverbPan.y = lpStart->vReverbPan.y; + else + lpResult->vReverbPan.y = FinalVector.y + (flInvRatio * (StartVector.y - FinalVector.y)); + + if (lpStart->vReverbPan.z == lpFinish->vReverbPan.z) + lpResult->vReverbPan.z = lpStart->vReverbPan.z; + else + lpResult->vReverbPan.z = FinalVector.z + (flInvRatio * (StartVector.z - FinalVector.z)); + + // Echo Time + if (lpStart->flEchoTime == lpFinish->flEchoTime) + lpResult->flEchoTime = lpStart->flEchoTime; + else + lpResult->flEchoTime = (float)exp( (log(lpStart->flEchoTime) * flInvRatio) + (log(lpFinish->flEchoTime) * flRatio) ); + + // Echo Depth + if (lpStart->flEchoDepth == lpFinish->flEchoDepth) + lpResult->flEchoDepth = lpStart->flEchoDepth; + else + lpResult->flEchoDepth = (lpStart->flEchoDepth * flInvRatio) + (lpFinish->flEchoDepth * flRatio); + + // Modulation Time + if (lpStart->flModulationTime == lpFinish->flModulationTime) + lpResult->flModulationTime = lpStart->flModulationTime; + else + lpResult->flModulationTime = (float)exp( (log(lpStart->flModulationTime) * flInvRatio) + (log(lpFinish->flModulationTime) * flRatio) ); + + // Modulation Depth + if (lpStart->flModulationDepth == lpFinish->flModulationDepth) + lpResult->flModulationDepth = lpStart->flModulationDepth; + else + lpResult->flModulationDepth = (lpStart->flModulationDepth * flInvRatio) + (lpFinish->flModulationDepth * flRatio); + + // Air Absorption HF + if (lpStart->flAirAbsorptionHF == lpFinish->flAirAbsorptionHF) + lpResult->flAirAbsorptionHF = lpStart->flAirAbsorptionHF; + else + lpResult->flAirAbsorptionHF = (lpStart->flAirAbsorptionHF * flInvRatio) + (lpFinish->flAirAbsorptionHF * flRatio); + + // HF Reference + if (lpStart->flHFReference == lpFinish->flHFReference) + lpResult->flHFReference = lpStart->flHFReference; + else + lpResult->flHFReference = (float)exp( (log(lpStart->flHFReference) * flInvRatio) + (log(lpFinish->flHFReference) * flRatio) ); + + // LF Reference + if (lpStart->flLFReference == lpFinish->flLFReference) + lpResult->flLFReference = lpStart->flLFReference; + else + lpResult->flLFReference = (float)exp( (log(lpStart->flLFReference) * flInvRatio) + (log(lpFinish->flLFReference) * flRatio) ); + + // Room Rolloff Factor + if (lpStart->flRoomRolloffFactor == lpFinish->flRoomRolloffFactor) + lpResult->flRoomRolloffFactor = lpStart->flRoomRolloffFactor; + else + lpResult->flRoomRolloffFactor = (lpStart->flRoomRolloffFactor * flInvRatio) + (lpFinish->flRoomRolloffFactor * flRatio); + + // Flags + lpResult->ulFlags = (lpStart->ulFlags & lpFinish->ulFlags); + + // Clamp Delays + if (lpResult->flReflectionsDelay > EAXLISTENER_MAXREFLECTIONSDELAY) + lpResult->flReflectionsDelay = EAXLISTENER_MAXREFLECTIONSDELAY; + + if (lpResult->flReverbDelay > EAXLISTENER_MAXREVERBDELAY) + lpResult->flReverbDelay = EAXLISTENER_MAXREVERBDELAY; + + return true; +} + + +/* + CheckEAX3LP + Checks that the parameters in the EAX 3 Listener Properties structure are in-range +*/ +bool CheckEAX3LP(LPEAXLISTENERPROPERTIES lpEAX3LP) +{ + if ( (lpEAX3LP->lRoom < EAXLISTENER_MINROOM) || (lpEAX3LP->lRoom > EAXLISTENER_MAXROOM) ) + return false; + + if ( (lpEAX3LP->lRoomHF < EAXLISTENER_MINROOMHF) || (lpEAX3LP->lRoomHF > EAXLISTENER_MAXROOMHF) ) + return false; + + if ( (lpEAX3LP->lRoomLF < EAXLISTENER_MINROOMLF) || (lpEAX3LP->lRoomLF > EAXLISTENER_MAXROOMLF) ) + return false; + + if ( (lpEAX3LP->ulEnvironment < EAXLISTENER_MINENVIRONMENT) || (lpEAX3LP->ulEnvironment > EAXLISTENER_MAXENVIRONMENT) ) + return false; + + if ( (lpEAX3LP->flEnvironmentSize < EAXLISTENER_MINENVIRONMENTSIZE) || (lpEAX3LP->flEnvironmentSize > EAXLISTENER_MAXENVIRONMENTSIZE) ) + return false; + + if ( (lpEAX3LP->flEnvironmentDiffusion < EAXLISTENER_MINENVIRONMENTDIFFUSION) || (lpEAX3LP->flEnvironmentDiffusion > EAXLISTENER_MAXENVIRONMENTDIFFUSION) ) + return false; + + if ( (lpEAX3LP->flDecayTime < EAXLISTENER_MINDECAYTIME) || (lpEAX3LP->flDecayTime > EAXLISTENER_MAXDECAYTIME) ) + return false; + + if ( (lpEAX3LP->flDecayHFRatio < EAXLISTENER_MINDECAYHFRATIO) || (lpEAX3LP->flDecayHFRatio > EAXLISTENER_MAXDECAYHFRATIO) ) + return false; + + if ( (lpEAX3LP->flDecayLFRatio < EAXLISTENER_MINDECAYLFRATIO) || (lpEAX3LP->flDecayLFRatio > EAXLISTENER_MAXDECAYLFRATIO) ) + return false; + + if ( (lpEAX3LP->lReflections < EAXLISTENER_MINREFLECTIONS) || (lpEAX3LP->lReflections > EAXLISTENER_MAXREFLECTIONS) ) + return false; + + if ( (lpEAX3LP->flReflectionsDelay < EAXLISTENER_MINREFLECTIONSDELAY) || (lpEAX3LP->flReflectionsDelay > EAXLISTENER_MAXREFLECTIONSDELAY) ) + return false; + + if ( (lpEAX3LP->lReverb < EAXLISTENER_MINREVERB) || (lpEAX3LP->lReverb > EAXLISTENER_MAXREVERB) ) + return false; + + if ( (lpEAX3LP->flReverbDelay < EAXLISTENER_MINREVERBDELAY) || (lpEAX3LP->flReverbDelay > EAXLISTENER_MAXREVERBDELAY) ) + return false; + + if ( (lpEAX3LP->flEchoTime < EAXLISTENER_MINECHOTIME) || (lpEAX3LP->flEchoTime > EAXLISTENER_MAXECHOTIME) ) + return false; + + if ( (lpEAX3LP->flEchoDepth < EAXLISTENER_MINECHODEPTH) || (lpEAX3LP->flEchoDepth > EAXLISTENER_MAXECHODEPTH) ) + return false; + + if ( (lpEAX3LP->flModulationTime < EAXLISTENER_MINMODULATIONTIME) || (lpEAX3LP->flModulationTime > EAXLISTENER_MAXMODULATIONTIME) ) + return false; + + if ( (lpEAX3LP->flModulationDepth < EAXLISTENER_MINMODULATIONDEPTH) || (lpEAX3LP->flModulationDepth > EAXLISTENER_MAXMODULATIONDEPTH) ) + return false; + + if ( (lpEAX3LP->flAirAbsorptionHF < EAXLISTENER_MINAIRABSORPTIONHF) || (lpEAX3LP->flAirAbsorptionHF > EAXLISTENER_MAXAIRABSORPTIONHF) ) + return false; + + if ( (lpEAX3LP->flHFReference < EAXLISTENER_MINHFREFERENCE) || (lpEAX3LP->flHFReference > EAXLISTENER_MAXHFREFERENCE) ) + return false; + + if ( (lpEAX3LP->flLFReference < EAXLISTENER_MINLFREFERENCE) || (lpEAX3LP->flLFReference > EAXLISTENER_MAXLFREFERENCE) ) + return false; + + if ( (lpEAX3LP->flRoomRolloffFactor < EAXLISTENER_MINROOMROLLOFFFACTOR) || (lpEAX3LP->flRoomRolloffFactor > EAXLISTENER_MAXROOMROLLOFFFACTOR) ) + return false; + + if (lpEAX3LP->ulFlags & EAXLISTENERFLAGS_RESERVED) + return false; + + return true; +} + +/* + Clamp + Clamps the length of the vector to 1.0f +*/ +void Clamp(EAXVECTOR *eaxVector) +{ + float flMagnitude; + float flInvMagnitude; + + flMagnitude = (float)sqrt((eaxVector->x*eaxVector->x) + (eaxVector->y*eaxVector->y) + (eaxVector->z*eaxVector->z)); + + if (flMagnitude <= 1.0f) + return; + + flInvMagnitude = 1.0f / flMagnitude; + + eaxVector->x *= flInvMagnitude; + eaxVector->y *= flInvMagnitude; + eaxVector->z *= flInvMagnitude; +} + diff --git a/code/client/snd_local.h b/code/client/snd_local.h index c041f05..bab7ee3 100644 --- a/code/client/snd_local.h +++ b/code/client/snd_local.h @@ -13,7 +13,10 @@ #include "openal\alc.h" #include "eax\eax.h" #include "eax\eaxman.h" -#include "eax\eax-util.h" + +// Added for Open AL to know when to mute all sounds (e.g when app. loses focus) +void S_AL_MuteAllSounds(qboolean bMute); + //from SND_AMBIENT extern void AS_Init( void ); diff --git a/code/client/snd_mem.cpp b/code/client/snd_mem.cpp index 2c7fc54..2a9f3ff 100644 --- a/code/client/snd_mem.cpp +++ b/code/client/snd_mem.cpp @@ -10,7 +10,7 @@ // Open AL void S_PreProcessLipSync(sfx_t *sfx); - +extern int s_UseOpenAL; /* =============================================================================== @@ -748,7 +748,7 @@ static qboolean S_LoadSound_Actual( sfx_t *sfx ) { // Com_DPrintf("(Keeping file \"%s\" as MP3)\n",sLoadName); - if (extern s_UseOpenAL) + if (s_UseOpenAL) { // Create space for lipsync data (4 lip sync values per streaming AL buffer) if (strstr(sfx->sSoundName, "chars")) @@ -790,7 +790,7 @@ static qboolean S_LoadSound_Actual( sfx_t *sfx ) S_LoadSound_Finalize(&info,sfx,pbUnpackBuffer); // Open AL - if (extern s_UseOpenAL) + if (s_UseOpenAL) { if (strstr(sfx->sSoundName, "chars")) { @@ -860,7 +860,7 @@ static qboolean S_LoadSound_Actual( sfx_t *sfx ) ResampleSfx( sfx, info.rate, info.width, data + info.dataofs ); // Open AL - if (extern s_UseOpenAL) + if (s_UseOpenAL) { if (strstr(sfx->sSoundName, "char")) { diff --git a/code/client/snd_public.h b/code/client/snd_public.h index d42df55..15a2756 100644 --- a/code/client/snd_public.h +++ b/code/client/snd_public.h @@ -18,9 +18,7 @@ float S_GetSampleLengthInMilliSeconds( sfxHandle_t sfxHandle); // cinematics and voice-over-network will send raw samples // 1.0 volume will be direct output of source samples -void S_RawSamples (int samples, int rate, int width, int channels, - const byte *data, float volume); - +void S_RawSamples( int samples, int rate, int width, int s_channels, const byte *data, float volume, qboolean bFirstOrOnlyUpdateThisFrame ); // stop all sounds void S_StopSounds(void); // from snd_dma.cpp // stop all sounds and the background track diff --git a/code/client/vssver.scc b/code/client/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..568b4bf7b951f947970a972429b8809964228b76 GIT binary patch literal 480 zcmW;ITPVX(90&0KvRNa{{p|lYVYv)>Kyn{xl(|GnE41=z9+Yw`9yX!j`JdF>#>{m# zavh`asBATwMWMxmyjV*4{&ybEIiGX-o!_@p7{j9in!r?BnzF_)9BUf-WO?14x4Mi> zDmd1#dLC2{7N+e2{e&XmAmQ*fTt9zkn*Qw|+K8%T3X2SmZmUVz9TqF~O8{rdJ zXPzaKbq+cPK83|TgZ#a!gO0gXy$E939m7JoSi)^t{IY7Al>$w!wsJb8Ijb;SR+NzeTokDUHDWKW*QG AC;$Ke literal 0 HcmV?d00001 diff --git a/code/encryption/vssver.scc b/code/encryption/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..255a8484ae9a9fa52757a3efc06a2ea4b95a9aec GIT binary patch literal 144 zcmXpJVr2M{@S`hK$F literal 0 HcmV?d00001 diff --git a/code/ghoul2/g2.h b/code/ghoul2/g2.h index c63536a..25284a0 100644 --- a/code/ghoul2/g2.h +++ b/code/ghoul2/g2.h @@ -171,7 +171,9 @@ char *G2API_GetAnimFileNameIndex(qhandle_t modelIndex); int G2API_GetSurfaceRenderStatus(CGhoul2Info *ghlInfo, const char *surfaceName); // From tr_ghoul2.cpp -void G2_ConstructGhoulSkeleton( CGhoul2Info_v &ghoul2, const int frameNum, qhandle_t *modelList, bool checkForNewOrigin, const vec3_t position, const vec3_t scale, bool modelSet); +void G2_ConstructGhoulSkeleton( CGhoul2Info_v &ghoul2,const int frameNum,bool checkForNewOrigin,const vec3_t scale); +void G2_GetBoltMatrixLow(CGhoul2Info &ghoul2,int boltNum,const vec3_t scale,mdxaBone_t &retMatrix); +void G2_TimingModel(boneInfo_t &bone,int time,int numFramesInFile,int ¤tFrame,int &newFrame,float &lerp); #endif // G2_H_INC \ No newline at end of file diff --git a/code/ghoul2/g2_api.cpp b/code/ghoul2/g2_api.cpp index 1a34b4e..64a08bc 100644 --- a/code/ghoul2/g2_api.cpp +++ b/code/ghoul2/g2_api.cpp @@ -2,7 +2,14 @@ // #include "../server/exe_headers.h" +#pragma warning( disable : 4786) +#pragma warning( disable : 4100) +#pragma warning( disable : 4511) + +#pragma warning (push, 3) //go back down to 3 for the stl include #include +#include +#pragma warning (pop) #ifndef __Q_SHARED_H #include "../game/q_shared.h" @@ -20,15 +27,190 @@ #include "..\qcommon\MiniHeap.h" #endif + +using namespace std; + extern mdxaBone_t worldMatrix; extern mdxaBone_t worldMatrixInv; +extern cvar_t *r_Ghoul2TimeBase; + +#define G2_DEBUG_TIME (0) + +static int G2TimeBases[NUM_G2T_TIME]; + + +#if _DEBUG +#define MAX_ERROR_PRINTS (25) +class ErrorReporter +{ + string mName; + map mErrors; +public: + ErrorReporter(const string &name) : + mName(name) + { + } + ~ErrorReporter() + { + char mess[1000]; + int total=0; + sprintf(mess,"****** %s Error Report Begin******\n",mName.c_str()); + OutputDebugString(mess); + + map::iterator i; + for (i=mErrors.begin();i!=mErrors.end();i++) + { + total+=(*i).second; + sprintf(mess,"%s (hits %d)\n",(*i).first.c_str(),(*i).second); + OutputDebugString(mess); + } + + sprintf(mess,"****** %s Error Report End %d errors of %d kinds******\n",mName.c_str(),total,mErrors.size()); + OutputDebugString(mess); + } + int Error(const char *m,int kind,const char *, int line) + { + char mess[1000]; + assert(m); + string full=mName; + if (kind==2) + { + full+=":NOTE: "; + } + else if (kind==1) + { + full+=":WARNING: "; + } + else + { + full+=":ERROR : "; + } + full+=m; + sprintf(mess," [line %d]",line); + full+=mess; + + // assert(0); + int ret=0; //place a breakpoint here + map::iterator f=mErrors.find(full); + if (f==mErrors.end()) + { + ret++; // or a breakpoint here for the first occurance + mErrors.insert(pair(full,0)); + f=mErrors.find(full); + } + assert(f!=mErrors.end()); + (*f).second++; + if ((*f).second==1000) + { + ret*=-1; // breakpoint to find a specific occurance of an error + } + if ((*f).second<=MAX_ERROR_PRINTS&&kind<2) + { + Com_Printf("%s (hit # %d)\n",full.c_str(),(*f).second); + if (1) + { + sprintf(mess,"%s (hit # %d)\n",full.c_str(),(*f).second); + OutputDebugString(mess); + } + } + return ret; + } +}; + +#include "assert.h" +ErrorReporter &G2APIError() +{ + static ErrorReporter singleton("G2API"); + return singleton; +} + +#define G2ERROR(exp,m) (void)( (exp) || (G2APIError().Error(m,0,__FILE__,__LINE__), 0) ) +#define G2WARNING(exp,m) (void)( (exp) || (G2APIError().Error(m,1,__FILE__,__LINE__), 0) ) +#define G2NOTE(exp,m) (void)( (exp) || (G2APIError().Error(m,2,__FILE__,__LINE__), 0) ) +#else + +#define G2ERROR(exp,m) ((void)0) +#define G2WARNING(exp,m) ((void)0) +#define G2NOTE(exp,m) ((void)0) + +#endif + +#ifdef _DEBUG +void G2_Bone_Not_Found(const char *boneName,const char *modName) +{ + G2ERROR(boneName,"NULL Bone Name"); + G2ERROR(boneName[0],"Empty Bone Name"); + if (boneName) + { + G2WARNING(0,va("Bone Not Found (%s:%s)",boneName,modName)); + } +} + +void G2_Bolt_Not_Found(const char *boneName,const char *modName) +{ + G2ERROR(boneName,"NULL Bolt/Bone Name"); + G2ERROR(boneName[0],"Empty Bolt/Bone Name"); + if (boneName) + { + G2WARNING(0,va("Bolt/Bone Not Found (%s:%s)",boneName,modName)); + } +} +#endif + +void G2API_SetTime(int currentTime,int clock) +{ + assert(clock>=0&&clockinteger>0&&r_Ghoul2TimeBase->integer<=NUM_G2T_TIME) + { + timeBase=r_Ghoul2TimeBase->integer; + ret=G2TimeBases[r_Ghoul2TimeBase->integer-1]; + } +#if _DEBUG + if (LastTimeBase!=timeBase) + { + LastTimeBase=timeBase; + if (timeBase==0) + { + Com_Printf("Ghoul2: Using argument time\n"); + } + if (timeBase==1) + { + Com_Printf("Ghoul2: Using server time\n"); + } + if (timeBase==2) + { + Com_Printf("Ghoul2: Using client time\n"); + } + } +#endif +#if G2_DEBUG_TIME + Com_Printf("Ghoul2: Get Time: in%6d c%6d s%6d returning %6d\n",argTime,G2TimeBases[1],G2TimeBases[0],ret); +#endif + return ret; +} + + // must be a power of two #define MAX_G2_MODELS (512) #define G2_MODEL_BITS (9) #define G2_INDEX_MASK (MAX_G2_MODELS-1) - +void RemoveBoneCache(CBoneCache *boneCache); class Ghoul2InfoArray : public IGhoul2InfoArray { @@ -37,7 +219,16 @@ class Ghoul2InfoArray : public IGhoul2InfoArray list mFreeIndecies; void DeleteLow(int idx) { + { + int model; + for (model=0; model< mInfos[idx].size(); model++) + { + RemoveBoneCache(mInfos[idx][model].mBoneCache); + mInfos[idx][model].mBoneCache=0; + } + } mInfos[idx].clear(); + if ((mIds[idx]>>G2_MODEL_BITS)>(1<<(31-G2_MODEL_BITS))) { mIds[idx]=MAX_G2_MODELS+idx; //rollover reset id to minimum value @@ -201,8 +392,9 @@ int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int model int model = -1; CGhoul2Info newModel; + G2ERROR(fileName&&fileName[0],"NULL filename"); - if (!(fileName[0])) + if (!fileName||!fileName[0]) { assert(fileName[0]); return -1; @@ -218,6 +410,7 @@ int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int model // on the game side this is valid. On the client side it is valid only after it has been filled in by trap_G2_SetGhoul2ModelIndexes ghoul2[model].mModel = RE_RegisterModel((char *)fileName); model_t *mod_m = R_GetModelByHandle(ghoul2[model].mModel); + G2ERROR(mod_m->type != MOD_BAD,va("Bad Model Type (%s)",fileName)); if (mod_m->type == MOD_BAD) { return -1; @@ -229,7 +422,6 @@ int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int model ghoul2[model].mCustomShader = customShader; ghoul2[model].mCustomSkin = customSkin; strcpy(ghoul2[model].mFileName, fileName); - ghoul2[model].mCreationID = modelFlags; ghoul2[model].mLodBias = lodBias; ghoul2[model].mAnimFrameDefault = 0; ghoul2[model].mFlags = 0; @@ -245,6 +437,7 @@ int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int model // on the game side this is valid. On the client side it is valid only after it has been filled in by trap_G2_SetGhoul2ModelIndexes newModel.mModel = RE_RegisterModel((char *)fileName); model_t *mod_m = R_GetModelByHandle(newModel.mModel); + G2ERROR(mod_m->type != MOD_BAD,va("Bad Model Type (%s)",fileName)); if (mod_m->type == MOD_BAD) { return -1; @@ -256,7 +449,6 @@ int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int model newModel.mCustomShader = customShader; newModel.mCustomSkin = customSkin; strcpy(newModel.mFileName, fileName); - newModel.mCreationID = modelFlags; newModel.mLodBias = lodBias; newModel.mAnimFrameDefault = 0; newModel.mFlags = 0; @@ -273,6 +465,7 @@ int G2API_InitGhoul2Model(CGhoul2Info_v &ghoul2, const char *fileName, int model qboolean G2API_SetLodBias(CGhoul2Info *ghlInfo, int lodBias) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { ghlInfo->mLodBias = lodBias; @@ -283,6 +476,7 @@ qboolean G2API_SetLodBias(CGhoul2Info *ghlInfo, int lodBias) qboolean G2API_SetSkin(CGhoul2Info *ghlInfo, qhandle_t customSkin) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { ghlInfo->mCustomSkin = customSkin; @@ -293,6 +487,7 @@ qboolean G2API_SetSkin(CGhoul2Info *ghlInfo, qhandle_t customSkin) qboolean G2API_SetShader(CGhoul2Info *ghlInfo, qhandle_t customShader) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { ghlInfo->mCustomShader = customShader; @@ -303,6 +498,7 @@ qboolean G2API_SetShader(CGhoul2Info *ghlInfo, qhandle_t customShader) qboolean G2API_SetSurfaceOnOff(CGhoul2Info *ghlInfo, const char *surfaceName, const int flags) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { // ensure we flush the cache @@ -314,6 +510,7 @@ qboolean G2API_SetSurfaceOnOff(CGhoul2Info *ghlInfo, const char *surfaceName, co int G2API_GetSurfaceOnOff(CGhoul2Info *ghlInfo, const char *surfaceName) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { return G2_IsSurfaceOff(ghlInfo->mFileName, ghlInfo->mSlist, surfaceName); @@ -323,11 +520,22 @@ int G2API_GetSurfaceOnOff(CGhoul2Info *ghlInfo, const char *surfaceName) qboolean G2API_SetRootSurface(CGhoul2Info_v &ghlInfo, const int modelIndex, const char *surfaceName) { - return G2_SetRootSurface(ghlInfo, modelIndex, ghlInfo[modelIndex].mFileName, surfaceName); + G2ERROR(ghlInfo.IsValid(),"Invalid ghlInfo"); + G2ERROR(surfaceName,"Invalid surfaceName"); + if (ghlInfo.IsValid()) + { + G2ERROR(modelIndex>=0&&modelIndex=0&&modelIndexmFileName, index); @@ -360,6 +570,8 @@ int G2API_GetParentSurface(CGhoul2Info *ghlInfo, const int index) int G2API_GetSurfaceRenderStatus(CGhoul2Info *ghlInfo, const char *surfaceName) { + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(surfaceName,"Invalid surfaceName"); if (ghlInfo) { return G2_IsSurfaceRendered(ghlInfo->mFileName, surfaceName, ghlInfo->mSlist); @@ -370,10 +582,11 @@ int G2API_GetSurfaceRenderStatus(CGhoul2Info *ghlInfo, const char *surfaceName) qboolean G2API_RemoveGhoul2Model(CGhoul2Info_v &ghlInfo, const int modelIndex) { // sanity check - if (!ghlInfo.size() || (ghlInfo.size() <= modelIndex) || (ghlInfo[modelIndex].mModelindex == -1)) + if (!ghlInfo.size() || (ghlInfo.size() <= modelIndex) || (ghlInfo[modelIndex].mModelindex <0)) { // if we hit this assert then we are trying to delete a ghoul2 model on a ghoul2 instance that // one way or another is already gone. + G2ERROR(0,"Remove Nonexistant Model"); assert(0 && "remove non existing model"); return qfalse; } @@ -383,6 +596,8 @@ qboolean G2API_RemoveGhoul2Model(CGhoul2Info_v &ghlInfo, const int modelIndex) ghlInfo[modelIndex].mBltlist.clear(); ghlInfo[modelIndex].mSlist.clear(); + RemoveBoneCache(ghlInfo[modelIndex].mBoneCache); + ghlInfo[modelIndex].mBoneCache=0; // set us to be the 'not active' state ghlInfo[modelIndex].mModelindex = -1; @@ -412,43 +627,148 @@ qboolean G2API_RemoveGhoul2Model(CGhoul2Info_v &ghlInfo, const int modelIndex) qboolean G2API_SetBoneAnimIndex(CGhoul2Info *ghlInfo, const int index, const int startFrame, const int endFrame, const int flags, const float animSpeed, const int currentTime, const float setFrame, const int blendTime) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - // ensure we flush the cache - ghlInfo->mSkelFrameNum = 0; - return G2_Set_Bone_Anim_Index(ghlInfo->mBlist, index, startFrame, endFrame, flags, animSpeed, currentTime, setFrame, blendTime); +#if _DEBUG + ghlInfo->mModel = RE_RegisterModel(ghlInfo->mFileName); + const model_t *currentModel = R_GetModelByHandle(ghlInfo->mModel); + G2ERROR(currentModel&¤tModel->mdxm,va("Bad Model (glm) %s",ghlInfo->mFileName)); + if (currentModel&¤tModel->mdxm) + { + const model_t *animModel = R_GetModelByHandle(currentModel->mdxm->animIndex); + G2ERROR(animModel,va("Bad Model (gla) %s",ghlInfo->mFileName)); + if (animModel) + { + const mdxaHeader_t *aHeader = animModel->mdxa; + G2ERROR(aHeader,va("Bad Model (gla) %s",ghlInfo->mFileName)); + if (aHeader) + { + G2ERROR(startFrame>=0,"startframe<0"); + G2ERROR(startFramenumFrames,"startframe>=numframes"); + G2ERROR(endFrame>0,"endframe<=0"); + G2ERROR(endFrame<=aHeader->numFrames,"endframe>numframes"); + G2ERROR(setFramenumFrames,"setframe>=numframes"); + G2ERROR(setFrame==-1.0f||setFrame>=0.0f,"setframe<0 but not -1"); + +#else + { + { + { +#endif + if (startFrame<0)//||startFrame>=aHeader->numFrames) + { + *(int *)&startFrame=0; // cast away const + } + if (endFrame<=0)//||endFrame>aHeader->numFrames) + { + *(int *)&endFrame=1; + } + if (setFrame!=-1.0f&&(setFrame<0.0f/*||setFrame>=(float)aHeader->numFrames*/)) + { + *(float *)&setFrame=0.0f; + } + ghlInfo->mSkelFrameNum = 0; + G2ERROR(index>=0&&indexmBlist.size(),"Bad Bone Index"); + if (index>=0&&indexmBlist.size()) + { + G2ERROR(ghlInfo->mBlist[index].boneNumber>=0,"Bad Bone Index"); + ret=G2_Set_Bone_Anim_Index(ghlInfo->mBlist, index, startFrame, endFrame, flags, animSpeed, currentTime, setFrame, blendTime); + } + } + } + } } - return qfalse; + G2WARNING(ret,"G2API_SetBoneAnimIndex Failed"); + return ret; } qboolean G2API_SetBoneAnim(CGhoul2Info *ghlInfo, const char *boneName, const int startFrame, const int endFrame, const int flags, const float animSpeed, const int currentTime, const float setFrame, const int blendTime) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { - // ensure we flush the cache - ghlInfo->mSkelFrameNum = 0; - return G2_Set_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName, startFrame, endFrame, flags, animSpeed, currentTime, setFrame, blendTime); +#if _DEBUG + ghlInfo->mModel = RE_RegisterModel(ghlInfo->mFileName); + const model_t *currentModel = R_GetModelByHandle(ghlInfo->mModel); + G2ERROR(currentModel&¤tModel->mdxm,va("Bad Model (glm) %s",ghlInfo->mFileName)); + if (currentModel&¤tModel->mdxm) + { + const model_t *animModel = R_GetModelByHandle(currentModel->mdxm->animIndex); + G2ERROR(animModel,va("Bad Model (gla) %s",ghlInfo->mFileName)); + if (animModel) + { + const mdxaHeader_t *aHeader = animModel->mdxa; + G2ERROR(aHeader,va("Bad Model (gla) %s",ghlInfo->mFileName)); + if (aHeader) + { + G2ERROR(startFrame>=0,"startframe<0"); + G2ERROR(startFramenumFrames,"startframe>=numframes"); + G2ERROR(endFrame>0,"endframe<=0"); + G2ERROR(endFrame<=aHeader->numFrames,"endframe>numframes"); + G2ERROR(setFramenumFrames,"setframe>=numframes"); + G2ERROR(setFrame==-1.0f||setFrame>=0.0f,"setframe<0 but not -1"); + +#else + { + { + { +#endif + if (startFrame<0)//||startFrame>=aHeader->numFrames) + { + *(int *)&startFrame=0; // cast away const + } + if (endFrame<=0)//||endFrame>aHeader->numFrames) + { + *(int *)&endFrame=1; + } + if (setFrame!=-1.0f&&(setFrame<0.0f/*||setFrame>=(float)aHeader->numFrames*/)) + { + *(float *)&setFrame=0.0f; + } + // ensure we flush the cache + ghlInfo->mSkelFrameNum = 0; + ret=G2_Set_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName, startFrame, endFrame, flags, animSpeed, currentTime, setFrame, blendTime); + } + } + } } - return qfalse; + G2WARNING(ret,"G2API_SetBoneAnim Failed"); + return ret; } -qboolean G2API_GetBoneAnim(CGhoul2Info *ghlInfo, const char *boneName, const int currentTime, float *currentFrame, +qboolean G2API_GetBoneAnim(CGhoul2Info *ghlInfo, const char *boneName, const int AcurrentTime, float *currentFrame, int *startFrame, int *endFrame, int *flags, float *animSpeed, int *modelList) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + int currentTime=G2API_GetTime(AcurrentTime); + if (ghlInfo&&boneName) { - return G2_Get_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName, currentTime, currentFrame, + ret=G2_Get_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName, currentTime, currentFrame, startFrame, endFrame, flags, animSpeed, modelList, ghlInfo->mModelindex); } - return qfalse; + G2WARNING(ret,"G2API_GetBoneAnim Failed"); + return ret; } -qboolean G2API_GetBoneAnimIndex(CGhoul2Info *ghlInfo, const int iBoneIndex, const int currentTime, float *currentFrame, +qboolean G2API_GetBoneAnimIndex(CGhoul2Info *ghlInfo, const int iBoneIndex, const int AcurrentTime, float *currentFrame, int *startFrame, int *endFrame, int *flags, float *animSpeed, int *modelList) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + int currentTime=G2API_GetTime(AcurrentTime); if (ghlInfo) { - return G2_Get_Bone_Anim_Index( ghlInfo->mBlist,// boneInfo_v &blist, + G2ERROR(iBoneIndex>=0&&iBoneIndexmBlist.size(),"Bad Bone Index"); + G2WARNING(ghlInfo->mBlist[iBoneIndex].flags & (BONE_ANIM_OVERRIDE_LOOP | BONE_ANIM_OVERRIDE),"GetBoneAnim on non-animating bone."); + if (iBoneIndex>=0&&iBoneIndexmBlist.size()&&(ghlInfo->mBlist[iBoneIndex].flags & (BONE_ANIM_OVERRIDE_LOOP | BONE_ANIM_OVERRIDE))) + { + ret=G2_Get_Bone_Anim_Index( ghlInfo->mBlist,// boneInfo_v &blist, iBoneIndex, // const int index, currentTime, // const int currentTime, currentFrame, // float *currentFrame, @@ -459,159 +779,240 @@ qboolean G2API_GetBoneAnimIndex(CGhoul2Info *ghlInfo, const int iBoneIndex, cons modelList, // qhandle_t *modelList, ghlInfo->mModelindex // int modelIndex ); + } } - return qfalse; + G2NOTE(ret,"G2API_GetBoneAnimIndex Failed"); + return ret; } qboolean G2API_GetAnimRange(CGhoul2Info *ghlInfo, const char *boneName, int *startFrame, int *endFrame) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { - return G2_Get_Bone_Anim_Range(ghlInfo->mFileName, ghlInfo->mBlist, boneName, startFrame, endFrame); + ret=G2_Get_Bone_Anim_Range(ghlInfo->mFileName, ghlInfo->mBlist, boneName, startFrame, endFrame); } - return qfalse; +// looks like the game checks the return value +// G2WARNING(ret,"G2API_GetAnimRange Failed"); + return ret; } qboolean G2API_GetAnimRangeIndex(CGhoul2Info *ghlInfo, const int boneIndex, int *startFrame, int *endFrame) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - return G2_Get_Bone_Anim_Range_Index(ghlInfo->mBlist, boneIndex, startFrame, endFrame); + G2ERROR(boneIndex>=0&&boneIndexmBlist.size(),"Bad Bone Index"); + if (boneIndex>=0&&boneIndexmBlist.size()) + { + ret=G2_Get_Bone_Anim_Range_Index(ghlInfo->mBlist, boneIndex, startFrame, endFrame); + } } - return qfalse; +// looks like the game checks the return value +// G2WARNING(ret,"G2API_GetAnimRangeIndex Failed"); + return ret; } -qboolean G2API_PauseBoneAnim(CGhoul2Info *ghlInfo, const char *boneName, const int currentTime) +qboolean G2API_PauseBoneAnim(CGhoul2Info *ghlInfo, const char *boneName, const int AcurrentTime) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + int currentTime=G2API_GetTime(AcurrentTime); + if (ghlInfo&&boneName) { - return G2_Pause_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName, currentTime); + ret=G2_Pause_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName, currentTime); } - return qfalse; + G2WARNING(ret,"G2API_PauseBoneAnim Failed"); + return ret; } -qboolean G2API_PauseBoneAnimIndex(CGhoul2Info *ghlInfo, const int boneIndex, const int currentTime) +qboolean G2API_PauseBoneAnimIndex(CGhoul2Info *ghlInfo, const int boneIndex, const int AcurrentTime) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + int currentTime=G2API_GetTime(AcurrentTime); if (ghlInfo) { - return G2_Pause_Bone_Anim_Index(ghlInfo->mBlist, boneIndex, currentTime); + G2ERROR(boneIndex>=0&&boneIndexmBlist.size(),"Bad Bone Index"); + if (boneIndex>=0&&boneIndexmBlist.size()) + { + ret=G2_Pause_Bone_Anim_Index(ghlInfo->mBlist, boneIndex, currentTime); + } } - return qfalse; + G2WARNING(ret,"G2API_PauseBoneAnimIndex Failed"); + return ret; } qboolean G2API_IsPaused(CGhoul2Info *ghlInfo, const char *boneName) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { - return G2_IsPaused(ghlInfo->mFileName, ghlInfo->mBlist, boneName); + ret=G2_IsPaused(ghlInfo->mFileName, ghlInfo->mBlist, boneName); } - return qfalse; + G2WARNING(ret,"G2API_IsPaused Failed"); + return ret; } qboolean G2API_StopBoneAnimIndex(CGhoul2Info *ghlInfo, const int index) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - return G2_Stop_Bone_Anim_Index(ghlInfo->mBlist, index); + G2ERROR(index>=0&&indexmBlist.size(),"Bad Bone Index"); + if (index>=0&&indexmBlist.size()) + { + ret=G2_Stop_Bone_Anim_Index(ghlInfo->mBlist, index); + } } - return qfalse; + G2WARNING(ret,"G2API_StopBoneAnimIndex Failed"); + return ret; } qboolean G2API_StopBoneAnim(CGhoul2Info *ghlInfo, const char *boneName) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { - return G2_Stop_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName); + ret=G2_Stop_Bone_Anim(ghlInfo->mFileName, ghlInfo->mBlist, boneName); } - return qfalse; + G2WARNING(ret,"G2API_StopBoneAnim Failed"); + return ret; } qboolean G2API_SetBoneAnglesIndex(CGhoul2Info *ghlInfo, const int index, const vec3_t angles, const int flags, const Eorientations yaw, const Eorientations pitch, const Eorientations roll, - qhandle_t *modelList, int blendTime, int currentTime) + qhandle_t *modelList, int blendTime, int AcurrentTime) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + int currentTime=G2API_GetTime(AcurrentTime); if (ghlInfo) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Set_Bone_Angles_Index(ghlInfo->mFileName, ghlInfo->mBlist, index, angles, flags, yaw, pitch, roll, modelList, ghlInfo->mModelindex, blendTime, currentTime); + ret=G2_Set_Bone_Angles_Index(ghlInfo->mFileName, ghlInfo->mBlist, index, angles, flags, yaw, pitch, roll, modelList, ghlInfo->mModelindex, blendTime, currentTime); } - return qfalse; + G2WARNING(ret,"G2API_SetBoneAnglesIndex Failed"); + return ret; } qboolean G2API_SetBoneAngles(CGhoul2Info *ghlInfo, const char *boneName, const vec3_t angles, const int flags, const Eorientations up, const Eorientations left, const Eorientations forward, - qhandle_t *modelList, int blendTime, int currentTime ) + qhandle_t *modelList, int blendTime, int AcurrentTime ) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + int currentTime=G2API_GetTime(AcurrentTime); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Set_Bone_Angles(ghlInfo->mFileName, ghlInfo->mBlist, boneName, angles, flags, up, left, forward, modelList, ghlInfo->mModelindex, blendTime, currentTime); + ret=G2_Set_Bone_Angles(ghlInfo->mFileName, ghlInfo->mBlist, boneName, angles, flags, up, left, forward, modelList, ghlInfo->mModelindex, blendTime, currentTime); } - return qfalse; + G2WARNING(ret,"G2API_SetBoneAngles Failed"); + return ret; } qboolean G2API_SetBoneAnglesMatrixIndex(CGhoul2Info *ghlInfo, const int index, const mdxaBone_t &matrix, - const int flags, qhandle_t *modelList, int blendTime, int currentTime) + const int flags, qhandle_t *modelList, int blendTime, int AcurrentTime) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + int currentTime=G2API_GetTime(AcurrentTime); if (ghlInfo) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Set_Bone_Angles_Matrix_Index(ghlInfo->mBlist, index, matrix, flags, modelList, ghlInfo->mModelindex, blendTime, currentTime); + G2ERROR(index>=0&&indexmBlist.size(),"Bad Bone Index"); + if (index>=0&&indexmBlist.size()) + { + ret=G2_Set_Bone_Angles_Matrix_Index(ghlInfo->mBlist, index, matrix, flags, modelList, ghlInfo->mModelindex, blendTime, currentTime); + } } - return qfalse; + G2WARNING(ret,"G2API_SetBoneAnglesMatrixIndex Failed"); + return ret; } qboolean G2API_SetBoneAnglesMatrix(CGhoul2Info *ghlInfo, const char *boneName, const mdxaBone_t &matrix, - const int flags, qhandle_t *modelList, int blendTime, int currentTime) + const int flags, qhandle_t *modelList, int blendTime, int AcurrentTime) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + int currentTime=G2API_GetTime(AcurrentTime); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Set_Bone_Angles_Matrix(ghlInfo->mFileName, ghlInfo->mBlist, boneName, matrix, flags, modelList, ghlInfo->mModelindex, blendTime, currentTime); + ret=G2_Set_Bone_Angles_Matrix(ghlInfo->mFileName, ghlInfo->mBlist, boneName, matrix, flags, modelList, ghlInfo->mModelindex, blendTime, currentTime); } - return qfalse; + G2WARNING(ret,"G2API_SetBoneAnglesMatrix Failed"); + return ret; } qboolean G2API_StopBoneAnglesIndex(CGhoul2Info *ghlInfo, const int index) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Stop_Bone_Angles_Index(ghlInfo->mBlist, index); + G2ERROR(index>=0&&indexmBlist.size(),"Bad Bone Index"); + if (index>=0&&indexmBlist.size()) + { + ret=G2_Stop_Bone_Angles_Index(ghlInfo->mBlist, index); + } } - return qfalse; + G2WARNING(ret,"G2API_StopBoneAnglesIndex Failed"); + return ret; } qboolean G2API_StopBoneAngles(CGhoul2Info *ghlInfo, const char *boneName) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Stop_Bone_Angles(ghlInfo->mFileName, ghlInfo->mBlist, boneName); + ret=G2_Stop_Bone_Angles(ghlInfo->mFileName, ghlInfo->mBlist, boneName); } - return qfalse; + G2WARNING(ret,"G2API_StopBoneAngles Failed"); + return ret; } qboolean G2API_RemoveBone(CGhoul2Info *ghlInfo, const char *boneName) { - if (ghlInfo) + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { // ensure we flush the cache ghlInfo->mSkelFrameNum = 0; - return G2_Remove_Bone(ghlInfo->mFileName, ghlInfo->mBlist, boneName); + ret=G2_Remove_Bone(ghlInfo->mFileName, ghlInfo->mBlist, boneName); } - return qfalse; + G2WARNING(ret,"G2API_RemoveBone Failed"); + return ret; } void G2API_AnimateG2Models(CGhoul2Info_v &ghoul2, float speedVar) { int model; + G2ERROR(ghoul2.IsValid(),"Invalid ghlInfo"); // Walk the list and find all models that are active for (model=0; model< ghoul2.size(); model++) @@ -625,54 +1026,70 @@ void G2API_AnimateG2Models(CGhoul2Info_v &ghoul2, float speedVar) qboolean G2API_RemoveBolt(CGhoul2Info *ghlInfo, const int index) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - return G2_Remove_Bolt( ghlInfo->mBltlist, index); + ret=G2_Remove_Bolt( ghlInfo->mBltlist, index); } - return qfalse; + G2WARNING(ret,"G2API_RemoveBolt Failed"); + return ret; } int G2API_AddBolt(CGhoul2Info *ghlInfo, const char *boneName) { - if (ghlInfo) + int ret=-1; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { - return G2_Add_Bolt(ghlInfo->mFileName, ghlInfo->mBltlist, ghlInfo->mSlist, boneName); + ret=G2_Add_Bolt(ghlInfo->mFileName, ghlInfo->mBltlist, ghlInfo->mSlist, boneName); } - return -1; + G2WARNING(ret>=0,"G2API_AddBolt Failed"); + return ret; } int G2API_AddBoltSurfNum(CGhoul2Info *ghlInfo, const int surfIndex) { + int ret=-1; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - return G2_Add_Bolt_Surf_Num(ghlInfo->mFileName, ghlInfo->mBltlist, ghlInfo->mSlist, surfIndex); + ret=G2_Add_Bolt_Surf_Num(ghlInfo->mFileName, ghlInfo->mBltlist, ghlInfo->mSlist, surfIndex); } - return -1; + G2WARNING(ret>=0,"G2API_AddBoltSurfNum Failed"); + return ret; } qboolean G2API_AttachG2Model(CGhoul2Info *ghlInfo, CGhoul2Info *ghlInfoTo, int toBoltIndex, int toModel) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(ghlInfoTo,"NULL ghlInfo"); + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(toBoltIndex>=0&&toBoltIndexmBltlist.size(),"Invalid Bolt Index"); assert( toBoltIndex >= 0 ); - if ( toBoltIndex < 0 ) + if ( toBoltIndex >= 0 ) { - return qfalse; + // make sure we have a model to attach, a model to attach to, and a bolt on that model + if ((ghlInfo) && (ghlInfoTo) && ((ghlInfoTo->mBltlist[toBoltIndex].boneNumber != -1) || (ghlInfoTo->mBltlist[toBoltIndex].surfaceNumber != -1))) + { + // encode the bolt address into the model bolt link + toModel &= MODEL_AND; + toBoltIndex &= BOLT_AND; + ghlInfo->mModelBoltLink = (toModel << MODEL_SHIFT) | (toBoltIndex << BOLT_SHIFT); + ret=qtrue; + } } - // make sure we have a model to attach, a model to attach to, and a bolt on that model - if ((ghlInfo) && (ghlInfoTo) && ((ghlInfoTo->mBltlist[toBoltIndex].boneNumber != -1) || (ghlInfoTo->mBltlist[toBoltIndex].surfaceNumber != -1))) - { - // encode the bolt address into the model bolt link - toModel &= MODEL_AND; - toBoltIndex &= BOLT_AND; - ghlInfo->mModelBoltLink = (toModel << MODEL_SHIFT) | (toBoltIndex << BOLT_SHIFT); - return qtrue; - } - return qfalse; + G2WARNING(ret,"G2API_AttachG2Model Failed"); + return ret; } qboolean G2API_DetachG2Model(CGhoul2Info *ghlInfo) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { ghlInfo->mModelBoltLink = -1; @@ -683,6 +1100,9 @@ qboolean G2API_DetachG2Model(CGhoul2Info *ghlInfo) qboolean G2API_AttachEnt(int *boltInfo, CGhoul2Info *ghlInfoTo, int toBoltIndex, int entNum, int toModelNum) { + qboolean ret=qfalse; + G2ERROR(boltInfo,"NULL boltInfo"); + G2ERROR(ghlInfoTo,"NULL ghlInfo"); // make sure we have a model to attach, a model to attach to, and a bolt on that model if ((ghlInfoTo) && ((ghlInfoTo->mBltlist[toBoltIndex].boneNumber != -1) || (ghlInfoTo->mBltlist[toBoltIndex].surfaceNumber != -1))) { @@ -691,59 +1111,115 @@ qboolean G2API_AttachEnt(int *boltInfo, CGhoul2Info *ghlInfoTo, int toBoltIndex, toBoltIndex &= BOLT_AND; entNum &= ENTITY_AND; *boltInfo = (toBoltIndex << BOLT_SHIFT) | (toModelNum << MODEL_SHIFT) | (entNum << ENTITY_SHIFT); - return qtrue; + ret=qtrue; } - return qfalse; - + G2WARNING(ret,"G2API_AttachEnt Failed"); + return ret; } void G2API_DetachEnt(int *boltInfo) { - *boltInfo = 0; + G2ERROR(boltInfo,"NULL boltInfo"); + if (boltInfo) + { + *boltInfo = 0; + } } +#if _DEBUG +class GBM_Test +{ +public: + int Hits; + int Misses; + GBM_Test() + { + Hits=0; + Misses=0; + } + ~GBM_Test() + { + char mess[1000]; + sprintf(mess,"GBM stats: %d hits, %d misses\n",Hits,Misses); + OutputDebugString(mess); + } +}; + +static GBM_Test TheGBM_Test; +#endif + +bool G2_NeedsRecalc(CGhoul2Info *ghlInfo,int frameNum); qboolean G2API_GetBoltMatrix(CGhoul2Info_v &ghoul2, const int modelIndex, const int boltIndex, mdxaBone_t *matrix, const vec3_t angles, - const vec3_t position, const int frameNum, qhandle_t *modelList, const vec3_t scale ) + const vec3_t position, const int AframeNum, qhandle_t *modelList, const vec3_t scale ) { - CGhoul2Info *ghlInfo = &ghoul2[modelIndex]; + G2ERROR(ghoul2.IsValid(),"Invalid ghlInfo"); + G2ERROR(matrix,"NULL matrix"); + G2ERROR(modelIndex>=0&&modelIndexmBltlist.size()); - - if (boltIndex >= 0 && ghlInfo && (boltIndex < ghlInfo->mBltlist.size()) ) + int frameNum=G2API_GetTime(AframeNum); + const static mdxaBone_t identityMatrix = + { + 0.0f, -1.0f, 0.0f, 0.0f, + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f + }; + if (modelIndex>=0&&modelIndex= 0 && (boltIndex < ghlInfo->mBltlist.size()),"Invalid Bolt Index"); - // scale the bolt position by the scale factor for this model since at this point its still in model space - if (scale[0]) - { - ghlInfo->mBltlist[boltIndex].position.matrix[0][3] *= scale[0]; - } - if (scale[1]) - { - ghlInfo->mBltlist[boltIndex].position.matrix[1][3] *= scale[1]; - } - if (scale[2]) - { - ghlInfo->mBltlist[boltIndex].position.matrix[2][3] *= scale[2]; - } - - // pre generate the world matrix G2_GenerateWorldMatrix(angles, position); + if (boltIndex >= 0 && ghlInfo && (boltIndex < ghlInfo->mBltlist.size()) ) + { + mdxaBone_t bolt; - // make the model space matrix we have for this bolt into a world matrix - Multiply_3x4Matrix(matrix, &worldMatrix, &ghlInfo->mBltlist[boltIndex].position ); - - return qtrue; - + if (G2_NeedsRecalc(ghlInfo,frameNum)) + { + G2_ConstructGhoulSkeleton(ghoul2,frameNum,true,scale); +#if _DEBUG + TheGBM_Test.Hits++; +#endif + } +#if _DEBUG + else + { + TheGBM_Test.Misses++; + } +#endif + vec3_t newScale; + + VectorClear(newScale); + + G2_GetBoltMatrixLow(*ghlInfo,boltIndex,scale,bolt); + // scale the bolt position by the scale factor for this model since at this point its still in model space + if (scale[0]) + { + bolt.matrix[0][3] *= scale[0]; + } + if (scale[1]) + { + bolt.matrix[1][3] *= scale[1]; + } + if (scale[2]) + { + bolt.matrix[2][3] *= scale[2]; + } + VectorNormalize((float*)&bolt.matrix[0]); + VectorNormalize((float*)&bolt.matrix[1]); + VectorNormalize((float*)&bolt.matrix[2]); + + Multiply_3x4Matrix(matrix, &worldMatrix, &bolt); + return qtrue; + } } - + Multiply_3x4Matrix(matrix, &worldMatrix, &identityMatrix); return qfalse; } void G2API_ListSurfaces(CGhoul2Info *ghlInfo) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { G2_List_Model_Surfaces(ghlInfo->mFileName); @@ -752,6 +1228,7 @@ void G2API_ListSurfaces(CGhoul2Info *ghlInfo) void G2API_ListBones(CGhoul2Info *ghlInfo, int frame) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { G2_List_Model_Bones(ghlInfo->mFileName, frame); @@ -767,6 +1244,7 @@ qboolean G2API_HaveWeGhoul2Models(CGhoul2Info_v &ghoul2) // run through the Ghoul2 models and set each of the mModel values to the correct one from the cgs.gameModel offset lsit void G2API_SetGhoul2ModelIndexes(CGhoul2Info_v &ghoul2, qhandle_t *modelList, qhandle_t *skinList) { + G2ERROR(ghoul2.IsValid(),"Invalid ghlInfo"); int i; for (i=0; imdxm->animName; + G2ERROR(mod_m&&mod_m->mdxm,"Bad Model"); + if (mod_m&&mod_m->mdxm) + { + return mod_m->mdxm->animName; + } + return ""; } /************************************************************************************************ @@ -806,11 +1289,14 @@ char *G2API_GetAnimFileNameIndex(qhandle_t modelIndex) ************************************************************************************************/ qboolean G2API_GetAnimFileName(CGhoul2Info *ghlInfo, char **filename) { + qboolean ret=qfalse; + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - return G2_GetAnimFileName(ghlInfo->mFileName, filename); + ret=G2_GetAnimFileName(ghlInfo->mFileName, filename); } - return qfalse; + G2WARNING(ret,"G2API_GetAnimFileName Failed"); + return ret; } /* @@ -830,17 +1316,17 @@ static int QDECL QsortDistance( const void *a, const void *b ) { void G2API_CollisionDetect(CCollisionRecord *collRecMap, CGhoul2Info_v &ghoul2, const vec3_t angles, const vec3_t position, - int frameNumber, int entNum, vec3_t rayStart, vec3_t rayEnd, vec3_t scale, CMiniHeap *, + int AframeNumber, int entNum, vec3_t rayStart, vec3_t rayEnd, vec3_t scale, CMiniHeap *, EG2_Collision eG2TraceType, int useLod, float fRadius) { + G2ERROR(ghoul2.IsValid(),"Invalid ghlInfo"); + G2ERROR(collRecMap,"NULL Collision Rec"); + int frameNumber=G2API_GetTime(AframeNumber); vec3_t transRayStart, transRayEnd; - //let's keep our timer use consistent - frameNumber = tr.refdef.time; - // make sure we have transformed the whole skeletons for each model - G2_ConstructGhoulSkeleton(ghoul2, frameNumber, NULL, true, position, scale, false); + G2_ConstructGhoulSkeleton(ghoul2, frameNumber,true, scale); // pre generate the world matrix - used to transform the incoming ray G2_GenerateWorldMatrix(angles, position); @@ -868,6 +1354,7 @@ void G2API_CollisionDetect(CCollisionRecord *collRecMap, CGhoul2Info_v &ghoul2, qboolean G2API_SetGhoul2ModelFlags(CGhoul2Info *ghlInfo, const int flags) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { ghlInfo->mFlags &= GHOUL2_NEWORIGIN; @@ -879,6 +1366,7 @@ qboolean G2API_SetGhoul2ModelFlags(CGhoul2Info *ghlInfo, const int flags) int G2API_GetGhoul2ModelFlags(CGhoul2Info *ghlInfo) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { return (ghlInfo->mFlags & ~GHOUL2_NEWORIGIN); @@ -933,40 +1421,19 @@ void G2API_GiveMeVectorFromMatrix(mdxaBone_t &boltMatrix, Eorientations flags, v // NOTE if modelIndex = -1 then copy all the models void G2API_CopyGhoul2Instance(CGhoul2Info_v &ghoul2From, CGhoul2Info_v &ghoul2To, int modelIndex) { - int i, model; - int from = 0; - int to = ghoul2From.size(); - - // determing if we are only copying one model or not - if (modelIndex != -1) + assert(modelIndex==-1); // copy individual bolted parts is not used in jk2 and I didn't want to deal with it + // if ya want it, we will add it back correctly + + G2ERROR(ghoul2From.IsValid(),"Invalid ghlInfo"); + if (ghoul2From.IsValid()) { - from = modelIndex; - to = modelIndex + 1; + ghoul2To.DeepCopy(ghoul2From); } - - // now copy the models - for (i=from; imFileName)); mdxmSurface_t *surf = 0; @@ -979,32 +1446,51 @@ char *G2API_GetSurfaceName(CGhoul2Info *ghlInfo, int surfNumber) surfInfo = (mdxmSurfHierarchy_t *)((byte *)surfIndexes + surfIndexes->offsets[surf->thisSurfaceIndex]); return surfInfo->name; } - + G2WARNING(0,"Surface Not Found"); return noSurface; } int G2API_GetSurfaceIndex(CGhoul2Info *ghlInfo, const char *surfaceName) { + int ret=-1; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(surfaceName,"NULL surfaceName"); if (ghlInfo) { - return G2_GetSurfaceIndex(ghlInfo->mFileName, surfaceName); + ret=G2_GetSurfaceIndex(ghlInfo->mFileName, surfaceName); } - return -1; + G2WARNING(ret>=0,"G2API_GetSurfaceIndex Failed"); + return ret; } char *G2API_GetGLAName(CGhoul2Info *ghlInfo) { - model_t *mod = R_GetModelByHandle(RE_RegisterModel(ghlInfo->mFileName)); - return mod->mdxm->animName; + G2ERROR(ghlInfo,"NULL ghlInfo"); + if (ghlInfo) + { + model_t *mod = R_GetModelByHandle(RE_RegisterModel(ghlInfo->mFileName)); + G2ERROR(mod&&mod->mdxm,"Bad Model"); + if (mod&&mod->mdxm) + { + return mod->mdxm->animName; + } + } + return 0; } qboolean G2API_SetNewOrigin(CGhoul2Info *ghlInfo, const int boltIndex) { + G2ERROR(ghlInfo,"NULL ghlInfo"); if (ghlInfo) { - ghlInfo->mNewOrigin = boltIndex; - ghlInfo->mFlags |= GHOUL2_NEWORIGIN; + G2ERROR(boltIndex>=0&&boltIndexmBltlist.size(),"NULL ghlInfo"); + + if (boltIndex>=0&&boltIndexmBltlist.size()) + { + ghlInfo->mNewOrigin = boltIndex; + ghlInfo->mFlags |= GHOUL2_NEWORIGIN; + } return qtrue; } return qfalse; @@ -1012,21 +1498,27 @@ qboolean G2API_SetNewOrigin(CGhoul2Info *ghlInfo, const int boltIndex) int G2API_GetBoneIndex(CGhoul2Info *ghlInfo, const char *boneName, qboolean bAddIfNotFound) { - if (ghlInfo) + int ret=-1; + G2ERROR(ghlInfo,"NULL ghlInfo"); + G2ERROR(boneName,"NULL boneName"); + if (ghlInfo&&boneName) { - return G2_Get_Bone_Index(ghlInfo, boneName, bAddIfNotFound); + ret=G2_Get_Bone_Index(ghlInfo, boneName, bAddIfNotFound); } - return -1; + G2WARNING(ret>=0,"G2API_GetBoneIndex Failed"); + return ret; } qboolean G2API_SaveGhoul2Models(CGhoul2Info_v &ghoul2, char **buffer, int *size) { + G2ERROR(ghoul2.IsValid(),"Invalid ghlInfo"); return G2_SaveGhoul2Models(ghoul2, buffer, size); } void G2API_LoadGhoul2Models(CGhoul2Info_v &ghoul2, char *buffer) { G2_LoadGhoul2Model(ghoul2, buffer); + G2ERROR(ghoul2.IsValid(),"Invalid ghlInfo after load"); } void G2API_FreeSaveBuffer(char *buffer) diff --git a/code/ghoul2/g2_bolts.cpp b/code/ghoul2/g2_bolts.cpp index 4673518..02993a5 100644 --- a/code/ghoul2/g2_bolts.cpp +++ b/code/ghoul2/g2_bolts.cpp @@ -118,6 +118,7 @@ int G2_Add_Bolt_Surf_Num(const char *fileName, boltInfo_v &bltlist, surfaceInfo_ } +void G2_Bolt_Not_Found(const char *boneName,const char *modName); int G2_Add_Bolt(const char *fileName, boltInfo_v &bltlist, surfaceInfo_v &slist, const char *boneName) { model_t *mod_m = R_GetModelByHandle(RE_RegisterModel(fileName)); @@ -191,6 +192,9 @@ int G2_Add_Bolt(const char *fileName, boltInfo_v &bltlist, surfaceInfo_v &slist, { // didn't find it? Error //assert(0&&x == mod_a->mdxa->numBones); +#if _DEBUG + G2_Bolt_Not_Found(boneName,fileName); +#endif return -1; } @@ -283,6 +287,7 @@ void G2_Init_Bolt_List(boltInfo_v &bltlist) // remove any bolts that reference original surfaces, generated surfaces, or bones that aren't active anymore void G2_RemoveRedundantBolts(boltInfo_v &bltlist, surfaceInfo_v &slist, int *activeSurfaces, int *activeBones) { + G2_FindOverrideSurface(-1, slist); //reset the quick surface override lookup; // walk the bolt list for (int i=0; iname); +#endif // didn't find it return -1; } @@ -577,10 +581,10 @@ qboolean G2_Set_Bone_Anim_Index(boneInfo_v &blist, const int index, const int st //assert(startFrame < 1000);//do we really need this??? //assert((animSpeed > 0.01) && (animSpeed < 20.0)); - if ((index >= blist.size()) || (blist[index].boneNumber == -1)) + if (index<0||index >= blist.size()||blist[index].boneNumber<0) { // we are attempting to set a bone override that doesn't exist - assert(0); +// assert(0); return qfalse; } @@ -591,104 +595,105 @@ qboolean G2_Set_Bone_Anim_Index(boneInfo_v &blist, const int index, const int st } - // since we already existed, we can check to see if we want to start some blending - if (flags & (BONE_ANIM_BLEND|BONE_ANIM_BLEND_TO_PARENT)) + // since we already existed, we can check to see if we want to start some blending + if (flags & (BONE_ANIM_BLEND|BONE_ANIM_BLEND_TO_PARENT)) + { + float currentFrame, animSpeed; + int startFrame, endFrame, flags; + // figure out where we are now + if (G2_Get_Bone_Anim_Index(blist, index, currentTime, ¤tFrame, &startFrame, &endFrame, &flags, &animSpeed, NULL, 0)) { - float currentFrame, animSpeed; - int startFrame, endFrame, flags; - // figure out where we are now - if (G2_Get_Bone_Anim_Index(blist, index, currentTime, ¤tFrame, &startFrame, &endFrame, &flags, &animSpeed, NULL, 0)) + if (blist[index].blendStart == currentTime) //we're replacing a blend in progress which hasn't started { - if (blist[index].blendStart == currentTime) //we're replacing a blend in progress which hasn't started - { - // set the amount of time it's going to take to blend this anim with the last frame of the last one - blist[index].blendTime = blendTime; - } - else - { - blist[index].blendFrame = currentFrame; - blist[index].blendLerpFrame = currentFrame+1; - - // cope with if the lerp frame is actually off the end of the anim - if (blist[index].blendFrame >= blist[index].endFrame ) - { - // we only want to lerp with the first frame of the anim if we are looping - if (blist[index].flags & BONE_ANIM_OVERRIDE_LOOP) - { - blist[index].blendFrame = blist[index].startFrame; - } - // if we intend to end this anim or freeze after this, then just keep on the last frame - else - { - blist[index].blendFrame = blist[index].endFrame -1; - } - } - - // cope with if the lerp frame is actually off the end of the anim - if (blist[index].blendLerpFrame >= blist[index].endFrame ) - { - // we only want to lerp with the first frame of the anim if we are looping - if (blist[index].flags & BONE_ANIM_OVERRIDE_LOOP) - { - blist[index].blendLerpFrame = blist[index].startFrame; - } - // if we intend to end this anim or freeze after this, then just keep on the last frame - else - { - blist[index].blendLerpFrame = blist[index].endFrame - 1; - } - } - // set the amount of time it's going to take to blend this anim with the last frame of the last one - blist[index].blendTime = blendTime; - blist[index].blendStart = currentTime; - } + // set the amount of time it's going to take to blend this anim with the last frame of the last one + blist[index].blendTime = blendTime; } - // hmm, we weren't animating on this bone. In which case disable the blend else { - blist[index].blendFrame = blist[index].blendLerpFrame = 0; - blist[index].blendTime = 0; - // we aren't blending, so remove the option to do so - modFlags &= ~(BONE_ANIM_BLEND|BONE_ANIM_BLEND_TO_PARENT); + blist[index].blendFrame = currentFrame; + blist[index].blendLerpFrame = currentFrame+1; + + // cope with if the lerp frame is actually off the end of the anim + if (blist[index].blendFrame >= blist[index].endFrame ) + { + // we only want to lerp with the first frame of the anim if we are looping + if (blist[index].flags & BONE_ANIM_OVERRIDE_LOOP) + { + blist[index].blendFrame = blist[index].startFrame; + } + // if we intend to end this anim or freeze after this, then just keep on the last frame + else + { + blist[index].blendFrame = blist[index].endFrame -1; + } + } + + // cope with if the lerp frame is actually off the end of the anim + if (blist[index].blendLerpFrame >= blist[index].endFrame ) + { + // we only want to lerp with the first frame of the anim if we are looping + if (blist[index].flags & BONE_ANIM_OVERRIDE_LOOP) + { + blist[index].blendLerpFrame = blist[index].startFrame; + } + // if we intend to end this anim or freeze after this, then just keep on the last frame + else + { + blist[index].blendLerpFrame = blist[index].endFrame - 1; + } + } + // set the amount of time it's going to take to blend this anim with the last frame of the last one + blist[index].blendTime = blendTime; + blist[index].blendStart = currentTime; } } - else - // if we are doing it from parent, then we only care about blendtime and blend start, since the rest gets constructed in the renderer - if (flags & BONE_ANIM_BLEND_FROM_PARENT) - { - // if we hit this, someone put a BLEND_FROM_PARENT on a root bone - that's a no no - assert(blist[index].boneNumber); - // set the amount of time it's going to take to blend this anim with the last frame of the last one - blist[index].blendTime = blendTime; - blist[index].blendStart = currentTime; - } + // hmm, we weren't animating on this bone. In which case disable the blend else { blist[index].blendFrame = blist[index].blendLerpFrame = 0; - blist[index].blendTime = blist[index].blendStart = 0; - // we aren't blending, so remove the option to do so - modFlags &= ~(BONE_ANIM_BLEND|BONE_ANIM_BLEND_TO_PARENT); + blist[index].blendTime = 0; + // we aren't blending, so remove the option to do so + modFlags &= ~(BONE_ANIM_BLEND|BONE_ANIM_BLEND_TO_PARENT); + return qfalse; } + } + else + // if we are doing it from parent, then we only care about blendtime and blend start, since the rest gets constructed in the renderer + if (flags & BONE_ANIM_BLEND_FROM_PARENT) + { + // if we hit this, someone put a BLEND_FROM_PARENT on a root bone - that's a no no + assert(blist[index].boneNumber); + // set the amount of time it's going to take to blend this anim with the last frame of the last one + blist[index].blendTime = blendTime; + blist[index].blendStart = currentTime; + } + else + { + blist[index].blendFrame = blist[index].blendLerpFrame = 0; + blist[index].blendTime = blist[index].blendStart = 0; + // we aren't blending, so remove the option to do so + modFlags &= ~(BONE_ANIM_BLEND|BONE_ANIM_BLEND_TO_PARENT); + } - // yes, so set the anim data and flags correctly - blist[index].endFrame = endFrame; - blist[index].startFrame = startFrame; - blist[index].animSpeed = animSpeed; - blist[index].pauseTime = 0; - // start up the animation:) - if (setFrame != -1) - { - blist[index].lastTime = blist[index].startTime = (currentTime - (((setFrame - (float)startFrame) * 50.0)/ animSpeed)); - } - else - { - blist[index].lastTime = blist[index].startTime = currentTime; - } - blist[index].flags &= ~(BONE_ANIM_TOTAL); - blist[index].flags |= modFlags; + // yes, so set the anim data and flags correctly + blist[index].endFrame = endFrame; + blist[index].startFrame = startFrame; + blist[index].animSpeed = animSpeed; + blist[index].pauseTime = 0; + // start up the animation:) + if (setFrame != -1) + { + blist[index].lastTime = blist[index].startTime = (currentTime - (((setFrame - (float)startFrame) * 50.0)/ animSpeed)); + } + else + { + blist[index].lastTime = blist[index].startTime = currentTime; + } + blist[index].flags &= ~(BONE_ANIM_TOTAL); + blist[index].flags |= modFlags; // assert(blist[index].startTime <= currentTime); - return qtrue; + return qtrue; } @@ -789,93 +794,30 @@ qboolean G2_Get_Bone_Anim_Range(const char *fileName, boneInfo_v &blist, const c // given a model, bonelist and bonename, return the current frame, startframe and endframe of the current animation // NOTE if we aren't running an animation, then qfalse is returned qboolean G2_Get_Bone_Anim_Index( boneInfo_v &blist, const int index, const int currentTime, - float *currentFrame, int *startFrame, int *endFrame, int *flags, float *retAnimSpeed, qhandle_t *modelList, int modelIndex) + float *retcurrentFrame, int *startFrame, int *endFrame, int *flags, float *retAnimSpeed, qhandle_t *modelList, int modelIndex) { // did we find it? if ((index != -1) && !((index >= blist.size()) || (blist[index].boneNumber == -1))) { + // are we an animating bone? if (blist[index].flags & (BONE_ANIM_OVERRIDE_LOOP | BONE_ANIM_OVERRIDE)) { - // yes - add in animation speed to current frame - float animSpeed = blist[index].animSpeed; - float time = (currentTime - blist[index].startTime) / 50.0f; - float mendFrame = (float)blist[index].endFrame ; - - // are we a paused anim? - if (blist[index].pauseTime) - { - time = (blist[index].pauseTime - blist[index].startTime) / 50.0f; - } - - float newFrame_g = blist[index].startFrame + (time * animSpeed); - *currentFrame = newFrame_g; - - int animSize = blist[index].endFrame - blist[index].startFrame; - // we are supposed to be animating right? - if (animSize) - { - // did we run off the end? - if (((animSpeed > 0.0f) && (newFrame_g > mendFrame)) || - ((animSpeed < 0.0f) && (newFrame_g < mendFrame))) - { - // yep - decide what to do - if (blist[index].flags & BONE_ANIM_OVERRIDE_LOOP) - { - - // get our new animation frame back within the bounds of the animation set - if (animSpeed < 0.0f) - { - while (newFrame_g <= mendFrame) - { - newFrame_g -= animSize; - } - } - else - { - while (newFrame_g >= mendFrame) - { - newFrame_g -= animSize; - } - } - - *currentFrame = newFrame_g; - } - else - { - // nope, we ran off the end of the current anim - if (blist[index].flags & BONE_ANIM_OVERRIDE_FREEZE) - { - if (animSpeed > 0.0f) - { - *currentFrame = blist[index].endFrame -1; - } - else - { - *currentFrame = blist[index].endFrame +1; - } - } - else - { - *currentFrame = -1; - } - } - } - } - else - { - *currentFrame = blist[index].startFrame; - } + int currentFrame,newFrame,numFrames; + numFrames=30000; // I don't have this number, but it will eventually assert if the start and end frame are invalid + float lerp; + G2_TimingModel(blist[index],currentTime,numFrames,currentFrame,newFrame,lerp); + *retcurrentFrame =float(currentFrame)+lerp; *startFrame = blist[index].startFrame; *endFrame = blist[index].endFrame; *flags = blist[index].flags; - *retAnimSpeed = animSpeed; + *retAnimSpeed = blist[index].animSpeed; return qtrue; } } - *startFrame = *endFrame = *currentFrame = -1; + *startFrame = *endFrame = *retcurrentFrame = -1; *flags = 0;/*-1;*/ //cheesees fudging cripes i hate -1 return qfalse; } @@ -906,7 +848,7 @@ qboolean G2_Get_Bone_Anim(const char *fileName, boneInfo_v &blist, const char *b // given a model, bonelist and bonename, lets pause an anim if it's playing. qboolean G2_Pause_Bone_Anim_Index( boneInfo_v &blist, const int boneIndex, const int currentTime) { - if (boneIndex != -1) + if (boneIndex>=0&&boneIndexmMap.lower_bound(adjustedLastTime); - CWInstBoneMap::TBoneMapIter itStop = blist[i].boneMap->mMap.upper_bound(adjustedCurrentTime); - vector callbacksToFire; - - boneInfo_t *bone = &blist[i]; - - // walk through the map list of call backs we should hit this frame - while (itCur != itStop) - { - - int calltime = (*itCur).first; - - // push it into the list ready to fire off later. - callbacksToFire.push_back((*itCur).second); - - // did we hit an exact match? - if ((*itCur).first == adjustedCurrentTime) - { - // adjust the next time by the anim speed, so if we are running fast we won't lose this jumping of one millisecond - int adjuster = 1; - if (blist[i].animSpeed > 1) - { - adjuster = blist[i].animSpeed + 1; - } - callbackCurrentTime += adjuster; - } - // select next call back to check against - itCur++; - - // have we run off the end of the map? - if (itCur == blist[i].boneMap->mMap.end()) - { - // does the map loop back to the beginning? - if (itCur != itStop) - { - itCur = blist[i].boneMap->mMap.begin(); - } - } - } - - // fire off all the call backs we have selected for this bone. - for (int cllbks = 0; cllbks < callbacksToFire.size(); cllbks++) - { - TheGhoul2Wraith()->FireCallback(ghoul2, index, callbacksToFire[cllbks], callbackCurrentTime); - } - callbacksToFire.clear(); - - // assuming the bone is still here, set the last time to current time - if (blist[i].boneNumber != -1) - { - blist[i].lastTime = callbackCurrentTime; - } - } - } - } - } -#endif - // look through entire list for(i=0; i 0.0f) && (newFrame_g > endFrame )) || - ((animSpeed < 0.0f) && (newFrame_g < endFrame ))) + if (((animSpeed > 0.0f) && (newFrame_g > endFrame - 1)) || + ((animSpeed < 0.0f) && (newFrame_g < endFrame + 1))) { // yep - decide what to do if (blist[i].flags & BONE_ANIM_OVERRIDE_LOOP) @@ -1161,27 +1030,34 @@ void G2_Animate_Bone_List(CGhoul2Info_v &ghoul2, const int currentTime, const in // get our new animation frame back within the bounds of the animation set if (animSpeed < 0.0f) { - while (newFrame_g <= endFrame) + if (newFrame_g <= endFrame) { - newFrame_g -= animSize; + newFrame_g=endFrame+fmod(newFrame_g-endFrame,animSize)-animSize; } + // figure out new start time + float frameTime = newFrame_g - blist[i].startFrame ; + blist[i].startTime = currentTime - (int)((frameTime / animSpeed) * 50.0f); + assert(blist[i].startTime <= currentTime); + blist[i].lastTime = blist[i].startTime; } else { - while (newFrame_g >= endFrame) + if (newFrame_g >= endFrame) { - newFrame_g -= animSize; + newFrame_g=endFrame+fmod(newFrame_g-endFrame,animSize)-animSize; } + // figure out new start time + float frameTime = newFrame_g - blist[i].startFrame ; + blist[i].startTime = currentTime - (int)((frameTime / animSpeed) * 50.0f); + assert(blist[i].startTime <= currentTime); + blist[i].lastTime = blist[i].startTime; } - // figure out new start time - float frameTime = newFrame_g - blist[i].startFrame ; - blist[i].startTime = currentTime - (int)((frameTime / animSpeed) * 50.0f); - assert(blist[i].startTime <= currentTime); - blist[i].lastTime = blist[i].startTime; } else { if ((blist[i].flags & (BONE_ANIM_OVERRIDE_FREEZE)) != (BONE_ANIM_OVERRIDE_FREEZE)) +// if (((blist[i].flags & (BONE_ANIM_OVERRIDE_DEFAULT)) == (BONE_ANIM_OVERRIDE_DEFAULT))|| +// ((blist[i].flags & (BONE_ANIM_OVERRIDE_FREEZE)) == (BONE_ANIM_OVERRIDE_FREEZE))) { // if we are supposed to reset the default anim, then do so if (blist[i].flags & (BONE_ANIM_OVERRIDE_DEFAULT)) diff --git a/code/ghoul2/g2_misc.cpp b/code/ghoul2/g2_misc.cpp index d2a2d43..f729e3e 100644 --- a/code/ghoul2/g2_misc.cpp +++ b/code/ghoul2/g2_misc.cpp @@ -27,6 +27,8 @@ extern mdxaBone_t worldMatrix; extern mdxaBone_t worldMatrixInv; +const mdxaBone_t &EvalBoneCache(int index,CBoneCache *boneCache); + #pragma warning(disable : 4512) //assignment op could not be genereated class CTraceSurface { @@ -203,7 +205,8 @@ int G2_DecideTraceLod(CGhoul2Info &ghoul2, int useLod, const model_t *mod) return returnLod; } -void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHeap *G2VertSpace, int *TransformedVertsArray, mdxaBone_v &bonePtr) { +void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHeap *G2VertSpace, int *TransformedVertsArray,CBoneCache *boneCache) +{ int j, k; mdxmVertex_t *v; float *TransformedVerts; @@ -211,6 +214,7 @@ void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHe // // deform the vertexes by the lerped bones // + int *piBoneReferences = (int*) ((byte*)surface + surface->ofsBoneReferences); // alloc some space for the transformed verts to get put in TransformedVerts = (float *)G2VertSpace->MiniHeapAlloc(surface->numVerts * 5 * 4); @@ -221,7 +225,6 @@ void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHe } // whip through and actually transform each vertex - const int *piBoneRefs = (int*) ((byte*)surface + surface->ofsBoneReferences); const int numVerts = surface->numVerts; v = (mdxmVertex_t *) ((byte *)surface + surface->ofsVerts); // optimisation issue @@ -237,15 +240,15 @@ void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHe w = v->weights; for ( k = 0 ; k < v->numWeights ; k++, w++ ) { - //bone = bonePtr + piBoneRefs[w->boneIndex]; + const mdxaBone_t &bone=EvalBoneCache(piBoneReferences[w->boneIndex],boneCache); - tempVert[0] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[0][3] ); - tempVert[1] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[1][3] ); - tempVert[2] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[2][3] ); + tempVert[0] += w->boneWeight * ( DotProduct( bone.matrix[0], v->vertCoords ) + bone.matrix[0][3] ); + tempVert[1] += w->boneWeight * ( DotProduct( bone.matrix[1], v->vertCoords ) + bone.matrix[1][3] ); + tempVert[2] += w->boneWeight * ( DotProduct( bone.matrix[2], v->vertCoords ) + bone.matrix[2][3] ); - tempNormal[0] += w->boneWeight * DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], v->normal ); - tempNormal[1] += w->boneWeight * DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], v->normal ); - tempNormal[2] += w->boneWeight * DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], v->normal ); + tempNormal[0] += w->boneWeight * DotProduct( bone.matrix[0], v->normal ); + tempNormal[1] += w->boneWeight * DotProduct( bone.matrix[1], v->normal ); + tempNormal[2] += w->boneWeight * DotProduct( bone.matrix[2], v->normal ); } int pos = j * 5; @@ -273,15 +276,15 @@ void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHe w = v->weights; for ( k = 0 ; k < v->numWeights ; k++, w++ ) { - //bone = bonePtr + piBoneRefs[w->boneIndex]; + const mdxaBone_t &bone=EvalBoneCache(piBoneReferences[w->boneIndex],boneCache); - tempVert[0] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[0][3] ); - tempVert[1] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[1][3] ); - tempVert[2] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[2][3] ); + tempVert[0] += w->boneWeight * ( DotProduct( bone.matrix[0], v->vertCoords ) + bone.matrix[0][3] ); + tempVert[1] += w->boneWeight * ( DotProduct( bone.matrix[1], v->vertCoords ) + bone.matrix[1][3] ); + tempVert[2] += w->boneWeight * ( DotProduct( bone.matrix[2], v->vertCoords ) + bone.matrix[2][3] ); - tempNormal[0] += w->boneWeight * DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], v->normal ); - tempNormal[1] += w->boneWeight * DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], v->normal ); - tempNormal[2] += w->boneWeight * DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], v->normal ); + tempNormal[0] += w->boneWeight * DotProduct( bone.matrix[0], v->normal ); + tempNormal[1] += w->boneWeight * DotProduct( bone.matrix[1], v->normal ); + tempNormal[2] += w->boneWeight * DotProduct( bone.matrix[2], v->normal ); } // copy tranformed verts into temp space @@ -298,7 +301,7 @@ void R_TransformEachSurface( const mdxmSurface_t *surface, vec3_t scale, CMiniHe } void G2_TransformSurfaces(int surfaceNum, surfaceInfo_v &rootSList, - mdxaBone_v &bonePtr, const model_t *currentModel, int lod, vec3_t scale, CMiniHeap *G2VertSpace, int *TransformedVertArray, bool secondTimeAround) + CBoneCache *boneCache, const model_t *currentModel, int lod, vec3_t scale, CMiniHeap *G2VertSpace, int *TransformedVertArray, bool secondTimeAround) { int i; // back track and get the surfinfo struct for this surface @@ -320,7 +323,7 @@ void G2_TransformSurfaces(int surfaceNum, surfaceInfo_v &rootSList, if (!offFlags) { - R_TransformEachSurface(surface, scale, G2VertSpace, TransformedVertArray, bonePtr); + R_TransformEachSurface(surface, scale, G2VertSpace, TransformedVertArray, boneCache); } // if we are turning off all descendants, then stop this recursion now @@ -332,7 +335,7 @@ void G2_TransformSurfaces(int surfaceNum, surfaceInfo_v &rootSList, // now recursively call for the children for (i=0; i< surfInfo->numChildren; i++) { - G2_TransformSurfaces(surfInfo->childIndexes[i], rootSList, bonePtr, currentModel, lod, scale, G2VertSpace, TransformedVertArray, secondTimeAround); + G2_TransformSurfaces(surfInfo->childIndexes[i], rootSList, boneCache, currentModel, lod, scale, G2VertSpace, TransformedVertArray, secondTimeAround); } } @@ -388,8 +391,9 @@ void G2_TransformModel(CGhoul2Info_v &ghoul2, const int frameNum, vec3_t scale, // did we get enough space? assert(ghoul2[i].mTransformedVertsArray); + G2_FindOverrideSurface(-1,ghoul2[i].mSlist); //reset the quick surface override lookup; // recursively call the model surface transform - G2_TransformSurfaces(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, ghoul2[i].mTempBoneList, currentModel, lod, correctScale, G2VertSpace, ghoul2[i].mTransformedVertsArray, false); + G2_TransformSurfaces(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, ghoul2[i].mBoneCache, currentModel, lod, correctScale, G2VertSpace, ghoul2[i].mTransformedVertsArray, false); } } @@ -964,6 +968,9 @@ void G2_TraceModels(CGhoul2Info_v &ghoul2, vec3_t rayStart, vec3_t rayEnd, CColl lod = G2_DecideTraceLod(ghoul2[i],useLod, currentModel); + //reset the quick surface override lookup + G2_FindOverrideSurface(-1, ghoul2[i].mSlist); + CTraceSurface TS(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, currentModel, lod, rayStart, rayEnd, collRecMap, entNum, i, skin, cust_shader, ghoul2[i].mTransformedVertsArray, eG2TraceType, fRadius); // start the surface recursion loop G2_TraceSurfaces(TS); @@ -1062,6 +1069,7 @@ void *G2_FindSurface(const void *mod_t, int index, int lod) int i; //walk the lods + assert(lod>=0&&lodmdxm->numLODs); for (i=0; i=0&&indexmdxm->numSurfaces); current += indexes->offsets[index]; return (void *)current; } #define SURFACE_SAVE_BLOCK_SIZE sizeof(surfaceInfo_t) -#define BOLT_SAVE_BLOCK_SIZE (sizeof(boltInfo_t) - sizeof(mdxaBone_t)) +#define BOLT_SAVE_BLOCK_SIZE sizeof(boltInfo_t) #define BONE_SAVE_BLOCK_SIZE sizeof(boneInfo_t) qboolean G2_SaveGhoul2Models(CGhoul2Info_v &ghoul2, char **buffer, int *size) @@ -1263,5 +1272,6 @@ void G2_LoadGhoul2Model(CGhoul2Info_v &ghoul2, char *buffer) memcpy(&ghoul2[i].mBltlist[x], buffer, BOLT_SAVE_BLOCK_SIZE); buffer += BOLT_SAVE_BLOCK_SIZE; } + ghoul2[i].mSkelFrameNum = 0; } } \ No newline at end of file diff --git a/code/ghoul2/g2_surfaces.cpp b/code/ghoul2/g2_surfaces.cpp index 8197e7b..d114674 100644 --- a/code/ghoul2/g2_surfaces.cpp +++ b/code/ghoul2/g2_surfaces.cpp @@ -18,52 +18,104 @@ #pragma warning(disable : 4512) //assignment op could not be genereated -class CConstructBoneList +class CQuickOverride { + int mOverride[512]; + int mAt[512]; + int mCurrentTouch; public: - int surfaceNum; - int *boneUsedList; - const surfaceInfo_v &rootSList; - const model_t *currentModel; - const boneInfo_v &boneList; - - CConstructBoneList( - int initsurfaceNum, - int *initboneUsedList, - const surfaceInfo_v &initrootSList, - const model_t *initcurrentModel, - const boneInfo_v &initboneList): - - surfaceNum(initsurfaceNum), - boneUsedList(initboneUsedList), - rootSList(initrootSList), - currentModel(initcurrentModel), - boneList(initboneList) { } -}; - -extern void G2_ConstructUsedBoneList(CConstructBoneList &CBL); - - -//===================================================================================================================== -// Surface List handling routines - so entities can determine what surfaces attached to a model are operational or not. - -// find a particular surface in the surface override list -const surfaceInfo_t *G2_FindOverrideSurface(int surfaceNum, const surfaceInfo_v &surfaceList) -{ - int i; - - // look through entire list - for(i=0; i=0&&index<512); + mOverride[index]=mCurrentTouch; + mAt[index]=pos; + } + int Test(int index) + { + assert(index>=0&&index<512); + if (mOverride[index]!=mCurrentTouch) + { + return -1; + } + else + { + return mAt[index]; + } + } +}; + +static CQuickOverride QuickOverride; + + +// find a particular surface in the surface override list +const surfaceInfo_t *G2_FindOverrideSurface(int surfaceNum,const surfaceInfo_v &surfaceList) +{ + + if (surfaceNum<0) + { + // starting a new lookup + QuickOverride.Invalidate(); + int i; + for(i=0; i=0) + { + QuickOverride.Set(surfaceList[i].surface,i); + } + } + return NULL; + } + int idx=QuickOverride.Test(surfaceNum); + if (idx<0) + { + int i; + if (surfaceNum==10000) + { + for(i=0; i=0&&idxmdxm->animIndex); + model_t *mod_m = R_GetModelByHandle(RE_RegisterModel(fileName)); int surf; int flags; - int *activeSurfaces, *activeBones; + int *activeSurfaces; // did we find a ghoul 2 model or not? if (!mod_m->mdxm) @@ -331,53 +382,18 @@ qboolean G2_SetRootSurface( CGhoul2Info_v &ghoul2, const int modelIndex, const c // firstly, generate a list of active / on surfaces below the root point // gimme some space to put this list into - activeSurfaces = (int *)Z_Malloc(mod_m->mdxm->numSurfaces * 4, TAG_GHOUL2, qfalse); + activeSurfaces = (int *)Z_Malloc(mod_m->mdxm->numSurfaces * 4, TAG_GHOUL2,qfalse); memset(activeSurfaces, 0, (mod_m->mdxm->numSurfaces * 4)); - activeBones = (int *)Z_Malloc(mod_a->mdxa->numBones * 4, TAG_GHOUL2, qfalse); - memset(activeBones, 0, (mod_a->mdxa->numBones * 4)); + + G2_FindOverrideSurface(-1,ghoul2[modelIndex].mSlist); //reset the quick surface override lookup; G2_FindRecursiveSurface(mod_m, surf, ghoul2[modelIndex].mSlist, activeSurfaces); - // now generate the used bone list - CConstructBoneList CBL(ghoul2[modelIndex].mSurfaceRoot, - activeBones, - ghoul2[modelIndex].mSlist, - mod_m, - ghoul2[modelIndex].mBlist); - - G2_ConstructUsedBoneList(CBL); - // now remove all procedural or override surfaces that refer to surfaces that arent on this list G2_RemoveRedundantGeneratedSurfaces(ghoul2[modelIndex].mSlist, activeSurfaces); - // now remove all bones that are pointing at bones that aren't active - G2_RemoveRedundantBoneOverrides(ghoul2[modelIndex].mBlist, activeBones); - - // then remove all bolts that point at surfaces or bones that *arent* active. - G2_RemoveRedundantBolts(ghoul2[modelIndex].mBltlist, ghoul2[modelIndex].mSlist, activeSurfaces, activeBones); - - // then remove all models on this ghoul2 instance that use those bolts that are being removed. - for (int i=0; i> MODEL_SHIFT) & MODEL_AND; - int boltNum = (ghoul2[i].mModelBoltLink >> BOLT_SHIFT) & BOLT_AND; - // if either the bolt list is too small, or the bolt we are pointing at references nothing, remove this model - if ((ghoul2[boltMod].mBltlist.size() <= boltNum) || - ((ghoul2[boltMod].mBltlist[boltNum].boneNumber == -1) && - (ghoul2[boltMod].mBltlist[boltNum].surfaceNumber == -1))) - { - G2API_RemoveGhoul2Model(ghoul2, i); - } - } - } - // remember to free what we used Z_Free(activeSurfaces); - Z_Free(activeBones); - return (qtrue); } assert(0); diff --git a/code/ghoul2/vssver.scc b/code/ghoul2/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..343426baa22baeba480c130544f257ce4f3737e6 GIT binary patch literal 128 zcmXpJVr2M{@S`hK$AU_<) QcU+hv_E_4~SPIAo02!bqK>z>% literal 0 HcmV?d00001 diff --git a/code/icarus/vssver.scc b/code/icarus/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..e5f07828152bd51db185dcf35e7766b1ad81de18 GIT binary patch literal 320 zcmXpJVr2M{@S`hK$nPNfqWPC zlcurk6O34Zd_5q)z$51qbJsE>CLmuQ$S+fyrr967AIvuZ@^hjS8f9Z*j2MCPhCu$m zOv#k17S&+B5s;sd_gN_LfG}9SF_7Qyla=C{ZUmM$0rJf*AIQ3#c-a)B-xSE_TIjGa zp7S-BZwBO_S{=RAc}1@&$UWvj{&K-Fu8zBEohU>rOKE`0aEs#IoCxA~` JP?7)u literal 0 HcmV?d00001 diff --git a/code/jpeg-6/vssver.scc b/code/jpeg-6/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..88b5c6060833fc4e30abcfc728d9131c5c2cbf9d GIT binary patch literal 784 zcmW;IYeS05akuVF2`M5suGnO|CED>95y!)!s6x6q;t zB4Qylu^CP+3x({R6xzitm$$8SHO)(|TvPM1lC=N(oG*vpd7kH-KS#BW2?`tyl&41| z#@{eV9$lKe&)oLwt2(v?(RzdZ$f!NLC~aC5jFY$UwFjk}3u1NTcd$loS;}czNq!GM zd)0Vz@uh;?2|qWrKiSBPp~eoAz4yy zB!7mLTz#pm$wD50jZ4b>ys|yyL3kkl^poYrw<1ZT7XIfe zY)$pa;@OQ<_rT{z&a^r@)#M?VRkv+TzSG4C{ll}Z_9p{An-(dd*XEeY4A9)0} zwiFI?^LNRk@a`x>g}<V5zK literal 0 HcmV?d00001 diff --git a/code/mac/MacQuake3 b/code/mac/MacQuake3 new file mode 100644 index 0000000000000000000000000000000000000000..f6d71f869ab6e29f7ef191ad5c82aeff1c96c004 GIT binary patch literal 141015 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 literal 0 HcmV?d00001 diff --git a/code/mp3code/vssver.scc b/code/mp3code/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..8e24b4fcc1573603942b6a75d76a10d4c8250ed2 GIT binary patch literal 528 zcmXpJVr2M{@S`hK$I`6zrNO|!$Z)?a)+fV?5h#)kVr> zGr;@;AYaZX-?rCgp$!wzyh0$q)q85eTQPSVkoiSGKIeOdz5FqWV16->?*UKe{!|6? E0rW|VDgXcg literal 0 HcmV?d00001 diff --git a/code/mssccprj.scc b/code/mssccprj.scc new file mode 100644 index 0000000..db1c382 --- /dev/null +++ b/code/mssccprj.scc @@ -0,0 +1,9 @@ +SCC = This is a Source Code Control file + +[game.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\StarWars" +SCC_Project_Name = "$/code", JVOAAAAA + +[starwars.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\StarWars" +SCC_Project_Name = "$/code", JVOAAAAA diff --git a/code/null/vssver.scc b/code/null/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..8ae9dabe13787ab23b9f1186c2b4866d05a4f33f GIT binary patch literal 112 zcmXpJVr2M{@S`hK$shaderNum ); } out->contents = cm.shaders[out->shaderNum].contentFlags; + //TEMP HACK: for water that cuts vis but is not solid!!! + if ( cm.shaders[out->shaderNum].surfaceFlags & SURF_SLICK ) + { + out->contents &= ~CONTENTS_SOLID; + } CM_BoundBrush( out ); } @@ -740,6 +745,7 @@ static void CM_LoadMap_Actual( const char *name, qboolean clientload, int *check Q_strncpyz( cm.name, name, sizeof( cm.name ) ); Q_strncpyz( gsCachedMapDiskImage, name, sizeof(gsCachedMapDiskImage) ); // so the renderer can check it } + CM_CleanLeafCache(); } // need a wrapper function around this because of multiple returns, need to ensure bool is correct... diff --git a/code/qcommon/cm_local.h b/code/qcommon/cm_local.h index aae2675..2255b2e 100644 --- a/code/qcommon/cm_local.h +++ b/code/qcommon/cm_local.h @@ -162,6 +162,7 @@ void CM_StoreBrushes( leafList_t *ll, int nodenum ); void CM_BoxLeafnums_r( leafList_t *ll, int nodenum ); cmodel_t *CM_ClipHandleToModel( clipHandle_t handle ); +void CM_CleanLeafCache(void); // cm_patch.c diff --git a/code/qcommon/cm_test.cpp b/code/qcommon/cm_test.cpp index 5b505ce..f43ad06 100644 --- a/code/qcommon/cm_test.cpp +++ b/code/qcommon/cm_test.cpp @@ -1,5 +1,46 @@ #include "cm_local.h" +#pragma warning (push, 3) //go back down to 3 for the stl include +#include "hstring.h" +#pragma warning (pop) +using namespace std; +class CPoint +{ +public: + float x,y,z; + CPoint(float _x,float _y,float _z): + x(_x), + y(_y), + z(_z) + { + } + bool operator== (const CPoint& _P) const {return((x==_P.x)&&(y==_P.y)&&(z==_P.z));} +}; +/* +class CPointComparator +{ +public: + bool operator()(const CPoint& _A,const CPoint& _B) const {return((_A.x==_B.x)&&(_A.y==_B.y)&&(_A.z==_B.z));} +}; +*/ +//static map pointToLeaf; +static hlist > pointToLeaf; +//static hlist > pointToContents; + +void CM_CleanLeafCache(void) +{ + hlist >::iterator l; + for(l=pointToLeaf.begin();l!=pointToLeaf.end();l++) + { + pointToLeaf.erase(l); + } +/* + for(l=pointToContents.begin();l!=pointToContents.end();l++) + { + pointToContents.erase(l); + } +*/ +} /* ================== @@ -148,7 +189,7 @@ void CM_BoxLeafnums_r( leafList_t *ll, int nodenum ) { CM_BoxLeafnums ================== */ -int CM_BoxLeafnums( const vec3_t mins, const vec3_t maxs, int *list, int listsize, int *lastLeaf) { +int CM_BoxLeafnums( const vec3_t mins, const vec3_t maxs, int *List, int listsize, int *lastLeaf) { leafList_t ll; cm.checkcount++; @@ -157,7 +198,7 @@ int CM_BoxLeafnums( const vec3_t mins, const vec3_t maxs, int *list, int listsiz VectorCopy( maxs, ll.bounds[1] ); ll.count = 0; ll.maxcount = listsize; - ll.list = list; + ll.list = List; ll.storeLeafs = CM_StoreLeafs; ll.lastLeaf = 0; ll.overflowed = qfalse; @@ -173,7 +214,7 @@ int CM_BoxLeafnums( const vec3_t mins, const vec3_t maxs, int *list, int listsiz CM_BoxBrushes ================== */ -int CM_BoxBrushes( const vec3_t mins, const vec3_t maxs, cbrush_t **list, int listsize ) { +int CM_BoxBrushes( const vec3_t mins, const vec3_t maxs, cbrush_t **List, int listsize ) { leafList_t ll; cm.checkcount++; @@ -182,7 +223,7 @@ int CM_BoxBrushes( const vec3_t mins, const vec3_t maxs, cbrush_t **list, int li VectorCopy( maxs, ll.bounds[1] ); ll.count = 0; ll.maxcount = listsize; - ll.list = (int *)list; + ll.list = (int *)List; ll.storeLeafs = CM_StoreBrushes; ll.lastLeaf = 0; ll.overflowed = qfalse; @@ -202,8 +243,11 @@ CM_PointContents ================== */ + +#if 1 + int CM_PointContents( const vec3_t p, clipHandle_t model ) { - int leafnum; + int leafnum=0; int i, k; int brushnum; cLeaf_t *leaf; @@ -219,8 +263,44 @@ int CM_PointContents( const vec3_t p, clipHandle_t model ) { if ( model ) { clipm = CM_ClipHandleToModel( model ); leaf = &clipm->leaf; - } else { - leafnum = CM_PointLeafnum_r (p, 0); + } + else + { + CPoint pt(p[0],p[1],p[2]); +/* map::iterator l=pointToLeaf.find(pt); + if(l!=pointToLeaf.end()) + { + leafnum=(*l).second; + } + else + { + if(pointToLeaf.size()>=64) + { + pointToLeaf.clear(); + Com_Printf("Cleared cache\n"); + } + leafnum=CM_PointLeafnum_r(p, 0); + pointToLeaf[pt]=leafnum; + }*/ + hlist >::iterator l; + for(l=pointToLeaf.begin();l!=pointToLeaf.end();l++) + { + if((*l).first==pt) + { + leafnum=(*l).second; + break; + } + } + if(l==pointToLeaf.end()) + { + if(pointToLeaf.size()>=64) + { + pointToLeaf.pop_back(); + } + leafnum=CM_PointLeafnum_r(p, 0); + pointToLeaf.push_front(pair(pt,leafnum)); + } + leaf = &cm.leafs[leafnum]; } @@ -247,6 +327,82 @@ int CM_PointContents( const vec3_t p, clipHandle_t model ) { return contents; } +#else + +int CM_PointContents( const vec3_t p, clipHandle_t model ) { + int leafnum=0; + int i, k; + int brushnum; + cLeaf_t *leaf; + cbrush_t *b; + int contents; + float d; + cmodel_t *clipm; + + if (!cm.numNodes) { // map not loaded + return 0; + } + + CPoint pt(p[0],p[1],p[2]); + if ( model ) + { + clipm = CM_ClipHandleToModel( model ); + leaf = &clipm->leaf; + } + else + { + hlist >::iterator l; + for(l=pointToContents.begin();l!=pointToContents.end();l++) + { + if((*l).first==pt) + { + // Breakout early. + return((*l).second); + } + } + + leafnum=CM_PointLeafnum_r(p, 0); + leaf = &cm.leafs[leafnum]; + } + + contents = 0; + for (k=0 ; knumLeafBrushes ; k++) + { + brushnum = cm.leafbrushes[leaf->firstLeafBrush+k]; + b = &cm.brushes[brushnum]; + + // see if the point is in the brush + for ( i = 0 ; i < b->numsides ; i++ ) + { + d = DotProduct( p, b->sides[i].plane->normal ); + // FIXME test for Cash +// if ( d >= b->sides[i].plane->dist ) { + if ( d > b->sides[i].plane->dist ) + { + break; + } + } + + if ( i == b->numsides ) + { + contents |= b->contents; + } + } + + // Cache the result for next time. + if(!model) + { + if(pointToContents.size()>=64) + { + pointToContents.pop_back(); + } + pointToContents.push_front(pair(pt,contents)); + } + + return contents; +} + +#endif /* ================== CM_TransformedPointContents diff --git a/code/qcommon/common.cpp b/code/qcommon/common.cpp index e1319ad..771e601 100644 --- a/code/qcommon/common.cpp +++ b/code/qcommon/common.cpp @@ -33,6 +33,7 @@ int com_argc; char *com_argv[MAX_NUM_ARGVS+1]; static fileHandle_t logfile; +static fileHandle_t speedslog; static fileHandle_t camerafile; fileHandle_t com_journalFile; fileHandle_t com_journalDataFile; // config files are written here @@ -54,6 +55,7 @@ cvar_t *com_FirstTime; cvar_t *cl_paused; cvar_t *sv_paused; cvar_t *com_skippingcin; +cvar_t *com_speedslog; // 1 = buffer log, 2 = flush after each print // com_speeds times int time_game; @@ -761,6 +763,16 @@ void *Z_Malloc(int iSize, memtag_t eTag, qboolean bZeroit) } + // ditch any image_t's (and associated GL texture mem) not used on this level... + // + extern qboolean RE_RegisterImages_LevelLoadEnd(void); + if (RE_RegisterImages_LevelLoadEnd()) + { + gbMemFreeupOccured = qtrue; + continue; // we've dropped at least one image, so try again with the malloc + } + + // ditch the model-binaries cache... (must be getting desperate here!) // extern qboolean RE_RegisterModels_LevelLoadEnd(qboolean bDeleteEverythingNotUsedThisLevel); @@ -1836,6 +1848,7 @@ void Com_Init( char *commandLine ) { com_developer = Cvar_Get ("developer", "0", CVAR_TEMP ); com_logfile = Cvar_Get ("logfile", "0", CVAR_TEMP ); + com_speedslog = Cvar_Get ("speedslog", "0", CVAR_TEMP ); com_timescale = Cvar_Get ("timescale", "1", CVAR_CHEAT ); com_fixedtime = Cvar_Get ("fixedtime", "0", CVAR_CHEAT); @@ -1981,21 +1994,34 @@ void Com_WriteConfig_f( void ) { Com_ModifyMsec ================ */ -int Com_ModifyMsec( int msec ) { + + +int Com_ModifyMsec( int msec, float &fraction ) +{ int clampTime; + fraction=0.0f; + // // modify time for debugging values // - if ( com_fixedtime->integer ) { + if ( com_fixedtime->integer ) + { msec = com_fixedtime->integer; - } else if ( com_timescale->value ) { - msec *= com_timescale->value; + } + else if ( com_timescale->value ) + { + fraction=(float)msec; + fraction*=com_timescale->value; + msec=(int)floor(fraction); + fraction-=(float)msec; } // don't let it scale below 1 msec - if ( msec < 1 ) { + if ( msec < 1 ) + { msec = 1; + fraction=0.0f; } if ( com_skippingcin->integer ) { @@ -2010,6 +2036,7 @@ int Com_ModifyMsec( int msec ) { if ( msec > clampTime ) { msec = clampTime; + fraction=0.0f; } return msec; @@ -2020,6 +2047,15 @@ int Com_ModifyMsec( int msec ) { Com_Frame ================= */ +static vec3_t corg; +static vec3_t cangles; +static bool bComma; +void Com_SetOrgAngles(vec3_t org,vec3_t angles) +{ + VectorCopy(org,corg); + VectorCopy(angles,cangles); +} + #pragma warning (disable: 4701) //local may have been used without init (timing info vars) void Com_Frame( void ) { try @@ -2027,6 +2063,7 @@ try int timeBeforeFirstEvents, timeBeforeServer, timeBeforeEvents, timeBeforeClient, timeAfter; int msec, minMsec; static int lastTime; + char msg[MAXPRINTMSG]; // write config file if anything changed Com_WriteConfiguration(); @@ -2063,7 +2100,8 @@ try // mess with msec if needed com_frameMsec = msec; - msec = Com_ModifyMsec( msec ); + float fractionMsec=0.0f; + msec = Com_ModifyMsec( msec, fractionMsec); // // server side @@ -2072,7 +2110,7 @@ try timeBeforeServer = Sys_Milliseconds (); } - SV_Frame (msec); + SV_Frame (msec, fractionMsec); // @@ -2098,7 +2136,7 @@ try timeBeforeClient = Sys_Milliseconds (); } - CL_Frame (msec); + CL_Frame (msec, fractionMsec); if ( com_speeds->integer ) { timeAfter = Sys_Milliseconds (); @@ -2119,8 +2157,42 @@ try sv -= time_game; cl -= time_frontend + time_backend; - Com_Printf ("fr:%i all:%3i sv:%3i ev:%3i cl:%3i gm:%3i tr:%3i pvs:%3i rf:%3i bk:%3i\n", - com_frameNumber, all, sv, ev, cl, time_game, timeInTrace, timeInPVSCheck, time_frontend, time_backend ); + Com_Printf("fr:%i all:%3i sv:%3i ev:%3i cl:%3i gm:%3i tr:%3i pvs:%3i rf:%3i bk:%3i\n", + com_frameNumber, all, sv, ev, cl, time_game, timeInTrace, timeInPVSCheck, time_frontend, time_backend); + + // speedslog + if ( com_speedslog && com_speedslog->integer ) + { + if(!speedslog) + { + speedslog = FS_FOpenFileWrite("speeds.log"); + FS_Write("data={\n", strlen("data={\n"), speedslog); + bComma=false; + if ( com_speedslog->integer > 1 ) + { + // force it to not buffer so we get valid + // data even if we are crashing + FS_ForceFlush(logfile); + } + } + if (speedslog) + { + if(bComma) + { + FS_Write(",\n", strlen(",\n"), speedslog); + bComma=false; + } + FS_Write("{", strlen("{"), speedslog); + Com_sprintf(msg,sizeof(msg), + "%8.4f,%8.4f,%8.4f,%8.4f,%8.4f,%8.4f,",corg[0],corg[1],corg[2],cangles[0],cangles[1],cangles[2]); + FS_Write(msg, strlen(msg), speedslog); + Com_sprintf(msg,sizeof(msg), + "%i,%3i,%3i,%3i,%3i,%3i,%3i,%3i,%3i,%3i}", + com_frameNumber, all, sv, ev, cl, time_game, timeInTrace, timeInPVSCheck, time_frontend, time_backend); + FS_Write(msg, strlen(msg), speedslog); + bComma=true; + } + } timeInTrace = timeInPVSCheck = 0; } @@ -2166,6 +2238,12 @@ void Com_Shutdown (void) { logfile = 0; } + if (speedslog) { + FS_Write("\n};", strlen("\n};"), speedslog); + FS_FCloseFile (speedslog); + speedslog = 0; + } + if (camerafile) { FS_FCloseFile (camerafile); camerafile = 0; diff --git a/code/qcommon/hstring.cpp b/code/qcommon/hstring.cpp new file mode 100644 index 0000000..c4dddbf --- /dev/null +++ b/code/qcommon/hstring.cpp @@ -0,0 +1,493 @@ +#include "cm_local.h" +#include "hstring.h" + +// mapPoolBlockCount is defined differently in the executable (sv_main.cpp) and the game dll (g_main.cpp) cuz +//we likely don't need as many blocks in the executable as we do in the game +extern int mapPoolBlockCount; + +// Used to fool optimizer during compilation of mem touch routines. +int HaHaOptimizer2=0; + +CMapPoolLow &GetMapPool() +{ + // this may need to be ifdefed to be different for different modules + static CMapPoolLow thePool; + return thePool; +} + +#define MAPBLOCK_SIZE_NODES (1024) +#define MAPNODE_FREE (0xa1) +#define MAPNODE_INUSE (0x94) + +struct SMapNode +{ + unsigned char mData[MAP_NODE_SIZE-2]; + unsigned char mMapBlockNum; + unsigned char mTag; +}; + +class CMapBlock +{ + int mId; + char mRaw[(MAPBLOCK_SIZE_NODES+1)*MAP_NODE_SIZE]; + SMapNode *mNodes; + int mLastNode; + +public: + CMapBlock(int id,vector &freeList) : + mLastNode(0) + { + // Alloc node storage for MAPBLOCK_SIZE_NODES worth of nodes. + mNodes=(SMapNode *)((((unsigned long)mRaw)+MAP_NODE_SIZE)&~(unsigned long)0x1f); + // Set all nodes to initially be free. + int i; + for(i=0;i=&mNodes[0])&&(((SMapNode *)node)<&mNodes[MAPBLOCK_SIZE_NODES])); + } +}; + +CMapPoolLow::CMapPoolLow() +{ + mLastBlockNum=-1; +} + +CMapPoolLow::~CMapPoolLow() +{ +#if _DEBUG +#if _GAME + if(mFreeList.size()mTag==MAPNODE_FREE); + assert((((SMapNode *)node)->mMapBlockNum)>=0); + assert((((SMapNode *)node)->mMapBlockNum)<256); + assert((((SMapNode *)node)->mMapBlockNum)<=mLastBlockNum); + assert(mMapBlocks[((SMapNode *)node)->mMapBlockNum]->bOwnsNode(node)); + + // Ok, mark the node as in use. + ((SMapNode *)node)->mTag=MAPNODE_INUSE; + + return(node); +} + +void CMapPoolLow::Free(void *p) +{ + // Validate that someone isn't trying to double free this node and also + // that the end marker is intact. + assert(((SMapNode *)p)->mTag==MAPNODE_INUSE); + assert((((SMapNode *)p)->mMapBlockNum)>=0); + assert((((SMapNode *)p)->mMapBlockNum)<256); + assert((((SMapNode *)p)->mMapBlockNum)<=mLastBlockNum); + assert(mMapBlocks[((SMapNode *)p)->mMapBlockNum]->bOwnsNode(p)); + + // Ok, mark the the node as free. + ((SMapNode *)p)->mTag=MAPNODE_FREE; + + // Add a new freelist entry to point at this node. + mFreeList.push_back(p); +} + +void CMapPoolLow::TouchMem() +{ + int i,j; + unsigned char *memory; + int totSize=0; + for(i=0;i=0&&hash=0&&mFindPtr(BLOCK_SIZE-mBytesUsed)) + { + return(0); + } + + // Return the pointer to the start of allocated space. + char *ret=&mRaw[mBytesUsed]; + mBytesUsed+=sizeBytes; + return ret; + } + + bool operator== (const CHSBlock &block) const + { + if(!memcmp(mRaw,block.mRaw,BLOCK_SIZE)) + { + return(true); + } + return(false); + } +}; + +class CPool +{ + vector mBlockVec; + +public: + int mNextStringId; + int mLastBlockNum; + + CPool(void) : + mNextStringId(1), + mLastBlockNum(-1) + { + memset(gCharPtrs,0,MAX_HSTRINGS*4); + } + + ~CPool(void) + { + int i; + for (i=0;i=0) + { + // Get the pointer to the start of allocated space in the current block. + raw=mBlockVec[mLastBlockNum]->Alloc(sizeBytes); + } + if(!raw) + { + // Ok, make a new empty block and append it. + CHSBlock *block=new(CHSBlock); + mBlockVec.push_back(block); + mLastBlockNum++; + raw=mBlockVec[mLastBlockNum]->Alloc(sizeBytes); + } + // Should never really happen!! + assert(raw); + + id=mNextStringId; + gCharPtrs[mNextStringId]=raw; + mNextStringId++; + + return(raw); + } + + bool operator== (const CPool &pool) const + { + int i; + for(i=0;i0&&id0&&mId0&&mId +#include +#include +#include +#pragma warning (pop) + +using namespace std; + +class hstring +{ + int mId; + + void Init(const char *str); + +public: + hstring() + { + mId=0; + } + hstring(const char *str) + { + Init(str); + } + hstring(const string &str) + { + Init(str.c_str()); + } + hstring(const hstring &str) + { + mId=str.mId; + } + + operator string () const + { + return str(); + } + + const char *c_str(void) const; + string str(void) const; + + hstring& operator= (const char *str) + { + Init(str); + return *this; + } + hstring& operator= (const string &str) + { + Init(str.c_str()); + return *this; + } + hstring& operator= (const hstring &str) + { + mId=str.mId; + return *this; + } + + bool operator== (const hstring &str) const + { + return((mId==str.mId)?true:false); + } + + int compare(const hstring &str) const + { + return strcmp(c_str(),str.c_str()); + } + + bool operator< (const hstring &str) const + { + return((mId mMapBlocks; + vector mFreeList; + int mLastBlockNum; + +public: + CMapPoolLow(); + ~CMapPoolLow(); + void *Alloc(); + void Free(void *p); + void TouchMem(); +}; + +CMapPoolLow &GetMapPool(); + +template +class CMapPool +{ + CMapPoolLow &mPool; +public: + CMapPool() : mPool(GetMapPool()) + { + + } + template + CMapPool(const U&) : mPool(GetMapPool()) + { + } + ~CMapPool() + { + } + + typedef T value_type; + typedef T* pointer; + typedef const T* const_pointer; + typedef T& reference; + typedef const T& const_reference; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + + template + struct rebind + { + typedef CMapPool other; + }; + + // return address of values + pointer address (reference value) const + { + return &value; + } + const_pointer address (const_reference value) const + { + return &value; + } + + // return maximum number of elements that can be allocated + size_type max_size () const + { + return mMaxSize; + } + + // allocate but don't initialize num elements of type T + pointer allocate (size_type num, const void* = 0) + { + assert(sizeof(T)<=(MAP_NODE_SIZE-2)); // to big for this pool + assert(num==1); //allocator not design for this + return (T*)mPool.Alloc(); + } + void *_Charalloc(size_type size) + { + assert(size<=(MAP_NODE_SIZE-2)); // to big for this pool + return mPool.Alloc(); + } + + // initialize elements of allocated storage p with value value + void construct (pointer p, const T& value) + { + // initialize memory with placement new + new((void*)p)T(value); + } + + // destroy elements of initialized storage p + void destroy (pointer p) + { + // destroy objects by calling their destructor + p->~T(); + } + + // deallocate storage p of deleted elements + template + void deallocate (U *p, size_type num) + { + assert(num==1); //allocator not design for this + mPool.Free(p); + } +}; + +template +bool operator== (const CMapPool&, + const CMapPool&) +{ + return false; +} +template +bool operator!= (const CMapPool&, + const CMapPool&) +{ + return true; +} + +template > +class hmap : public map >{}; + +template > +class hmultimap : public multimap >{}; + +template > +class hset : public set >{}; + +template > +class hmultiset : public multiset >{}; + +template +class hlist : public list >{}; + +#endif // hString_H \ No newline at end of file diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index bd160d6..5d449a3 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -617,6 +617,7 @@ inline void *Hunk_Alloc( int size, qboolean bZeroIt = qtrue) void Com_TouchMemory( void ); // commandLine should not include the executable name (argv[0]) +void Com_SetOrgAngles(vec3_t org,vec3_t angles); void Com_Init( char *commandLine ); void Com_Frame( void ); void Com_Shutdown( void ); @@ -641,7 +642,7 @@ void CL_InitKeyCommands( void ); void CL_Init( void ); void CL_Disconnect( void ); void CL_Shutdown( void ); -void CL_Frame( int msec ); +void CL_Frame( int msec,float fractionMsec ); qboolean CL_GameCommand( void ); void CL_KeyEvent (int key, qboolean down, unsigned time); @@ -686,7 +687,7 @@ void SCR_DebugGraph (float value, int color); // FIXME: move logging to common? // void SV_Init( void ); void SV_Shutdown( char *finalmsg ); -void SV_Frame( int msec ); +void SV_Frame( int msec,float fractionMsec); void SV_PacketEvent( netadr_t from, msg_t *msg ); qboolean SV_GameCommand( void ); diff --git a/code/qcommon/strip.cpp b/code/qcommon/strip.cpp index 1b999c0..5acb6d1 100644 --- a/code/qcommon/strip.cpp +++ b/code/qcommon/strip.cpp @@ -108,7 +108,7 @@ sFlagPair LanguagePairs[] = { TK_TEXT_LANGUAGE6, SP_LANGUAGE_TAIWANESE }, { TK_TEXT_LANGUAGE7, SP_LANGUAGE_ITALIAN }, { TK_TEXT_LANGUAGE8, SP_LANGUAGE_SPANISH }, - { TK_TEXT_LANGUAGE9, SP_LANGUAGE_9 }, + { TK_TEXT_LANGUAGE9, SP_LANGUAGE_JAPANESE }, { TK_TEXT_LANGUAGE10, SP_LANGUAGE_10}, { TK_INVALID, 0 } }; @@ -738,10 +738,10 @@ map SP_ListByID; * Registration flag * * Return: - * pointer to desired String Package + * success/fail * ************************************************************************************************/ -void SP_Register(const char *inPackage, unsigned char Registration) +qboolean SP_Register(const char *inPackage, unsigned char Registration) { char *buffer; char Package[MAX_QPATH]; @@ -770,7 +770,7 @@ void SP_Register(const char *inPackage, unsigned char Registration) { Com_Error(ERR_FATAL, "Could not open string package '%s'", Package); } - return; + return qfalse; } // Create the new string package @@ -796,6 +796,7 @@ void SP_Register(const char *inPackage, unsigned char Registration) new_sp->Register(Registration); // return new_sp; + return qtrue; } @@ -947,7 +948,7 @@ void SP_Init(void) sp_language = Cvar_Get("sp_language", va("%d", SP_LANGUAGE_ENGLISH), CVAR_ARCHIVE | CVAR_NORESTART); sp_show_strip = Cvar_Get ("sv_show_strip", "0", 0); -// Cvar_Set("sp_language", va("%d", SP_LANGUAGE_KOREAN)); // stetest, do NOT leave in +// Cvar_Set("sp_language", va("%d", SP_LANGUAGE_JAPANESE)); // stetest, do NOT leave in SP_UpdateLanguage(); sp_language->modified = false; diff --git a/code/qcommon/strippublic.h b/code/qcommon/strippublic.h index 0356dbd..74a5f6c 100644 --- a/code/qcommon/strippublic.h +++ b/code/qcommon/strippublic.h @@ -8,16 +8,6 @@ #define MAX_STRINGS 256 #define MAX_ID 255 -/* -ENGLISH -FRENCH -GERMAN -BRITISH -KOREAN -TAIWANESE -ITALIAN -SPANISH -*/ enum { SP_LANGUAGE_ENGLISH = 0, @@ -28,7 +18,7 @@ enum SP_LANGUAGE_TAIWANESE, SP_LANGUAGE_ITALIAN, SP_LANGUAGE_SPANISH, - SP_LANGUAGE_9, + SP_LANGUAGE_JAPANESE, SP_LANGUAGE_10, SP_LANGUGAGE_MAX, SP_LANGUAGE_ALL = 255 @@ -60,7 +50,7 @@ enum // Registration -void SP_Register(const char *Package, unsigned char Registration); +qboolean SP_Register(const char *Package, unsigned char Registration); void SP_Unload(unsigned char Registration); // Direct string functions @@ -89,6 +79,11 @@ inline qboolean Language_IsTaiwanese(void) return (sp_language && sp_language->integer == SP_LANGUAGE_TAIWANESE); } +inline qboolean Language_IsJapanese(void) +{ + return (sp_language && sp_language->integer == SP_LANGUAGE_JAPANESE); +} + inline int Language_GetIntegerValue(void) { if (sp_language) diff --git a/code/qcommon/stv_version.h b/code/qcommon/stv_version.h index 3fd0670..9e5924d 100644 --- a/code/qcommon/stv_version.h +++ b/code/qcommon/stv_version.h @@ -1,6 +1,6 @@ // Current version of the single player game -#define Q3_VERSION "JK2: v0.54" +#define Q3_VERSION "JK2: v0.55" // end diff --git a/code/qcommon/vssver.scc b/code/qcommon/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..8337976965dc39000fe4ac3967d90ba59ff0c4f0 GIT binary patch literal 512 zcmXpJVr2M{@S`hK$1IV8U$7*Bat7Hy3&=k_ci#fjy7$g< zK>lnX|4hX@6JMJRVEH*f{_~{|^C!>Bakd7^&js?O?>K#sU&P`JvTq)cKjWk3jq7|0 z&XPd>0wBNMTWk7?Un%R?#{Ihmok0Fu1mw$I*|N&oSCq zMShi+Ge~|hkgxqQFRR)t3M_vd$giEzVW#`zqmwXD{sfS(@Z#5$m5rTX^G|3oF!(C8 z&knw3;S92mQJaC`$*zgX|MQ%{>h*y9pD|nPEF;f@?RVE@U|2upw$yx+IZhlv^+`qy c41V_-j5e~jgZ-Nf= ((BIG5_HIBYTE_START0<<8)|BIG5_LOBYTE_LOBOUND0) && uiCode <= ((BIG5_HIBYTE_STOP0<<8)|BIG5_LOBYTE_HIBOUND0)) - || (uiCode >= ((BIG5_HIBYTE_START1<<8)|BIG5_LOBYTE_LOBOUND0) && uiCode <= ((BIG5_HIBYTE_STOP1<<8)|0xD5)) // no meaningful equate for this, it's just end-of-glyphs for highest row + const byte _iHi = (uiCode >> 8)&0xFF; + if ( (_iHi >= BIG5_HIBYTE_START0 && _iHi <= BIG5_HIBYTE_STOP0) + || (_iHi >= BIG5_HIBYTE_START1 && _iHi <= BIG5_HIBYTE_STOP1) ) { const byte _iLo = uiCode & 0xFF; @@ -98,10 +106,10 @@ static bool Taiwanese_ValidBig5Code( unsigned int uiCode ) // static bool Taiwanese_IsTrailingPunctuation( unsigned int uiCode ) { - // so far I'm just counting the first 20 chars, those seem to be all the basic punctuation... + // so far I'm just counting the first 21 chars, those seem to be all the basic punctuation... // if ( uiCode >= ((BIG5_HIBYTE_START0<<8)|BIG5_LOBYTE_LOBOUND0) && - uiCode <= ((BIG5_HIBYTE_START0<<8)|BIG5_LOBYTE_LOBOUND0+20) + uiCode < ((BIG5_HIBYTE_START0<<8)|BIG5_LOBYTE_LOBOUND0+20) ) { return true; @@ -131,10 +139,113 @@ static int Taiwanese_CollapseBig5Code( unsigned int uiCode ) return 0; } +static int Taiwanese_InitFields(int &iGlyphTPs, LPCSTR &psLang) +{ + psLang = "tai"; + iGlyphTPs = GLYPH_MAX_TAIWANESE_SHADERS; + return 64; // m_iAsianGlyphsAcross +} + +// ======================== some Japanese stuff ============================== + + +// ( all ranges inclusive for Shift-JIS ) +// +#define SHIFTJIS_HIBYTE_START0 0x81 +#define SHIFTJIS_HIBYTE_STOP0 0x9F +#define SHIFTJIS_HIBYTE_START1 0xE0 +#define SHIFTJIS_HIBYTE_STOP1 0xEF +// +#define SHIFTJIS_LOBYTE_START0 0x40 +#define SHIFTJIS_LOBYTE_STOP0 0x7E +#define SHIFTJIS_LOBYTE_START1 0x80 +#define SHIFTJIS_LOBYTE_STOP1 0xFC +#define SHIFTJIS_CODES_PER_ROW (((SHIFTJIS_LOBYTE_STOP0-SHIFTJIS_LOBYTE_START0)+1)+((SHIFTJIS_LOBYTE_STOP1-SHIFTJIS_LOBYTE_START1)+1)) + + +extern qboolean Language_IsJapanese( void ); + +static bool Japanese_ValidShiftJISCode( byte _iHi, byte _iLo ) +{ + if ( (_iHi >= SHIFTJIS_HIBYTE_START0 && _iHi <= SHIFTJIS_HIBYTE_STOP0) + || (_iHi >= SHIFTJIS_HIBYTE_START1 && _iHi <= SHIFTJIS_HIBYTE_STOP1) + ) + { + if ( (_iLo >= SHIFTJIS_LOBYTE_START0 && _iLo <= SHIFTJIS_LOBYTE_STOP0) || + (_iLo >= SHIFTJIS_LOBYTE_START1 && _iLo <= SHIFTJIS_LOBYTE_STOP1) + ) + { + return true; + } + } + + return false; +} + +static inline bool Japanese_ValidShiftJISCode( unsigned int uiCode ) +{ + return Japanese_ValidShiftJISCode( uiCode >> 8, uiCode & 0xFF ); +} + + +// only call this when Japanese_ValidShiftJISCode() has already returned true... +// +static bool Japanese_IsTrailingPunctuation( unsigned int uiCode ) +{ + // so far I'm just counting the first 18 chars, those seem to be all the basic punctuation... + // + if ( uiCode >= ((SHIFTJIS_HIBYTE_START0<<8)|SHIFTJIS_LOBYTE_START0) && + uiCode < ((SHIFTJIS_HIBYTE_START0<<8)|SHIFTJIS_LOBYTE_START0+18) + ) + { + return true; + } + + return false; +} + + +// takes a ShiftJIS double-byte code and collapse down to a 0..n glyph index... +// +// (invalid codes will return 0) +// +static int Japanese_CollapseShiftJISCode( unsigned int uiCode ) +{ + if (Japanese_ValidShiftJISCode( uiCode )) + { + uiCode -= ((SHIFTJIS_HIBYTE_START0<<8)|SHIFTJIS_LOBYTE_START0); // sneaky maths on both bytes, reduce to 0x0000 onwards + + if ( (uiCode & 0xFF) >= (SHIFTJIS_LOBYTE_START1)-SHIFTJIS_LOBYTE_START0) + { + uiCode -= ((SHIFTJIS_LOBYTE_START1)-SHIFTJIS_LOBYTE_STOP0)-1; + } + + if ( ((uiCode>>8)&0xFF) >= (SHIFTJIS_HIBYTE_START1)-SHIFTJIS_HIBYTE_START0) + { + uiCode -= ((SHIFTJIS_HIBYTE_START1)-SHIFTJIS_HIBYTE_STOP0)-1; + } + + uiCode = ((uiCode >> 8) * SHIFTJIS_CODES_PER_ROW) + (uiCode & 0xFF); + + return uiCode; + } + return 0; +} + + +static int Japanese_InitFields(int &iGlyphTPs, LPCSTR &psLang) +{ + psLang = "jap"; + iGlyphTPs = GLYPH_MAX_JAPANESE_SHADERS; + return 64; // m_iAsianGlyphsAcross +} // ============================================================================ + + + // takes char *, returns integer char at that point, and advances char * on by enough bytes to move // past the letter (either western 1 byte or Asian multi-byte)... // @@ -181,6 +292,24 @@ unsigned int AnyLanguage_ReadCharFromString( const char **ppsText, qboolean *pbI return uiLetter; } } + else + if ( Language_IsJapanese() ) + { + if ( Japanese_ValidShiftJISCode( psString[0], psString[1] )) + { + uiLetter = (psString[0] * 256) + psString[1]; + *ppsText += 2; + + // need to ask if this is a trailing (ie like a comma or full-stop) punctuation?... + // + if ( pbIsTrailingPunctuation) + { + *pbIsTrailingPunctuation = Japanese_IsTrailingPunctuation( uiLetter ); + } + + return uiLetter; + } + } // ... must not have been an MBCS code... // @@ -206,7 +335,7 @@ unsigned int AnyLanguage_ReadCharFromString( const char **ppsText, qboolean *pbI // qboolean Language_IsAsian(void) { - return (Language_IsKorean() || Language_IsTaiwanese()); + return (Language_IsKorean() || Language_IsTaiwanese() || Language_IsJapanese()); } @@ -253,6 +382,44 @@ CFontInfo::CFontInfo(const char *fontName) // finished... fontArray.resize(fontIndex + 1); fontArray[fontIndex++] = this; + + + extern cvar_t *com_buildScript; + if (com_buildScript->integer) + { + static qboolean bDone = qfalse; // Do this once only (for speed)... + if (!bDone) + { + bDone = qtrue; + + char sTemp[MAX_QPATH]; + int iGlyphTPs = 0; + const char *psLang = NULL; + int iAsianGlyphsAcross; + + for (int iLang=0; iLang<3; iLang++) + { + switch (iLang) + { + case 0: iAsianGlyphsAcross = Korean_InitFields (iGlyphTPs, psLang); break; + case 1: iAsianGlyphsAcross = Taiwanese_InitFields (iGlyphTPs, psLang); break; + case 2: iAsianGlyphsAcross = Japanese_InitFields (iGlyphTPs, psLang); break; + } + + for (int i=0; i=0&&index=0&&mFinalBones[index].parent=0) + { + EvalLow(mFinalBones[index].parent); // make sure parent is evaluated + SBoneCalc &par=mBones[mFinalBones[index].parent]; + mBones[index].newFrame=par.newFrame; + mBones[index].currentFrame=par.currentFrame; + mBones[index].backlerp=par.backlerp; + mBones[index].blendFrame=par.blendFrame; + mBones[index].blendOldFrame=par.blendOldFrame; + mBones[index].blendMode=par.blendMode; + mBones[index].blendLerp=par.blendLerp; + } + G2_TransformBone(index,*this); + mFinalBones[index].touch=mCurrentTouch; + } + } +public: + int frameSize; + const mdxaHeader_t *header; + void *mod; + + // these are split for better cpu cache behavior + vector mBones; + vector mFinalBones; + + vector mSmoothBones; // for render smoothing + vector mSkels; + + boneInfo_v *rootBoneList; + mdxaBone_t rootMatrix; + int incomingTime; + + int mCurrentTouch; + + // for render smoothing + int mLastTouch; + int mLastLastTouch; + bool mSmoothingActive; + bool mUnsquash; + float mSmoothFactor; + int mLastTime; + int mWraithID; // this is just used for debug prints, can use it for any int of interest in JK2 + + CBoneCache(void *amod,const mdxaHeader_t *aheader) : + mod(amod), + header(aheader) + { + assert(amod); + assert(aheader); + mSmoothingActive=false; + mUnsquash=false; + mSmoothFactor=0.0f; + + int numBones=header->numBones; + mBones.resize(numBones); + mFinalBones.resize(numBones); + mSmoothBones.resize(numBones); + mSkels.resize(numBones); + mdxaSkelOffsets_t *offsets; + mdxaSkel_t *skel; + offsets = (mdxaSkelOffsets_t *)((byte *)header + sizeof(mdxaHeader_t)); + + int i; + for (i=0;ioffsets[i]); + mSkels[i]=skel; + mFinalBones[i].parent=skel->parent; + } + mCurrentTouch=3; + mLastTouch=2; + mLastLastTouch=1; + mLastTime=0; + } + SBoneCalc &Root() + { + assert(mBones.size()); + return mBones[0]; + } + const mdxaBone_t &Eval(int index) + { + EvalLow(index); + return mFinalBones[index].boneMatrix; + } + const mdxaBone_t &EvalRender(int index) + { + EvalLow(index); + if (mSmoothingActive) + { + if (mSmoothBones[index].touch!=mCurrentTouch) + { + if (mSmoothBones[index].touch==mLastTouch) + { + int i; + float *oldM=&mSmoothBones[index].boneMatrix.matrix[0][0]; + float *newM=&mFinalBones[index].boneMatrix.matrix[0][0]; + for (i=0;i<12;i++,oldM++,newM++) + { + *oldM=mSmoothFactor*(*oldM-*newM)+*newM; + } + } + else + { + memcpy(&mSmoothBones[index].boneMatrix,&mFinalBones[index].boneMatrix,sizeof(mdxaBone_t)); + } + if (mUnsquash) + { + mdxaBone_t tempMatrix; + Multiply_3x4Matrix(&tempMatrix,&mSmoothBones[index].boneMatrix, &mSkels[index]->BasePoseMat); + float maxl; + maxl=VectorLength(&mSkels[index]->BasePoseMat.matrix[0][0]); + VectorNormalize(&tempMatrix.matrix[0][0]); + VectorNormalize(&tempMatrix.matrix[1][0]); + VectorNormalize(&tempMatrix.matrix[2][0]); + + VectorScale(&tempMatrix.matrix[0][0],maxl,&tempMatrix.matrix[0][0]); + VectorScale(&tempMatrix.matrix[1][0],maxl,&tempMatrix.matrix[1][0]); + VectorScale(&tempMatrix.matrix[2][0],maxl,&tempMatrix.matrix[2][0]); + Multiply_3x4Matrix(&mSmoothBones[index].boneMatrix,&tempMatrix,&mSkels[index]->BasePoseMatInv); + } + mSmoothBones[index].touch=mCurrentTouch; + } + return mSmoothBones[index].boneMatrix; + } + return mFinalBones[index].boneMatrix; } }; +void RemoveBoneCache(CBoneCache *boneCache) +{ + delete boneCache; +} + +const mdxaBone_t &EvalBoneCache(int index,CBoneCache *boneCache) +{ + return boneCache->Eval(index); +} + + class CRenderSurface { public: @@ -131,7 +225,7 @@ public: const shader_t *cust_shader; int fogNum; qboolean personalModel; - mdxaBone_v &bonePtr; + CBoneCache *boneCache; int renderfx; const skin_t *skin; const model_t *currentModel; @@ -144,7 +238,7 @@ public: const shader_t *initcust_shader, int initfogNum, qboolean initpersonalModel, - mdxaBone_v &initbonePtr, + CBoneCache *initboneCache, int initrenderfx, const skin_t *initskin, const model_t *initcurrentModel, @@ -156,7 +250,7 @@ public: cust_shader(initcust_shader), fogNum(initfogNum), personalModel(initpersonalModel), - bonePtr(initbonePtr), + boneCache(initboneCache), renderfx(initrenderfx), skin(initskin), currentModel(initcurrentModel), @@ -350,92 +444,8 @@ static int G2_ComputeLOD( trRefEntity_t *ent, const model_t *currentModel, int l return lod; } -//====================================================================== -// -// Bone Manipulation code - -void G2_CreateQuaterion(mdxaBone_t *mat, vec4_t quat) -{ - // this is revised for the 3x4 matrix we use in G2. - float t = 1 + mat->matrix[0][0] + mat->matrix[1][1] + mat->matrix[2][2]; - float s; - - //If the trace of the matrix is greater than zero, then - //perform an "instant" calculation. - //Important note wrt. rouning errors: - //Test if ( T > 0.00000001 ) to avoid large distortions! - if (t > 0.00000001) - { - s = sqrt(t) * 2; - quat[0] = ( mat->matrix[1][2] - mat->matrix[2][1] ) / s; - quat[1] = ( mat->matrix[2][0] - mat->matrix[0][2] ) / s; - quat[2] = ( mat->matrix[0][1] - mat->matrix[1][0] ) / s; - quat[3] = 0.25 * s; - } - else - { - //If the trace of the matrix is equal to zero then identify - //which major diagonal element has the greatest value. - - //Depending on this, calculate the following: - - if ( mat->matrix[0][0] > mat->matrix[1][1] && mat->matrix[0][0] > mat->matrix[2][2] ) { // Column 0: - s = sqrt( 1.0 + mat->matrix[0][0] - mat->matrix[1][1] - mat->matrix[2][2])* 2; - quat[0] = 0.25 * s; - quat[1] = (mat->matrix[0][1] + mat->matrix[1][0] ) / s; - quat[2] = (mat->matrix[2][0] + mat->matrix[0][2] ) / s; - quat[3] = (mat->matrix[1][2] - mat->matrix[2][1] ) / s; - - } else if ( mat->matrix[1][1] > mat->matrix[2][2] ) { // Column 1: - s = sqrt( 1.0 + mat->matrix[1][1] - mat->matrix[0][0] - mat->matrix[2][2] ) * 2; - quat[0] = (mat->matrix[0][1] + mat->matrix[1][0] ) / s; - quat[1] = 0.25 * s; - quat[2] = (mat->matrix[1][2] + mat->matrix[2][1] ) / s; - quat[3] = (mat->matrix[2][0] - mat->matrix[0][2] ) / s; - - } else { // Column 2: - s = sqrt( 1.0 + mat->matrix[2][2] - mat->matrix[0][0] - mat->matrix[1][1] ) * 2; - quat[0] = (mat->matrix[2][0]+ mat->matrix[0][2] ) / s; - quat[1] = (mat->matrix[1][2] + mat->matrix[2][1] ) / s; - quat[2] = 0.25 * s; - quat[3] = (mat->matrix[0][1] - mat->matrix[1][0] ) / s; - } - } -} - -void G2_CreateMatrixFromQuaterion(mdxaBone_t *mat, vec4_t quat) -{ - - float xx = quat[0] * quat[0]; - float xy = quat[0] * quat[1]; - float xz = quat[0] * quat[2]; - float xw = quat[0] * quat[3]; - - float yy = quat[1] * quat[1]; - float yz = quat[1] * quat[2]; - float yw = quat[1] * quat[3]; - - float zz = quat[2] * quat[2]; - float zw = quat[2] * quat[3]; - - mat->matrix[0][0] = 1 - 2 * ( yy + zz ); - mat->matrix[1][0] = 2 * ( xy - zw ); - mat->matrix[2][0] = 2 * ( xz + yw ); - - mat->matrix[0][1] = 2 * ( xy + zw ); - mat->matrix[1][1] = 1 - 2 * ( xx + zz ); - mat->matrix[2][1] = 2 * ( yz - xw ); - - mat->matrix[0][2] = 2 * ( xz - yw ); - mat->matrix[1][2] = 2 * ( yz + xw ); - mat->matrix[2][2] = 1 - 2 * ( xx + yy ); - - mat->matrix[0][3] = mat->matrix[1][3] = mat->matrix[2][3] = 0; -} - -// nasty little matrix multiply going on here.. -void Multiply_3x4Matrix(mdxaBone_t *out, mdxaBone_t *in2, mdxaBone_t *in) +void Multiply_3x4Matrix(mdxaBone_t *out,const mdxaBone_t *in2,const mdxaBone_t *in) { // first row of out out->matrix[0][0] = (in2->matrix[0][0] * in->matrix[0][0]) + (in2->matrix[0][1] * in->matrix[1][0]) + (in2->matrix[0][2] * in->matrix[2][0]); @@ -471,39 +481,256 @@ static inline void UnCompressBone(float mat[3][4], int iBonePoolIndex, const mdx } -#define G2_DEBUG_TIMING (0) +#define DEBUG_G2_TIMING (0) + +void G2_TimingModel(boneInfo_t &bone,int currentTime,int numFramesInFile,int ¤tFrame,int &newFrame,float &lerp) +{ + assert(bone.startFrame>=0); + assert(bone.startFrame<=numFramesInFile); + assert(bone.endFrame>=0); + assert(bone.endFrame<=numFramesInFile); + + // yes - add in animation speed to current frame + float animSpeed = bone.animSpeed; + float time; + if (bone.pauseTime) + { + time = (bone.pauseTime - bone.startTime) / 50.0f; + } + else + { + time = (currentTime - bone.startTime) / 50.0f; + } + if (time<0.0f) + { + time=0.0f; + } + float newFrame_g = bone.startFrame + (time * animSpeed); + + int animSize = bone.endFrame - bone.startFrame; + float endFrame = (float)bone.endFrame; + // we are supposed to be animating right? + if (animSize) + { + // did we run off the end? + if (((animSpeed > 0.0f) && (newFrame_g > endFrame - 1)) || + ((animSpeed < 0.0f) && (newFrame_g < endFrame + 1))) + { + // yep - decide what to do + if (bone.flags & BONE_ANIM_OVERRIDE_LOOP) + { + // get our new animation frame back within the bounds of the animation set + if (animSpeed < 0.0f) + { + // we don't use this case, or so I am told + // if we do, let me know, I need to insure the mod works + + // should we be creating a virtual frame? + if ((newFrame_g < endFrame + 1) && (newFrame_g > endFrame)) + { + // now figure out what we are lerping between + // delta is the fraction between this frame and the next, since the new anim is always at a .0f; + lerp = (newFrame_g - (int)newFrame_g); + // frames are easy to calculate + currentFrame = (int)newFrame_g; + assert(currentFrame>=0&¤tFrame=0&&newFrame=0&¤tFrame=0&&newFrame=0&&newFrame endFrame - 1) && (newFrame_g < endFrame)) + { + // now figure out what we are lerping between + // delta is the fraction between this frame and the next, since the new anim is always at a .0f; + lerp = (newFrame_g - (int)newFrame_g); + // frames are easy to calculate + currentFrame = (int)newFrame_g; + assert(currentFrame>=0&¤tFrame=0&&newFrame= endFrame) + { + newFrame_g=endFrame+fmod(newFrame_g-endFrame,animSize)-animSize; + } + // now figure out what we are lerping between + // delta is the fraction between this frame and the next, since the new anim is always at a .0f; + lerp = (newFrame_g - (int)newFrame_g); + // frames are easy to calculate + currentFrame = (int)newFrame_g; + assert(currentFrame>=0&¤tFrame= endFrame - 1) + { + newFrame = bone.startFrame; + assert(newFrame>=0&&newFrame=0&&newFrame= bone.startFrame) || (animSize < 10)); + } + else + { + if (((bone.flags & (BONE_ANIM_OVERRIDE_DEFAULT)) == (BONE_ANIM_OVERRIDE_DEFAULT))|| + ((bone.flags & (BONE_ANIM_OVERRIDE_FREEZE)) == (BONE_ANIM_OVERRIDE_FREEZE))) + { + // if we are supposed to reset the default anim, then do so + if (animSpeed > 0.0f) + { + currentFrame = bone.endFrame - 1; + assert(currentFrame>=0&¤tFrame=0&¤tFrame=0&&newFrame=0&¤tFrame 0.0) + { + newFrame = currentFrame + 1; + + // are we now on the end frame? + assert((int)endFrame<=numFramesInFile); + if (newFrame >= (int)endFrame) + { + // we only want to lerp with the first frame of the anim if we are looping + if (bone.flags & BONE_ANIM_OVERRIDE_LOOP) + { + newFrame = bone.startFrame; + assert(newFrame>=0&&newFrame=0&&newFrame=0&&newFrame=0&¤tFrame=0&&newFrame=0&&newFrame=0&&newFrame=0&¤tFrame=0&&newFrame=0&¤tFrame=0&&newFrame=0.0f&&lerp<=1.0f); +} + // transform each individual bone's information - making sure to use any override information provided, both for angles and for animations, as // well as multiplying each bone's matrix by it's parents matrix -void G2_TransformBone (CTransformBone &TB) +void G2_TransformBone (int child,CBoneCache &BC) { + SBoneCalc &TB=BC.mBones[child]; mdxaBone_t tbone[6]; + mdxaFrame_t *aFrame=0; + mdxaFrame_t *bFrame=0; + mdxaFrame_t *aoldFrame=0; + mdxaFrame_t *boldFrame=0; mdxaSkel_t *skel; mdxaSkelOffsets_t *offsets; - boneInfo_v &boneList = TB.rootBoneList; - int i, j, boneListIndex; + boneInfo_v &boneList = *BC.rootBoneList; + int j, boneListIndex; int angleOverride = 0; -#if G2_DEBUG_TIMING - bool doTiming=false; - float DanimS; - float Dtime; - int DstartFrame; - float DnewFrame; - int DstartTime; +#if DEBUG_G2_TIMING + bool printTiming=false; #endif - - // decide here if we should go down this path? - is this bone used? -If not, return from this function. Due the hierarchial nature of the bones - // any bone below this one in the tree shouldn't be used either. - if (!TB.usedBoneList[TB.child]) - { - return; - } - // should this bone be overridden by a bone in the bone list? - boneListIndex = G2_Find_Bone_In_List(boneList, TB.child); + boneListIndex = G2_Find_Bone_In_List(boneList, child); if (boneListIndex != -1) { - float animSpeed = boneList[boneListIndex].animSpeed; // we found a bone in the list - we need to override something here. // do we override the rotational angles? @@ -515,11 +742,11 @@ void G2_TransformBone (CTransformBone &TB) // set blending stuff if we need to if (boneList[boneListIndex].flags & (BONE_ANIM_BLEND | BONE_ANIM_BLEND_TO_PARENT)) { - float blendTime = (TB.incomingTime - boneList[boneListIndex].blendStart); + float blendTime = BC.incomingTime - boneList[boneListIndex].blendStart; // only set up the blend anim if we actually have some blend time left on this bone anim - otherwise we might corrupt some blend higher up the hiearchy if (blendTime>0.0f&&blendTime < boneList[boneListIndex].blendTime) { - TB.blendFrame = boneList[boneListIndex].blendFrame; + TB.blendFrame = boneList[boneListIndex].blendFrame; TB.blendOldFrame = boneList[boneListIndex].blendLerpFrame; TB.blendLerp = (blendTime / boneList[boneListIndex].blendTime); TB.blendMode = true; @@ -533,7 +760,7 @@ void G2_TransformBone (CTransformBone &TB) // are blending *from* the parent? If so, grab what the parent is set to, and stick it in the blendFrame info if (boneList[boneListIndex].flags & BONE_ANIM_BLEND_FROM_PARENT) { - float blendTime = (TB.incomingTime - boneList[boneListIndex].blendStart); + float blendTime = BC.incomingTime - boneList[boneListIndex].blendStart; // only set up the blend anim if we actually have some blend time left on this bone anim - otherwise we might corrupt some blend higher up the hiearchy if (blendTime>0.0f&&blendTime < boneList[boneListIndex].blendTime) { @@ -548,7 +775,8 @@ void G2_TransformBone (CTransformBone &TB) } } else - if ((boneList[boneListIndex].flags) & (BONE_ANIM_OVERRIDE_LOOP | BONE_ANIM_OVERRIDE)) + // turn off blending if we are just doing a straing animation override + if (r_Ghoul2NoBlend->integer||((boneList[boneListIndex].flags) & (BONE_ANIM_OVERRIDE_LOOP | BONE_ANIM_OVERRIDE))) { TB.blendMode = false; } @@ -556,241 +784,79 @@ void G2_TransformBone (CTransformBone &TB) // should this animation be overridden by an animation in the bone list? if ((boneList[boneListIndex].flags) & (BONE_ANIM_OVERRIDE_LOOP | BONE_ANIM_OVERRIDE)) { - // yes - add in animation speed to current frame - float time; - if (boneList[boneListIndex].pauseTime) - { - time = (boneList[boneListIndex].pauseTime - boneList[boneListIndex].startTime) / 50.0f; - } - else - { - time = (TB.incomingTime - boneList[boneListIndex].startTime) / 50.0f; - } - if (time<0.0f) - { - time=0.0f; - } - float newFrame_g = boneList[boneListIndex].startFrame + (time * animSpeed); -#if G2_DEBUG_TIMING - DanimS=animSpeed; - Dtime=time; - DstartFrame=boneList[boneListIndex].startFrame; - DnewFrame=newFrame_g; - DstartTime=boneList[boneListIndex].startTime; + G2_TimingModel(boneList[boneListIndex],BC.incomingTime,BC.header->numFrames,TB.currentFrame,TB.newFrame,TB.backlerp); + } +#if DEBUG_G2_TIMING + printTiming=true; #endif - float endFrame = (float)boneList[boneListIndex].endFrame ; - - int animSize = endFrame - boneList[boneListIndex].startFrame; - // we are supposed to be animating right? - if (animSize) - { - // did we run off the end? - if (((animSpeed > 0.0f) && (newFrame_g > endFrame - 1)) || - ((animSpeed < 0.0f) && (newFrame_g < endFrame + 1))) - { - // yep - decide what to do - if (boneList[boneListIndex].flags & BONE_ANIM_OVERRIDE_LOOP) - { - // get our new animation frame back within the bounds of the animation set - if (animSpeed < 0.0f) - { - // should we be creating a virtual frame? - if ((newFrame_g < endFrame + 1) && (newFrame_g > endFrame)) - { - // now figure out what we are lerping between - // delta is the fraction between this frame and the next, since the new anim is always at a .0f; - TB.backlerp = (newFrame_g - (int)newFrame_g); - // frames are easy to calculate - TB.currentFrame = (int)newFrame_g; - TB.newFrame = boneList[boneListIndex].startFrame; - } - else - { - // fixme: tempcode: this is to try and stop a lockup caused by bad logic. Need to know when this triggers!!!! - if (animSize>=0) - { - assert(animSize<0); - animSize = -animSize; - } - - while (newFrame_g <= endFrame) - { - newFrame_g -= animSize; - } - // now figure out what we are lerping between - // delta is the fraction between this frame and the next, since the new anim is always at a .0f; - TB.backlerp = (newFrame_g - (int)newFrame_g); - // frames are easy to calculate - TB.currentFrame = (int)newFrame_g; - // should we be creating a virtual frame? - if (newFrame_g <= endFrame + 1) - { - - TB.newFrame = boneList[boneListIndex].startFrame; - } - else - { - TB.newFrame = TB.currentFrame - 1; - } - } - } - else - { - // should we be creating a virtual frame? - if ((newFrame_g > endFrame - 1) && (newFrame_g < endFrame)) - { - // now figure out what we are lerping between - // delta is the fraction between this frame and the next, since the new anim is always at a .0f; - TB.backlerp = (newFrame_g - (int)newFrame_g); - // frames are easy to calculate - TB.currentFrame = (int)newFrame_g; - TB.newFrame = boneList[boneListIndex].startFrame; - } - else - { - // fixme: tempcode: this is to try and stop a lockup caused by bad logic. Need to know when this triggers!!!! - if (animSize<=0) - { - assert(animSize>0); - animSize = -animSize; - } - - while (newFrame_g >= endFrame) - { - newFrame_g -= animSize; - } - // now figure out what we are lerping between - // delta is the fraction between this frame and the next, since the new anim is always at a .0f; - TB.backlerp = (newFrame_g - (int)newFrame_g); - // frames are easy to calculate - TB.currentFrame = (int)newFrame_g; - // should we be creating a virtual frame? - if (newFrame_g >= endFrame - 1) - { - TB.newFrame = boneList[boneListIndex].startFrame; - } - else - { - TB.newFrame = TB.currentFrame + 1; - } - } - } - // sanity check - assert ((TB.newFrame < endFrame) && (TB.newFrame >= boneList[boneListIndex].startFrame) || (animSize < 10)); - } - else - { - if (((boneList[boneListIndex].flags & (BONE_ANIM_OVERRIDE_DEFAULT)) == (BONE_ANIM_OVERRIDE_DEFAULT))|| - ((boneList[boneListIndex].flags & (BONE_ANIM_OVERRIDE_FREEZE)) == (BONE_ANIM_OVERRIDE_FREEZE))) - { - // if we are supposed to reset the default anim, then do so - if (animSpeed > 0.0f) - { - TB.currentFrame = boneList[boneListIndex].endFrame - 1; - } - else - { - TB.currentFrame = boneList[boneListIndex].endFrame + 1; - } - - TB.newFrame = TB.currentFrame; - TB.backlerp = 0; - } - - // nope, just stop processing this bone. And do nothing - let the bone take the parents anim info - } - } - else - { - // figure out the difference between the two frames - we have to decide what frame and what percentage of that - // frame we want to display - TB.backlerp = (newFrame_g - (int)newFrame_g); - - // frames are easy to calculate - TB.currentFrame = (int)newFrame_g; - - if (animSpeed> 0.0) - { - TB.newFrame = TB.currentFrame + 1; - - // are we now on the end frame? - if (TB.newFrame > endFrame) - { - // we only want to lerp with the first frame of the anim if we are looping - if (boneList[boneListIndex].flags & BONE_ANIM_OVERRIDE_LOOP) - { - TB.newFrame = boneList[boneListIndex].startFrame; - } - // if we intend to end this anim or freeze after this, then just keep on the last frame - else - { - TB.newFrame = boneList[boneListIndex].endFrame; - } - } - } - else - { - TB.currentFrame++; - TB.newFrame = TB.currentFrame - 1; - - TB.backlerp = 1-TB.backlerp; - // are we now on the end frame? - if (TB.newFrame < endFrame) - { - // we only want to lerp with the first frame of the anim if we are looping - if (boneList[boneListIndex].flags & BONE_ANIM_OVERRIDE_LOOP) - { - TB.newFrame = boneList[boneListIndex].startFrame; - } - // if we intend to end this anim or freeze after this, then just keep on the last frame - else - { - TB.newFrame = boneList[boneListIndex].endFrame; - } - } - } - - // sanity check - //assert ((newFrame_g < endFrame) && (newFrame_g >= boneList[boneListIndex].startFrame)); - } - } - else - { - TB.currentFrame = boneList[boneListIndex].endFrame; - TB.newFrame = TB.currentFrame; - TB.backlerp = 0; - - } -#if G2_DEBUG_TIMING - doTiming=true; -#endif - } + if ((r_Ghoul2NoLerp->integer)||((boneList[boneListIndex].flags) & (BONE_ANIM_NO_LERP))) + { + TB.backlerp = 0.0f; + } } - -// const mdxaCompBone_t *compBonePointer = (mdxaCompBone_t *)((byte *)TB.header + TB.header->ofsCompBonePool); + // figure out where the location of the bone animation data is + assert(TB.newFrame>=0&&TB.newFramenumFrames); + if (!(TB.newFrame>=0&&TB.newFramenumFrames)) + { + TB.newFrame=0; + } + aFrame = (mdxaFrame_t *)((byte *)BC.header + BC.header->ofsFrames + TB.newFrame * BC.frameSize ); + assert(TB.currentFrame>=0&&TB.currentFramenumFrames); + if (!(TB.currentFrame>=0&&TB.currentFramenumFrames)) + { + TB.currentFrame=0; + } + aoldFrame = (mdxaFrame_t *)((byte *)BC.header + BC.header->ofsFrames + TB.currentFrame * BC.frameSize ); + + // figure out where the location of the blended animation data is + assert(!(TB.blendFrame < 0.0 || TB.blendFrame >= (BC.header->numFrames+1))); + if (TB.blendFrame < 0.0 || TB.blendFrame >= (BC.header->numFrames+1) ) + { + TB.blendFrame=0.0; + } + bFrame = (mdxaFrame_t *)((byte *)BC.header + BC.header->ofsFrames + (int)TB.blendFrame * BC.frameSize ); + assert(TB.blendOldFrame>=0&&TB.blendOldFramenumFrames); + if (!(TB.blendOldFrame>=0&&TB.blendOldFramenumFrames)) + { + TB.blendOldFrame=0; + } +#if DEBUG_G2_TIMING + if (printTiming) + { + char mess[1000]; + if (TB.blendMode) + { + sprintf(mess,"b %2d %5d %4d %4d %4d %4d %f %f\n",BC.mWraithID,BC.incomingTime,(int)TB.newFrame,(int)TB.currentFrame,(int)TB.blendFrame,(int)TB.blendOldFrame,TB.backlerp,TB.blendLerp); + } + else + { + sprintf(mess,"a %2d %5d %4d %4d %f\n",BC.mWraithID,BC.incomingTime,TB.newFrame,TB.currentFrame,TB.backlerp); + } + OutputDebugString(mess); + } +#endif + boldFrame = (mdxaFrame_t *)((byte *)BC.header + BC.header->ofsFrames + TB.blendOldFrame * BC.frameSize ); + +// mdxaCompBone_t *compBonePointer = (mdxaCompBone_t *)((byte *)BC.header + BC.header->ofsCompBonePool); + + assert(child>=0&&childnumBones); + assert(bFrame->boneIndexes[child]>=0); + assert(boldFrame->boneIndexes[child]>=0); + assert(aFrame->boneIndexes[child]>=0); + assert(aoldFrame->boneIndexes[child]>=0); + + // decide where the transformed bone is going // are we blending with another frame of anim? if (TB.blendMode) { - if ((int)TB.blendFrame >= TB.header->numFrames || (int)TB.blendFrame < 0 ) - { - assert (TB.header->numFrames > (int)TB.blendFrame);//validate the frame we're about to grab - return; - } - - if (TB.blendOldFrame >= TB.header->numFrames || TB.blendOldFrame < 0) - { - assert (TB.header->numFrames > TB.blendOldFrame);//validate the frame we're about to grab - return; - } - const mdxaFrame_t *bFrame = (mdxaFrame_t *)((byte *)TB.header + TB.header->ofsFrames + (int)TB.blendFrame * TB.frameSize ); - const mdxaFrame_t *boldFrame =(mdxaFrame_t *)((byte *)TB.header + TB.header->ofsFrames + TB.blendOldFrame * TB.frameSize ); - - UnCompressBone(tbone[3].matrix,bFrame->boneIndexes[TB.child], TB.header); - UnCompressBone(tbone[4].matrix,boldFrame->boneIndexes[TB.child], TB.header); - - const float backlerp = TB.blendFrame - (int)TB.blendFrame; - const float frontlerp = 1.0 - backlerp; + float backlerp = TB.blendFrame - (int)TB.blendFrame; + float frontlerp = 1.0 - backlerp; + +// MC_UnCompress(tbone[3].matrix,compBonePointer[bFrame->boneIndexes[child]].Comp); +// MC_UnCompress(tbone[4].matrix,compBonePointer[boldFrame->boneIndexes[child]].Comp); + UnCompressBone(tbone[3].matrix,bFrame->boneIndexes[child], BC.header); + UnCompressBone(tbone[4].matrix,boldFrame->boneIndexes[child], BC.header); for ( j = 0 ; j < 12 ; j++ ) { @@ -798,41 +864,14 @@ void G2_TransformBone (CTransformBone &TB) + (frontlerp * ((float *)&tbone[4])[j]); } } -#if G2_DEBUG_TIMING - if (doTiming) - { - Com_Printf("rfTime=%7d TBtime=%7d\n",tr.refdef.time,TB.incomingTime); - Com_Printf("speed=%4.2f time=%4.2f sframe=%5d newFrame=%7.2f stTime=%7d\n", - DanimS,Dtime,DstartFrame,DnewFrame,DstartTime); - if (TB.blendMode) - { - Com_Printf("blend %d %5d %5d %5d %5d %3.2f %3.2f %3.2f\n",tr.refdef.time,TB.currentFrame,TB.newFrame,(int)TB.blendFrame,TB.blendOldFrame,TB.backlerp,float(TB.blendFrame - (int)TB.blendFrame),TB.blendLerp); - } - else - { - Com_Printf("norm %d %5d %5d %3.2f\n",tr.refdef.time,TB.currentFrame,TB.newFrame,TB.backlerp); - } - } -#endif - - // figure out where the location of the bone animation data is - if (TB.currentFrame >= TB.header->numFrames ) - { - assert (TB.header->numFrames > TB.currentFrame);//validate the frame we're about to grab - return; - } - const mdxaFrame_t *aoldFrame = (mdxaFrame_t *)((byte *)TB.header + TB.header->ofsFrames + TB.currentFrame * TB.frameSize ); - - // figure out where the bone hirearchy info is - offsets = (mdxaSkelOffsets_t *)((byte *)TB.header + sizeof(mdxaHeader_t)); - skel = (mdxaSkel_t *)((byte *)TB.header + sizeof(mdxaHeader_t) + offsets->offsets[TB.child]); + // // lerp this bone - use the temp space on the ref entity to put the bone transforms into // if (!TB.backlerp) { -// MC_UnCompress(tbone[2].matrix,compBonePointer[aoldFrame->boneIndexes[TB.child]].Comp); - UnCompressBone(tbone[2].matrix,aoldFrame->boneIndexes[TB.child], TB.header); +// MC_UnCompress(tbone[2].matrix,compBonePointer[aoldFrame->boneIndexes[child]].Comp); + UnCompressBone(tbone[2].matrix,aoldFrame->boneIndexes[child], BC.header); // blend in the other frame if we need to if (TB.blendMode) @@ -845,28 +884,20 @@ void G2_TransformBone (CTransformBone &TB) } } - if (TB.rootBone) + if (!child) { // now multiply by the root matrix, so we can offset this model should we need to - Multiply_3x4Matrix(&TB.bonePtr[TB.child], &TB.rootMatrix, &tbone[2]); + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.rootMatrix, &tbone[2]); } } else { - if (TB.newFrame >= TB.header->numFrames ) - { - assert (TB.header->numFrames > TB.newFrame);//validate the frame we're about to grab - return; - } - // figure out where the location of the bone animation data is - const mdxaFrame_t *aFrame = (mdxaFrame_t *)((byte *)TB.header + TB.header->ofsFrames + TB.newFrame * TB.frameSize ); + float frontlerp = 1.0 - TB.backlerp; +// MC_UnCompress(tbone[0].matrix,compBonePointer[aFrame->boneIndexes[child]].Comp); +// MC_UnCompress(tbone[1].matrix,compBonePointer[aoldFrame->boneIndexes[child]].Comp); + UnCompressBone(tbone[0].matrix,aFrame->boneIndexes[child], BC.header); + UnCompressBone(tbone[1].matrix,aoldFrame->boneIndexes[child], BC.header); -// MC_UnCompress(tbone[0].matrix,compBonePointer[aFrame->boneIndexes[TB.child]].Comp); -// MC_UnCompress(tbone[1].matrix,compBonePointer[aoldFrame->boneIndexes[TB.child]].Comp); - UnCompressBone(tbone[0].matrix,aFrame->boneIndexes[TB.child], TB.header); - UnCompressBone(tbone[1].matrix,aoldFrame->boneIndexes[TB.child], TB.header); - - const float frontlerp = 1.0 - TB.backlerp; for ( j = 0 ; j < 12 ; j++ ) { ((float *)&tbone[2])[j] = (TB.backlerp * ((float *)&tbone[0])[j]) @@ -876,77 +907,41 @@ void G2_TransformBone (CTransformBone &TB) // blend in the other frame if we need to if (TB.blendMode) { -#if 0 - vec4_t quat; - mdxaBone_t inverseStart; - mdxaBone_t rotation, scaledRotation; - mdxaBone_t startMatrix, endMatrix; - - // tbone[5] contains the start from where we are blending from - put this in model space - Multiply_3x4Matrix(&startMatrix, &tbone[5], &skel->BasePoseMat); - - // tbone[2] contains the current animation, where are blending to - put this in model space - Multiply_3x4Matrix(&endMatrix, &tbone[2], &skel->BasePoseMat); - - // create inverse of start matrix - Inverse_Matrix(&startMatrix, &inverseStart); - - // generate rotation matrix from start to finish - Multiply_3x4Matrix(&rotation, &endMatrix, &inverseStart); - - // create a quaterion out of this matrix - G2_CreateQuaterion(&rotation, quat); - - // scale it appropriately by lerp - quat[3] *= TB.blendLerp; - - // go back and create a new rotation matrix from this scaled quaterion - G2_CreateMatrixFromQuaterion(&scaledRotation, quat); - - scaledRotation.matrix[0][3] = rotation.matrix[0][3]; - scaledRotation.matrix[1][3] = rotation.matrix[1][3]; - scaledRotation.matrix[2][3] = rotation.matrix[2][3]; - - // we should have a rotation matrix now in model space, put it back into bone space - Multiply_3x4Matrix(&endMatrix, &scaledRotation, &skel->BasePoseMatInv ); - - // multiply that by the original start to get result. - Multiply_3x4Matrix(&tbone[2], &endMatrix, &tbone[5]); - -#else - const float blendFrontlerp = 1.0 - TB.blendLerp; + float blendFrontlerp = 1.0 - TB.blendLerp; for ( j = 0 ; j < 12 ; j++ ) { - ((float *)&tbone[2])[j] = (TB.blendLerp * ((float *)&tbone[2])[j]) + ((float *)&tbone[2])[j] = (TB.blendLerp * ((float *)&tbone[2])[j]) + (blendFrontlerp * ((float *)&tbone[5])[j]); } -#endif } - if (TB.rootBone) + if (!child) { // now multiply by the root matrix, so we can offset this model should we need to - Multiply_3x4Matrix(&TB.bonePtr[TB.child], &TB.rootMatrix, &tbone[2]); + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.rootMatrix, &tbone[2]); } } -#if 1 - boneInfo_t &boneOverride = boneList[boneListIndex]; - mdxaBone_t *newMatrix =&boneOverride.newMatrix; - mdxaBone_t tempNewMatrix; + // figure out where the bone hirearchy info is + offsets = (mdxaSkelOffsets_t *)((byte *)BC.header + sizeof(mdxaHeader_t)); + skel = (mdxaSkel_t *)((byte *)BC.header + sizeof(mdxaHeader_t) + offsets->offsets[child]); + int parent=BC.mFinalBones[child].parent; + assert((parent==-1&&child==0)||(parent>=0&&parentBasePoseMat); - const float matrixScale = VectorLength((float*)&temp); - - newMatrix=&tempNewMatrix; - for (int i=0; i<3;i++) - { - for(int x=0;x<3; x++) - { - tempNewMatrix.matrix[i][x]=boneOverride.newMatrix.matrix[i][x] * matrixScale; - } - } + float matrixScale = VectorLength((float*)&temp); - tempNewMatrix.matrix[0][3] = temp.matrix[0][3]; - tempNewMatrix.matrix[1][3] = temp.matrix[1][3]; - tempNewMatrix.matrix[2][3] = temp.matrix[2][3]; + mdxaBone_t newMatrixTemp; + + if (HackadelicOnClient) + { + for (int i=0; i<3;i++) + { + for(int x=0;x<3; x++) + { + newMatrixTemp.matrix[i][x] = boneOverride.newMatrix.matrix[i][x]*matrixScale; + } + } + + newMatrixTemp.matrix[0][3] = temp.matrix[0][3]; + newMatrixTemp.matrix[1][3] = temp.matrix[1][3]; + newMatrixTemp.matrix[2][3] = temp.matrix[2][3]; + } + else + { + for (int i=0; i<3;i++) + { + for(int x=0;x<3; x++) + { + newMatrixTemp.matrix[i][x] = boneOverride.matrix.matrix[i][x]*matrixScale; + } + } + + newMatrixTemp.matrix[0][3] = temp.matrix[0][3]; + newMatrixTemp.matrix[1][3] = temp.matrix[1][3]; + newMatrixTemp.matrix[2][3] = temp.matrix[2][3]; + } - Multiply_3x4Matrix(&temp, &tempNewMatrix,&skel->BasePoseMatInv); + Multiply_3x4Matrix(&temp, &newMatrixTemp,&skel->BasePoseMatInv); // now do the blend into the destination - const float blendFrontlerp = 1.0 - blendLerp; + float blendFrontlerp = 1.0 - blendLerp; for ( j = 0 ; j < 12 ; j++ ) { ((float *)&bone)[j] = (blendLerp * ((float *)&temp)[j]) @@ -997,59 +1010,95 @@ void G2_TransformBone (CTransformBone &TB) else { - Multiply_3x4Matrix(&temp, &firstPass, &skel->BasePoseMat); - const float matrixScale = VectorLength((float*)&temp); - - newMatrix=&tempNewMatrix; - for (int i=0; i<3;i++) - { - for(int x=0;x<3; x++) - { - tempNewMatrix.matrix[i][x]=boneOverride.newMatrix.matrix[i][x] * matrixScale; - } - } + Multiply_3x4Matrix(&temp,&firstPass, &skel->BasePoseMat); + float matrixScale = VectorLength((float*)&temp); - tempNewMatrix.matrix[0][3] = temp.matrix[0][3]; - tempNewMatrix.matrix[1][3] = temp.matrix[1][3]; - tempNewMatrix.matrix[2][3] = temp.matrix[2][3]; + mdxaBone_t newMatrixTemp; + + if (HackadelicOnClient) + { + for (int i=0; i<3;i++) + { + for(int x=0;x<3; x++) + { + newMatrixTemp.matrix[i][x] = boneOverride.newMatrix.matrix[i][x]*matrixScale; + } + } + + newMatrixTemp.matrix[0][3] = temp.matrix[0][3]; + newMatrixTemp.matrix[1][3] = temp.matrix[1][3]; + newMatrixTemp.matrix[2][3] = temp.matrix[2][3]; + } + else + { + for (int i=0; i<3;i++) + { + for(int x=0;x<3; x++) + { + newMatrixTemp.matrix[i][x] = boneOverride.matrix.matrix[i][x]*matrixScale; + } + } + + newMatrixTemp.matrix[0][3] = temp.matrix[0][3]; + newMatrixTemp.matrix[1][3] = temp.matrix[1][3]; + newMatrixTemp.matrix[2][3] = temp.matrix[2][3]; + } - Multiply_3x4Matrix(&temp, &tempNewMatrix,&skel->BasePoseMatInv); + Multiply_3x4Matrix(&bone, &newMatrixTemp,&skel->BasePoseMatInv); } } - else - if (angleOverride & BONE_ANGLES_PREMULT) + else if (angleOverride & BONE_ANGLES_PREMULT) { - if (TB.rootBone) + if (!child) { // use the in coming root matrix as our basis - Multiply_3x4Matrix(&TB.bonePtr[TB.child], &TB.rootMatrix,newMatrix); + if (HackadelicOnClient) + { + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.rootMatrix, &boneList[boneListIndex].newMatrix); + } + else + { + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.rootMatrix, &boneList[boneListIndex].matrix); + } } else { // convert from 3x4 matrix to a 4x4 matrix - Multiply_3x4Matrix(&TB.bonePtr[TB.child], &TB.bonePtr[TB.parent],newMatrix); + if (HackadelicOnClient) + { + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.mFinalBones[parent].boneMatrix, &boneList[boneListIndex].newMatrix); + } + else + { + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.mFinalBones[parent].boneMatrix, &boneList[boneListIndex].matrix); + } } } else -#endif - // now transform the matrix by it's TB.parent, asumming we have a TB.parent, and we aren't overriding the angles absolutely - if (!TB.rootBone) + // now transform the matrix by it's parent, asumming we have a parent, and we aren't overriding the angles absolutely + if (child) { - Multiply_3x4Matrix(&TB.bonePtr[TB.child], &TB.bonePtr[TB.parent], &tbone[2]); + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &BC.mFinalBones[parent].boneMatrix, &tbone[2]); } -#if 1 + // now multiply our resulting bone by an override matrix should we need to if (angleOverride & BONE_ANGLES_POSTMULT) { mdxaBone_t tempMatrix; - memcpy (&tempMatrix, &TB.bonePtr[TB.child], sizeof(mdxaBone_t)); - Multiply_3x4Matrix(&TB.bonePtr[TB.child], &tempMatrix,newMatrix); + memcpy (&tempMatrix,&BC.mFinalBones[child].boneMatrix, sizeof(mdxaBone_t)); + if (HackadelicOnClient) + { + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &tempMatrix, &boneList[boneListIndex].newMatrix); + } + else + { + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix, &tempMatrix, &boneList[boneListIndex].matrix); + } } - if (r_Ghoul2UnSqash->integer) { mdxaBone_t tempMatrix; - Multiply_3x4Matrix(&tempMatrix, &TB.bonePtr[TB.child], &skel->BasePoseMat); + Multiply_3x4Matrix(&tempMatrix,&BC.mFinalBones[child].boneMatrix, &skel->BasePoseMat); float maxl; maxl=VectorLength(&skel->BasePoseMat.matrix[0][0]); VectorNormalize(&tempMatrix.matrix[0][0]); @@ -1059,94 +1108,78 @@ void G2_TransformBone (CTransformBone &TB) VectorScale(&tempMatrix.matrix[0][0],maxl,&tempMatrix.matrix[0][0]); VectorScale(&tempMatrix.matrix[1][0],maxl,&tempMatrix.matrix[1][0]); VectorScale(&tempMatrix.matrix[2][0],maxl,&tempMatrix.matrix[2][0]); - Multiply_3x4Matrix(&TB.bonePtr[TB.child],&tempMatrix,&skel->BasePoseMatInv); - } -#endif - - // are the bone that we are resetting to the origin? - if (TB.child == TB.boltNum) - { - //create a world matrix for the new origin - mdxaBone_t tempMatrix; - Multiply_3x4Matrix(&tempMatrix, &TB.bonePtr[TB.child], &skel->BasePoseMat); - TB.newModelOrigin[0] = tempMatrix.matrix[0][3]; - TB.newModelOrigin[1] = tempMatrix.matrix[1][3]; - TB.newModelOrigin[2] = tempMatrix.matrix[2][3]; + Multiply_3x4Matrix(&BC.mFinalBones[child].boneMatrix,&tempMatrix,&skel->BasePoseMatInv); } - TB.rootBone = false; - const int parent = TB.child; - const int newFrame = TB.newFrame; - const int currentFrame = TB.currentFrame; - const float backLerp = TB.backlerp; - const bool blendMode = TB.blendMode; - const float blendFrame = TB.blendFrame; - const int blendOldFrame = TB.blendOldFrame; - const float blendLerp = TB.blendLerp; - // now work out what children we have to call this recursively for - for (i=0; i< skel->numChildren; i++) - { - TB.newFrame = newFrame; - TB.currentFrame = currentFrame; - TB.backlerp = backLerp; - TB.parent = parent; - TB.child = skel->children[i]; - TB.blendFrame = blendFrame; - TB.blendOldFrame = blendOldFrame; - TB.blendMode = blendMode; - TB.blendLerp = blendLerp; - G2_TransformBone(TB); - } } -void G2_SetUpBolts( const mdxaHeader_t *header, CGhoul2Info &ghoul2, mdxaBone_v &bonePtr, boltInfo_v &boltList, int *usedBoneList) -{ - mdxaSkel_t *skel; - mdxaSkelOffsets_t *offsets; - offsets = (mdxaSkelOffsets_t *)((byte *)header + sizeof(mdxaHeader_t)); - - for (int i=0; ioffsets[boltList[i].boneNumber]); - Multiply_3x4Matrix(&boltList[i].position, &bonePtr[boltList[i].boneNumber], &skel->BasePoseMat); - } - } - } -} // start the recursive hirearchial bone transform and lerp process for this model -static void G2_TransformGhoulBones( const mdxaHeader_t *header, int *usedBoneList, - mdxaBone_t &rootMatrix, CGhoul2Info &ghoul2, int time, int boneCount) +void G2_TransformGhoulBones(void *mod,const mdxaHeader_t *header, boneInfo_v &rootBoneList, + mdxaBone_t &rootMatrix, CGhoul2Info &ghoul2, int time) { - int frameSize, i; - int rootBoneIndex = 0; - - frameSize = (int)( &((mdxaFrame_t *)0)->boneIndexes[ header->numBones ] ); - - // figure out where our rootbone is - for (i=0; inumBones) { - if (usedBoneList[i]) + assert(0); // this would be strange + return; + } + if (!ghoul2.mBoneCache) + { + ghoul2.mBoneCache=new CBoneCache(mod,header); + } + ghoul2.mBoneCache->mod=mod; + assert(ghoul2.mBoneCache->mBones.size()==header->numBones); + + ghoul2.mBoneCache->mSmoothingActive=false; + ghoul2.mBoneCache->mUnsquash=false; + if (HackadelicOnClient) + { + ghoul2.mBoneCache->mLastTouch=ghoul2.mBoneCache->mLastLastTouch; + + // master smoothing control + float val=r_Ghoul2AnimSmooth->value; + if (val>0.0f&&val<1.0f) { - rootBoneIndex = i; - break; + float dif=float(time)-float(ghoul2.mBoneCache->mLastTime); + if (dif<16.6f) // 60 fps + { + dif=16.6f; + } + if (dif>100.0f) // 10 fps + { + dif=100.0f; + } + ghoul2.mBoneCache->mSmoothFactor=1.0f-pow(1.0f-val,50.0f/dif); + ghoul2.mBoneCache->mSmoothingActive=true; + if (r_Ghoul2UnSqashAfterSmooth->integer) + { + ghoul2.mBoneCache->mUnsquash=true; + } } } + ghoul2.mBoneCache->mCurrentTouch++; + if (HackadelicOnClient) + { + ghoul2.mBoneCache->mLastLastTouch=ghoul2.mBoneCache->mCurrentTouch; + } + assert(ghoul2.mBoneCache->header==header); + assert(ghoul2.mBoneCache->mod==mod); + ghoul2.mBoneCache->mWraithID=0; + ghoul2.mBoneCache->frameSize = (int)( &((mdxaFrame_t *)0)->boneIndexes[ header->numBones ] ); - time-=r_Ghoul2Test->integer; - // now recursively call the bone transform routines using the bone hirearchy - CTransformBone TB(ghoul2.mAnimFrameDefault, ghoul2.mAnimFrameDefault, 0, rootBoneIndex, frameSize, header, 0.0f, usedBoneList, - ghoul2.mBlist, ghoul2.mTempBoneList, ghoul2.mBltlist, rootMatrix, true, time, 0, 0, false, 0, ghoul2.mNewOrigin); + ghoul2.mBoneCache->rootBoneList=&rootBoneList; + ghoul2.mBoneCache->rootMatrix=rootMatrix; + ghoul2.mBoneCache->incomingTime=time; - G2_TransformBone (TB); - // now set up the bolt positions for those bolts required. - G2_SetUpBolts(header, ghoul2, ghoul2.mTempBoneList, ghoul2.mBltlist, usedBoneList); + SBoneCalc &TB=ghoul2.mBoneCache->Root(); + TB.newFrame=ghoul2.mAnimFrameDefault; + TB.currentFrame=ghoul2.mAnimFrameDefault; + TB.backlerp=0.0f; + TB.blendFrame=0; + TB.blendOldFrame=0; + TB.blendMode=false; + TB.blendLerp=0; } @@ -1159,7 +1192,7 @@ static void G2_TransformGhoulBones( const mdxaHeader_t *header, int *usedBoneLis // We've come across a surface that's designated as a bolt surface, process it and put it in the appropriate bolt place -void G2_ProcessSurfaceBolt(const mdxaBone_v &bonePtr, const mdxmSurface_t *surface, int boltNum, boltInfo_v &boltList, const surfaceInfo_t *surfInfo, const model_t *mod) +void G2_ProcessSurfaceBolt2(CBoneCache &boneCache, const mdxmSurface_t *surface, int boltNum, boltInfo_v &boltList, const surfaceInfo_t *surfInfo, const model_t *mod,mdxaBone_t &retMatrix) { mdxmVertex_t *v, *vert0, *vert1, *vert2; vec3_t axes[3], sides[3]; @@ -1202,32 +1235,35 @@ void G2_ProcessSurfaceBolt(const mdxaBone_v &bonePtr, const mdxmSurface_t *surfa VectorClear( pTri[0] ); VectorClear( pTri[1] ); VectorClear( pTri[2] ); + int *piBoneReferences = (int*) ((byte*)originalSurf + originalSurf->ofsBoneReferences); mdxmWeight_t *w; - int *piBoneRefs = (int*) ((byte*)originalSurf + originalSurf->ofsBoneReferences); // now go and transform just the points we need from the surface that was hit originally w = vert0->weights; for ( k = 0 ; k < vert0->numWeights ; k++, w++ ) { - pTri[0][0] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], vert0->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[0][3] ); - pTri[0][1] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], vert0->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[1][3] ); - pTri[0][2] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], vert0->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[2][3] ); + const mdxaBone_t &bone=boneCache.Eval(piBoneReferences[w->boneIndex]); + pTri[0][0] += w->boneWeight * ( DotProduct( bone.matrix[0], vert0->vertCoords ) + bone.matrix[0][3] ); + pTri[0][1] += w->boneWeight * ( DotProduct( bone.matrix[1], vert0->vertCoords ) + bone.matrix[1][3] ); + pTri[0][2] += w->boneWeight * ( DotProduct( bone.matrix[2], vert0->vertCoords ) + bone.matrix[2][3] ); } w = vert1->weights; for ( k = 0 ; k < vert1->numWeights ; k++, w++ ) { - pTri[1][0] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], vert1->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[0][3] ); - pTri[1][1] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], vert1->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[1][3] ); - pTri[1][2] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], vert1->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[2][3] ); + const mdxaBone_t &bone=boneCache.Eval(piBoneReferences[w->boneIndex]); + pTri[1][0] += w->boneWeight * ( DotProduct( bone.matrix[0], vert1->vertCoords ) + bone.matrix[0][3] ); + pTri[1][1] += w->boneWeight * ( DotProduct( bone.matrix[1], vert1->vertCoords ) + bone.matrix[1][3] ); + pTri[1][2] += w->boneWeight * ( DotProduct( bone.matrix[2], vert1->vertCoords ) + bone.matrix[2][3] ); } w = vert2->weights; for ( k = 0 ; k < vert2->numWeights ; k++, w++ ) { - pTri[2][0] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], vert2->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[0][3] ); - pTri[2][1] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], vert2->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[1][3] ); - pTri[2][2] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], vert2->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[2][3] ); + const mdxaBone_t &bone=boneCache.Eval(piBoneReferences[w->boneIndex]); + pTri[2][0] += w->boneWeight * ( DotProduct( bone.matrix[0], vert2->vertCoords ) + bone.matrix[0][3] ); + pTri[2][1] += w->boneWeight * ( DotProduct( bone.matrix[1], vert2->vertCoords ) + bone.matrix[1][3] ); + pTri[2][2] += w->boneWeight * ( DotProduct( bone.matrix[2], vert2->vertCoords ) + bone.matrix[2][3] ); } vec3_t normal; @@ -1238,9 +1274,9 @@ void G2_ProcessSurfaceBolt(const mdxaBone_v &bonePtr, const mdxmSurface_t *surfa float baryCentricK = 1.0 - (surfInfo->genBarycentricI + surfInfo->genBarycentricJ); // now we have the model transformed into model space, now generate an origin. - boltList[boltNum].position.matrix[0][3] = (pTri[0][0] * surfInfo->genBarycentricI) + (pTri[1][0] * surfInfo->genBarycentricJ) + (pTri[2][0] * baryCentricK); - boltList[boltNum].position.matrix[1][3] = (pTri[0][1] * surfInfo->genBarycentricI) + (pTri[1][1] * surfInfo->genBarycentricJ) + (pTri[2][1] * baryCentricK); - boltList[boltNum].position.matrix[2][3] = (pTri[0][2] * surfInfo->genBarycentricI) + (pTri[1][2] * surfInfo->genBarycentricJ) + (pTri[2][2] * baryCentricK); + retMatrix.matrix[0][3] = (pTri[0][0] * surfInfo->genBarycentricI) + (pTri[1][0] * surfInfo->genBarycentricJ) + (pTri[2][0] * baryCentricK); + retMatrix.matrix[1][3] = (pTri[0][1] * surfInfo->genBarycentricI) + (pTri[1][1] * surfInfo->genBarycentricJ) + (pTri[2][1] * baryCentricK); + retMatrix.matrix[2][3] = (pTri[0][2] * surfInfo->genBarycentricI) + (pTri[1][2] * surfInfo->genBarycentricJ) + (pTri[2][2] * baryCentricK); // generate a normal to this new triangle VectorSubtract(pTri[0], pTri[1], vec0); @@ -1250,41 +1286,40 @@ void G2_ProcessSurfaceBolt(const mdxaBone_v &bonePtr, const mdxmSurface_t *surfa VectorNormalize(normal); // forward vector - boltList[boltNum].position.matrix[0][0] = normal[0]; - boltList[boltNum].position.matrix[1][0] = normal[1]; - boltList[boltNum].position.matrix[2][0] = normal[2]; + retMatrix.matrix[0][0] = normal[0]; + retMatrix.matrix[1][0] = normal[1]; + retMatrix.matrix[2][0] = normal[2]; // up will be towards point 0 of the original triangle. // so lets work it out. Vector is hit point - point 0 - up[0] = boltList[boltNum].position.matrix[0][3] - pTri[0][0]; - up[1] = boltList[boltNum].position.matrix[1][3] - pTri[0][1]; - up[2] = boltList[boltNum].position.matrix[2][3] - pTri[0][2]; + up[0] = retMatrix.matrix[0][3] - pTri[0][0]; + up[1] = retMatrix.matrix[1][3] - pTri[0][1]; + up[2] = retMatrix.matrix[2][3] - pTri[0][2]; // normalise it VectorNormalize(up); // that's the up vector - boltList[boltNum].position.matrix[0][1] = up[0]; - boltList[boltNum].position.matrix[1][1] = up[1]; - boltList[boltNum].position.matrix[2][1] = up[2]; + retMatrix.matrix[0][1] = up[0]; + retMatrix.matrix[1][1] = up[1]; + retMatrix.matrix[2][1] = up[2]; // right is always straight CrossProduct( normal, up, right ); // that's the up vector - boltList[boltNum].position.matrix[0][2] = right[0]; - boltList[boltNum].position.matrix[1][2] = right[1]; - boltList[boltNum].position.matrix[2][2] = right[2]; + retMatrix.matrix[0][2] = right[0]; + retMatrix.matrix[1][2] = right[1]; + retMatrix.matrix[2][2] = right[2]; } // no, we are looking at a normal model tag else { - int *piBoneRefs = (int*) ((byte*)surface + surface->ofsBoneReferences); - // whip through and actually transform each vertex v = (mdxmVertex_t *) ((byte *)surface + surface->ofsVerts); + int *piBoneReferences = (int*) ((byte*)surface + surface->ofsBoneReferences); for ( j = 0; j < 3; j++ ) { mdxmWeight_t *w; @@ -1293,11 +1328,11 @@ void G2_ProcessSurfaceBolt(const mdxaBone_v &bonePtr, const mdxmSurface_t *surfa w = v->weights; for ( k = 0 ; k < v->numWeights ; k++, w++ ) { - //bone = bonePtr + piBoneRefs[w->boneIndex]; + const mdxaBone_t &bone=boneCache.Eval(piBoneReferences[w->boneIndex]); - pTri[j][0] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[0], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[0][3] ); - pTri[j][1] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[1], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[1][3] ); - pTri[j][2] += w->boneWeight * ( DotProduct( bonePtr[piBoneRefs[w->boneIndex]].matrix[2], v->vertCoords ) + bonePtr[piBoneRefs[w->boneIndex]].matrix[2][3] ); + pTri[j][0] += w->boneWeight * ( DotProduct( bone.matrix[0], v->vertCoords ) + bone.matrix[0][3] ); + pTri[j][1] += w->boneWeight * ( DotProduct( bone.matrix[1], v->vertCoords ) + bone.matrix[1][3] ); + pTri[j][2] += w->boneWeight * ( DotProduct( bone.matrix[2], v->vertCoords ) + bone.matrix[2][3] ); } v = (mdxmVertex_t *)&v->weights[/*v->numWeights*/surface->maxVertBoneWeights]; @@ -1328,47 +1363,98 @@ void G2_ProcessSurfaceBolt(const mdxaBone_v &bonePtr, const mdxmSurface_t *surfa VectorNormalize2( axes[2], axes[2] ); // set up location in world space of the origin point in out going matrix - boltList[boltNum].position.matrix[0][3] = pTri[MDX_TAG_ORIGIN][0]; - boltList[boltNum].position.matrix[1][3] = pTri[MDX_TAG_ORIGIN][1]; - boltList[boltNum].position.matrix[2][3] = pTri[MDX_TAG_ORIGIN][2]; + retMatrix.matrix[0][3] = pTri[MDX_TAG_ORIGIN][0]; + retMatrix.matrix[1][3] = pTri[MDX_TAG_ORIGIN][1]; + retMatrix.matrix[2][3] = pTri[MDX_TAG_ORIGIN][2]; // copy axis to matrix - do some magic to orient minus Y to positive X and so on so bolt on stuff is oriented correctly - boltList[boltNum].position.matrix[0][0] = axes[1][0]; - boltList[boltNum].position.matrix[0][1] = axes[0][0]; - boltList[boltNum].position.matrix[0][2] = -axes[2][0]; + retMatrix.matrix[0][0] = axes[1][0]; + retMatrix.matrix[0][1] = axes[0][0]; + retMatrix.matrix[0][2] = -axes[2][0]; - boltList[boltNum].position.matrix[1][0] = axes[1][1]; - boltList[boltNum].position.matrix[1][1] = axes[0][1]; - boltList[boltNum].position.matrix[1][2] = -axes[2][1]; + retMatrix.matrix[1][0] = axes[1][1]; + retMatrix.matrix[1][1] = axes[0][1]; + retMatrix.matrix[1][2] = -axes[2][1]; - boltList[boltNum].position.matrix[2][0] = axes[1][2]; - boltList[boltNum].position.matrix[2][1] = axes[0][2]; - boltList[boltNum].position.matrix[2][2] = -axes[2][2]; + retMatrix.matrix[2][0] = axes[1][2]; + retMatrix.matrix[2][1] = axes[0][2]; + retMatrix.matrix[2][2] = -axes[2][2]; } } - -// now go through all the generated surfaces that aren't included in the model surface hierarchy and create the correct bolt info for them -void G2_ProcessGeneratedSurfaceBolts(CGhoul2Info &ghoul2, mdxaBone_v &bonePtr, const model_t *mod_t) + +void G2_GetBoltMatrixLow(CGhoul2Info &ghoul2,int boltNum,const vec3_t scale,mdxaBone_t &retMatrix) { - // look through the surfaces off the end of the pre-defined model surfaces - for (int i=0; i< ghoul2.mSlist.size(); i++) + if (!ghoul2.mBoneCache) { - // only look for bolts if we are actually a generated surface, and not just an overriden one - if (ghoul2.mSlist[i].offFlags & G2SURFACEFLAG_GENERATED) + retMatrix=identityMatrix; + return; + } + assert(ghoul2.mBoneCache); + CBoneCache &boneCache=*ghoul2.mBoneCache; + assert(boneCache.mod); + boltInfo_v &boltList=ghoul2.mBltlist; + assert(boltNum>=0&&boltNum=0) + { + mdxaSkel_t *skel; + mdxaSkelOffsets_t *offsets; + offsets = (mdxaSkelOffsets_t *)((byte *)boneCache.header + sizeof(mdxaHeader_t)); + skel = (mdxaSkel_t *)((byte *)boneCache.header + sizeof(mdxaHeader_t) + offsets->offsets[boltList[boltNum].boneNumber]); + Multiply_3x4Matrix(&retMatrix, &boneCache.Eval(boltList[boltNum].boneNumber), &skel->BasePoseMat); + } + else if (boltList[boltNum].surfaceNumber>=0) + { + const surfaceInfo_t *surfInfo=0; { - // well alrighty then. Lets see if there is a bolt that is attempting to use it - int boltNum = G2_Find_Bolt_Surface_Num(ghoul2.mBltlist, i, G2SURFACEFLAG_GENERATED); - // yes - ok, processing time. - if (boltNum != -1) + int i; + for (i=0;isurface<10000) + { + surface = (mdxmSurface_t *)G2_FindSurface(boneCache.mod,surfInfo->surface, 0); + } + G2_ProcessSurfaceBolt2(boneCache,surface,boltNum,boltList,surfInfo,(model_t *)boneCache.mod,retMatrix); } + else + { + // we have a bolt without a bone or surface, not a huge problem but we ought to at least clear the bolt matrix + retMatrix=identityMatrix; + } +/* + // scale the bolt position by the scale factor for this model since at this point its still in model space + if (scale[0]) + { + retMatrix.matrix[0][3] *= scale[0]; + } + if (scale[1]) + { + retMatrix.matrix[1][3] *= scale[1]; + } + if (scale[2]) + { + retMatrix.matrix[2][3] *= scale[2]; + } + VectorNormalize((float*)&retMatrix.matrix[0]); + VectorNormalize((float*)&retMatrix.matrix[1]); + VectorNormalize((float*)&retMatrix.matrix[2]); +*/ } + // set up each surface ready for rendering in the back end void RenderSurfaces(CRenderSurface &RS) { @@ -1432,7 +1518,7 @@ void RenderSurfaces(CRenderSurface &RS) { // set the surface info to point at the where the transformed bone list is going to be for when the surface gets rendered out CRenderableSurface *newSurf = new CRenderableSurface; newSurf->surfaceData = surface; - newSurf->boneList = &RS.bonePtr; + newSurf->boneCache = RS.boneCache; #ifdef _NPATCH R_AddDrawSurf( (surfaceType_t *)newSurf, tr.shadowShader, 0, qfalse, (RS.currentModel->npatchable ? 1 : 0) ); #else @@ -1448,7 +1534,7 @@ void RenderSurfaces(CRenderSurface &RS) { // set the surface info to point at the where the transformed bone list is going to be for when the surface gets rendered out CRenderableSurface *newSurf = new CRenderableSurface; newSurf->surfaceData = surface; - newSurf->boneList = &RS.bonePtr; + newSurf->boneCache = RS.boneCache; #ifdef _NPATCH R_AddDrawSurf( (surfaceType_t *)newSurf, tr.projectionShadowShader, 0, qfalse, (RS.currentModel->npatchable ? 1 : 0) ); #else @@ -1461,7 +1547,7 @@ void RenderSurfaces(CRenderSurface &RS) { // set the surface info to point at the where the transformed bone list is going to be for when the surface gets rendered out CRenderableSurface *newSurf = new CRenderableSurface; newSurf->surfaceData = surface; - newSurf->boneList = &RS.bonePtr; + newSurf->boneCache = RS.boneCache; #ifdef _NPATCH R_AddDrawSurf( (surfaceType_t *)newSurf, shader, RS.fogNum, qfalse, (RS.currentModel->npatchable ? 1 : 0) ); #else @@ -1470,18 +1556,6 @@ void RenderSurfaces(CRenderSurface &RS) } } - // is this surface considered a bolt surface? - if (offFlags & G2SURFACEFLAG_ISBOLT) - { - // well alrighty then. Lets see if there is a bolt that is attempting to use it - int boltNum = G2_Find_Bolt_Surface_Num(RS.boltList, RS.surfaceNum, 0); - // yes - ok, processing time. - if (boltNum != -1) - { - G2_ProcessSurfaceBolt(RS.bonePtr, surface, boltNum, RS.boltList, surfOverride, RS.currentModel); - } - } - // if we are turning off all descendants, then stop this recursion now if (offFlags & G2SURFACEFLAG_NODESCENDANTS) { @@ -1496,151 +1570,6 @@ void RenderSurfaces(CRenderSurface &RS) } } -// Go through the model and deal with just the surfaces that are tagged as bolt on points - this is for the server side skeleton construction -void ProcessModelBoltSurfaces(int surfaceNum, surfaceInfo_v &rootSList, - mdxaBone_v &bonePtr, const model_t *currentModel, int lod, boltInfo_v &boltList) -{ - int i; - int offFlags = 0; - - // back track and get the surfinfo struct for this surface - mdxmSurface_t *surface = (mdxmSurface_t *)G2_FindSurface((void *)currentModel, surfaceNum, 0); - mdxmHierarchyOffsets_t *surfIndexes = (mdxmHierarchyOffsets_t *)((byte *)currentModel->mdxm + sizeof(mdxmHeader_t)); - mdxmSurfHierarchy_t *surfInfo = (mdxmSurfHierarchy_t *)((byte *)surfIndexes + surfIndexes->offsets[surface->thisSurfaceIndex]); - - // see if we have an override surface in the surface list - const surfaceInfo_t *surfOverride = G2_FindOverrideSurface(surfaceNum, rootSList); - - // really, we should use the default flags for this surface unless it's been overriden - offFlags = surfInfo->flags; - - // set the off flags if we have some - if (surfOverride) - { - offFlags = surfOverride->offFlags; - } - - // is this surface considered a bolt surface? - if (surfInfo->flags & G2SURFACEFLAG_ISBOLT) - { - // well alrighty then. Lets see if there is a bolt that is attempting to use it - int boltNum = G2_Find_Bolt_Surface_Num(boltList, surfaceNum, 0); - // yes - ok, processing time. - if (boltNum != -1) - { - G2_ProcessSurfaceBolt(bonePtr, surface, boltNum, boltList, surfOverride, currentModel); - } - } - - // if we are turning off all descendants, then stop this recursion now - if (offFlags & G2SURFACEFLAG_NODESCENDANTS) - { - return; - } - - // now recursively call for the children - for (i=0; i< surfInfo->numChildren; i++) - { - ProcessModelBoltSurfaces(surfInfo->childIndexes[i], rootSList, bonePtr, currentModel, lod, boltList); - } -} - - -// build the used bone list so when doing bone transforms we can determine if we need to do it or not -void G2_ConstructUsedBoneList(CConstructBoneList &CBL) -{ - int i, j; - int offFlags = 0; - - // back track and get the surfinfo struct for this surface - const mdxmSurface_t *surface = (mdxmSurface_t *)G2_FindSurface((void *)CBL.currentModel, CBL.surfaceNum, 0); - const mdxmHierarchyOffsets_t *surfIndexes = (mdxmHierarchyOffsets_t *)((byte *)CBL.currentModel->mdxm + sizeof(mdxmHeader_t)); - const mdxmSurfHierarchy_t *surfInfo = (mdxmSurfHierarchy_t *)((byte *)surfIndexes + surfIndexes->offsets[surface->thisSurfaceIndex]); - const model_t *mod_a = R_GetModelByHandle(CBL.currentModel->mdxm->animIndex); - const mdxaSkelOffsets_t *offsets = (mdxaSkelOffsets_t *)((byte *)mod_a->mdxa + sizeof(mdxaHeader_t)); - const mdxaSkel_t *skel, *childSkel; - - // see if we have an override surface in the surface list - const surfaceInfo_t *surfOverride = G2_FindOverrideSurface(CBL.surfaceNum, CBL.rootSList); - - // really, we should use the default flags for this surface unless it's been overriden - offFlags = surfInfo->flags; - - // set the off flags if we have some - if (surfOverride) - { - offFlags = surfOverride->offFlags; - } - - // if this surface is not off, add it to the shader render list - if (!(offFlags & G2SURFACEFLAG_OFF)) - { - int *bonesReferenced = (int *)((byte*)surface + surface->ofsBoneReferences); - // now whip through the bones this surface uses - for (i=0; inumBoneReferences;i++) - { - int iBoneIndex = bonesReferenced[i]; - CBL.boneUsedList[iBoneIndex] = 1; - - // now go and check all the descendant bones attached to this bone and see if any have the always flag on them. If so, activate them - skel = (mdxaSkel_t *)((byte *)mod_a->mdxa + sizeof(mdxaHeader_t) + offsets->offsets[iBoneIndex]); - - // for every child bone... - for (j=0; j< skel->numChildren; j++) - { - // get the skel data struct for each child bone of the referenced bone - childSkel = (mdxaSkel_t *)((byte *)mod_a->mdxa + sizeof(mdxaHeader_t) + offsets->offsets[skel->children[j]]); - - // does it have the always on flag on? - if (childSkel->flags & G2BONEFLAG_ALWAYSXFORM) - { - // yes, make sure it's in the list of bones to be transformed. - CBL.boneUsedList[skel->children[j]] = 1; - } - } - - // now we need to ensure that the parents of this bone are actually active... - // - int iParentBone = skel->parent; - while (iParentBone != -1) - { - if (CBL.boneUsedList[iParentBone]) // no need to go higher - break; - CBL.boneUsedList[iParentBone] = 1; - skel = (mdxaSkel_t *)((byte *)mod_a->mdxa + sizeof(mdxaHeader_t) + offsets->offsets[iParentBone]); - iParentBone = skel->parent; - } - } - } - else - // if we are turning off all descendants, then stop this recursion now - if (offFlags & G2SURFACEFLAG_NODESCENDANTS) - { - return; - } - - // now recursively call for the children - for (i=0; i< surfInfo->numChildren; i++) - { - CBL.surfaceNum = surfInfo->childIndexes[i]; - G2_ConstructUsedBoneList(CBL); - } -} - -// count to the last bone used in the used bone list so we can resize the bone repository array struct for this ent -static int G2_CountBonesUsed(const int * const boneUsedList, int boneCount) -{ - int found = -1; - for (int i=0; ie.ghoul2); + CGhoul2Info_v &ghoul2 = *ent->e.ghoul2; + + if ( !ghoul2.IsValid() ) + { + return; + } + + int currentTime=G2API_GetTime(tr.refdef.time); // if we don't want server ghoul2 models and this is one, or we just don't want ghoul2 models at all, then return - if ((r_noServerGhoul2->integer && !(ghoul2[0].mCreationID & WF_CLIENTONLY)) || (r_noGhoul2->integer)) + if (r_noGhoul2->integer) { return; } @@ -1745,48 +1696,16 @@ void R_AddGhoulSurfaces( trRefEntity_t *ent ) { { return; } - + HackadelicOnClient=true; // are any of these models setting a new origin? - for (i=0; ie.origin, ent->e.modelScale, true); - - // scale the bolt position by the scale factor for this model since at this point its still in model space - if (ent->e.modelScale[0]) - { - ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position.matrix[0][3] *= ent->e.modelScale[0]; - } - if (ent->e.modelScale[1]) - { - ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position.matrix[1][3] *= ent->e.modelScale[1]; - } - if (ent->e.modelScale[2]) - { - ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position.matrix[2][3] *= ent->e.modelScale[2]; - } - - VectorNormalize((float*)&ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position.matrix[0]); - VectorNormalize((float*)&ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position.matrix[1]); - VectorNormalize((float*)&ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position.matrix[2]); - mdxaBone_t tempMatrix; - Inverse_Matrix(&ghoul2[i].mBltlist[ghoul2[i].mNewOrigin].position, &tempMatrix); - Multiply_3x4Matrix(&rootMatrix, &tempMatrix, (mdxaBone_t*)&identityMatrix); - - setNewOrigin = true; - } - } - } + RootMatrix(ghoul2,currentTime, ent->e.modelScale,rootMatrix); // don't add third_person objects if not in a portal personalModel = (qboolean)((ent->e.renderfx & RF_THIRD_PERSON) && !tr.viewParms.isPortal); - modelList = (int*)Z_Malloc(ghoul2.size() * 4, TAG_GHOUL2, qfalse); + int modelList[256]; + assert(ghoul2.size()<=255); + modelList[255]=548; // set up lighting now that we know we aren't culled if ( !personalModel || r_shadows->integer > 1 ) @@ -1800,6 +1719,7 @@ void R_AddGhoulSurfaces( trRefEntity_t *ent ) { // order sort the ghoul 2 models so bolt ons get bolted to the right model G2_Sort_Models(ghoul2, modelList, &modelCount); + assert(modelList[255]==548); // construct a world matrix for this entity G2_GenerateWorldMatrix(ent->e.angles, ent->e.origin); @@ -1811,13 +1731,24 @@ void R_AddGhoulSurfaces( trRefEntity_t *ent ) { i = modelList[j]; // do we really really want to deal with this model? - if (!(ghoul2[i].mFlags & GHOUL2_NOMODEL)) + // do we really want to read jakes inane comments? + if (!(ghoul2[i].mFlags & GHOUL2_NOMODEL)&&!(ghoul2[i].mFlags & GHOUL2_NORENDER)) { + // I really hate this code, really hate this code -gil +#if 1 + ghoul2[i].mModel = RE_RegisterModel(ghoul2[i].mFileName); + const model_t *currentModel = R_GetModelByHandle(ghoul2[i].mModel); +#else if (!ghoul2[i].mModel) {// probably cleared by G2API_SetGhoul2ModelIndexes ghoul2[i].mModel = RE_RegisterModel(ghoul2[i].mFileName); } const model_t *currentModel = R_GetModelByHandle(ghoul2[i].mModel); +#endif + if (!currentModel||!currentModel->mdxm) + { + continue; + } const model_t *animModel = R_GetModelByHandle(currentModel->mdxm->animIndex); const mdxaHeader_t *aHeader = animModel->mdxa; @@ -1843,264 +1774,116 @@ void R_AddGhoulSurfaces( trRefEntity_t *ent ) { } } - - if (ghoul2[i].mSkelFrameNum != tr.refdef.time) + if (j&&ghoul2[i].mModelBoltLink != -1) { - int *boneUsedList; - - ghoul2[i].mSkelFrameNum = tr.refdef.time; - - // construct a list of all bones used by this model - this makes the bone transform go a bit faster since it will dump out bones - // that aren't being used. - NOTE this will screw up any models that have surfaces turned off where the lower surfaces aren't. - boneUsedList = (int *)Z_Malloc(animModel->mdxa->numBones * 4, TAG_GHOUL2, qfalse); - memset(boneUsedList, 0, (animModel->mdxa->numBones * 4)); - - CConstructBoneList CBL(ghoul2[i].mSurfaceRoot, - boneUsedList, - ghoul2[i].mSlist, - currentModel, - ghoul2[i].mBlist - ); - - G2_ConstructUsedBoneList(CBL); - - if (!ghoul2[i].mSurfaceRoot) - { - // make sure the root bone is marked as being referenced - boneUsedList[0] =1; - } - - // now we know how many bones are going to be transformed, we can set up the temp transformed bone data repository for this ghoul model -// if (ghoul2[i].mCreationID & WF_CLIENTONLY) -// { - // this is a client side created ghoul model, which means the entity state that the refent points at is in the .exe, and I can resize this - // directly - ghoul2[i].mTempBoneList.resize(G2_CountBonesUsed(boneUsedList, animModel->mdxa->numBones)+1); -// } -// else -// { - // have to do this in the CGAME DLL since the original data was created there. -// VM_Call (CG_RESIZE_G2_TEMPBONE, &ghoul2[i].mTempBoneList,G2_CountBonesUsed(boneUsedList, animModel->mdxa->numBones)+1); -// } - - // if this is the root model, and we have a new root matrix because the model has a new origin, use that - if (!setNewOrigin || j) - { - // decide what to do about the root matrix - if (ghoul2[i].mModelBoltLink == -1) - { - // we aren't bolted to anything - rootMatrix = identityMatrix; - } - // yes we are bolted to another model, better use the bolt as the root matrix then, so our model is offset correctly for the bone bolt - else - { - int boltMod = (ghoul2[i].mModelBoltLink >> MODEL_SHIFT) & MODEL_AND; - int boltNum = (ghoul2[i].mModelBoltLink >> BOLT_SHIFT) & BOLT_AND; - rootMatrix = ghoul2[boltMod].mBltlist[boltNum].position; - } - } - - // pre-transform all the bones of this model - int timeoffset; - timeoffset=0; - G2_TransformGhoulBones( aHeader, boneUsedList, rootMatrix, ghoul2[i], tr.refdef.time+timeoffset, animModel->mdxa->numBones); - - Z_Free(boneUsedList); - } - // - // compute LOD - // - whichLod = G2_ComputeLOD( ent, currentModel, ghoul2[i].mLodBias ); - - // do we really want to render this? - if ( ghoul2[i].mFlags & GHOUL2_NORENDER /*( ghoul2[i].mModelBoltLink == -1 && ent->e.renderfx & RF_ALPHA_FADE) */) // cheesy first person lightsaber hack - { - // if we didn't render it, then we should still go sort out all the bolt surfaces in the model - ProcessModelBoltSurfaces(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, ghoul2[i].mTempBoneList, currentModel, whichLod, ghoul2[i].mBltlist); + int boltMod = (ghoul2[i].mModelBoltLink >> MODEL_SHIFT) & MODEL_AND; + int boltNum = (ghoul2[i].mModelBoltLink >> BOLT_SHIFT) & BOLT_AND; + mdxaBone_t bolt; + G2_GetBoltMatrixLow(ghoul2[boltMod],boltNum,ent->e.modelScale,bolt); + G2_TransformGhoulBones((void *)currentModel, aHeader, ghoul2[i].mBlist,bolt, ghoul2[i],currentTime); } else - { // start the walk of the surface hierarchy - CRenderSurface RS(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, cust_shader, fogNum, personalModel, ghoul2[i].mTempBoneList, ent->e.renderfx, skin, currentModel, whichLod, ghoul2[i].mBltlist); - RenderSurfaces(RS); + { + G2_TransformGhoulBones((void *)currentModel, aHeader, ghoul2[i].mBlist, rootMatrix, ghoul2[i],currentTime); } - - // go through all the generated surfaces and create their bolt info if we need it. - G2_ProcessGeneratedSurfaceBolts(ghoul2[i], ghoul2[i].mTempBoneList, currentModel); - + whichLod = G2_ComputeLOD( ent, currentModel, ghoul2[i].mLodBias ); + G2_FindOverrideSurface(-1,ghoul2[i].mSlist); //reset the quick surface override lookup; + CRenderSurface RS(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, cust_shader, fogNum, personalModel, ghoul2[i].mBoneCache, ent->e.renderfx, skin, currentModel, whichLod, ghoul2[i].mBltlist); + RenderSurfaces(RS); } } - Z_Free(modelList); + HackadelicOnClient=false; } +bool G2_NeedsRecalc(CGhoul2Info *ghlInfo,int frameNum) +{ + ghlInfo->mModel = RE_RegisterModel(ghlInfo->mFileName); + void *currentModel = R_GetModelByHandle(ghlInfo->mModel); + if (ghlInfo->mSkelFrameNum!=frameNum|| + !ghlInfo->mBoneCache|| + ghlInfo->mBoneCache->mod!=currentModel) + { + ghlInfo->mSkelFrameNum=frameNum; + return true; + } + return false; +} + /* ============== G2_ConstructGhoulSkeleton - builds a complete skeleton for all ghoul models in a CGhoul2Info_v class - using LOD 0 ============== */ -void G2_ConstructGhoulSkeleton( CGhoul2Info_v &ghoul2, const int frameNum, qhandle_t *modelPointerList, bool checkForNewOrigin, const vec3_t position, const vec3_t scale, bool modelSet) { +void G2_ConstructGhoulSkeleton( CGhoul2Info_v &ghoul2,const int frameNum,bool checkForNewOrigin,const vec3_t scale) +{ mdxaHeader_t *aHeader; int i, j; - int *boneUsedList; - const model_t *currentModel; const model_t *animModel; int modelCount; - int *modelList; - bool setNewOrigin = false; mdxaBone_t rootMatrix; - // if we don't want server ghoul2 models and this is one, or we just don't want ghoul2 models at all, then return - if ((r_noServerGhoul2->integer && !(ghoul2[0].mCreationID & WF_CLIENTONLY)) || (r_noGhoul2->integer)) - { - return; - } + int modelList[256]; + assert(ghoul2.size()<=255); + modelList[255]=548; - // have we already transformed this group of ghoul2 skeletons this frame? - if (ghoul2[0].mSkelFrameNum == frameNum) - { - //Com_Printf( "%7d construct skel request using cached data\n", frameNum ); - return; - } - //Com_Printf( "%7d != %d construct skel\n", frameNum, ghoul2[0].mSkelFrameNum ); - - // should we be looking to see if any of these models are setting a new origin? if (checkForNewOrigin) { - // are any of these models setting a new origin? - for (int i=0; imdxm) { - currentModel = R_GetModelByHandle( modelPointerList[ghoul2[i].mModelindex] ); + ghoul2[i].mModel = RE_RegisterModel(ghoul2[i].mFileName); + currentModel = R_GetModelByHandle(ghoul2[i].mModel); } - else +#endif + if (!currentModel->mdxm) { - currentModel = R_GetModelByHandle( RE_RegisterModel(ghoul2[i].mFileName) ); + continue; } assert(currentModel->mdxm);//something very bad happened here, it has no glm! animModel = R_GetModelByHandle(currentModel->mdxm->animIndex); aHeader = animModel->mdxa; - ghoul2[i].mSkelFrameNum = frameNum; - - // construct a list of all bones used by this model - this makes the bone transform go a bit faster since it will dump out bones - // that aren't being used. - NOTE this will screw up any models that have surfaces turned off where the lower surfaces aren't. - boneUsedList = (int *)Z_Malloc(animModel->mdxa->numBones * 4, TAG_GHOUL2, qfalse); - memset(boneUsedList, 0, (animModel->mdxa->numBones * 4)); - - CConstructBoneList CBL( - ghoul2[i].mSurfaceRoot, - boneUsedList, - ghoul2[i].mSlist, - currentModel, - ghoul2[i].mBlist - ); - - G2_ConstructUsedBoneList(CBL); - - if (!ghoul2[i].mSurfaceRoot) + if (j&&ghoul2[i].mModelBoltLink != -1) { - // make sure the root bone is marked as being referenced - boneUsedList[0] =1; - } + int boltMod = (ghoul2[i].mModelBoltLink >> MODEL_SHIFT) & MODEL_AND; + int boltNum = (ghoul2[i].mModelBoltLink >> BOLT_SHIFT) & BOLT_AND; - if (ghoul2[i].mFileName[0]) - { - // this is a client side created ghoul model, which means the entity state that the refent points at is in the .exe, and I can resize this - // directly - ghoul2[i].mTempBoneList.resize(G2_CountBonesUsed(boneUsedList, animModel->mdxa->numBones)+1); + mdxaBone_t bolt; + G2_GetBoltMatrixLow(ghoul2[boltMod],boltNum,scale,bolt); + G2_TransformGhoulBones((void *)currentModel,aHeader,ghoul2[i].mBlist,bolt,ghoul2[i],frameNum); } else { - // have to do this in the CGAME DLL since the original data was created there. - VM_Call (CG_RESIZE_G2_TEMPBONE, &ghoul2[i].mTempBoneList,G2_CountBonesUsed(boneUsedList, animModel->mdxa->numBones)+1); + G2_TransformGhoulBones((void *)currentModel,aHeader,ghoul2[i].mBlist,rootMatrix,ghoul2[i],frameNum); } - - // decide what to do about the root matrix - - // if this is the root model, and we have a new root matrix because the model has a new origin, use that - if (!setNewOrigin || j) - { - if (ghoul2[i].mModelBoltLink == -1) - { - // we aren't bolted to anything - rootMatrix = identityMatrix; - } - // yes we are bolted to another model, better use the bolt as the root matrix then, so our model is offset correctly for the bone bolt - else - { - int boltMod = (ghoul2[i].mModelBoltLink >> MODEL_SHIFT) & MODEL_AND; - int boltNum = (ghoul2[i].mModelBoltLink >> BOLT_SHIFT) & BOLT_AND; - rootMatrix = ghoul2[boltMod].mBltlist[boltNum].position; - } - } - - // pre-transform all the bones of this model - G2_TransformGhoulBones( aHeader, boneUsedList, rootMatrix, ghoul2[i], frameNum, animModel->mdxa->numBones); - - Z_Free(boneUsedList); - - // call function that will go through the main model and generate all the bolts required - ProcessModelBoltSurfaces(ghoul2[i].mSurfaceRoot, ghoul2[i].mSlist, ghoul2[i].mTempBoneList, currentModel, 0, ghoul2[i].mBltlist); - - // go through all the generated surfaces and create their bolt info if we need it. - G2_ProcessGeneratedSurfaceBolts(ghoul2[i], ghoul2[i].mTempBoneList, currentModel); - } } - Z_Free(modelList); - return; } @@ -2116,7 +1899,7 @@ void RB_SurfaceGhoul( CRenderableSurface *surf ) { mdxmSurface_t *surface = (mdxmSurface_t *)surf->surfaceData; // point us at the bone structure that should have been pre-computed - mdxaBone_v &bonePtr = *((mdxaBone_v *)surf->boneList); + CBoneCache *bones = surf->boneCache; delete surf; // @@ -2150,7 +1933,7 @@ void RB_SurfaceGhoul( CRenderableSurface *surf ) { // whip through and actually transform each vertex - const int *piBoneRefs = (int*) ((byte*)surface + surface->ofsBoneReferences); + int *piBoneReferences = (int*) ((byte*)surface + surface->ofsBoneReferences); const int numVerts = surface->numVerts; const mdxmVertex_t *v = (mdxmVertex_t *) ((byte *)surface + surface->ofsVerts); @@ -2158,21 +1941,41 @@ void RB_SurfaceGhoul( CRenderableSurface *surf ) { for ( j = 0; j < numVerts; j++, baseVert++ ) { const int numWeights = v->numWeights; + assert(numWeights); // if this fires, comment it out please. + // if nobody comments it out, I will remove the below if for performance const mdxmWeight_t *w = v->weights; - VectorClear( tess.xyz[baseVert]); - VectorClear( tess.normal[baseVert]); + const mdxaBone_t *bone; - for ( k = 0 ; k < numWeights ; k++, w++ ) + if (numWeights) { - mdxaBone_t &bone = bonePtr[piBoneRefs[w->boneIndex]]; + bone = &bones->EvalRender(piBoneReferences[w->boneIndex]); - tess.xyz[baseVert][0] += w->boneWeight * ( DotProduct( bone.matrix[0], v->vertCoords ) + bone.matrix[0][3] ); - tess.xyz[baseVert][1] += w->boneWeight * ( DotProduct( bone.matrix[1], v->vertCoords ) + bone.matrix[1][3] ); - tess.xyz[baseVert][2] += w->boneWeight * ( DotProduct( bone.matrix[2], v->vertCoords ) + bone.matrix[2][3] ); + tess.xyz[baseVert][0] = w->boneWeight * ( DotProduct( bone->matrix[0], v->vertCoords ) + bone->matrix[0][3] ); + tess.xyz[baseVert][1] = w->boneWeight * ( DotProduct( bone->matrix[1], v->vertCoords ) + bone->matrix[1][3] ); + tess.xyz[baseVert][2] = w->boneWeight * ( DotProduct( bone->matrix[2], v->vertCoords ) + bone->matrix[2][3] ); - tess.normal[baseVert][0] += w->boneWeight * DotProduct( bone.matrix[0], v->normal ); - tess.normal[baseVert][1] += w->boneWeight * DotProduct( bone.matrix[1], v->normal ); - tess.normal[baseVert][2] += w->boneWeight * DotProduct( bone.matrix[2], v->normal ); + tess.normal[baseVert][0] = w->boneWeight * DotProduct( bone->matrix[0], v->normal ); + tess.normal[baseVert][1] = w->boneWeight * DotProduct( bone->matrix[1], v->normal ); + tess.normal[baseVert][2] = w->boneWeight * DotProduct( bone->matrix[2], v->normal ); + + for (w++, k = 1 ; k < numWeights ; k++, w++ ) + { + bone = &bones->EvalRender(piBoneReferences[w->boneIndex]); + + tess.xyz[baseVert][0] += w->boneWeight * ( DotProduct( bone->matrix[0], v->vertCoords ) + bone->matrix[0][3] ); + tess.xyz[baseVert][1] += w->boneWeight * ( DotProduct( bone->matrix[1], v->vertCoords ) + bone->matrix[1][3] ); + tess.xyz[baseVert][2] += w->boneWeight * ( DotProduct( bone->matrix[2], v->vertCoords ) + bone->matrix[2][3] ); + + tess.normal[baseVert][0] += w->boneWeight * DotProduct( bone->matrix[0], v->normal ); + tess.normal[baseVert][1] += w->boneWeight * DotProduct( bone->matrix[1], v->normal ); + tess.normal[baseVert][2] += w->boneWeight * DotProduct( bone->matrix[2], v->normal ); + } + + } + else + { + VectorClear( tess.xyz[baseVert]); + VectorClear( tess.normal[baseVert]); } tess.texCoords[baseVert][0][0] = v->texCoords[0]; diff --git a/code/renderer/tr_image.cpp b/code/renderer/tr_image.cpp index cdd9ba3..66e6bf6 100644 --- a/code/renderer/tr_image.cpp +++ b/code/renderer/tr_image.cpp @@ -858,7 +858,7 @@ void RE_RegisterImages_Info_f( void ) // currently, this just goes through all the images and dumps any not referenced on this level... // -void RE_RegisterImages_LevelLoadEnd(void) +qboolean RE_RegisterImages_LevelLoadEnd(void) { ri.Printf( PRINT_DEVELOPER, "RE_RegisterImages_LevelLoadEnd():\n"); @@ -902,6 +902,8 @@ void RE_RegisterImages_LevelLoadEnd(void) ri.Printf( PRINT_DEVELOPER, "RE_RegisterImages_LevelLoadEnd(): Ok\n"); GL_ResetBinds(); + + return bEraseOccured; } diff --git a/code/renderer/tr_init.cpp b/code/renderer/tr_init.cpp index 32b0379..5834776 100644 --- a/code/renderer/tr_init.cpp +++ b/code/renderer/tr_init.cpp @@ -155,7 +155,13 @@ Ghoul2 Insert Start cvar_t *r_noServerGhoul2; cvar_t *r_noGhoul2; cvar_t *r_Ghoul2Test; +cvar_t *r_Ghoul2AnimSmooth; cvar_t *r_Ghoul2UnSqash; +cvar_t *r_Ghoul2TimeBase=0; +cvar_t *r_Ghoul2NoLerp; +cvar_t *r_Ghoul2NoBlend; +cvar_t *r_Ghoul2UnSqashAfterSmooth; + /* Ghoul2 Insert End @@ -1034,8 +1040,8 @@ void R_Register( void ) #endif r_facePlaneCull = ri.Cvar_Get ("r_facePlaneCull", "1", CVAR_ARCHIVE ); - r_surfaceSprites = ri.Cvar_Get ("r_surfaceSprites", "1", CVAR_ARCHIVE); - r_surfaceWeather = ri.Cvar_Get ("r_surfaceWeather", "1", CVAR_ARCHIVE); + r_surfaceSprites = ri.Cvar_Get ("r_surfaceSprites", "1", CVAR_CHEAT); + r_surfaceWeather = ri.Cvar_Get ("r_surfaceWeather", "0", 0); r_windSpeed = ri.Cvar_Get ("r_windSpeed", "0", 0); r_windAngle = ri.Cvar_Get ("r_windAngle", "0", 0); @@ -1103,7 +1109,13 @@ Ghoul2 Insert Start r_noServerGhoul2 = ri.Cvar_Get( "r_noserverghoul2", "0", 0); r_noGhoul2 = ri.Cvar_Get( "r_noghoul2", "0", 0); r_Ghoul2Test = ri.Cvar_Get( "r_ghoul2test", "0", 0); + r_Ghoul2AnimSmooth = ri.Cvar_Get( "r_ghoul2animsmooth", "0", 0); r_Ghoul2UnSqash = ri.Cvar_Get( "r_ghoul2unsquash", "1", 0); + r_Ghoul2TimeBase = ri.Cvar_Get( "r_ghoul2timebase", "2", 0); + r_Ghoul2NoLerp = ri.Cvar_Get( "r_ghoul2nolerp", "0", 0); + r_Ghoul2NoBlend = ri.Cvar_Get( "r_ghoul2noblend", "0", 0); + r_Ghoul2UnSqashAfterSmooth = ri.Cvar_Get( "r_ghoul2unsquashaftersmooth", "1", 0); + /* Ghoul2 Insert End */ diff --git a/code/renderer/tr_light.cpp b/code/renderer/tr_light.cpp index 0d87d5c..94d0f9a 100644 --- a/code/renderer/tr_light.cpp +++ b/code/renderer/tr_light.cpp @@ -390,7 +390,12 @@ void R_SetupEntityLighting( const trRefdef_t *refdef, trRefEntity_t *ent ) { } // bonus items and view weapons have a fixed minimum add - if ( 1 /* ent->e.renderfx & RF_MINLIGHT */ ) { + if ( ent->e.renderfx & RF_MORELIGHT ) { + ent->ambientLight[0] += tr.identityLight * 96; + ent->ambientLight[1] += tr.identityLight * 96; + ent->ambientLight[2] += tr.identityLight * 96; + } + else { // give everything a minimum light add ent->ambientLight[0] += tr.identityLight * 32; ent->ambientLight[1] += tr.identityLight * 32; diff --git a/code/renderer/tr_local.h b/code/renderer/tr_local.h index 6ae1223..9516686 100644 --- a/code/renderer/tr_local.h +++ b/code/renderer/tr_local.h @@ -1010,6 +1010,7 @@ typedef struct { int numShaders; shader_t *shaders[MAX_SHADERS]; shader_t *sortedShaders[MAX_SHADERS]; + int iNumDeniedShaders; // used for error-messages only int numSkins; skin_t *skins[MAX_SKINS]; @@ -1289,9 +1290,8 @@ qboolean RE_RegisterModels_LevelLoadEnd(qboolean bDeleteEverythingNotUsedThisLev void* RE_RegisterModels_Malloc(int iSize, const char *psModelFileName, qboolean *pqbAlreadyFound, memtag_t eTag); void RE_RegisterModels_StoreShaderRequest(const char *psModelFileName, const char *psShaderName, const int *piShaderIndexPoke); void RE_RegisterModels_Info_f(void); -// //void RE_RegisterImages_LevelLoadBegin(const char *psMapName); -void RE_RegisterImages_LevelLoadEnd(void); +qboolean RE_RegisterImages_LevelLoadEnd(void); void RE_RegisterImages_Info_f(void); @@ -1571,16 +1571,18 @@ void RB_SurfaceAnim( md4Surface_t *surfType ); Ghoul2 Insert Start */ #pragma warning (disable: 4512) //default assignment operator could not be gened +class CBoneCache; + class CRenderableSurface { public: const int ident; // ident of this surface - required so the materials renderer knows what sort of surface this refers to - void *boneList; // pointer to transformed bone list for this surface - required client side for rendering DONOT USE IN GAME SIDE + CBoneCache *boneCache; // pointer to transformed bone list for this surf mdxmSurface_t *surfaceData; // pointer to surface data loaded into file - only used by client renderer DO NOT USE IN GAME SIDE - if there is a vid restart this will be out of wack on the game CRenderableSurface(): ident(SF_MDX), - boneList(0), + boneCache(0), surfaceData(0) {} }; @@ -1786,7 +1788,7 @@ Ghoul2 Insert Start // tr_ghoul2.cpp void Create_Matrix(const float *angle, mdxaBone_t *matrix); -void Multiply_3x4Matrix(mdxaBone_t *out, mdxaBone_t *in2, mdxaBone_t *in); +void Multiply_3x4Matrix(mdxaBone_t *out,const mdxaBone_t *in2,const mdxaBone_t *in); extern qboolean R_LoadMDXM (model_t *mod, void *buffer, const char *name, qboolean bAlreadyCached ); extern qboolean R_LoadMDXA (model_t *mod, void *buffer, const char *name, qboolean bAlreadyCached ); bool LoadTGAPalletteImage ( const char *name, byte **pic, int *width, int *height); diff --git a/code/renderer/tr_quicksprite.cpp b/code/renderer/tr_quicksprite.cpp index e13ed38..45a5850 100644 --- a/code/renderer/tr_quicksprite.cpp +++ b/code/renderer/tr_quicksprite.cpp @@ -60,8 +60,8 @@ void CQuickSpriteSystem::Flush(void) // // set arrays and lock // - qglTexCoordPointer( 2, GL_FLOAT, 0, mTextureCoords ); qglEnableClientState( GL_TEXTURE_COORD_ARRAY); + qglTexCoordPointer( 2, GL_FLOAT, 0, mTextureCoords ); qglEnableClientState( GL_COLOR_ARRAY); qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, mColors ); diff --git a/code/renderer/tr_shader.cpp b/code/renderer/tr_shader.cpp index 0296757..40fab1b 100644 --- a/code/renderer/tr_shader.cpp +++ b/code/renderer/tr_shader.cpp @@ -581,6 +581,7 @@ static void ParseTexMod( const char *_text, shaderStage_t *stage ) /* +/////===== Part of the VERTIGON system =====///// =================== ParseSurfaceSprites =================== @@ -722,6 +723,7 @@ static void ParseSurfaceSprites(const char *_text, shaderStage_t *stage ) /* +/////===== Part of the VERTIGON system =====///// =========================== ParseSurfaceSpritesOptional =========================== @@ -743,7 +745,7 @@ ParseSurfaceSpritesOptional // // Optional parameters that will override the defaults set in the surfacesprites command above. // -void ParseSurfaceSpritesOptional( const char *param, const char *_text, shaderStage_t *stage ) +static void ParseSurfaceSpritesOptional( const char *param, const char *_text, shaderStage_t *stage ) { const char *token; const char **text = &_text; @@ -2552,7 +2554,8 @@ static shader_t *GeneratePermanentShader( void ) { int size, hash; if ( tr.numShaders == MAX_SHADERS ) { - ri.Printf( PRINT_WARNING, "WARNING: GeneratePermanentShader - MAX_SHADERS hit\n"); + tr.iNumDeniedShaders++; + ri.Printf( PRINT_WARNING, "WARNING: GeneratePermanentShader - MAX_SHADERS (%d) hit (overflowed by %d)\n", MAX_SHADERS, tr.iNumDeniedShaders); return tr.defaultShader; } @@ -3473,6 +3476,7 @@ CreateInternalShaders */ static void CreateInternalShaders( void ) { tr.numShaders = 0; + tr.iNumDeniedShaders = 0; // init the default shader memset( &shader, 0, sizeof( shader ) ); diff --git a/code/renderer/tr_surfacesprites.cpp b/code/renderer/tr_surfacesprites.cpp index a03835e..4c44845 100644 --- a/code/renderer/tr_surfacesprites.cpp +++ b/code/renderer/tr_surfacesprites.cpp @@ -6,6 +6,7 @@ #include "tr_QuickSprite.h" +#include "tr_worldeffects.h" /////===== Part of the VERTIGON system =====///// @@ -56,10 +57,11 @@ const float randomchart[256] = { #define WIND_DAMP_INTERVAL 50 #define WIND_GUST_TIME 2500.0 #define WIND_GUST_DECAY (1.0 / WIND_GUST_TIME) -extern bool R_GetWindVector(vec3_t windVector); int lastSSUpdateTime = 0; float curWindSpeed=0; +float curWindGust=5; +float curWeatherAmount=1; vec3_t curWindBlowVect={0,0,0}, targetWindBlowVect={0,0,0}; vec3_t curWindGrassDir={0,0,0}, targetWindGrassDir={0,0,0}; int totalsurfsprites=0, sssurfaces=0; @@ -70,7 +72,8 @@ vec3_t curWindPoint; int nextGustTime=0; float gustLeft=0; -float standardfovx = -1, standardscalex = 1.0; +qboolean standardfovinitialized=qfalse; +float standardfovx = 90, standardscalex = 1.0; float rangescalefactor=1.0; vec3_t ssrightvectors[4]; @@ -93,7 +96,8 @@ static void R_SurfaceSpriteFrameUpdate(void) return; if (backEnd.refdef.time < lastSSUpdateTime) - { + { // Time is BEFORE the last update time, so reset everything. + curWindGust = 5; curWindSpeed = r_windSpeed->value; nextGustTime = 0; gustLeft = 0; @@ -105,22 +109,35 @@ static void R_SurfaceSpriteFrameUpdate(void) // Adjust for an FOV. If things look twice as wide on the screen, pretend the shaders have twice the range. // ASSUMPTION HERE IS THAT "standard" fov is the first one rendered. - if (standardfovx < 0) + if (!standardfovinitialized) { // This isn't initialized yet. - if (backEnd.refdef.fov_x > 0.01) + if (backEnd.refdef.fov_x > 50 && backEnd.refdef.fov_x < 135) // I don't consider anything below 50 or above 135 to be "normal". { standardfovx = backEnd.refdef.fov_x; - standardscalex = tan(standardfovx * (M_PI/180.0f)); + standardscalex = tan(standardfovx * 0.5 * (M_PI/180.0f)); + standardfovinitialized = qtrue; + } + else + { + standardfovx = 90; + standardscalex = tan(standardfovx * 0.5 * (M_PI/180.0f)); } rangescalefactor = 1.0; // Don't multiply the shader range by anything. } else if (standardfovx == backEnd.refdef.fov_x) - { // This is the standard FOV, don't multiply the shader range. + { // This is the standard FOV (or higher), don't multiply the shader range. rangescalefactor = 1.0; } else { // We are using a non-standard FOV. We need to multiply the range of the shader by a scale factor. - rangescalefactor = standardscalex / tan(backEnd.refdef.fov_x * (M_PI/180.0f)); + if (backEnd.refdef.fov_x > 135) + { + rangescalefactor = standardscalex / tan(135.0f * 0.5f * (M_PI/180.0f)); + } + else + { + rangescalefactor = standardscalex / tan(backEnd.refdef.fov_x * 0.5 * (M_PI/180.0f)); + } } // Create a set of four right vectors so that vertical sprites aren't always facing the same way. @@ -147,9 +164,36 @@ static void R_SurfaceSpriteFrameUpdate(void) // Update the wind. - targetspeed = r_windSpeed->value; // Minimum gust delay, in seconds. + // If it is raining, get the windspeed from the rain system rather than the cvar + if (R_IsRaining() || R_IsSnowing()) + { + curWeatherAmount = 1.0; + } + else + { + curWeatherAmount = r_surfaceWeather->value; + } + + if (R_GetWindSpeed(targetspeed)) + { // We successfully got a speed from the rain system. + // Set the windgust to 5, since that looks pretty good. + targetspeed *= 0.3f; + if (targetspeed >= 1.0) + { + curWindGust = 300/targetspeed; + } + else + { + curWindGust = 0; + } + } + else + { // Use the cvar. + targetspeed = r_windSpeed->value; // Minimum gust delay, in seconds. + curWindGust = r_windGust->value; + } - if (targetspeed > 0 && r_windGust->value) + if (targetspeed > 0 && curWindGust) { if (gustLeft > 0) { // We are gusting @@ -159,7 +203,7 @@ static void R_SurfaceSpriteFrameUpdate(void) gustLeft -= (float)(backEnd.refdef.time - lastSSUpdateTime)*WIND_GUST_DECAY; if (gustLeft <= 0) { - nextGustTime = backEnd.refdef.time + (r_windGust->value*1000)*ri.flrand(1.0f,4.0f); + nextGustTime = backEnd.refdef.time + (curWindGust*1000)*ri.flrand(1.0f,4.0f); } } else if (backEnd.refdef.time >= nextGustTime) @@ -1131,16 +1175,15 @@ static void RB_DrawEffectSurfaceSprites( shaderStage_t *stage, shaderCommands_t float alpha, alphapos, thisspritesfadestart, light; byte randomindex2; - float cutdist=stage->ss.fadeMax, cutdist2=cutdist*cutdist; - float fadedist=stage->ss.fadeDist, fadedist2=fadedist*fadedist; + float cutdist=stage->ss.fadeMax*rangescalefactor, cutdist2=cutdist*cutdist; + float fadedist=stage->ss.fadeDist*rangescalefactor, fadedist2=fadedist*fadedist; float fxalpha = stage->ss.fxAlphaEnd - stage->ss.fxAlphaStart; + qboolean fadeinout=qfalse; assert(cutdist2 != fadedist2); float inv_fadediff = 1.0/(cutdist2-fadedist2); - qboolean fadeinout=qfalse; - // The faderange is the fraction amount it takes for these sprites to fade out, assuming an ideal fade range of 250 float faderange = FADE_RANGE/(cutdist-fadedist); if (faderange > 1.0f) @@ -1165,13 +1208,13 @@ static void RB_DrawEffectSurfaceSprites( shaderStage_t *stage, shaderCommands_t if (stage->ss.surfaceSpriteType == SURFSPRITE_WEATHERFX) { // This effect is affected by weather settings. - if (r_surfaceWeather->value < 0.01) + if (curWeatherAmount < 0.01) { // Don't show these effects return; } else { - density = stage->ss.density / r_surfaceWeather->value; + density = stage->ss.density / curWeatherAmount; } } else @@ -1183,7 +1226,7 @@ static void RB_DrawEffectSurfaceSprites( shaderStage_t *stage, shaderCommands_t for (curvert=0; curvertnumVertexes; curvert++) { // Calc alpha at each point - VectorSubtract(backEnd.viewParms.or.origin, input->xyz[curvert], dist); + VectorSubtract(ssViewOrigin, input->xyz[curvert], dist); SSVertAlpha[curvert] = 1.0f - (VectorLengthSquared(dist) - fadedist2) * inv_fadediff; // Note this is the proper equation, but isn't used right now because it would be just a tad slower. @@ -1357,7 +1400,7 @@ void RB_DrawSurfaceSprites( shaderStage_t *stage, shaderCommands_t *input) // // Check fog // - if ( tess.fogNum && tess.shader->fogPass)// && r_drawfog->value) + if ( tess.fogNum && tess.shader->fogPass && r_drawfog->value) { fog = tr.world->fogs + tess.fogNum; SSUsingFog = qtrue; diff --git a/code/renderer/tr_types.h b/code/renderer/tr_types.h index 42ce542..6d4f4cc 100644 --- a/code/renderer/tr_types.h +++ b/code/renderer/tr_types.h @@ -7,7 +7,7 @@ #define MAX_ENTITIES 1023 // can't be increased without changing drawsurf bit packing // renderfx flags -#define RF_MINLIGHT 0x00001 // allways have some light (viewmodel, some items) +#define RF_MORELIGHT 0x00001 // allways have some light (viewmodel, some items) #define RF_THIRD_PERSON 0x00002 // don't draw through eyes, only mirrors (player bodies, chat sprites) #define RF_FIRST_PERSON 0x00004 // only draw through eyes (view weapon, damage blood blob) #define RF_DEPTHHACK 0x00008 // for view weapon Z crunching diff --git a/code/renderer/tr_worldeffects.cpp b/code/renderer/tr_worldeffects.cpp index 08a3124..79d0ebd 100644 --- a/code/renderer/tr_worldeffects.cpp +++ b/code/renderer/tr_worldeffects.cpp @@ -347,11 +347,13 @@ private: SParticle *mRainList; float mFadeAlpha; + bool mIsRaining; public: enum { RAINSYSTEM_WIND_DIRECTION, + RAINSYSTEM_WIND_SPEED, }; public: @@ -360,6 +362,7 @@ public: virtual int GetIntVariable(int which); virtual SParticle *GetParticleVariable(int which); + virtual float GetFloatVariable(int which); virtual float *GetVecVariable(int which); virtual bool Command(const char *command); @@ -368,6 +371,8 @@ public: virtual void Render(void); void Init(void); + + bool IsRaining() { return mIsRaining; } }; @@ -1256,6 +1261,7 @@ private: int mUpdateCount; int mOverallContents; + bool mIsSnowing; const float mVelocityStabilize; const int mUpdateMax; @@ -1274,6 +1280,8 @@ public: virtual void Render(void); void Init(void); + + bool IsSnowing() { return mIsSnowing; } }; CSnowSystem::CSnowSystem(int maxSnowflakes) : @@ -1292,7 +1300,8 @@ CSnowSystem::CSnowSystem(int maxSnowflakes) : mOverallContents(0), mVelocityStabilize(18), - mUpdateMax(10) + mUpdateMax(10), + mIsSnowing(false) { mMinSpread[0] = -600; mMinSpread[1] = -600; @@ -1610,9 +1619,12 @@ void CSnowSystem::Update(float elapseTime) if (!(mOverallContents & CONTENTS_OUTSIDE)) { + mIsSnowing = false; return; } + mIsSnowing = true; + mUpdateCount = (mUpdateCount + 1) % mUpdateMax; x = y = z = 0; @@ -1783,7 +1795,8 @@ CRainSystem::CRainSystem(int maxRain) : mAlpha(0.1f), mWindAngle(1.0f), - mFadeAlpha(0.0f) + mFadeAlpha(0.0f), + mIsRaining(false) { char name[256]; @@ -1883,6 +1896,17 @@ SParticle *CRainSystem::GetParticleVariable(int which) return CWorldEffectsSystem::GetParticleVariable(which); } +float CRainSystem::GetFloatVariable(int which) +{ + switch(which) + { + case CRainSystem::RAINSYSTEM_WIND_SPEED: + return mWindAngle * 75.0; // pat scaled + } + + return 0.0; +} + float *CRainSystem::GetVecVariable(int which) { switch(which) @@ -1977,6 +2001,7 @@ void CRainSystem::Update(float elapseTime) if (originContents & CONTENTS_OUTSIDE && !(originContents & CONTENTS_WATER)) { + mIsRaining = true; if (mFadeAlpha < 1.0) { mFadeAlpha += elapseTime / 2.0; @@ -1988,6 +2013,7 @@ void CRainSystem::Update(float elapseTime) } else { + mIsRaining = false; if (mFadeAlpha > 0.0) { mFadeAlpha -= elapseTime / 2.0; @@ -2304,5 +2330,41 @@ bool R_GetWindVector(vec3_t windVector) return true; } + if (snowSystem) + { + VectorCopy(snowSystem->GetVecVariable(CRainSystem::RAINSYSTEM_WIND_DIRECTION), windVector); + return true; + } + + + return false; +} + +bool R_GetWindSpeed(float &windSpeed) +{ + if (rainSystem) + { + windSpeed = rainSystem->GetFloatVariable(CRainSystem::RAINSYSTEM_WIND_SPEED); + return true; + } + + return false; +} + +bool R_IsRaining() +{ + if (rainSystem) + { + return rainSystem->IsRaining(); + } + return false; +} + +bool R_IsSnowing() +{ + if (snowSystem) + { + return snowSystem->IsSnowing(); + } return false; } diff --git a/code/renderer/tr_worldeffects.h b/code/renderer/tr_worldeffects.h index 59dcf51..9ad6f5f 100644 --- a/code/renderer/tr_worldeffects.h +++ b/code/renderer/tr_worldeffects.h @@ -77,6 +77,7 @@ public: virtual int GetIntVariable(int which) { return 0; } virtual SParticle *GetParticleVariable(int which) { return 0; } + virtual float GetFloatVariable(int which) { return 0.0; } virtual float *GetVecVariable(int which) { return 0; } virtual bool Command(const char *command); @@ -95,5 +96,9 @@ void R_WorldEffectCommand(const char *command); void R_WorldEffect_f(void); bool R_GetWindVector(vec3_t windVector); +bool R_GetWindSpeed(float &windSpeed); + +bool R_IsRaining(); +bool R_IsSnowing(); #endif // __TR_WORLDEFFECTS_H diff --git a/code/renderer/vssver.scc b/code/renderer/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..d795f3c4277116647c10a3d51d6d67bf9928d97f GIT binary patch literal 784 zcmW;KYe-XJ7zgk(b$O}j(lpVTX?R)Y=50_2P20{nJIt^!13}9VMMwyVh~-R;u%#$k z%W&&rb=0Ud-IiIJ+Gc7g2BLk)m@ZH$x|pS97p4C>@3-IkoacSt=Xp+&uYg$1U9HXx zCsj2%zt)n^MuE;&HzbcD`1L)4AgY^X=gE)9NeOmRu^(_dYk5(5g%rU1V6w-2_3Z90 zQV6SHnKM|qgVmC5FbP`<77coONzIv!CWz$UY+L-h2|m9Weif<=$n$XH^IKrgiTVR8 z6B0h&3X5Viv%<)D-uL0e#;-x;;WcV^oc91WG|XKd-_@@6hudJAC?(A}eOMg~x5JtK z{cJCBO1%kw2$K?>k-S-R@+Z((yOyyJ<+y`s^Y?!arPctI8AC`L@d1H=TW46Ns@adK_LZ2uT z;{`v5({J3Zl+GMuu0UW(zz58@hE0)dfPs<)=$A4@H5O-ony_ z@GR`u6K1;P_@d?Ncf#{Cvalue // during savegame. + float timeResidualFraction; // fraction of a msec accumulated int nextFrameTime; // when time > nextFrameTime, process world // this doesn't get used anywhere! -Ste struct cmodel_s *models[MAX_MODELS]; char *configstrings[MAX_CONFIGSTRINGS]; diff --git a/code/server/sv_init.cpp b/code/server/sv_init.cpp index ade378f..5194f5b 100644 --- a/code/server/sv_init.cpp +++ b/code/server/sv_init.cpp @@ -17,6 +17,7 @@ Ghoul2 Insert Start #include "../qcommon/miniheap.h" #endif +void CM_CleanLeafCache(void); CMiniHeap *G2VertSpaceServer = NULL; /* @@ -249,6 +250,8 @@ void SV_SpawnServer( char *server, ForceReload_e eForceReload, qboolean bAllowSc } sv.time = 1000; + G2API_SetTime(sv.time,G2T_SV_TIME); + CM_LoadMap( va("maps/%s.bsp", server), qfalse, &checksum ); // set serverinfo visible name @@ -275,6 +278,7 @@ void SV_SpawnServer( char *server, ForceReload_e eForceReload, qboolean bAllowSc for ( i = 0 ;i < 3 ; i++ ) { ge->RunFrame( sv.time ); sv.time += 100; + G2API_SetTime(sv.time,G2T_SV_TIME); } // create a baseline for more efficient communications @@ -307,6 +311,7 @@ void SV_SpawnServer( char *server, ForceReload_e eForceReload, qboolean bAllowSc // run another frame to allow things to look at all connected clients ge->RunFrame( sv.time ); sv.time += 100; + G2API_SetTime(sv.time,G2T_SV_TIME); // save systeminfo and serverinfo strings @@ -434,6 +439,9 @@ void SV_Shutdown( char *finalmsg ) { } memset( &svs, 0, sizeof( svs ) ); + // Ensure we free any memory used by the leaf cache. + CM_CleanLeafCache(); + Cvar_Set( "sv_running", "0" ); Com_Printf( "---------------------------\n" ); diff --git a/code/server/sv_main.cpp b/code/server/sv_main.cpp index 2583a08..d9e5ecc 100644 --- a/code/server/sv_main.cpp +++ b/code/server/sv_main.cpp @@ -447,7 +447,8 @@ Player movement occurs as a result of packet events, which happen before SV_Frame is called ================== */ -void SV_Frame( int msec ) { +extern cvar_t *cl_newClock; +void SV_Frame( int msec,float fractionMsec ) { int frameMsec; int startTime=0; @@ -483,6 +484,15 @@ void SV_Frame( int msec ) { frameMsec = 1000 / sv_fps->integer ; sv.timeResidual += msec; + sv.timeResidualFraction+=fractionMsec; + if (sv.timeResidualFraction>=1.0f) + { + sv.timeResidualFraction-=1.0f; + if (cl_newClock&&cl_newClock->integer) + { + sv.timeResidual++; + } + } if ( sv.timeResidual < frameMsec ) { return; } @@ -517,6 +527,7 @@ void SV_Frame( int msec ) { while ( sv.timeResidual >= frameMsec ) { sv.timeResidual -= frameMsec; sv.time += frameMsec; + G2API_SetTime(sv.time,G2T_SV_TIME); // let everything in the world think and move ge->RunFrame( sv.time ); diff --git a/code/server/sv_world.cpp b/code/server/sv_world.cpp index 06ac95d..95aa6d5 100644 --- a/code/server/sv_world.cpp +++ b/code/server/sv_world.cpp @@ -71,34 +71,12 @@ typedef struct worldSector_s { svEntity_t *entities; } worldSector_t; -#define AREA_DEPTH 4 -#define AREA_NODES 64 +#define AREA_DEPTH 8 +#define AREA_NODES 1024 worldSector_t sv_worldSectors[AREA_NODES]; int sv_numworldSectors; - -/* -=============== -SV_SectorList_f -=============== -*/ -void SV_SectorList_f( void ) { - int i, c; - worldSector_t *sec; - svEntity_t *ent; - - for ( i = 0 ; i < AREA_NODES ; i++ ) { - sec = &sv_worldSectors[i]; - - c = 0; - for ( ent = sec->entities ; ent ; ent = ent->nextEntityInWorldSector ) { - c++; - } - Com_Printf( "sector %i: %i entities\n", i, c ); - } -} - /* =============== SV_CreateworldSector @@ -461,7 +439,116 @@ int SV_AreaEntities( const vec3_t mins, const vec3_t maxs, gentity_t **list, int return ap.count; } +/* +=============== +SV_SectorList_f +=============== +*/ +#if 1 +void SV_SectorList_f( void ) { + int i, c; + worldSector_t *sec; + svEntity_t *ent; + + for ( i = 0 ; i < AREA_NODES ; i++ ) { + sec = &sv_worldSectors[i]; + + c = 0; + for ( ent = sec->entities ; ent ; ent = ent->nextEntityInWorldSector ) { + c++; + } + Com_Printf( "sector %i: %i entities\n", i, c ); + } +} + +#else + +#pragma warning (push, 3) //go back down to 3 for the stl include +#include +#include +#pragma warning (pop) +using namespace std; + +class CBBox +{ +public: + float mMins[3]; + float mMaxs[3]; + + CBBox(vec3_t mins,vec3_t maxs) + { + VectorCopy(mins,mMins); + VectorCopy(maxs,mMaxs); + } +}; + +static multimap > > entStats; + +void SV_AreaEntitiesTree( worldSector_t *node, areaParms_t *ap, int level ) +{ + svEntity_t *check, *next; + gentity_t *gcheck; + int count; + list bblist; + + count = 0; + + for ( check = node->entities ; check ; check = next ) + { + next = check->nextEntityInWorldSector; + + gcheck = SV_GEntityForSvEntity( check ); + + CBBox bBox(gcheck->absmin,gcheck->absmax); + bblist.push_back(bBox); + count++; + } + + entStats.insert(pair > >(level,pair >(count,bblist))); + if (node->axis == -1) + { + return; // terminal node + } + + // recurse down both sides + SV_AreaEntitiesTree ( node->children[0], ap, level+1 ); + SV_AreaEntitiesTree ( node->children[1], ap, level+1 ); +} + +void SV_SectorList_f( void ) +{ + areaParms_t ap; + +// ap.mins = mins; +// ap.maxs = maxs; +// ap.list = list; +// ap.count = 0; +// ap.maxcount = maxcount; + + entStats.clear(); + SV_AreaEntitiesTree(sv_worldSectors,&ap,0); + char mess[1000]; + multimap > >::iterator j; + for(j=entStats.begin();j!=entStats.end();j++) + { + sprintf(mess,"**************************************************\n"); + Sleep(5); + OutputDebugString(mess); + sprintf(mess,"level=%i, count=%i\n",(*j).first,(*j).second.first); + Sleep(5); + OutputDebugString(mess); + list::iterator k; + for(k=(*j).second.second.begin();k!=(*j).second.second.end();k++) + { + sprintf(mess,"mins=%f %f %f, maxs=%f %f %f\n", + (*k).mMins[0],(*k).mMins[1],(*k).mMins[2],(*k).mMaxs[0],(*k).mMaxs[1],(*k).mMaxs[2]); + OutputDebugString(mess); + } + } + +} +#endif //=========================================================================== diff --git a/code/server/vssver.scc b/code/server/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..06cdccb1b08ffa2170ced2c2f072d1be2c88e690 GIT binary patch literal 208 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

9q^0& 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�v84zg~zu&kQ3}5oQPSR5L^;$39b(wiWOb}N$(1M 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 z z%19C9q86IoKhS;3vQFCEPYx4!;$bUO0q*8(Rv6cK%4l_p)}yeT!ycr@k_mCmf%4g1yq9d)ad*MSoLB5 z=zP2(7J9LQC`!LZzNZXSSyiO?n`(|>P&=Y=Y9~_|UBGy9zbH{jBTW5#a)&%;V8&2# zp2KjavU>I;EOOB^xH&jmX;q7;AL=MDx=k?q4QSy}N(IRFiZ@N?Fz??1aOR@MM<_GO zCKDs1Uag|=0`*F?d_`7EwWqc8NP5!*-|4O2L({I#cUq(lm~KfL5m7t7!DV)oKSN$! z0-;0NRU(H&On4OIvd$V8v8{uT6}oL9DK&v4gBWXGf2Zggl*Lx+DLq!9whm4@h!C`1 zG+)8o?#yWNk3Ngyg9M(CKUrO$1HwxqnJ);V3eV$1xr#J4%Ll({D4NBV-nKu9`4ZK} z=Pys@VyXF8gyClFBt@tQ=*7p5WW7i9k^uqZkHt4AsEwp|A#`Y4+5vKse_1%^dAh{5 zk*)_7(LC-XRK8*qt9FNSRS#6^Mg!-yqal*T?dynE$kasSxT-PnX3bz)%@xx@6Uou=2B;k@{ICqgP`aF>7%)dz>- z>oYvbLVTMIAEord5%L!DKvv^$+$1?}Y*>2y*vC#FYQg%b4F9l7nnKvViWmD}$Xgl> z`j2z2v6T5CYH{O?sG*!{X90s8XT~$|Ii<&g6Fr+Zpnc@Sf&%#$VcnyDYtcVPymBII zq!6Y_Fn%|)X$~(Sj8KrzNCe`-8=i>pj^Jbh*6P#|lYg5No{9!-om*0CxkJ;%+%_-U z$wnF!B?VvBmDs7Q-{wT37f1V{Dj(i6mo`v0KE_RLb67Y4sLz4VIl~27P><ct1as3MncQLMMj~kg*;jg@R#n980v#|jjjXA#1DGUuA9|jH7ifgNN>dT2T z#TrxTSMesFzRpeHh%Y3Yq3*^nNsfKQ!NQlBUPQeibi%8>fV)!M0m(rJ5$i5t>+a&j z+V?AD#}_-{qYP?cM8{EZpyMb;$H`ncb!sa$RGJ{Wp%^P5^~OD1Mf3m(;%qCWt@IOQ z`a>n{H{eWB2F@w%NR1DYp9PbI-nUo+fW3%a1P8zV$gKNvEg7yLaR+F zKrp@=!7w_$S3KJTtvWyoT^41bdh-~VjFHM}sP2qVMC@z)_GN0$^N)eU;x)^$9+I<> zFkpA;KXkJsBvSa;s?YQ(kO*Y&6F2#Rz-ydrlHTfJlh{1q(Jihu zc-A9sVoTAC#SauK?2g~QTgf4$$VcxB`wS$2C%o0i$yQk zA57!W=eYGb9+LaOKK8lQfrp&f@TOnqJpH9Nz?}Sb-C>->eGATTBAZd4>DFg@n1cw! zT!E!Ki%`s~6_11i(Vafd1pcGjXkAb7@^cO#I6W&#T+*p50i3`|T~jWiMGc#@BHuDj zLFn-Z@fJGULnUJG&^>)}i5j+_khu2LhR3yB4Wpy7Sr_&8BakUFRq6oT8z2$FQ&;yJpF82ig7Zv#a;eLz+6RgOH&A;z*RGtN;y-J)5fPsD4* z=KrO*(ldZ|KDvcCdKSX``9?74F#IJzY5W44uhI{D`J#*ZE;i4mr8>8_q z!VE47%<-s_XDmlZ4!A6NrEx$k!X+zPeex+tLv>?WS{NI)_6O| zgDTlCu17m;?Ow(k)FThaz)zCT+j$5Ves5EuSw9)dp&`Zo3na63PJQiO_&B_sSeTXA z*cb&LcBsQ?rvZg%(>Qks6#(I)JRJwK^K|!6Z)X=(&0kT5^DD*V)VY!0RpVB_$8yD> zSfqen)zK)$(JNy+L>)vi^)eoL0RInLNNT2DqmFvxy-`#KUr)d;Oe$AUx+$%GIh2vrP3F z%TO-IB8eYw=Y^=e^%|5k2_CawmzNrhbh3^Pphu59#_v0EudRIynEoGFcTdww5Z3xW z)w|Zvutgr@jQJqrkEu8%(nNY6%CeSUvB-nkY7gGM6VHhVX%-S3WAsj!f}&`gm=)0{ ziO3c_qry%cY3ssCQ;2QvSNCFLb>yl3>Wh8Yq!Q^M>8Mpb`%56% z+eP*aqGZCH-V{$LheU_B>j)8RnhZPN!K0bgNhgCFdqq^?_}JR}QCkPpe*VIPtQt_< z&%Fj-?YBtN)^?zkM{s9uzW|olH9kkn{d&uTH&+zXT)j2i!fpaTpu zsC}`v_Ff4QQIUH=^AmphHuz>9go|5?Jm^1#6T9w!QaNZQ$DUtnil39Yt7n z+6XGgWCHH=S}&fPHbC|PeIJQUB_@a41tAXp)*}!^sRPg(vDxZ(bPHX-7>|L_kDbbm z%ppj%fRn0nHTkKq#e_Z%{X-|rIIhTq)=Chp2yuW=0~1Ii=muu z{Hln%r7QN~C3pffFDaSZGl3FqYy@3cLHVQjNa4G7qvf?!>QQ(hY->enm;k2PMTRsUs^%UDx_R_Tz1>zsi2RA>PT4 z*$@ll@IE{Q@JT)ZQ}fNdsPPAc%was)kv4nllX$(!Sj7(>#7=%rNGLqM4bj3mtxxgX zYegP)J z5`6J1t4`x6%q!$fL=FNQF37yQoxl4~`rTad?)T6|$=-S|NWvJ+jW#!>I7P~kOp05i z9EF4etj148JHu!$FtgqgSs-Pzg93&NGcdfxVenfp@Gy)3p&~t5(!b@`4ilI(p;&F6c>;5qt&ALrL^vH&WPS zDrOr)zwxriS??TRZ4E#zqBB4JV)*Ngk|5!l+;M-3!|R&0;&1$JKjsFu7s# zPbdk-1?2>Z`_W2{Jf*PJ&6Ag3!jr`i)3>{DsD2XTgPsxZ(;UJHj2%(WZ!$jRo_dmh zgGGlq?&`&Yxb8e=qDC2MTq!K-!R66`>*0|i{Q^T$Z(Iv>d~Kyf`~n?O#sg9iZpmkQ zIQ($i0T8*w%MxXSuo^o&8|`qC5b--^=+2trX_y5o!*4@FMEfW}@nTSfC}bT@@uKWd z9f6=VL{mq(yGC6e{#03pFqI&=e$>TB;b#K}+LT3be?v|s)k31 zL7E8kr#Z-qz?K^n4$)CQarNeEYuo)LtyYpVw?8p-l?T zPy14x^toJovcc*NUL%*lc=!l?Se2`%K0TFw?U3jbHE40pu;yo|9b=r;aV3W@8l%Ua zrzxP%$k_vplfrni8b!a27JNccIO4_womgqnrwC2U*$WmMhqp4VWqOUGPJK#pq*nD5 z4ZM>32wioTK9#QU0*}UNKxo#dRguJyaHw9bGupZo=t&N<(gHl~A*8VaDphZcFQtL; za52!j8YA3f!DqpQ^<&-w;#&d_WGMAJSz^$RP$C3cvC+TheJc!@wN*o)t$PytQ1 z&E78ZBCw~5X}SRe-Wi@smV(lbKrade44+hf5GtSslqDL@?93N>3=hIE{u@pNpoGtF zS$VW@ZuMvq7}4G8Kux6Pno`EyRR0Kduk}gvG-^~$qCUdU8QVgD_GbIvf@%L7i)8$R zq>rbqZVbL2d5_#~5%;6iL*$SQL!znaw~qNeyp}M`#0ChIiyD6=(`k#Z7fFbhF!zds z{IOX)v(n7f!|)N9{0N;MY#Br;HioQ+IS@a%NXk^Ut<4Sr%jF!y875Tcs8j*va{C0a zv%*AS{+K?Jt6Az!6HH3irZ@#66dy~5oDoGJ0>Q#mTmwq<+VGt*jI)oUj0TIKf z4XjoR3|i3=JrDNAJ>+ha^fB8ZZj6T$JaFDe(H5D>HrU(PlzJ_^O-WC`K@b=j-X&}v zw*gsin^fAvEk~#^M-L)uU_5FC*4gg)SW!QS`Oatj1hr?W9Kpfo-Q19tN9m=TGDrpZ z?e!~gWjp>8BA>`x}=yyD_#gv+a1u~gBD8J=Ue`L24 zp0vmolUOFONPw3_60QhifXp>6#C%E6i(*(K>{l+O0;v&?qdIm_Z#e`-VQi>n3%J0n zpdtPC`!Lw>_Ng$anl;NE{UeEPV)(~UU2kS^0;r750}zea+!S#yj2g!PwuT_92#!g4 z6!(KpNkKddP}JCZ2(nICENr0l2p*c*WKwfeud;)!p5K$&`zov>Uu%)LN61#0xNDt; z>!SxD>rmv;w{XSsB;Jg+*;4zVwX%T>9r$~R=twCf`ieF~j08YiX{zw|3cU?$>FRLs zU=a}{#Df9nBlW?2>j2())9kV_tYrx&8*%Q1{}chC9md832rsC(Qwc`eD8^73;P4gW z3Rap1Y0Cjd?SW_tl`G32HKs$JRYPP2?c81rm?DezwantCWizeSPlqQPQVYV6q!tx- zs&rH+MF9D+%S#kSSE;aFy|;mHvO52V z@3bimCD4Ec3!)2Bv|7OQJ!$$%Nhy;;Xd%T3)Y=BxQreo{A>aU014@XUIN0Vkew!8D zm^#O%GBy>9#g-REP^Qe+s!Z=1+*-vFw36q0opax5T6DktpU?CEJpbqUHE{L5&igsn zdB4tet}{2G7%zV06WR1EyRbk|$}VP`1nXkTuKbQjeg`5}*G)y{X2OB*#4u#D2$Vq+ zF>0y8A!b5XU!k&e4y@w9@<*{Vt3VG~Qs%cMeZ zy-?_$l@#D2G=WjmqNw`w$LM3X{De&4fua$-f%us4RoYT%lM+3<*_P-{?4c{HEESqT zQ13`(DWX5iJjVGoWJjsPPhw3E2mhe{oCWS6iHlO-Xov)KASf39nSzr$QFW7qQq{Q;g21>>obhOb&_}&JeG>iN&c2jhJX+;p?}i z%g0MvY~y@;a4?)fauv8SzshHY=8Vgq(2Z`M<`ZO9TUWA#UfPx}0VxofzE@^U(ErToz{XjFBV{M~dRemN9R+uz5?)LqElu4)wP&PPV2Mnk;uRmAV++ z&G%hRe2((q>%Ot%KNv-STh;Sh(_Y#}hneW%G+vOf6UKr%ep!yzhm4+!BLfsv_GB*7 zihsx2f+dFsGRC3k*@~PVY7k9+GcN5@HV|YcN;`&1>x=QGZ3{*yEdz?HNxR9RZk@b* zWo9kR)|w_XlEu=C*a>^U#sg8y`Ic-K>@fi{du`1VFfn_p^fP8PNFZhOAbD&wU~M_Z zx}{j;y+DP<@R&};U+Ceq6LV8PTV<-yx@O|*h8 zHQt;2k)E!2wjyvIR(KX&G%yYu&R<5)#d$d`;jrv|6&y88N*Z)oHuT|`DjVcNpF{$q z!9#G~gwgSumYjW<^aZr8P2X!HG#EvHTh%Y^MYb`#slDjLjM78)qwY}uNNo?TDB`fy zt_BjcLVP0a8N& z_VdT~I&cn2%5*$nG6pWZL_0m_Y|6vZGOP3w<5MRdw6ixp=}aftV7ky{ak5z{HvT7X4s?$lrsV`nsuR-9X6@e z&NeFJZBn!1%Fh91AM$4~P8Od{vM9c7;ux#+Cd+_kWrwt4Eh+&D!6H4~1FRlwtQoLP zIC!O2>18%xX&LV@u1*F1B`49=cIMIfmb_0^QXCAgi~R$3@(5y;?j0VTD zp_P&b2I(`I{h>t9iKa|vl*y$L*MPsv zE579}b?>2_F_5@}=&dbyB`U;kWNJ^-n2qGXn=`OPm5%}axWU(JgUA9c$d};KFI>^U z_o0D9!wjjJ9Sg}(Y}^hoVr#;t&p{%w^3e#v%Qtp-`B;6`35>XCkR>d$Bq(_eG4vaF z#ew+USUfvvr>YK~^uMZ{)++Sa&*=f?9;eT5STck3`goZ88?sp=u!v~@^p2$@h%*gM zu(53>1`yx1Y`;`(u0KHB%S2c8pX$ZnIU@sF^Au|VFg2RMsWwolmCHQ zAP!7D-It(Od)RRGa?f8UhVFt;Bf#S=81Mv}Gnz#JJ`F$pZ(@?;T~h zo?Lb^T8#5(kWQ!}MD|kpU(5@g){5f}fX+dvYeUW9(?;GPxjl9neHVhmwgd<%?t&OM z(`^l}n0w(>&JR-wCPzH^ml$P05j2PhsCqzEbBq;DF26X+DlNX5xa-3T%-cWCs;HQY zr4n{#rX7?gg*&t?B2q2uAFnWXo&1<2=tJSH(th6E!3X2!{*aliU*gKapNe{R9~L|> zJcLP}@x(YYZ1Ct3vw-ib(AlN$>!F_h?z_M&d|y$xMWMlv-yq>fk#l@sg#xW=dk(2F z<0|jGpu&4Ya{oT27l*BZTF%kC3^tjGj{}WsNJp3(B-xS>4;NZvq6GQ0sl{*Z}FU(>JCHia4#XCuMteH`Og)EV0u;oY2G9ATcl%B9^4~Ro+Fx z*5{aS<|u1{I3*Jo$I4nx-edfN&M`(_IuJ&Nuz|yRL|a4Uw@M!&L&Tt<=?iUu4j3rc zv|!gD>so6~G*>+C#tu_`~Nw7 zMN0lL2zDzJ3@MJH$nc{aLUfEWfOQ2>AU=sPpp3sjC9%1Ef(5S3haGT9q~d+ zk=j`$wC6BbWkY%p0@6F|B&5z>VAY^jh6NfDLQacH3lg0~t>Aq}-gq!dU5E79x){yn z9p*MO8V+y;onr$fYU5^6-Q3YeTe6q!g$=iOH<-owJqGB>3tV zES=P&NGZ)%LXyJ7bF-m}NVgi>$U>S0Rtg`h#7`lxEv;C&0)rX?TpL<4mL`N&iE$K-H$LY)fBMxhsC2Qf4Q zVg5g0IiOY*^8e&_`A6#vV&V5>Cd$v{yHyQ_f-bzXbQ!v(;gZE!vDL0j&7g#d9hkJiB5@x7IglyekIErK6D3MF_7YfD_NGa%nQBC`L8Z zyyikDjknGjY*52V#7U%Ng=UW{WM4G-P}S39q4R7CKu)$?x{hZ89HXMmMJC{xt$l%Gs*%rktzR%4g< zAe$svlN)E1ZsfxfZ`rfh35whrt(#eEoXo}?b!)L|8~MJRk3*4N(=p5=eff8&l(=--Ba>c4SM{cqg=P5dGHH)6N= zUG(3>+=i?@l=@@kd;Pz0k7RZG-Qo9qxBC$KKg;}GPXE{c@6~Vkczh%@9*6O>aRX^6 zKl>0nqQIS|YgWyW-+a2>r@GA2IRQ_`V3&tCBRIojkiq>eVpgFQe5n6nTP63iDBq}+ zD(ahOGD zoW_JQ1)>I%u<#yBp1EdP>Bk{Yyt8-ESO6W4Se;-)P@*$mTBr4OMjkQ;_-la|m~Ief zsqd8M!$`LM#PbBzf7=kXh2-pS?0Z_uf${W4CC}P{Z2(0y2Rvhiv!R=(zY+w8K zQQM*wH_t`wy6L_*FT90_laAp6_^~e@@g4DWE2(UyR1gNXJT~CpMD|5ql(SU9vILy4c;X@CTP7J&1h2rwHWwil_k%~O%c9A(W%=S0k2vDsb}xouvgV)C^w zTtqpXae4kc|BUqfE0jx0a>o~sDB)P$VS0zG33iLSkbV&Qqko#kB}Fhr(2aTZg#tAe zC;ZMZgcxb?1Ea+oaR39m&_SyMY#^<5muhw+g6bfh`zsf5;iC5~)A*XSo=ZVd4+Vz_ z;*{33bw2G=xV=w0A3PhMB1JC2B~NMmr>gJA3`%Vb>aggMg=!y^h++-2K}}IRbv~$g zDb<=5YoOqP+HuFrw!##{vOgn5`$(1vnFObQI*u`YJ4~N3UDe}5O0-; zKZlrUtd^b!35e?6;UQRI(~JX0DD}q$E+yt8cPApTboLR7B*!ckKSnPY*b4ZgzqTmi)OAmcLqlH=Y_4gzl z0q#5O`v8Yy`RZUdwJ>nC{QZkcyG|S>0&K#3L}x(ms#Vq_J?< zVWbcC+<-QDfb2|B0{%KDnxfS7Wj^2`$X-clBR4GNm@Q`RU{4>l@f@_<{TaQy>~nLHTZ05=C)1*w+%0ZUBn}Wrs&wM zbe3f1nNV5C_Qn>>Rl#WS+N3wP`#qnkw;%T%@^qH1BBpOt;x$xk%Dz8cA%H(AgiUMHz$=FJcs%PFMYsr^q|VR%q`_2&c{vC= z-hvYfwBI;XJ=G_*D;nQ1wwI^2hnS1oE!qmOYmLz&sqE;Y;Sg;elMUByD1C|g4Mz2X zVa4@lZ9nZhf(L3)a=es-zvw33iD~;tvf6;ZdlK>I&2*W| z?c?jDs;g+x*o}E<&&+g+_8mgcBLyi3PSR2|I%zAI{8ACdCx1Rd&uXI#;2AJ|u_xy? zL@Vqe3usEKh8L*|X-Lh8-;Y-i{c)Z^q!WBxDUB~&+1NlEbJ{2}4g+R5^M%;04W#yP4cq|yNgQtk)AnIkK^d8zOvzegS_@C!CcqqBNwi1TXG1P^kbdM%N^r$;a7PQGD^%w;@Kcd3;%Lou*tW zVwuMj&6JSk6yB&iQ1eUg`{F9iFBc`V~+D?yE0-F8eDEC6G z9vA)LG=o~WKSrxZt{JDD%~I&qE$5b?r_&DGhW$GxWh#34c43<(um$&|50f!=%a_Qn zZ&QFe#EJlWE%Ck&VddTw&~KcGzw7UcjXh`yY9(^XJFADP{$rT z;<*^@JLD}n9DDCB1chFi9iQxs>9RaWDRf!d`R646oaP@~h(wQl+q>dO&us`pNq7Q! zak3{c9qg_^5)|PDW{KB&0tRtLPcCKXctlSI`?`B(v#+Y>I`&ofT*JPao=NoG6u8lu z(8@TNZ0!Ml3XWo9TQ4Hv3uoNN$=pNtXniFo*Bp(Zlw0R&PLk~#u1A{hoWIGW4_o_mxOPqLO+@bd(orJ}yHAYGSw0{OJkQ^QQ(p0axsnAHl{C z`CzTvnBk0duUDl(Zp5OEaKGyIFO(~&%W?$1utAY9B*gBw1p4O|sNCY!u?I^6t$4Wu z0)flrHH$@yYG&0N=9qVxSf;k*{a}ju0s_+w} zc7B%_>7x}V$N+A25NlR+Km_Kwirqp_3!`&t+VmJBVehk?gLJp$9n+=&h)PMv{>TkK zcr0=iBoj$)`wkePcjCNN+6d7TjM`+m9F`u-I}uP`zbUZsRL=sKS(5khBr!InaD{V8 z{aqR{PKo>lw8#~kMtlKej-M&FZV2{##!7yMPT@fo zznvvDjVI+RIosc%7o%2rp&tyQXficP!y6t$MO_H}9d0qj{c41N7N|!SU6z;8a>*Hs zWafNDr={NjH4+GfvcIfeyv=f(Ej;Z8G(2elOETosMEO|Sy?K^Icz39 z5)cWS8>^ak7H`QDttC%*m+p%_xHM4e`#f)!u=?-sQi-F`L}&Tq`a3w9 zPoVl?(YCw>Wp&&8w!KYGj)2Y6*TqW1^^9?LFegK3$AZJ z#_jq$G~$*09qKUu25AL%^K3c-X}zt%%@$Nf>mnK{yi}L(w3hTz_s19kafxcIrrEf# z`KH#Avx{w3xGt7%=21YODi!mn^QeD3OTIklJSWj)h5R7d*ey=%LBg{7Au0(@Ju6}T z+YffeRCe!-`4Qj@ARgufKowxhhdX18fEF2^#P^ercE;oY3W4v&_dfZ%7x=4yZopq) zciq{YF*gCcAMcD2bShnhZtxdLs9G1L*o=zSXf(RfWQ-Z3)#=9S#_4pVB@!wb)y3X9 z>h%+R5!=Bg*rxGeGExIwW&r2cC5 zlFcJz^Af8l4Xz&HngVUxv5i5^X*;;GXnEhRMNy?KaOsM=4Q(IwPA_KQBzJj2+_tNi z!^)ZG$w@?#0xoT(>w$nbXHF*@#}!O23mFMnHGfv~9Od9?%0VH|LCs;ZX(yXxZUd># zXbB5PECDHJc=HGw0PwNu#!AtcXV5mJYm77yP~&LV_>3fa;;3MT=*#nG9gT3t-+J>r~(|m*WND68cFuX z!>6}!i8C5_oVRe9a?M=J7!o!JRHA#DY-(|Wr&9}YDWtsSs5bJ5`Gl(nlG{lyDu=Hf zHIzm6P9G9#>;6-y<Bv+k!^gs=Kl$&(o7}Q%q4*7TVnc`j{>sIwER3zsO zz8&>2LZ)Ia#)z-1Ve`cNHfuXr>Li5}cnt^6NE4gXnNQK7rL6rXm_8N8;2UjPvJJjL zJ2+@mBK_s5!PcqIONiPRiS9Yo6C96|%ivfPGB{cs3%|isNgTuK70>g|0ZliaP@-w0 zSmA{y7JP%ax-!SoR^FPum7;}yJ?Ff-c*%=Z5pu>h%rSN2rRUfQq#D>UHomCI;~1Ma zldHS;W2^TK7DNaFFWB-E7K9^dy2nwul1?yQBM8d0n(rt{ zC>d(}`L42z@nnKg)#%^K&NB}=?gjgjGI9lbFH$8aby_DPq zg|P=!7!7dHQVA700S8_K54gmu@IK%jAp2iO%yZ?voWBLAd7%|Dvz&6+JV>*AeY_nXp(fdpLJ9W&{eD?{Re{O###D@{Y>^|Z4 zXMjmXhS_Wp)N(?|2LYzZmXo>V$H5mc`DvAKk?s@u1w??YL5x5(kAMmotMxQ<>ZL!R z;yhpzpFDt^3R_>>cr|*uKJ_SX2HqwuX{sg#%iiLtUMtgBPW|Lr;%TP_ahri_k5!wl z4m^i0x~RWU>v3M^`(h~9`)lxu(eTJooMe-hU}*=Vr$cXM!PXu1X~uIHYK2X|{nf7A^ak+B2yYBc!~!FZ&qWdLkEbf5!`gQmYYVgLo{4L(6)T7pMi3`+!l}E@Hfe4kbScI z^5Q68Cl1p;rM%SfmseS@pu_cnQxt-ADU)w3h4*Uq(1&K8BYTJ;9My}?)4Et=KD2I( zcRZNRF9LOa$%kmxRKe#WkAicYv>WB$+Ro}l9LspiKAm?WxniOOmz5%U&HZ}A}ys^3t|7zEYIL5B$)^ViXQn*=77{F0hU!$M0j;t`w=cUh1Z zn;;3LZix3!G`SmJEmrN!trcNWR{**N~Ihb$hz~WZ*&*&yU4Lm$(u{S3hiB#+{;x9W2 z!sruMhRFy*d>FLov@d=shOu~oxY}rH5%ggf+~T4BC0^}~aOYktT7slXJ8Ju+ZMyvJ zlZs;Zf7O5Q4X7_Q1fRIeHQVCzi`-x7#nD?{6Gywh8tr^}%WKZah5j-GT-2E#6#Vmx zD5}(Fsmiubg15xj{jY8L1;ryrGYWAdg|NgZi1RgOq3#rfd@`zvQiJYX414dfh$zu0 zN-(m>-^c9XkyeQDL(73e>w^(&EK2>%ox9u_U1Y&Wyhw3QzwivN3rZ(})hRq(?5r#|!jtpq9>#-lvQ%JO{Q--0SwIRC}Ug7+DmF_e`YWJNS$=$j3X zlVkV4)$iey8pVsoXy}hc(fjY_4v|GcRZvybQ^~poMJ|8@J(FSNrHDb+HuPPR`lO zKhN+FX>1iIV;G)tU_9!{f5ibcrY*nrzyvZy9Z=)bfdicv5>ab^$wx|GJpR}VMr35q zO!{NMpT{46yn@bt_|?+7$IQH_$b6Qv{sVj0B&l$=#?VpXyC z{1f?ZE&0@F`Bc1Ndx2_8yLfHv{_(N<+s!XJbnfk}T4MJXsOFeoZ0_|OiohJ>e3Ol0 z?rr3#$~zgF#5kW}z3JqJ&SD_-U4 zjKpfGReO#3__}dP$9-Sp&ZGQrB?8ajlF@iboo3z9((e%&BEtGbO>gGXk`}f>Zp(VD z4TH)GkEF&a@j|uxg8}mqJU?HBiGdlvaUWH&>q2p8q(O078y)jPN!7Y5eWTzR=l2N% zbgNWtjv^n;V|}<|B>QnfdlsR%<;RxQrgZ95uB#;yxa<;0X_@pphEj#FR^Y#}b@QBZ z=>m47JlAo^d7Mqz#rt~8r9z%}cK?i>ozVNTY;N~D116`Aqz-$m)F3RHes|chjaB+N zY{3f%Ik?5mU6%8dI2|#9OQkhibg>>13T*waUhugTyJr3N=y};Vt}W_}99!7hN^aXC z3w<3)hjOrn5;j6}I@v+t$rSp zeZ(%O`z}KVgYmjd;*!NwkC)Y@i@UM9w3U-H)-!1OV12}wOX+<7hK?4;#$Q}sU@JVQ z{A?`9hTZWmdyz?_>JD)!iJje{0>{)M5!3^tgA3(;-(UA4q*`_w^y7c z!}Z5Z+Lay5a={)0sfxs4rOt4NW0YSQi8;PblQ=sV(Dp~G8JusGFo>g`jXo;ow;sPjDDQ|`TBk9z=I?F%1Ao^oi- zOSP_O$0)N!vre@z^|ha_y!9yE)T8(>kDf*TV(M#t%XdeAgrdJ-*9}HKh9V!8WYJx< zG%m@axoWBQ!dp03cuQbO*`#$;JJ|8!?F7w%Ko^E14UQk%HAOkMfgFxL&&4Yo*Lp4{ zV4#@;uU!HpECj!iDV*_XzZ^gabdAK8i_gK{F|p<1F??NPB?xT5Gi|B;WB7@TfKvl( zuci6j7>?RC9a26+v>k1`krLIkM&`z7!g;3{U^6&(!X_CI16qae3@p9evW>Ed+lmvg z6CH!`Wi<>`uqcu%>63vVnoy2NvBxkQgEAaa_3 zD$1ps!yKceHq03qi`kGakJ3q9cuho{g5`V)%N6wkEe^!oAFxp#(nLiV%}I~II4>K+ znHevwf-iwwT;!v8C{kii4i5ia>-17Rx-;UulBe3bzyv8ZHSUW}!s|YxWCjOq5+JF? zd7{K#iRNR>G;lle`37zh@n3Q z?@Q|W^Ku3(Si?3%J^;?JU;?wzE17D$buSZNH{^$5Ii8$?YeND5_ zn?lYhxHB@TOx9*d70Gl5v+cZ1x`oGqtv}}&H1EO|f36(yONbLs6JgMy#XDl{kn#|{ zJBPT}f*95FLo|*Kb{C9R%@Fys;fM#a1=!aL{TTSm>E!Ah#tN9mx$y=00hRmpp!*{?1`SVlqPyENi0XkZKcH|7ZNB`(bo;72THQ?{6%BcO|jr8xr5 zu0>N01rz5=v4dF{J1h(HSQhAMW5IuImnDFSpXDWhcvxNnN?rmoSyeB%;Ur$smVipR zaB{jOZfln_igBJ$1^Hr(yQE*$@+$nOL3*7y3OItoO%DMUve$q&WzljM=ysCml?OVy z>2>O*YOFZA1lpQQw=)!&O#R*PhQ&q6SsZKy76+ZZSO}0T*u<&wOd4>`@N~}M3ktl7 zjbkk|A)E9uX8^D+*;9^4aD9aq!(d{}EN1~8#BNUs)}#dcLwGPf%VLBxicZCG&J+m| zgyWiW_i>d?x|iGzYqobJ6mR<#O`#BR;kuo09v-{pFbaU;;{5fmz#wZAv`J^#Ru4BP zp}*8=kk%v37NZBwTqBiDdXuk?kvp4oU3f-*MsZ-e40c+AxD+k@f(?*#IV;({DLBQM zgpqIsDjyl5o;TGd$$|nbs<(R>P59`vh;vYu@w~{sSB540`*7dWaBho}Y?MSJM!SE+ z)}XCLbD%YX`=Zqe-|bA0&Yxk)U|Cf+AvGv{192PFL>nzN%w3yvx!{q?Ila||;=RvZ zWlM3QO-ko6GXL|;fsL>F$8@QmXDd#O26YppxUh_w*{*gIyDX+Kz|B#Vl&v|pl`m9j z+mk{Q19kIp)XjDN$yl4#_4~E-`O+UnpYy?qdbA7lH!rRt`md7S3{YcaYx=)26vXF^ zk!}La#YJU#heshsp;$qrw|X!= z`>^y_a&l@Dl+;H1)NCP+pfd-9-Z(U92L{-xH+h9X`x40|vmFeVbQMXxD4TUuPO~r9 zw^Hr?XaMhQ`i@~IlyuzFqc(#T7VCK!C3k-q>HbOuZ9%c#aX!X~^j_&@>`MPjz6>6p za~~JqHBY2nl33g7z|1ShZ}(+E!}C7|=()GQBblUkJ$^M_sE=#Tmwgl>YHU@B$LakZ zkJ`+HaGi&}EJ9z5F9SP8-+bEDC7qD72Td<8@?*PY)L1(n-PP~xk>+`&*Eok{Fk+{I`Z|&b0k4{Dh zoaj*g@i>G3v5ZF@p!jHhEo&nVG!A$61;O2I`IwS0F<$h#=*adx!g(gte*^g^9(c`ZJ|nCVhZugy%O( zI)`B#S>*I$wPa%)b*!17B4bUzHn^X%7@SC~dW>UH(qCB!?>&qZ_fR>!_fWjU_S_Ss zOfUv`|767QFJ~L=A3^>f^y$Bc#we9I(Ne#04v%4aw(C!gCOA0tl|s{o|n;_8H6)0 z6k+KBEqavioYZrIT@irzro62qi3A+(vE3nLV<1%-gmfNCL^7r}=^WY`iA|90Y1sNo zw7$P5fd#brj@IYTV=Dm`B=H_t1Nq`{XxnAe5nh`)&yE<)XE4xrSX*1kFEj_9WVeC& zJSu9E-rxH6U2pp1r9{fPG0Hhcnh1<t_#O#qKZdKsuMz{%!~MmKf_Y*HML1Z)twoy&6}9sJ^2A2dy1 zX+;%_e(Ku<-FC5Cp24aCblc8m(*8pc&`b%N{zJv$)!Tnsd>E|HuVTari?&fnI0&8h zkY!9ht$=zLL)CcNGn@xAlecCI&ypt)g>}?aX)4Pxo4Td|g$jHcu6ha(mFLph*exW? z8q!w4-DbcF+E>BI+0MGoUMyZnj0BbBHpMvATD3nS;cHwL+QyuHUxR}Z*@3DtpNaLn zjVx}D&Ylvx(BAwp)V8CMf2= z-n2sN95d)V32hWhuu9%^$R1}22w~cEKK5P{h~%Fjmp|XB(MIsXCautVS3n*sz;}G| zjV4rVJRQKbLK4)8|L45UUa#{!E?!CL=%Lu3m^&c`4jM``nE4!;-z4)yX6_|39Vy{- z3RgfNX1xY0aW--~uY^Dso9Adp$e%UyIl(Z42=NF8`2&nS?2tLanB&qh06?9inD|$WVUU`pbquV02CSFZC!K6m zxUa|jIp1X+uY#XALh^-1hdcS3TwPR2VhI*!zC(mMCxTgm(IhUi3(Sm!OLSL2?Vm-K zSU^R-5Bi&ri&uk(G!?>TMld+MDsKfAbC)2x4#b<~d$YouLdz9?r1=7k2mM9Zu#J|V z+4d*--fQu*%W7Xoc{-+)Nps(2^9aT_Mi8|xP$oUd?f7v#uI^AYG?gPN4{jAoGdV-Z zhf$G)GcXMi-y)jvEx;Pt6wN~5@<0*2&4GIsNqqe;XM*BoYu&Q#57PV%DNHExUI+#O zpOF1U+h0c^wJjgIkte9I#Rt2xkM8o1fgvA;DemL$Z7eLUXWD0wWfcAK>!eXE9^!y8 z%HP^Ccm<7Al|j-V=wHGvtKkHZF7hP|;7Kx>n`34Tlx$qlOuLx>1|Mr@Xc@$C8ZaMo zVb1mU(xC4(Fh-Ls0F{qvpLj&Xv+;;G?$wCb;Wmb3_=M4yOTM(M(q6#yD=UHxacP4y z&S0uWjz@kY6!`xY1-uEr$)p0&SgFHM!F~^OL~$d&R6a4W@zc=)2|vXx0{Fgrv7*n2 z5UlKUK@b)>MSbHc{aX9lM#qNPdcC#YUfFEduX5P!`sT*9cG+d7UaYY<=&NcP8{z7( zi}1|irqPU$mL|w6<5yN(o|-ay?t%qmz>nMm8+XQB0x0IsH|>lG02K3ktvh4R0?1sp zw$dRM+bf&&3u(ML|3K5zPzNi%F(#k zSzBMfoa`yzSG~G3W*R^-i>G(S+zB8v_CTYE+ouyEM+u`MbZU#m5=FmsgJ2~O`b493 zS+qvTG#JXQ;9cqUVCjM-cpLi(LQ~Uv{50?Z-X-M0=`Be1hkOnG2I-0%&(;s-a;AQM zL)C13Vp>Z24SHir=B&&VgJJgQ!p5czj@s2VqCT?SIXqD*41@-m%QmVgZeW|_K?pSB9X4Q4u^*dvFuihC$ zU-#slF}iDE2K>i4ry-@pQc^L0;Sx*f!h!`AmeSHirLd&YkeC zn1f|mp~W)SGPk18GJnDRh4a`+9;HFamJ}?!rNUY;&q6YAw9^~nu%w{uW^y1>uDS`S9J0 zDMxRsZFW}H>kE^T^q6$@hz?cEd^R*T%&KO-L**kcvtw>)bn4eSn?=17Q#p@s&<8R@ zvv0v_9Bdqwr_tHahgEQ~{}uc!gpU6u7~D2@tNajWf)xwXxdfhBgw+S-On(O!r` z++JC=MhNpRiAj%IbBMO@l@O*JZ2gSBIR*TqTCx(+PX?robzmVkn3Jb5(s<`C&%+c^tq)9)UNn3sDgF zRjaFUzmzA|U>Aqb5N1bZ6OW_0axL!9a@SEZEXE}LE2P6WFfVluGU^$=$AOf}kb^vw*_5z*;v;&R+P6N6D z=KukK<{`ufNB|fB`G5t0<$xN12-pJH1$YRs5AYn|2;dAr0t5h>wp}rC06o9}$OaSx zmH?^&BESvU0eA?o56})c3Frn$fb#(1;axFWKsE^72yXYIMOe z+>9o_`3bk<+H}Gl&RVEaxxHCjUBLrXDdA)U8WvbY6$*l|q$G#psE`qUznkuFvy0wB zg?)V!ZsXIPaE_2)y5^0$+$>y}fuWVv)r0oj!0fAPa4VeRrNG?4&}O?hXwMDIo?j!E z{mXaCDJTY2N`S}14S5LmEf>d^E&BnkkK->gbzbppKFUT;shqiG%0Rdqe=feQJ<@(tTN)+MZy>u|7= zc%AYJ;yB&G7X;%TwB18H*{h%VVR$j{_7|ZS1$0^#hF24QnEP)6?nYSBc(OhWcatC3 zlU|c;VfZfK-LNOcJ-fs3M}YUjo)n=x5r#hv{2}Cll$Sggh94muc|bJ6=`g$-_>K;4 ze=ZCUkRRDz{m3A$1AbDrpBjcI0`HdX)57q4;7xM63&QYa!1KvJh_w;84!9n9yAL?g zkn;J6Y)|-ezy&$})4=sIelE;^K=!YPfAyn0P7137uB4R+yj#wX5xDRYPirpumvIWC z{1#wjmbFP0kX@L$e3;p?9zMd{E$iW<2>o0RAC4C^R9n{9ic6UG6(z0g-(swKlI2IW z0C+yvKc!j@{G^Q61HX;yol#8CT+?@4WiP+bin}*!aWoqT2N#`=a{F z)y=XW%BkYNnCW^M48H&qpW;?(=dmf~GS(+}+)EoUV6yQ>F|R^u3SM68U}GLPD<(l0 zK;CzpV&#a?>;?WB$K!zSlkN4uPs;dA;Jq@Q4O}PtF9vRq@nyiRGF}b5NybIs`()e= zyjR9|06!_?RBq*mk}Kpx-2&$%lW{(XGkck2496cL0>cN%#m$^t9GA(J{X3N5byj9| zF>r&7F9B|q@!Nnm$#^~R9WuTi_&yom2K=Oq?*iT{<4RfRJI^j!9gS7?=H_Ay>ch>= z0@;$LuF5Kr;}{M_)Ee2(wPPvNxPjqv5gD%3I{8tGOSoKA=Eqi9Ut7&$;&GKTZ6zFE z+FZGs8U{<7rMCplvYeS0lXemqsk5;-ook`xjpxC#UbJJ1;;}L;|G9SW&8;6+hqJS@Fp4W2JV*eUf?I?ybX~5qdZQkW93&W*2~oa z!V~e}06VG{W&%!RQgBA5L7##Uczm#I+9w9f77tuWI|2B&rA>KI0jxB}4*pbo(br*& zcnJLsU-d(1r}%0#NDKZoMoLHih3i=&tHkeErz!rG@9_O#_+F9xVEvt(qAdPpbMi2= zVW`VpWaYTNh!~$IN9Lnnn9s zR#(liWOkNi7IH6JQ`-bBP0dtBX1~NyS!FM(tw-moyd5gV26cL+L;aDSb``Y^t7nsc z`i1NBA#(*R$}nC~HsCKmjV$r|HhaX4)SKW<-z57dJxMiab^2A#hAL7m$25;YfsnJ_ zuAi}fHu9rHtq-%Me9|mRQ7LMvMA<)$G+{1?gMK$dnVe+-_FnK#=0ZM(VE2tpJN9H{ z4V6vJHH~b&ON~7>WkGGTSXAq1=3^W;FSM_R5AGiB#_cKIu>2}TBBfbSr#2+}@K;0| zd8UpF#CLEiREm1T`WfqI(I05^Vyd|qdAQmo<|qhMqHz65Oc5mP3YwZ&y^@(~v=Av! zfrjHV>S>ie_)G8E8AJUjvB6nie*-!k-jPWZ8U&|MkAJYhPe%{_{BQV`W*7`9V`FCN zSE1HK)-)QStV`d}D6+O^uO7?NC4WZpM-KLeM(64peKTets1k)5u1d#h=UUQf#ypc> z(|7unm1&W8_#PWmd3!^n1G_hUlcRC9qY}!wWMx=rjiI!YGrluEt{qR0iK`Ock#=$> z`E@p6Q-&=Jl#i`-){9U#h89!k;KS&v?O-g}Lw-}zzB8{C(ENra1&%nuGT|Hl!JcpRa?2n9wc@P7~m^fUNaM_&~! z#+4rp#KV5Xj|%rP%$aHE{Z1{t!#$6fM<_5tfe{M)zf6HMco~ecKyT0xglC8I7HGs{ zgWKZmyV-Xy{2$u$ z)*d}~zU*(?C2pmBpZQ<(zaRczefaFdQ-ps!EIoYdW%0Mj@#k;mDJ+f>gvD>Id`mA> zyjAxWJ!L%f*Yf(A_qs0%Lh@!g?I&Lt%G@;h5goBPGNSqeV=8)UKFsgU?^u z6+-~-@@4-L1?Au6ZkO8>V^#F;{%sL1|2Ncsi!k_4CH!aq!eh8w82lH3-RFPuPYJIF zjYfWaKTpr^(Y~F4+7W%J-4d@A?U_9@LoeeHua+Ldq4#L0{nD50=u2&m+^Fp1Y}R^M6yqp%>}Z#P&Qlfr7)$keVP2FGhd4T767GP51@F~ z0`!0;z*K+(KzXHdkbgIT^4ubS@5YzhJpgjw0-$)%_t*)@uVix@zLeib0F>Tu0p#z` z0LtG90J*;jAoq9>h3NCY@>9Vxo$>5A%Fa9gZO}wv=$_@@dj2<#H78ZIv~v7Uf7+1pKtqB!>tq`0(JrJ2GCD)S|!8-t^))RUkbi+0i}SI zfCj)uz>feA0rmk716~72fB<0B-&DdBz)V09zy_!TxBT{q&J+}-Q?68_$Nuh-T2hdx)y zulrnY|Gv*vi8waC(&zGB+3WhzsXo`-MZGRR?1ja>t`G3Nc`%_qr_j9!w9oZaCfN+B>t)^+Tk+;cArU8rV;P-^qQh^^^Ks;#GaF(+>n(<&X5a zCISLy`dq1iS%2?yy@cqU%1AN z>2p=XzV%G6>rbaalT)C{%l$3^c}hWfuYVc&GWWUu>$N`D)yNysch>YzTubkfTst0> zn7LlHz+Sn|Ug)S5Ap~4shLb^@FJg}=Sm<%A%j}<0l|n2LPbIPkqp;76D6gy)iy9qe zI3umMbMZ*w2P%44rxtQEcU~5CkuVoA;7OlhNnR-w*5i>ySr#cF!p6`0WC55P6*Cj6 z5rpd%GZW@nsG_rP?ln?1Tux{Sb5*2!N|}kv*i@+IH_xf8F2ut?RuMz-{i;Pcz+^=$ z5QMu`C6!IKTDxn}DmtpRtQV$6ENxgDZYQ)1^&_;h7|1)ql1KsKxlYL|OLVq;#y`~0 zRLV7%kC@-Es!@1=#Ul$)2%RMRRLI{rQ|ywISQ$l-IpHRyE=uTNw@IlDoV|ZU;TKdk zixzrC4KqOmWFxo$pVd*@h?>|SnB{zx;=MJ|u1NPiiTbXrmeYhx1zyV(R-ks#Ht5LM zUX5229d`wRRz*@A zgR+xN;pTEd_~-C2uxkkS!{jL&huXl;{o!(yf?Wugqg=+?C6_HzE2WWT-I@g(b5*3( z)+1*0R=KZ~F*nu`gryAU(rXW^N-Jxd(Qd2kO>(bhu8J&NAJI6hRTQYWbR!o=o1>VR zprA!I$w>-DvYDq^ESr=*wm>#3`F&Oed99@lxR6jSyhgOM@R!4=-IR$AbdzSGjqD-5 zhwBrdd;=6a%6i-ttOttKN(tX1HwwFCLz7(?&t36ItFwu`7YOHwdgN{;!4Nxo zReD5uZMD6yrqZ#bk#)g28z6o-E3Cg42wzdCvcXig3PttK<{FA;j*}jiqu$EeenT}M zb|53o`XDRDpu7-!TkRfI30g?yYWti<2=HzVne6r^;Z}@okA?ca<=_PacLR2;gdO78XG1*G;0L``M~ipF(GIq(`w+|>Shr&_?Y;^2 zI>ZOF9`MkM0EBJ24dLLgcOT*-dq932zK0QJ4dMozgk2MvE8!P-uLE&C2|FYFBJ9ar z*x{?sLb`~zw-D|{Fc-soGoS!wglnGzfWP*9go8Ps2(lO;|8(EuNYi!vo1dt-AaAsY z$M2za{2TsPcNI7F(&i-Wr=xs^{dUOa_B+BXN6--pj8K44UwzypBYfJXsO1KI&E1I_@>0{Q@#0Amp@9&jxn z8!!)022g(yDpO+vDe3eHf1Do4l*djUSbqPeCPPnps# z$BM~0-zadaT5O8Q!dB_1C5cHmU`fr_GzwBw7P6x)39Jii>{V-Ie6D>}B^LK=8P69g z%nLKi>nntyYclkqm7DzK(UOfElf2A<^ZaJK`)jBCkY~1_lfPV07Y2GNwLlart7^)y zy1`{S*^Xr`WME>wvJ00&Rt$1R_=~I9-N^RCUti^!RNiH!m3{Tl^e8}>H8wqAF=0_c zTi45M27M`IqZF8EwCvaF;P-;)j>qLzoKnq-3zkB2>aq2qHTGbJVOwag#k0Mu!~7N1 zH)6L%BIlGMyv%bnxiT+?6l)=sBI5cs*CD}bu$W#G@1KqDe?1MR5+Ta)#x3cSFJqnwJ%Q+Iv1ssXXc^K3Q5xv}Hh|U68k=QV9#twE- zA-uba4lK^e3u-6KUa?GL;pA(r6vZlP+6sc&Coz69lB_h{WL0pwy{h1J4OYRMag|lU z+09hNz^<>7LB2JhL@eLuB^Q3%mM~o9<+%kiG^-FxFDtRKBp~Mp+Tw>7*lH2C7Z`(lCpwSZ+n;k5a4;qeK~Mw;Z!@3c}1q>I)F23G+WV z>F~dr`6enhAvaVDt3d^@f*56o+UbSgA)m>p1rz?xlCezKDYf7Xqbu1t5G!q^cpj}V zHwx9DcNJ0yud6c9hvvq zPS&LuQgTw}q&%MT$CSR5`!n`tK9RXE^Xbe3na^cjH15n=W?pYTVJ^<8$$2N|H@VC5 z)>9|dX$$f}pqah_ND{V#E>a>QmEor|>dnE0Nw5QSzq#aCq zEb|YUuVucI`BCO)nG=lhM!oTR<4j|U@lE3eV~lB>Db5scx*{tvYgSfaR!P>9tW{a> zW_^_9&-y&;Le@7~Ys^0L-0b<;w`SY3>$C67z8ksOk^Qsm-PsRkyK*+>{5WTK&Yqk< z=3L16CMPOan>#-D%G|xVXL8@o{UZ09Ty@^0ydUPZl>Dz`RZ3;b>XgQmbtykg zX-Vl!IiB)Cia+J^6m{y()SsuerS47red<%Gfz)qOuSmNZ6wFBbWm;R>@6z_AJ(Koq zT6FsL>2IWKGR9_1&zO~wmQj@PM8=;o{+iLAaU|nJ#-$+1S+!YBS$Ajc$ogs4ud*J^dMs;S)^76=^DE|$%%7Rhn@43k zve#$3v+qR>{W$wg3VM-%GwB*^oRZ`I+QrL5pL_uO|O3c{9rU ztJJR4ms3xtzLk1D^_uhp>0hM>)33|O&M3&3pRow7=DN(*%p#QKE8{ZLdQ*>SVO9fb zGuOP*{ET^A_U!COvQ;_JIocdUjw#2I6PY_YcS3G_?u^`7$n)IX`N;FFxqr+3GIvYf zKPhjw;XV;Q;|wbe2T@OH$tRNknY zyyx#-vP0DMc%3N!gk5V9LIfS5jV2c_-z=l!d7cXdMk{?P>3%b*G(8lhV$m z^`@OqyEF3_na^ZSGa8NA#(d*kW3h38ak0^6tTQ$nHyAy}`-~45e`efm{FCu7#uI26 z9~dR$fHA_PMSq!My4Ez?lxE5?SxgH|rKVd<6{Z?flWDVQa#p!{r};_rbY1q0?3vjs zva7S5*&ESY+Ol(VmgiLFOv*Lp+H&i1@6G)rHzsdEo-J>8-rl^Y@@SP{K);w~m}#&X zo-v#-{KGIW*_HfM@=M8YCf}H{8*Tp|DW9j7rahe2nf7klXK6zE&(pimy5CFxM|wiW z%8b1kZ)D8Nyf5=$=8uh!8UJ8BWqiZN5pQmrSFxVzaKyx+ZIS)(u%k^!}QxwOMy%dC}s3p7raj-()?J^;Fh@tb(2W;PuRi7J(XdML1)M_l%w~!4fhxxH5@=&{UrHZ z@`03tDSt^loH`*rK7D@r()11K+tN2@crxZ>&ddB=<|n4lOkbFyva+-Cv*u zjQX4#bAFT~)lqN>z#@r8sp-YDMav)DKgyPfJfLPWx@z?=hYoOgol# zD(y|Q;=Z&CX`|Aor{925-Iab%`i}IUr2jH~Z~Bwz&!!(rKaqYq{e$#R($8ajh{o7A zB}1QaL&i-R#*EyIA7r>PeuB30Va7nlHJRC&3o~!a{9&dy^Wn_rF-K^O*-_xV20%zS5wzZ?HUd;pp- z!<=Q#fo-|oyxCl3t~EECPn-W~9yI&R4`2ee+Ar8W z_5u4n`;0^wYsIC|iaCk7(1(`9s>Hg)=0s3Qh@){}{`3uAL)^J90#PRBT9l5&|cSJ|N)Qu>vX$`=at(Rb9@>NV;j^(OT;^$xXF zeLx*h>oiS!PTQybQLEMu8-vE@Mtxk0tEPosxWc^JTxQ;i75+Z6+x(sRsaau-v!+_p zp)C#83e1grtXg}LeW87cJ=?w#z3?nn%%;SO#1n~sO}w4xOMH^xl4mAOSc65$=HzY3 zJ7F8wB{wFwCwEYLbB_A38PZMCeNxu3cJ8tTuKY z*1^lr#%p7@#_q;ycpz4)K8E92F$L|S}Nd~5va_;c~M;(hV&n3tPN&E@6_^GIL-yy`lT;?oO~kOWr4suR|C5lC23B8IzJDx*U@~lv|^3VaAL`52dwDT8Fkx%V=F%`93bE^=SLGUM;U3)DB^`6ttsS zzc!!^YNL#?My>HpV=89MEyfRw`;3Q-$BieAXN{l3;vP2U#;?OJqCNgdyd(ZZ{F%6H zYUZ`(0tnq@7vZn9Qk&fJf^M5ndGdK32Led|k0vgg>1_6_!0`(ezWo%U6U z#fcs0_cxR8Q{Q7E9KqoXF)n^voQ<_(iMUMMDn5Y~vrjxGek#_%&cvme*k5gu#>rPlQ+s+&}KO*#HPoZWB0}$j6D|1V0HW~_9aH{Vr7Z4N?EIHRC-`ZK2ZYd6tw}n zr={vLb(PwtcB=oZKBewaE468`AOEP`rme+#`n2|)*hNe$U>7aa)zRC;4OS3eYHAjTG=% zAzmu36nmsA)DUDqpGSN`vxU*v0#m zSCrS3-ze`W?q&Q@l@i~#OqiWh7z4g+6d#m0Xtt@B(4)Th}*>% z!~oGZ@5n%E@Y5$%X>i)NzP=&tDQD9hm9IM$)5&;ndC$hvIF4f0HRmONWd z$#dm-@_e~bUMe@q&2o#pQoci8jXrOa+hJ|e==l!pL^5)h{EWO4yR2REZn;~|$vv<` zy|gcs4`J6;kdMMD4akG?DS1dfEwgAa8j99L!%-nRK3W%zL{qT2^OZ)&GOSeYP+FBX zWj$804rQCtg>@{e>{7awoU&i(#aebqDJVyk0cFs!AY?zns-V_kRh#OJsSe$o37ef# z=c)6dqfKgyx>8+@k#1MltDDpgHKTT6=bu$~tKDi3_WpVGpn60tsQs|)r_>>pX+f<< z3v1)GI&F$J)tU8l?M5@6<~z-Hn(G<8OW&zy_1${6-lOl=^ZG&k2(B9Xan*22AA$u9 zVuu*U6;+)v1=b*g9oJ4HYwU&<=rQ&idB@TfjDBOlIEDRJ$gD91bG#Wbr=#v(aqAzIr9rl~%LOTyLha=h|j=Is21cSZQ*&66wWyd&n%9M@`+bteLPQ zDQm7Z-)h8uY(1_Sw_(q})7o#Hrume`vkM$*#E968v0aUEU5_!{hVk5qvFye;_F@c= z$Tb+H`sk3x^dXDcK^vKJoZ}mscgEw0Ga~&MlTBzFV*e_C?Sa3T9)S6D?qR@4FT8pd zep%=e{0!<}OzZ!jhKBLJpcf2p7(Nf)0(S2`j}yp0Wg|L`IKa*n!e=uE7hNyDS{M}Q z{;Mw>7a8aJoBJUmIE~D1{#t>2YNpd5I8r4HViARVO;N(BTg<}> zgxl~abF9!h!MRWG#N&xBmj(a5ml__;0rEdNP-LDjfI~Px+|?lgMt&(@72_)dgLs)m z^_aW>$@gb%kpo-~Twb3%nCvnMo-_x@Pv%c9qI8}QN8po>^97vvvxW2|_?mk02<6B( zDCIHrQFtazP~d`@{R1OJfsJ08{^xAq@j18b7#5}7OGWCod_sU~zqCmbryD2LKPRI%Bk)_pkU7Fb-&5etAgTh-YPdo0i)at!tz_R2$e-mk**aWTq7 z!PFl-&Of+>u}A&nh)*wd^@D=Qe&z6ZEkYIXxNrmBNpKOL0ZzOTzu)A=<7z38ZbG@m z^i@J;8DrbM^ziBt$p6pq;scm}m$`z-+VBa25DEa9@WgOvH72g7`^_ULix3|D!nlFRkI-Ea*FxaC&7!Sufo$r)r zw2%d3N|fZE7@JX~sz3^iDtHnS^5FY@ggt9qHQYXv&mp$Pj?j3Jza~_$DCD>KyCQKM z`B8bvozM&zUG7OmAbcldKlYJ@ge({;=Sh_izKg+grz9en^p)mP5bceucHfWkQ#61t z@&U(|5%ELdGW`sRcQg1FmEvQH|_q{qVh-JZs4>%5j%gV=uWAGa*3Hc-Y^O5>61%^sH;_TI3v=v%hz8Gc|xO^73Q7;#$D< zWt;);cgiAt8zZzl#+dEJll{wrZ}yn%S!4_5Kh6i0Mtby52lhK)st@u9@|c{hUV7|L z0;$eYf00eD-a4$mLg(xl&JExU(gpDcPeq{s_U#SqCD+(h8ZW9t8jLCAh_k*tS>C=% zE(NB}!8C!KC8VBZtPkI=ayTqBJXc!J7#k;uJK>(~wFmnnq41NEep4ICcRP#2x9}Il z`$3~H8Oro8^w!_9gO?yMH1kea?YT zdXYg^CFF9B`@IuF`V`)a>me_mxB;vdxsq=Mn;t`7_#D_DZ>oO*Ji3@3_F@FHml?y9 zaD?nt23(#$2aXr>b8x(M`g04#M3(qG&UquA9{DdXUd-fTNDYQ_%ztJ zXT%xsB#QJT4|a9IJ%0h5_Tq3o$I-hEzI}1>gU|9aS9CI8t6}Z!36)7Z*hOiLaOX55b|82Z!^Shf3=Sl`#Q48Ao3>gU|B; z$M?YVJmy(YFb=zIr69U~T@CizL;dwI*w+V2vmNYTKaxF_-p2g_ihxl6zjcJM2myrZ zbHzIh9!tJ(+)u%ie8ll}@RA~r;^cQ3-sEzH`r}P-4HX1|y%sL+ht4_Vo^Lsr<||1M z_Gc@Y<}(TL8{jc6I`w%E?C%e#*w4V_`de|Vbbo=eDd4eX`7Z-YMfG z_%*P5inD|aj34bENGfoBzx-6mo>B0V;G`4l<~a(U;xT%GJO26b{`>HMOV=knu8-qG zCHjPuxA=hby%OZ$h3E?1?~yC; zy8=a~-(MM?|8_7`#1T5*jib1t{&2Xy=mnGQB%$lm6mE9>#6@sW_!?X)pW`&#OuE;L zr~Y^W?Dq#s;J*T=%Hl7t;>yN@=g%6$!AsK>*w4US;Mv9Wm4R2m*A|)Q&kf@@3OuIy Q);^4@xszbMn4aVQ4_fB7S^xk5 literal 0 HcmV?d00001 diff --git a/code/smartheap/smrtheap.hpp b/code/smartheap/smrtheap.hpp new file mode 100644 index 0000000..dfc8435 --- /dev/null +++ b/code/smartheap/smrtheap.hpp @@ -0,0 +1,197 @@ +// smrtheap.hpp -- SmartHeap public C++ header file +// Professional Memory Management Library +// +// Copyright (C) 1991-1999 Compuware Corporation. +// All Rights Reserved. +// +// No part of this source code may be copied, modified or reproduced +// in any form without retaining the above copyright notice. +// This source code, or source code derived from it, may not be redistributed +// without express written permission of the copyright owner. +// +// COMMENTS: +// - Include this header file to call the SmartHeap-specific versions of +// operators new (i.e. with placement syntax), to: +// o allocate from a specific memory pool; +// o specify allocation flags, such as zero-initialization; +// o resize an allocation. +// +// - If you include this header file, you must compile and link shnew.cpp, or +// link with one of the SmartHeap static operator new libraries: +// sh[l|d]XXXX.lib +// +// - Can be used in both EXEs and DLLs. +// +// - For 16-bit x86 platforms, use only in large or compact memory model. +// +// - If you do not want to use SmartHeap's global operator new but you do +// want to use SmartHeap's other facilities in a C++ application, then +// include the smrtheap.h header file but do not include this header file, +// and do not link with shnew.cpp. The two ".Xpp" files are present +// ONLY for the purpose of defining operator new and operator delete. +// +// - Use the MemDefaultPool global variable to refer to a memory pool to pass +// to SmartHeap functions that accept a pool as a parameter, +// e.g. MemPoolCount, MemPoolSize, MemPoolWalk, etc. +// + +#if !defined(_SMARTHEAP_HPP) +#define _SMARTHEAP_HPP + +#if defined(_MSC_VER) \ + && (defined(M_I86LM) || defined(M_I86CM) || defined(M_I86HM)) \ + && !defined(MEM_HUGE) +#define MEM_HUGE 0x8000u +#endif + +#ifndef __BORLANDC__ +/* Borland C++ does not treat extern "C++" correctly */ +extern "C++" +{ +#endif /* __BORLANDC__ */ + +#if defined(_MSC_VER) && _MSC_VER >= 900 +#pragma warning(disable : 4507) +#endif + +#if defined(new) +#if defined(MEM_DEBUG) +#undef new +#endif +#endif + +#include + +#include "smrtheap.h" + +#if defined(new) +#if defined(MEM_DEBUG) +#undef new +#endif +#endif + +#if ((defined(__BORLANDC__) && (__BORLANDC__ >= 0x450)) \ + || (defined(__WATCOMC__) && __WATCOMC__ >= 1000) \ + || (defined(__IBMCPP__) && __IBMCPP__ >= 250) \ + || defined(__hpux) \ + || defined(__osf__) \ + || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x500) \ + || defined(_AIX43)) +#define SHI_ARRAY_NEW 1 +#define SHI_ARRAY_DELETE 1 +#endif + +#if !(defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x500) +#define SHI_NEWDEFARGS 1 +#endif + +void MEM_FAR * MEM_ENTRY_ANSI shi_New(unsigned long sz, unsigned flags=0, MEM_POOL pool=0); + +// operator new variants: + + +// version of new that passes memory allocation flags +// (e.g. MEM_ZEROINIT to zero-initialize memory) +// call with syntax 'ptr = new (flags) ' +inline void MEM_FAR *operator new(size_t sz, unsigned flags) + { return shi_New(sz, flags); } +#if defined(_MSC_VER) && _MSC_VER >= 1200 +inline void MEM_FAR operator delete(void *p, unsigned) + { ::operator delete(p); } +#endif // _MSC_VER + +// version of new that allocates from a specified memory pool with alloc flags +// call with the syntax 'ptr = new (pool, [flags=0]) ' +inline void MEM_FAR *operator new(size_t sz, MEM_POOL pool, unsigned flags +#ifdef SHI_NEWDEFARGS + =0 +#endif + ) + { return shi_New(sz, flags, pool); } +#if defined(_MSC_VER) && _MSC_VER >= 1200 +inline void MEM_FAR operator delete(void *p, MEM_POOL, unsigned) + { ::operator delete(p); } +#endif // _MSC_VER + +#ifdef SHI_ARRAY_NEW +inline void MEM_FAR *operator new[](size_t sz, MEM_POOL pool, unsigned flags +#ifdef SHI_NEWDEFARGS + =0 +#endif + ) + { return shi_New(sz, flags, pool); } +#endif + +// version of new that changes the size of a memory block previously allocated +// from an SmartHeap memory pool +// call with the syntax 'ptr = new (ptr, flags) ' +#if !defined(__BORLANDC__) && !defined(__HIGHC__) +/* bug in BC++, MetaWare High C++ parsers confuse this with new(file,line) */ +inline void MEM_FAR *operator new(size_t new_sz, void MEM_FAR *lpMem, + unsigned flags) + { return MemReAllocPtr(lpMem, new_sz, flags); } +#if defined(_MSC_VER) && _MSC_VER >= 1200 +inline void MEM_FAR operator delete(void *p, void MEM_FAR *, unsigned) + { ::operator delete(p); } +#endif // _MSC_VER + +#ifdef SHI_ARRAY_NEW +inline void MEM_FAR *operator new[](size_t new_sz, void MEM_FAR *lpMem, + unsigned flags) + { return MemReAllocPtr(lpMem, new_sz, flags); } +#endif // SHI_ARRAY_NEW +#endif + + +// new_handler prototypes: note that MSC/C++ prototype differs from the +// protosed ANSI standard prototype for set_new_handler +#if defined(__MWERKS__) \ + || defined(__hpux) \ + || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x500) + +#define MEM_CPP_THROW throw() +#define MEM_CPP_THROW1(x) throw(x) +//#elif defined(_MSC_VER) && _MSC_VER >= 1100 && defined(_CPPUNWIND) +//#define MEM_CPP_THROW throw() +#else +#define MEM_CPP_THROW +#define MEM_CPP_THROW1(x) +#endif // __MWERKS__ +#ifndef _CRTIMP +#define _CRTIMP +#endif // _CRTIMP +#ifdef _MSC_VER +_CRTIMP _PNH MEM_ENTRY_ANSI _set_new_handler(_PNH); +#if UINT_MAX == 0xFFFFu +_PNH MEM_ENTRY_ANSI _set_fnew_handler(_PNH); +_PNHH MEM_ENTRY_ANSI _set_hnew_handler(_PNHH); +#endif // UINT_MAX +#endif // _MSC_VER +typedef void (MEM_ENTRY_ANSI * pnh)(); +_CRTIMP pnh MEM_ENTRY_ANSI set_new_handler(pnh) MEM_CPP_THROW; + +#ifndef DBG_FORMAL +#define DBG_FORMAL +#define DBG_ACTUAL +#ifndef DEBUG_NEW +#define DEBUG_NEW new +#endif // DEBUG_NEW +#define DEBUG_NEW1(x_) new(x_) +#define DEBUG_NEW2(x_, y_) new(x_, y_) +#define DEBUG_NEW3(x_, y_, z_) new(x_, y_, z_) +#define DEBUG_DELETE delete +#endif + +#ifdef DEFINE_NEW_MACRO +#define new DEBUG_NEW +#endif + +#if defined(_MSC_VER) && _MSC_VER >= 900 +#pragma warning(default : 4507) +#endif + +#ifndef __BORLANDC__ +} +#endif /* __BORLANDC__ */ + +#endif /* !defined(_SMARTHEAP_HPP) */ diff --git a/code/smartheap/vssver.scc b/code/smartheap/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..ce22e57055f0e25614ac89085dedd883df2f3121 GIT binary patch literal 144 zcmXpJVr2M{@S`hK$7%_l>Bal|vcj8cO^E*FApokNY&+@=# ziS3PDV7@bu-^;LcYCKyAnC}AQr?s+$HU=?+`L00z#(7Edi)YAy`EEe|3f3!U^%t0c S`R+h|eb{9kQSH-#AoBsE=Ov5) literal 0 HcmV?d00001 diff --git a/code/starwars.dsp b/code/starwars.dsp index 463ffbf..ed040b3 100644 --- a/code/starwars.dsp +++ b/code/starwars.dsp @@ -186,15 +186,6 @@ SOURCE=.\0_compiled_first\0_SH_Leak.cpp # PROP Default_Filter "" # Begin Source File -SOURCE=".\client\eax\eax-util.cpp" -# SUBTRACT CPP /YX -# End Source File -# Begin Source File - -SOURCE=".\client\eax\eax-util.h" -# End Source File -# Begin Source File - SOURCE=.\client\eax\eax.h # End Source File # Begin Source File @@ -490,6 +481,11 @@ SOURCE=.\game\genericparser2.cpp # End Source File # Begin Source File +SOURCE=.\qcommon\hstring.cpp +# SUBTRACT CPP /YX +# End Source File +# Begin Source File + SOURCE=.\qcommon\md4.cpp # SUBTRACT CPP /YX # End Source File @@ -730,6 +726,10 @@ SOURCE=.\game\genericparser2.h # End Source File # Begin Source File +SOURCE=.\qcommon\hstring.h +# End Source File +# Begin Source File + SOURCE=.\Icarus\ICARUS.h # End Source File # Begin Source File diff --git a/code/tonet.bat b/code/tonet.bat new file mode 100644 index 0000000..d004639 --- /dev/null +++ b/code/tonet.bat @@ -0,0 +1,2 @@ +xcopy/d/y release\jk2sp.exe w:\game +xcopy/d/y release\jk2gamex86.dll w:\game diff --git a/code/tosend.bat b/code/tosend.bat new file mode 100644 index 0000000..31ea74d --- /dev/null +++ b/code/tosend.bat @@ -0,0 +1,4 @@ +xcopy/y finalbuild\jk2sp.exe c:\send\game +xcopy/y finalbuild\jk2gamex86.dll c:\send\game +del/s/q c:\send\game\base\saves +rd c:\send\game\base\saves diff --git a/code/ui/mssccprj.scc b/code/ui/mssccprj.scc new file mode 100644 index 0000000..b702cff --- /dev/null +++ b/code/ui/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[ui.dsp] +SCC_Aux_Path = "\\ravend\vss_projects\StarWars" +SCC_Project_Name = "$/code/ui", XVOAAAAA diff --git a/code/ui/ui_atoms.cpp b/code/ui/ui_atoms.cpp index 929d984..9ab2ef8 100644 --- a/code/ui/ui_atoms.cpp +++ b/code/ui/ui_atoms.cpp @@ -57,6 +57,9 @@ void UI_SetActiveMenu( const char* menuname,const char *menuID ) return; } + //make sure force-speed and slowmodeath doesn't slow down menus - NOTE: they should reset the timescale when the game un-pauses + Cvar_SetValue( "timescale", 1.0f ); + UI_Cursor_Show(qtrue); // enusure minumum menu data is cached diff --git a/code/ui/ui_main.cpp b/code/ui/ui_main.cpp index 6914e9b..9ff2148 100644 --- a/code/ui/ui_main.cpp +++ b/code/ui/ui_main.cpp @@ -225,8 +225,8 @@ void Text_Paint(float x, float y, float scale, vec4_t color, const char *text, i int iStyleOR = 0; switch (style) { - case ITEM_TEXTSTYLE_NORMAL: iStyleOR = 0;break; // JK2 normal text - case ITEM_TEXTSTYLE_BLINK: iStyleOR = STYLE_BLINK;break; // JK2 fast blinking +// case ITEM_TEXTSTYLE_NORMAL: iStyleOR = 0;break; // JK2 normal text +// case ITEM_TEXTSTYLE_BLINK: iStyleOR = STYLE_BLINK;break; // JK2 fast blinking case ITEM_TEXTSTYLE_PULSE: iStyleOR = STYLE_BLINK;break; // JK2 slow pulsing case ITEM_TEXTSTYLE_SHADOWED: iStyleOR = STYLE_DROPSHADOW;break; // JK2 drop shadow ( need a color for this ) case ITEM_TEXTSTYLE_OUTLINED: iStyleOR = STYLE_DROPSHADOW;break; // JK2 drop shadow ( need a color for this ) @@ -435,11 +435,8 @@ static void UI_RunMenuScript(const char **args) } else if (Q_stricmp(name, "loadAuto") == 0) { - if (s_savedata[s_savegame.currentLine].currentSaveFileName)// && (*s_file_desc_field.field.buffer)) - { - Menus_CloseAll(); - ui.Cmd_ExecuteText( EXEC_APPEND, "load auto\n"); - } + Menus_CloseAll(); + ui.Cmd_ExecuteText( EXEC_APPEND, "load auto\n"); } else if (Q_stricmp(name, "loadgame") == 0) { @@ -828,7 +825,12 @@ void _UI_Init( qboolean inGameLoad ) Menus_CloseAll(); // sets defaults for ui temp cvars - uiInfo.effectsColor = gamecodetoui[(int)trap_Cvar_VariableValue("color")-1]; + uiInfo.effectsColor = (int)trap_Cvar_VariableValue("color")-1; + if (uiInfo.effectsColor < 0) + { + uiInfo.effectsColor = 0; + } + uiInfo.effectsColor = gamecodetoui[uiInfo.effectsColor]; uiInfo.currentCrosshair = (int)trap_Cvar_VariableValue("cg_drawCrosshair"); Cvar_Set("ui_mousePitch", (trap_Cvar_VariableValue("m_pitch") >= 0) ? "0" : "1"); @@ -1198,7 +1200,11 @@ qboolean Asset_Parse(char **buffer) Q_strncpyz( uiInfo.uiDC.Assets.stripedFile, tempStr, sizeof(uiInfo.uiDC.Assets.stripedFile) ); - ui.SP_Register(uiInfo.uiDC.Assets.stripedFile, SP_REGISTER_REQUIRED|SP_REGISTER_MENU); + if (!ui.SP_Register(uiInfo.uiDC.Assets.stripedFile, SP_REGISTER_REQUIRED|SP_REGISTER_MENU)) + { + PC_ParseWarning(va("(.SP file \"%s\" not found)",uiInfo.uiDC.Assets.stripedFile)); + //return qfalse; // hmmm... dunno about this, don't want to break scripts for just missing subtitles + } continue; } @@ -1352,7 +1358,14 @@ static void UI_Update(const char *name) { int val = trap_Cvar_VariableValue(name); - if (Q_stricmp(name, "ui_SetName") == 0) + + if (Q_stricmp(name, "s_khz") == 0) + { + ui.Cmd_ExecuteText( EXEC_APPEND, "snd_restart\n" ); + return; + } + + if (Q_stricmp(name, "ui_SetName") == 0) { Cvar_Set( "name", UI_Cvar_VariableString("ui_Name")); } @@ -1603,11 +1616,11 @@ static void UI_DrawKeyBindStatus(rectDef_t *rect, float scale, vec4_t color, int { if (Display_KeyBindPending()) { - Text_Paint(rect->x, rect->y, scale, color, ui.SP_GetStringTextString(va("%s_WAITINGFORKEY",uiInfo.uiDC.Assets.stripedFile)), 0, textStyle, iFontIndex); + Text_Paint(rect->x, rect->y, scale, color, ui.SP_GetStringTextString("MENUS_WAITINGFORKEY"), 0, textStyle, iFontIndex); } else { - Text_Paint(rect->x, rect->y, scale, color, ui.SP_GetStringTextString(va("%s_ENTERTOCHANGE",uiInfo.uiDC.Assets.stripedFile)), 0, textStyle, iFontIndex); + Text_Paint(rect->x, rect->y, scale, color, ui.SP_GetStringTextString("MENUS_ENTERTOCHANGE"), 0, textStyle, iFontIndex); } } @@ -1726,23 +1739,23 @@ static void UI_OwnerDraw(float x, float y, float w, float h, float text_x, float break; case UI_DATAPAD_MISSION: - ui.Draw_DataPad(DP_OBJECTIVES); ui.Draw_DataPad(DP_HUD); + ui.Draw_DataPad(DP_OBJECTIVES); break; case UI_DATAPAD_WEAPONS: - ui.Draw_DataPad(DP_WEAPONS); ui.Draw_DataPad(DP_HUD); + ui.Draw_DataPad(DP_WEAPONS); break; case UI_DATAPAD_INVENTORY: - ui.Draw_DataPad(DP_INVENTORY); ui.Draw_DataPad(DP_HUD); + ui.Draw_DataPad(DP_INVENTORY); break; case UI_DATAPAD_FORCEPOWERS: - ui.Draw_DataPad(DP_FORCEPOWERS); ui.Draw_DataPad(DP_HUD); + ui.Draw_DataPad(DP_FORCEPOWERS); break; case UI_ALLMAPS_SELECTION://saved game thumbnail @@ -1989,11 +2002,11 @@ int UI_OwnerDrawWidth(int ownerDraw, float scale) case UI_KEYBINDSTATUS: if (Display_KeyBindPending()) { - s = ui.SP_GetStringTextString(va("%s_WAITINGFORKEY",uiInfo.uiDC.Assets.stripedFile)); + s = ui.SP_GetStringTextString("MENUS_WAITINGFORKEY"); } else { - s = ui.SP_GetStringTextString(va("%s_ENTERTOCHANGE",uiInfo.uiDC.Assets.stripedFile)); + s = ui.SP_GetStringTextString("MENUS_ENTERTOCHANGE"); } break; @@ -2154,13 +2167,20 @@ void UI_DataPadMenu(void) UI_InGameMenu ================= */ -void UI_InGameMenu(const char*holoFlag) +void UI_InGameMenu(const char*menuID) { ui.PrecacheScreenshot(); Menus_CloseByName("mainhud"); - Menus_ActivateByName("ingameMainMenu"); + if (menuID) + { + Menus_ActivateByName(menuID); + } + else + { + Menus_ActivateByName("ingameMainMenu"); + } ui.Key_SetCatcher( KEYCATCH_UI ); } @@ -2266,7 +2286,7 @@ void UI_GetVid1Data(void) gl_extensions->value = ui.Cvar_VariableValue("r_allowExtensions"); // Video mode info - video_mode->value = ui.Cvar_VariableValue( "r_mode" ) - 2; + video_mode->value = ui.Cvar_VariableValue( "r_mode" ) - 3; if ( video_mode->value < 0 ) { video_mode->value = 1; @@ -2398,9 +2418,9 @@ void UI_SetVid1Data(const char *menuName) // GL Extensions ui.Cvar_SetValue( "r_allowExtensions", gl_extensions->value ); - // Adding 2 because we don't show 320x200 and MNT_400X300 + // Adding 3 because we don't show 320x200 , 400X300, or 512x384 // Video Resolution Setting - ui.Cvar_SetValue( "r_mode", (video_mode->value + 2) ); + ui.Cvar_SetValue( "r_mode", (video_mode->value + 3) ); // Color Depth switch ( color_depth->value ) @@ -2661,24 +2681,23 @@ void ReadSaveDirectory (void) if (Q_stricmp("auto",holdChar)==0) { Cvar_Set("ui_ResumeOK", "1" ); - continue; } - - s_savedata[s_savegame.saveFileCnt].currentSaveFileName = holdChar; - - // Is this a valid file??? & Get comment of file - result = ui.SG_GetSaveGameComment(s_savedata[s_savegame.saveFileCnt].currentSaveFileName, s_savedata[s_savegame.saveFileCnt].currentSaveFileComments, s_savedata[s_savegame.saveFileCnt].currentSaveFileMap); - if (result != 0) // ignore Bad save game - { - s_savedata[s_savegame.saveFileCnt].currentSaveFileDateTime = result; - - struct tm *localTime; - localTime = localtime( &result ); - strcpy(s_savedata[s_savegame.saveFileCnt].currentSaveFileDateTimeString,asctime( localTime ) ); - s_savegame.saveFileCnt++; - if (s_savegame.saveFileCnt == MAX_SAVELOADFILES) + else + { // Is this a valid file??? & Get comment of file + result = ui.SG_GetSaveGameComment(holdChar, s_savedata[s_savegame.saveFileCnt].currentSaveFileComments, s_savedata[s_savegame.saveFileCnt].currentSaveFileMap); + if (result != 0) // ignore Bad save game { - break; + s_savedata[s_savegame.saveFileCnt].currentSaveFileName = holdChar; + s_savedata[s_savegame.saveFileCnt].currentSaveFileDateTime = result; + + struct tm *localTime; + localTime = localtime( &result ); + strcpy(s_savedata[s_savegame.saveFileCnt].currentSaveFileDateTimeString,asctime( localTime ) ); + s_savegame.saveFileCnt++; + if (s_savegame.saveFileCnt == MAX_SAVELOADFILES) + { + break; + } } } } diff --git a/code/ui/ui_public.h b/code/ui/ui_public.h index 7d278eb..0a39d8d 100644 --- a/code/ui/ui_public.h +++ b/code/ui/ui_public.h @@ -107,7 +107,7 @@ typedef struct { int (*Key_GetCatcher)( void ); void (*Key_SetCatcher)( int catcher ); - void (*SP_Register)( const char *Package, unsigned char Registration ); + qboolean (*SP_Register)( const char *Package, unsigned char Registration ); const char *(*SP_GetStringText)(unsigned short ID); const char *(*SP_GetStringTextString)(const char *Reference); diff --git a/code/ui/ui_shared.cpp b/code/ui/ui_shared.cpp index 17ab8ed..3508c2c 100644 --- a/code/ui/ui_shared.cpp +++ b/code/ui/ui_shared.cpp @@ -3139,9 +3139,7 @@ qboolean ItemParse_stripedFile( itemDef_t *item) Q_strncpyz( uiInfo.uiDC.Assets.stripedFile, tempStr, sizeof(uiInfo.uiDC.Assets.stripedFile) ); - ui.SP_Register(uiInfo.uiDC.Assets.stripedFile, SP_REGISTER_REQUIRED|SP_REGISTER_MENU); - - return qtrue; + return ui.SP_Register(uiInfo.uiDC.Assets.stripedFile, SP_REGISTER_REQUIRED|SP_REGISTER_MENU); } /* @@ -3909,32 +3907,31 @@ typedef struct { static bind_t g_bindings[] = { - {"+scores", K_TAB, -1, -1, -1}, - {"+button1", K_F1, -1, -1, -1}, {"invuse", K_ENTER, -1, -1, -1}, {"force_throw", K_F1, -1, -1, -1}, {"force_pull", K_F2, -1, -1, -1}, - {"force_speed", K_F5, -1, -1, -1}, - {"force_heal", K_F3, -1, -1, -1}, - {"+force_grip", K_F5, -1, -1, -1}, + {"force_speed", K_F3, -1, -1, -1}, {"force_distract", K_F4, -1, -1, -1}, - {"+force_lightning",K_F6, -1, -1, -1}, + {"force_heal", K_F5, -1, -1, -1}, + {"+force_grip", K_F6, -1, -1, -1}, + {"+force_lightning",K_F7, -1, -1, -1}, + {"+useforce", 'f', -1, -1, -1}, + {"forceprev", 'z', -1, -1, -1}, + {"forcenext", 'x', -1, -1, -1}, {"use_bacta", -1, -1, -1, -1}, - {"use_electrobinoculars",-1, -1, -1, -1}, - {"use_inquisitor", -1, -1, -1, -1}, - {"use_lightamp_goggles",-1, -1, -1, -1}, + {"use_seeker", -1, -1, -1, -1}, {"use_sentry", -1, -1, -1, -1}, + {"use_lightamp_goggles",-1, -1, -1, -1}, + {"use_electrobinoculars",-1, -1, -1, -1}, {"invnext", -1, -1, -1, -1}, {"invprev", -1, -1, -1, -1}, {"invuse", -1, -1, -1, -1}, - {"forcenext", K_F6, -1, -1, -1}, - {"forceprev", K_F6, -1, -1, -1}, {"+speed", K_SHIFT, -1, -1, -1}, {"+forward", K_UPARROW, -1, -1, -1}, {"+back", K_DOWNARROW, -1, -1, -1}, {"+moveleft", ',', -1, -1, -1}, {"+moveright", '.', -1, -1, -1}, - {"+moveup", K_SPACE, -1, -1, -1}, + {"+moveup", 'v', -1, -1, -1}, {"+movedown", 'c', -1, -1, -1}, {"+left", K_LEFTARROW, -1, -1, -1}, {"+right", K_RIGHTARROW, -1, -1, -1}, @@ -3944,6 +3941,7 @@ static bind_t g_bindings[] = {"+mlook", '/', -1, -1, -1}, {"centerview", K_END, -1, -1, -1}, {"zoom", -1, -1, -1, -1}, + {"weapon 0", -1, -1, -1, -1}, {"weapon 1", '1', -1, -1, -1}, {"weapon 2", '2', -1, -1, -1}, {"weapon 3", '3', -1, -1, -1}, @@ -3961,38 +3959,17 @@ static bind_t g_bindings[] = {"+altattack", -1, -1, -1, -1}, {"weapprev", '[', -1, -1, -1}, {"weapnext", ']', -1, -1, -1}, - {"+button3", K_MOUSE3, -1, -1, -1}, - {"prevTeamMember", 'w', -1, -1, -1}, - {"nextTeamMember", 'r', -1, -1, -1}, - {"nextOrder", 't', -1, -1, -1}, - {"confirmOrder", 'y', -1, -1, -1}, - {"denyOrder", 'n', -1, -1, -1}, - {"taskOffense", 'o', -1, -1, -1}, - {"taskDefense", 'd', -1, -1, -1}, - {"taskPatrol", 'p', -1, -1, -1}, - {"taskCamp", 'c', -1, -1, -1}, - {"taskFollow", 'f', -1, -1, -1}, - {"taskRetrieve", 'v', -1, -1, -1}, - {"taskEscort", 'e', -1, -1, -1}, - {"taskOwnFlag", 'i', -1, -1, -1}, - {"taskSuicide", 'k', -1, -1, -1}, - {"tauntKillInsult", K_F1, -1, -1, -1}, - {"tauntPraise", K_F2, -1, -1, -1}, - {"tauntTaunt", K_F3, -1, -1, -1}, - {"tauntDeathInsult", K_F4, -1, -1, -1}, - {"tauntGauntlet", K_F5, -1, -1, -1}, - {"scoresUp", K_KP_PGUP, -1, -1, -1}, - {"scoresDown", K_KP_PGDN, -1, -1, -1}, - {"messagemode", '-1', -1, -1, -1}, - {"messagemode2", -1, -1, -1, -1}, - {"messagemode3", -1, -1, -1, -1}, - {"messagemode4", -1, -1, -1, -1}, - {"+use", -1, -1, -1, -1}, - {"+useforce", -1, -1, -1, -1}, - {"datapad", -1, -1, -1, -1}, + {"+block", -1, -1, -1, -1}, + {"+use", K_SPACE, -1, -1, -1}, + {"datapad", K_TAB, -1, -1, -1}, {"save quik*", -1, -1, -1, -1}, - {"thirdperson", -1, -1, -1, -1}, - {"exitview", -1, -1, -1, -1} + {"load quik", -1, -1, -1, -1}, + {"load auto", -1, -1, -1, -1}, + {"cg_thirdperson !",-1, -1, -1, -1}, + {"exitview", -1, -1, -1, -1}, + {"uimenu loadmenu", -1, -1, -1, -1}, + {"uimenu savemenu", -1, -1, -1, -1}, + {"saberAttackCycle",-1, -1, -1, -1}, }; @@ -5151,7 +5128,7 @@ void BindingFromName(const char *cvar) DC->keynumToStringBuf( b2, g_nameBind2, 32 ); Q_strupr(g_nameBind2); - strcat( g_nameBind1, va(" %s ",ui.SP_GetStringTextString(va("%s_OR",uiInfo.uiDC.Assets.stripedFile))) ); + strcat( g_nameBind1, va(" %s ",ui.SP_GetStringTextString("MENUS_OR")) ); strcat( g_nameBind1, g_nameBind2 ); } return; @@ -5209,11 +5186,11 @@ void Item_Bind_Paint(itemDef_t *item) { Item_Text_Paint(item); BindingFromName(item->cvar); - DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, g_nameBind1, /*maxChars*/item->textRect.w, item->textStyle, item->font); + DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, g_nameBind1, maxChars/*item->textRect.w*/, item->textStyle, item->font); } else { - DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, (value != 0) ? "FIXME 1" : "FIXME 0", /*maxChars*/item->textRect.w, item->textStyle, item->font); + DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, (value != 0) ? "FIXME 1" : "FIXME 0", maxChars/*item->textRect.w*/, item->textStyle, item->font); } } @@ -6889,6 +6866,10 @@ qboolean Item_Bind_HandleKey(itemDef_t *item, int key, qboolean down) } } + else if (down && (key == K_ESCAPE)) + { + return qfalse; + } return qtrue; } else @@ -8118,7 +8099,7 @@ qboolean Item_Slider_HandleKey(itemDef_t *item, int key, qboolean down) } } } - DC->Print("slider handle key exit\n"); + //DC->Print("slider handle key exit\n"); return qfalse; } diff --git a/code/ui/vssver.scc b/code/ui/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..93927ab2849dcf40d11bd334382ed8e3a4fbc9b9 GIT binary patch literal 256 zcmXpJVr2M{@S`hK$h>fZ#=2@4hQH1`JaJ& zC+{P(+ga}h@B{h3LF)H#FRy>_BS03&{}1F_r%y3aY_$tu2J)FSfqK|x8C*R3GZ>`) zFOVO+_2j} +# +# GNU Make required +# + +PLATFORM=$(shell uname|tr '[:upper:]' '[:lower:]') +PLATFORM_RELEASE=$(shell uname -r) + +### +### These paths are where you probably want to change things +### + +# Where we are building to, libMesaVoodooGL.so.3.1 should be here, etc. +# the demo pk3 file should be here in demoq3/pak0.pk3 or baseq3/pak0.pk3 +BUILD_DIR=/home/zoid/Quake3 + +# Where we are building from (where the source code should be!) +MOUNT_DIR=/devel/Quake3/q3code + +############################################################################# +## +## You shouldn't have to touch anything below here +## +############################################################################# + +DEMO_PAK=$(BUILD_DIR)/demoq3/pak0.pk3 + +BUILD_DEBUG_DIR=debug$(ARCH)$(GLIBC) +BUILD_RELEASE_DIR=release$(ARCH)$(GLIBC) +CLIENT_DIR=$(MOUNT_DIR)/client +SERVER_DIR=$(MOUNT_DIR)/server +REF_DIR=$(MOUNT_DIR)/renderer +COMMON_DIR=$(MOUNT_DIR)/qcommon +UNIX_DIR=$(MOUNT_DIR)/unix +GAME_DIR=$(MOUNT_DIR)/game +CGAME_DIR=$(MOUNT_DIR)/cgame +NULL_DIR=$(MOUNT_DIR)/null + +#used for linux i386 builds +MESA_DIR=/usr/local/src/Mesa-3.0 + +VERSION=1.05 + +VERSION_FN=$(VERSION)$(GLIBC) +RPM_RELEASE=9 + +############################################################################# +# SETUP AND BUILD +############################################################################# + +ifeq ($(PLATFORM),irix) + +ARCH=mips #default to MIPS +VENDOR=sgi +GLIBC= #libc is irrelevant + +CC=cc +BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 -mips3 \ + -nostdinc -I. -I$(ROOT)/usr/include +RELEASE_CFLAGS=$(BASE_CFLAGS) -O3 +DEBUG_CFLAGS=$(BASE_CFLAGS) -g + +SHLIBEXT=so +SHLIBCFLAGS= +SHLIBLDFLAGS=-shared + +LDFLAGS=-ldl -lm +GLLDFLAGS=-L/usr/X11/lib -lGL -lX11 -lXext -lm + +TARGETS=$(BUILDDIR)/sgiquake3 \ + $(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) \ + $(BUILDDIR)/cgame$(ARCH).$(SHLIBEXT) + +else +ifeq ($(PLATFORM),linux) + +ifneq (,$(findstring libc6,$(shell if [ -e /lib/libc.so.6* ];then echo libc6;fi))) +GLIBC=-glibc +else +GLIBC= +endif #libc6 test + + +ifneq (,$(findstring alpha,$(shell uname -m))) +ARCH=axp +RPMARCH=alpha +VENDOR=dec +else #default to i386 +ARCH=i386 +RPMARCH=i386 +VENDOR=unknown +endif #alpha test + +BASE_CFLAGS=-Dstricmp=strcasecmp -I$(MESA_DIR)/include -I/usr/include/glide \ + -DREF_HARD_LINKED -pipe + +DEBUG_CFLAGS=$(BASE_CFLAGS) -g +ifeq ($(ARCH),axp) +RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations +else +RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -m486 -fomit-frame-pointer -pipe -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 +endif + +CC=gcc + +SHLIBEXT=so +SHLIBCFLAGS=-fPIC +SHLIBLDFLAGS=-shared + +LDFLAGS=-ldl -lm +GLLDFLAGS=-L/usr/X11R6/lib -L$(MESA_DIR)/lib -lX11 -lXext -lXxf86dga -lXxf86vm +GL_SVGA_LDFLAGS=-L/usr/X11R6/lib -L$(MESA_DIR)/lib -lX11 -lXext -lvga + +ifeq ($(ARCH),axp) +TARGETS=$(BUILDDIR)/linuxq3ded $(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) +else +# $(BUILDDIR)/linuxquake3.vga +TARGETS=\ + $(BUILDDIR)/linuxquake3 \ + $(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) \ + $(BUILDDIR)/cgame$(ARCH).$(SHLIBEXT) +#$(BUILDDIR)/quake3 +endif + + +else #generic + +CC=cc +BASE_CFLAGS=-Dstricmp=strcasecmp +DEBUG_CFLAGS=$(BASE_CFLAGS) -g +RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O + +SHLIBEXT=so +SHLIBCFLAGS=-fPIC +SHLIBLDFLAGS=-shared + +LDFLAGS=-ldl -lm + +TARGETS=$(BUILDDIR)/q3ded $(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) + +endif #Linux +endif #IRIX + +DO_CC=$(CC) $(CFLAGS) -o $@ -c $< +DO_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -o $@ -c $< +DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< +DO_SHLIB_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< +DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< + +#### DEFAULT TARGET +# default: build_release + +build_debug: + $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" + +build_release: + $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)" + +#Build both debug and release builds +all: build_debug build_release + +targets: makedirs $(TARGETS) + +makedirs: + @if [ ! -d $(BUILDDIR) ];then mkdir $(BUILDDIR);fi + @if [ ! -d $(BUILDDIR)/client ];then mkdir $(BUILDDIR)/client;fi + @if [ ! -d $(BUILDDIR)/ded ];then mkdir $(BUILDDIR)/ded;fi + @if [ ! -d $(BUILDDIR)/ref ];then mkdir $(BUILDDIR)/ref;fi + @if [ ! -d $(BUILDDIR)/game ];then mkdir $(BUILDDIR)/game;fi + @if [ ! -d $(BUILDDIR)/cgame ];then mkdir $(BUILDDIR)/cgame;fi + +############################################################################# +# CLIENT/SERVER +############################################################################# + +QUAKE3_OBJS = \ + $(BUILDDIR)/client/cl_cgame.o \ + $(BUILDDIR)/client/cl_cin.o \ + $(BUILDDIR)/client/cl_console.o \ + $(BUILDDIR)/client/cl_input.o \ + $(BUILDDIR)/client/cl_keys.o \ + $(BUILDDIR)/client/cl_main.o \ + $(BUILDDIR)/client/cl_parse.o \ + $(BUILDDIR)/client/cl_scrn.o \ + $(BUILDDIR)/client/snd_dma.o \ + $(BUILDDIR)/client/snd_mem.o \ + $(BUILDDIR)/client/snd_mix.o \ + $(BUILDDIR)/client/sv_bot.o \ + $(BUILDDIR)/client/sv_client.o \ + $(BUILDDIR)/client/sv_ccmds.o \ + $(BUILDDIR)/client/sv_game.o \ + $(BUILDDIR)/client/sv_init.o \ + $(BUILDDIR)/client/sv_main.o \ + $(BUILDDIR)/client/sv_snapshot.o \ + $(BUILDDIR)/client/sv_world.o \ + $(BUILDDIR)/client/ui_arena.o \ + $(BUILDDIR)/client/ui_connect.o \ + $(BUILDDIR)/client/ui_controls.o \ + $(BUILDDIR)/client/ui_demo.o \ + $(BUILDDIR)/client/ui_maps.o \ + $(BUILDDIR)/client/ui_menu.o \ + $(BUILDDIR)/client/ui_network.o \ + $(BUILDDIR)/client/ui_preferences.o \ + $(BUILDDIR)/client/ui_qmenu.o \ + $(BUILDDIR)/client/ui_servers.o \ + $(BUILDDIR)/client/ui_startserver.o \ + $(BUILDDIR)/client/ui_video.o \ + \ + $(BUILDDIR)/client/cm_load.o \ + $(BUILDDIR)/client/cm_patch.o \ + $(BUILDDIR)/client/cm_polylib.o \ + $(BUILDDIR)/client/cm_tag.o \ + $(BUILDDIR)/client/cm_test.o \ + $(BUILDDIR)/client/cm_trace.o \ + $(BUILDDIR)/client/cmd.o \ + $(BUILDDIR)/client/common.o \ + $(BUILDDIR)/client/cvar.o \ + $(BUILDDIR)/client/files.o \ + $(BUILDDIR)/client/gameinfo.o \ + $(BUILDDIR)/client/md4.o \ + $(BUILDDIR)/client/msg.o \ + $(BUILDDIR)/client/net_chan.o \ + $(BUILDDIR)/client/vm.o \ + \ + $(BUILDDIR)/client/q_shared.o \ + $(BUILDDIR)/client/q_math.o \ + \ + $(BUILDDIR)/client/tr_backend.o \ + $(BUILDDIR)/client/tr_bsp.o \ + $(BUILDDIR)/client/tr_calc.o \ + $(BUILDDIR)/client/tr_calc_3dnow.o \ + $(BUILDDIR)/client/tr_calc_c.o \ + $(BUILDDIR)/client/tr_calc_kni.o \ + $(BUILDDIR)/client/tr_cmds.o \ + $(BUILDDIR)/client/tr_curve.o \ + $(BUILDDIR)/client/tr_draw.o \ + $(BUILDDIR)/client/tr_flares.o \ + $(BUILDDIR)/client/tr_image.o \ + $(BUILDDIR)/client/tr_init.o \ + $(BUILDDIR)/client/tr_light.o \ + $(BUILDDIR)/client/tr_main.o \ + $(BUILDDIR)/client/tr_mesh.o \ + $(BUILDDIR)/client/tr_misc.o \ + $(BUILDDIR)/client/tr_model.o \ + $(BUILDDIR)/client/tr_noise.o \ + $(BUILDDIR)/client/tr_scene.o \ + $(BUILDDIR)/client/tr_shade.o \ + $(BUILDDIR)/client/tr_shader.o \ + $(BUILDDIR)/client/tr_shade_calc.o \ + $(BUILDDIR)/client/tr_shadows.o \ + $(BUILDDIR)/client/tr_smp.o \ + $(BUILDDIR)/client/tr_sky.o \ + $(BUILDDIR)/client/tr_surf.o \ + $(BUILDDIR)/client/tr_world.o \ + \ + $(BUILDDIR)/client/unix_main.o \ + $(BUILDDIR)/client/unix_net.o \ + $(BUILDDIR)/client/unix_shared.o + +#platform specific objects +ifeq ($(PLATFORM),irix) + QUAKE3_PLATOBJ=\ + $(BUILDDIR)/client/irix_qgl.o \ + $(BUILDDIR)/client/irix_glimp.o \ + $(BUILDDIR)/client/irix_snd.o +else +ifeq ($(PLATFORM),linux) +ifeq ($(ARCH),axp) + QUAKE3_PLATOBJ= +else + QUAKE3_PLATOBJ=\ + $(BUILDDIR)/client/linux_qgl.o \ + $(BUILDDIR)/client/linux_glimp.o \ + $(BUILDDIR)/client/linux_snd.o \ + $(BUILDDIR)/client/snd_mixa.o \ + $(BUILDDIR)/client/matha.o \ + $(BUILDDIR)/client/sys_dosa.o + QUAKE3_VGA=\ + $(BUILDDIR)/client/linux_qgl.o \ + $(BUILDDIR)/client/linux_glimp_vga.o \ + $(BUILDDIR)/client/linux_input_vga.o \ + $(BUILDDIR)/client/linux_snd.o \ + $(BUILDDIR)/client/snd_mixa.o \ + $(BUILDDIR)/client/matha.o \ + $(BUILDDIR)/client/sys_dosa.o + +endif +endif #Linux +endif #IRIX + + +$(BUILDDIR)/linuxquake3 : $(QUAKE3_OBJS) $(QUAKE3_PLATOBJ) + $(CC) $(CFLAGS) -o $@ $(QUAKE3_OBJS) $(QUAKE3_PLATOBJ) $(GLLDFLAGS) $(LDFLAGS) + +ifeq ($(PLATFORM),linux) +ifeq ($(ARCH),i386) +$(BUILDDIR)/linuxquake3.vga : $(QUAKE3_OBJS) $(QUAKE3_VGA) + $(CC) $(CFLAGS) -o $@ $(QUAKE3_OBJS) $(QUAKE3_VGA) $(GL_SVGA_LDFLAGS) $(LDFLAGS) +endif +endif + +$(BUILDDIR)/client/cl_cgame.o : $(CLIENT_DIR)/cl_cgame.c + $(DO_CC) + +$(BUILDDIR)/client/cl_cin.o : $(CLIENT_DIR)/cl_cin.c + $(DO_CC) + +$(BUILDDIR)/client/cl_console.o : $(CLIENT_DIR)/cl_console.c + $(DO_CC) + +$(BUILDDIR)/client/cl_input.o : $(CLIENT_DIR)/cl_input.c + $(DO_CC) + +$(BUILDDIR)/client/cl_keys.o : $(CLIENT_DIR)/cl_keys.c + $(DO_CC) + +$(BUILDDIR)/client/cl_main.o : $(CLIENT_DIR)/cl_main.c + $(DO_CC) + +$(BUILDDIR)/client/cl_parse.o : $(CLIENT_DIR)/cl_parse.c + $(DO_CC) + +$(BUILDDIR)/client/cl_scrn.o : $(CLIENT_DIR)/cl_scrn.c + $(DO_CC) + +$(BUILDDIR)/client/snd_dma.o : $(CLIENT_DIR)/snd_dma.c + $(DO_CC) + +$(BUILDDIR)/client/snd_mem.o : $(CLIENT_DIR)/snd_mem.c + $(DO_CC) + +$(BUILDDIR)/client/snd_mix.o : $(CLIENT_DIR)/snd_mix.c + $(DO_CC) + +$(BUILDDIR)/client/sv_bot.o : $(SERVER_DIR)/sv_bot.c + $(DO_CC) + +$(BUILDDIR)/client/sv_client.o : $(SERVER_DIR)/sv_client.c + $(DO_CC) + +$(BUILDDIR)/client/sv_ccmds.o : $(SERVER_DIR)/sv_ccmds.c + $(DO_CC) + +$(BUILDDIR)/client/sv_game.o : $(SERVER_DIR)/sv_game.c + $(DO_CC) + +$(BUILDDIR)/client/sv_init.o : $(SERVER_DIR)/sv_init.c + $(DO_CC) + +$(BUILDDIR)/client/sv_main.o : $(SERVER_DIR)/sv_main.c + $(DO_CC) + +$(BUILDDIR)/client/sv_snapshot.o : $(SERVER_DIR)/sv_snapshot.c + $(DO_CC) + +$(BUILDDIR)/client/sv_world.o : $(SERVER_DIR)/sv_world.c + $(DO_CC) + +$(BUILDDIR)/client/ui_arena.o : $(CLIENT_DIR)/ui_arena.c + $(DO_CC) + +$(BUILDDIR)/client/ui_connect.o : $(CLIENT_DIR)/ui_connect.c + $(DO_CC) + +$(BUILDDIR)/client/ui_controls.o : $(CLIENT_DIR)/ui_controls.c + $(DO_CC) + +$(BUILDDIR)/client/ui_demo.o : $(CLIENT_DIR)/ui_demo.c + $(DO_CC) + +$(BUILDDIR)/client/ui_maps.o : $(CLIENT_DIR)/ui_maps.c + $(DO_CC) + +$(BUILDDIR)/client/ui_menu.o : $(CLIENT_DIR)/ui_menu.c + $(DO_CC) + +$(BUILDDIR)/client/ui_network.o : $(CLIENT_DIR)/ui_network.c + $(DO_CC) + +$(BUILDDIR)/client/ui_preferences.o : $(CLIENT_DIR)/ui_preferences.c + $(DO_CC) + +$(BUILDDIR)/client/ui_qmenu.o : $(CLIENT_DIR)/ui_qmenu.c + $(DO_CC) + +$(BUILDDIR)/client/ui_servers.o : $(CLIENT_DIR)/ui_servers.c + $(DO_CC) + +$(BUILDDIR)/client/ui_startserver.o : $(CLIENT_DIR)/ui_startserver.c + $(DO_CC) + +$(BUILDDIR)/client/ui_video.o : $(UNIX_DIR)/ui_video.c + $(DO_CC) + +$(BUILDDIR)/client/cm_trace.o : $(COMMON_DIR)/cm_trace.c + $(DO_CC) + +$(BUILDDIR)/client/cm_load.o : $(COMMON_DIR)/cm_load.c + $(DO_CC) + +$(BUILDDIR)/client/cm_test.o : $(COMMON_DIR)/cm_test.c + $(DO_CC) + +$(BUILDDIR)/client/cm_patch.o : $(COMMON_DIR)/cm_patch.c + $(DO_CC) + +$(BUILDDIR)/client/cm_polylib.o : $(COMMON_DIR)/cm_polylib.c + $(DO_CC) + +$(BUILDDIR)/client/cm_tag.o : $(COMMON_DIR)/cm_tag.c + $(DO_CC) + +$(BUILDDIR)/client/cmd.o : $(COMMON_DIR)/cmd.c + $(DO_CC) + +$(BUILDDIR)/client/common.o : $(COMMON_DIR)/common.c + $(DO_CC) + +$(BUILDDIR)/client/cvar.o : $(COMMON_DIR)/cvar.c + $(DO_CC) + +$(BUILDDIR)/client/files.o : $(COMMON_DIR)/files.c + $(DO_CC) + +$(BUILDDIR)/client/gameinfo.o : $(COMMON_DIR)/gameinfo.c + $(DO_CC) + +$(BUILDDIR)/client/md4.o : $(COMMON_DIR)/md4.c + $(DO_CC) + +$(BUILDDIR)/client/msg.o : $(COMMON_DIR)/msg.c + $(DO_CC) + +$(BUILDDIR)/client/net_chan.o : $(COMMON_DIR)/net_chan.c + $(DO_CC) + +$(BUILDDIR)/client/vm.o : $(COMMON_DIR)/vm.c + $(DO_CC) + +$(BUILDDIR)/client/q_shared.o : $(GAME_DIR)/q_shared.c + $(DO_DEBUG_CC) + +$(BUILDDIR)/client/q_math.o : $(GAME_DIR)/q_math.c + $(DO_CC) + +$(BUILDDIR)/client/tr_bsp.o : $(REF_DIR)/tr_bsp.c + $(DO_CC) + +$(BUILDDIR)/client/tr_backend.o : $(REF_DIR)/tr_backend.c + $(DO_CC) + +$(BUILDDIR)/client/tr_calc.o : $(REF_DIR)/tr_calc.c + $(DO_CC) + +$(BUILDDIR)/client/tr_calc_3dnow.o : $(REF_DIR)/tr_calc_3dnow.c + $(DO_CC) + +$(BUILDDIR)/client/tr_calc_c.o : $(REF_DIR)/tr_calc_c.c + $(DO_CC) + +$(BUILDDIR)/client/tr_calc_kni.o : $(REF_DIR)/tr_calc_kni.c + $(DO_CC) + +$(BUILDDIR)/client/tr_cmds.o : $(REF_DIR)/tr_cmds.c + $(DO_CC) + +$(BUILDDIR)/client/tr_curve.o : $(REF_DIR)/tr_curve.c + $(DO_CC) + +$(BUILDDIR)/client/tr_draw.o : $(REF_DIR)/tr_draw.c + $(DO_CC) + +$(BUILDDIR)/client/tr_flares.o : $(REF_DIR)/tr_flares.c + $(DO_CC) + +$(BUILDDIR)/client/tr_image.o : $(REF_DIR)/tr_image.c + $(DO_CC) + +$(BUILDDIR)/client/tr_init.o : $(REF_DIR)/tr_init.c + $(DO_CC) + +$(BUILDDIR)/client/tr_light.o : $(REF_DIR)/tr_light.c + $(DO_CC) + +$(BUILDDIR)/client/tr_main.o : $(REF_DIR)/tr_main.c + $(DO_CC) + +$(BUILDDIR)/client/tr_mesh.o : $(REF_DIR)/tr_mesh.c + $(DO_CC) + +$(BUILDDIR)/client/tr_misc.o : $(REF_DIR)/tr_misc.c + $(DO_CC) + +$(BUILDDIR)/client/tr_model.o : $(REF_DIR)/tr_model.c + $(DO_CC) + +$(BUILDDIR)/client/tr_noise.o : $(REF_DIR)/tr_noise.c + $(DO_CC) + +$(BUILDDIR)/client/tr_scene.o : $(REF_DIR)/tr_scene.c + $(DO_CC) + +$(BUILDDIR)/client/tr_shade.o : $(REF_DIR)/tr_shade.c + $(DO_CC) + +$(BUILDDIR)/client/tr_shader.o : $(REF_DIR)/tr_shader.c + $(DO_CC) + +$(BUILDDIR)/client/tr_shade_calc.o : $(REF_DIR)/tr_shade_calc.c + $(DO_CC) + +$(BUILDDIR)/client/tr_shadows.o : $(REF_DIR)/tr_shadows.c + $(DO_CC) + +$(BUILDDIR)/client/tr_sky.o : $(REF_DIR)/tr_sky.c + $(DO_CC) + +$(BUILDDIR)/client/tr_smp.o : $(REF_DIR)/tr_smp.c + $(DO_CC) + +$(BUILDDIR)/client/tr_stripify.o : $(REF_DIR)/tr_stripify.c + $(DO_CC) + +$(BUILDDIR)/client/tr_subdivide.o : $(REF_DIR)/tr_subdivide.c + $(DO_CC) + +$(BUILDDIR)/client/tr_surf.o : $(REF_DIR)/tr_surf.c + $(DO_CC) + +$(BUILDDIR)/client/tr_world.o : $(REF_DIR)/tr_world.c + $(DO_CC) + +$(BUILDDIR)/client/unix_qgl.o : $(UNIX_DIR)/unix_qgl.c + $(DO_CC) + +$(BUILDDIR)/client/unix_dedicated.o : $(UNIX_DIR)/unix_dedicated.c + $(DO_CC) + +$(BUILDDIR)/client/unix_earlycon.o : $(UNIX_DIR)/unix_earlycon.c + $(DO_CC) + +$(BUILDDIR)/client/unix_main.o : $(UNIX_DIR)/unix_main.c + $(DO_CC) + +$(BUILDDIR)/client/unix_net.o : $(UNIX_DIR)/unix_net.c + $(DO_CC) + +$(BUILDDIR)/client/unix_shared.o : $(UNIX_DIR)/unix_shared.c + $(DO_CC) + +$(BUILDDIR)/client/irix_glimp.o : $(UNIX_DIR)/irix_glimp.c + $(DO_CC) + +$(BUILDDIR)/client/irix_snd.o : $(UNIX_DIR)/irix_snd.c + $(DO_CC) + +$(BUILDDIR)/client/irix_input.o : $(UNIX_DIR)/irix_input.c + $(DO_CC) + +$(BUILDDIR)/client/linux_glimp.o : $(UNIX_DIR)/linux_glimp.c + $(DO_CC) + +$(BUILDDIR)/client/linux_qgl.o : $(UNIX_DIR)/linux_qgl.c + $(DO_CC) + +$(BUILDDIR)/client/linux_input.o : $(UNIX_DIR)/linux_input.c + $(DO_CC) + +$(BUILDDIR)/client/linux_glimp_vga.o : $(UNIX_DIR)/linux_glimp_vga.c + $(DO_CC) + +$(BUILDDIR)/client/linux_snd.o : $(UNIX_DIR)/linux_snd.c + $(DO_CC) + +$(BUILDDIR)/client/snd_mixa.o : $(UNIX_DIR)/snd_mixa.s + $(DO_AS) + +$(BUILDDIR)/client/matha.o : $(UNIX_DIR)/matha.s + $(DO_AS) + +$(BUILDDIR)/client/sys_dosa.o : $(UNIX_DIR)/sys_dosa.s + $(DO_AS) + +$(BUILDDIR)/client/linux_input_vga.o : $(UNIX_DIR)/linux_input_vga.c + $(DO_CC) + +############################################################################# +# DEDICATED SERVER +############################################################################# + +Q3DED_OBJS = \ + $(BUILDDIR)/ded/sv_bot.o \ + $(BUILDDIR)/ded/sv_client.o \ + $(BUILDDIR)/ded/sv_ccmds.o \ + $(BUILDDIR)/ded/sv_game.o \ + $(BUILDDIR)/ded/sv_init.o \ + $(BUILDDIR)/ded/sv_main.o \ + $(BUILDDIR)/ded/sv_snapshot.o \ + $(BUILDDIR)/ded/sv_world.o \ + \ + $(BUILDDIR)/ded/cm_trace.o \ + $(BUILDDIR)/ded/cm_load.o \ + $(BUILDDIR)/ded/cm_test.o \ + $(BUILDDIR)/ded/cm_patch.o \ + $(BUILDDIR)/ded/cm_tag.o \ + $(BUILDDIR)/ded/cmd.o \ + $(BUILDDIR)/ded/common.o \ + $(BUILDDIR)/ded/cvar.o \ + $(BUILDDIR)/ded/files.o \ + $(BUILDDIR)/ded/gameinfo.o \ + $(BUILDDIR)/ded/md4.o \ + $(BUILDDIR)/ded/msg.o \ + $(BUILDDIR)/ded/net_chan.o \ + \ + $(BUILDDIR)/ded/unix_dedicated.o \ + $(BUILDDIR)/ded/unix_main.o \ + $(BUILDDIR)/ded/unix_net.o \ + $(BUILDDIR)/ded/unix_shared.o \ + \ + $(BUILDDIR)/ded/cl_null.o + +$(BUILDDIR)/linuxq3ded : $(Q3DED_OBJS) + $(CC) $(CFLAGS) -o $@ $(Q3DED_OBJS) $(LDFLAGS) + +$(BUILDDIR)/ded/sv_bot.o : $(SERVER_DIR)/sv_bot.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_client.o : $(SERVER_DIR)/sv_client.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_ccmds.o : $(SERVER_DIR)/sv_ccmds.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_game.o : $(SERVER_DIR)/sv_game.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_init.o : $(SERVER_DIR)/sv_init.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_main.o : $(SERVER_DIR)/sv_main.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_snapshot.o : $(SERVER_DIR)/sv_snapshot.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/sv_world.o : $(SERVER_DIR)/sv_world.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cm_trace.o : $(COMMON_DIR)/cm_trace.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cm_load.o : $(COMMON_DIR)/cm_load.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cm_test.o : $(COMMON_DIR)/cm_test.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cm_patch.o : $(COMMON_DIR)/cm_patch.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cm_tag.o : $(COMMON_DIR)/cm_tag.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cmd.o : $(COMMON_DIR)/cmd.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/common.o : $(COMMON_DIR)/common.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cvar.o : $(COMMON_DIR)/cvar.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/files.o : $(COMMON_DIR)/files.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/gameinfo.o : $(COMMON_DIR)/gameinfo.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/md4.o : $(COMMON_DIR)/md4.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/msg.o : $(COMMON_DIR)/msg.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/net_chan.o : $(COMMON_DIR)/net_chan.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/unix_dedicated.o : $(UNIX_DIR)/unix_dedicated.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/unix_main.o : $(UNIX_DIR)/unix_main.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/unix_net.o : $(UNIX_DIR)/unix_net.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/unix_shared.o : $(UNIX_DIR)/unix_shared.c + $(DO_DED_CC) + +$(BUILDDIR)/ded/cl_null.o : $(NULL_DIR)/cl_null.c + $(DO_DED_CC) + +############################################################################# +# GAME +############################################################################# + +GAME_OBJS = \ + $(BUILDDIR)/game/b_ai.o \ + $(BUILDDIR)/game/b_files.o \ + $(BUILDDIR)/game/b_items.o \ + $(BUILDDIR)/game/b_main.o \ + $(BUILDDIR)/game/b_nav.o \ + $(BUILDDIR)/game/b_navgen.o \ + $(BUILDDIR)/game/bg_misc.o \ + $(BUILDDIR)/game/bg_pmove.o \ + $(BUILDDIR)/game/g_active.o \ + $(BUILDDIR)/game/g_aim.o \ + $(BUILDDIR)/game/g_client.o \ + $(BUILDDIR)/game/g_cmds.o \ + $(BUILDDIR)/game/g_combat.o \ + $(BUILDDIR)/game/g_items.o \ + $(BUILDDIR)/game/g_main.o \ + $(BUILDDIR)/game/g_mem.o \ + $(BUILDDIR)/game/g_misc.o \ + $(BUILDDIR)/game/g_missile.o \ + $(BUILDDIR)/game/g_mover.o \ + $(BUILDDIR)/game/g_spawn.o \ + $(BUILDDIR)/game/g_svcmds.o \ + $(BUILDDIR)/game/g_target.o \ + $(BUILDDIR)/game/g_team.o \ + $(BUILDDIR)/game/g_trigger.o \ + $(BUILDDIR)/game/g_utils.o \ + $(BUILDDIR)/game/g_weapon.o \ + $(BUILDDIR)/game/q_shared.o \ + $(BUILDDIR)/game/q_math.o + +$(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) : $(GAME_OBJS) + $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(GAME_OBJS) + +$(BUILDDIR)/game/b_ai.o : $(GAME_DIR)/b_ai.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/b_files.o : $(GAME_DIR)/b_files.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/b_items.o : $(GAME_DIR)/b_items.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/b_main.o : $(GAME_DIR)/b_main.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/b_nav.o : $(GAME_DIR)/b_nav.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/b_navgen.o : $(GAME_DIR)/b_navgen.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/bg_misc.o : $(GAME_DIR)/bg_misc.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/bg_pmove.o : $(GAME_DIR)/bg_pmove.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_active.o : $(GAME_DIR)/g_active.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_aim.o : $(GAME_DIR)/g_aim.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_client.o : $(GAME_DIR)/g_client.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_cmds.o : $(GAME_DIR)/g_cmds.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_combat.o : $(GAME_DIR)/g_combat.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_items.o : $(GAME_DIR)/g_items.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_main.o : $(GAME_DIR)/g_main.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_mem.o : $(GAME_DIR)/g_mem.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_misc.o : $(GAME_DIR)/g_misc.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_missile.o : $(GAME_DIR)/g_missile.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_mover.o : $(GAME_DIR)/g_mover.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_spawn.o : $(GAME_DIR)/g_spawn.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_svcmds.o : $(GAME_DIR)/g_svcmds.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_target.o : $(GAME_DIR)/g_target.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_team.o : $(GAME_DIR)/g_team.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_trigger.o : $(GAME_DIR)/g_trigger.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_utils.o : $(GAME_DIR)/g_utils.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/g_weapon.o : $(GAME_DIR)/g_weapon.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/game/q_shared.o : $(GAME_DIR)/q_shared.c + $(DO_SHLIB_DEBUG_CC) + +$(BUILDDIR)/game/q_math.o : $(GAME_DIR)/q_math.c + $(DO_SHLIB_CC) + +############################################################################# +# CGAME +############################################################################# + +CGAME_OBJS = \ + $(BUILDDIR)/cgame/bg_misc.o \ + $(BUILDDIR)/cgame/bg_pmove.o \ + $(BUILDDIR)/cgame/cg_draw.o \ + $(BUILDDIR)/cgame/cg_effects.o \ + $(BUILDDIR)/cgame/cg_ents.o \ + $(BUILDDIR)/cgame/cg_event.o \ + $(BUILDDIR)/cgame/cg_info.o \ + $(BUILDDIR)/cgame/cg_localents.o \ + $(BUILDDIR)/cgame/cg_main.o \ + $(BUILDDIR)/cgame/cg_marks.o \ + $(BUILDDIR)/cgame/cg_menu.o \ + $(BUILDDIR)/cgame/cg_players.o \ + $(BUILDDIR)/cgame/cg_predict.o \ + $(BUILDDIR)/cgame/cg_scoreboard.o \ + $(BUILDDIR)/cgame/cg_snapshot.o \ + $(BUILDDIR)/cgame/cg_view.o \ + $(BUILDDIR)/cgame/cg_weapons.o \ + $(BUILDDIR)/cgame/q_shared.o \ + $(BUILDDIR)/cgame/q_math.o + +$(BUILDDIR)/cgame$(ARCH).$(SHLIBEXT) : $(CGAME_OBJS) + $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(CGAME_OBJS) + +$(BUILDDIR)/cgame/bg_misc.o : $(GAME_DIR)/bg_misc.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/bg_pmove.o : $(GAME_DIR)/bg_pmove.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_draw.o : $(CGAME_DIR)/cg_draw.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_effects.o : $(CGAME_DIR)/cg_effects.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_ents.o : $(CGAME_DIR)/cg_ents.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_event.o : $(CGAME_DIR)/cg_event.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_info.o : $(CGAME_DIR)/cg_info.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_localents.o : $(CGAME_DIR)/cg_localents.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_main.o : $(CGAME_DIR)/cg_main.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_marks.o : $(CGAME_DIR)/cg_marks.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_menu.o : $(CGAME_DIR)/cg_menu.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_players.o : $(CGAME_DIR)/cg_players.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_predict.o : $(CGAME_DIR)/cg_predict.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_scoreboard.o : $(CGAME_DIR)/cg_scoreboard.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_snapshot.o : $(CGAME_DIR)/cg_snapshot.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_view.o : $(CGAME_DIR)/cg_view.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/cg_weapons.o : $(CGAME_DIR)/cg_weapons.c + $(DO_SHLIB_CC) + +$(BUILDDIR)/cgame/q_shared.o : $(GAME_DIR)/q_shared.c + $(DO_SHLIB_DEBUG_CC) + +$(BUILDDIR)/cgame/q_math.o : $(GAME_DIR)/q_math.c + $(DO_SHLIB_CC) + + +############################################################################# +# RPM +############################################################################# + +###### DISABLED + +TMPDIR=/var/tmp +TARDIR=$(TMPDIR)/q3test +TARFILE = q3test-$(VERSION_FN)-$(RPM_RELEASE).$(ARCH).tar + +tar: + if [ ! -d archives ];then mkdir archives;chmod 755 archives;fi + $(MAKE) copyfiles COPYDIR=$(TARDIR) + cd $(TARDIR)/..; tar cvf $(TARFILE) q3test && gzip -9 $(TARFILE) + mv $(TARDIR)/../$(TARFILE).gz archives/. + chmod 644 archives/$(TARFILE).gz + rm -rf $(TARDIR) + +# Make RPMs. You need to be root to make this work +RPMROOT=/usr/src/redhat +RPM = rpm +RPMFLAGS = -bb +INSTALLDIR = /usr/local/games/q3test +RPMDIR = $(TMPDIR)/q3test-$(VERSION_FN) +DESTDIR= $(RPMDIR)/$(INSTALLDIR) + +rpm: q3test.spec + touch $(RPMROOT)/SOURCES/q3test-$(VERSION_FN).tar.gz + if [ ! -d archives ];then mkdir archives;fi + $(MAKE) copyfiles COPYDIR=$(DESTDIR) + cp $(UNIX_DIR)/quake3.gif $(RPMROOT)/SOURCES/. + cp q3test.spec $(RPMROOT)/SPECS/. + cd $(RPMROOT)/SPECS; $(RPM) $(RPMFLAGS) q3test.spec + rm -rf $(RPMDIR) + mv $(RPMROOT)/RPMS/$(RPMARCH)/q3test-$(VERSION_FN)-$(RPM_RELEASE).$(RPMARCH).rpm archives/q3test-$(VERSION_FN)-$(RPM_RELEASE).$(RPMARCH).rpm + chmod 644 archives/q3test-$(VERSION_FN)-$(RPM_RELEASE).$(RPMARCH).rpm + +copyfiles: + -mkdirhier $(COPYDIR) + cp $(BUILD_RELEASE_DIR)/linuxquake3 $(COPYDIR) + strip $(COPYDIR)/linuxquake3 + chmod 755 $(COPYDIR)/linuxquake3 + cp $(BUILD_RELEASE_DIR)/qagame$(ARCH).$(SHLIBEXT) $(COPYDIR) + chmod 755 $(COPYDIR)/qagame$(ARCH).$(SHLIBEXT) + cp $(BUILD_RELEASE_DIR)/cgame$(ARCH).$(SHLIBEXT) $(COPYDIR) + chmod 755 $(COPYDIR)/cgame$(ARCH).$(SHLIBEXT) + cp $(BUILD_DIR)/libMesaVoodooGL.so.3.1 $(COPYDIR)/. + chmod 755 $(COPYDIR)/libMesaVoodooGL.so.3.1 + -mkdir $(COPYDIR)/demoq3 + chmod 1777 $(COPYDIR)/demoq3 + cp $(DEMO_PAK) $(COPYDIR)/demoq3/pak0.pk3 + cp $(UNIX_DIR)/README.EULA $(COPYDIR) + chmod 644 $(COPYDIR)/README.EULA + cp $(UNIX_DIR)/README.Q3Test $(COPYDIR) + chmod 644 $(COPYDIR)/README.Q3Test + +q3test.spec : $(UNIX_DIR)/q3test.spec.sh Makefile + sh $< $(VERSION_FN) $(RPM_RELEASE) $(ARCH) $(INSTALLDIR) > $@ + +############################################################################# +# MISC +############################################################################# + +clean: clean-debug clean-release + +clean-debug: + $(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" + +clean-release: + $(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)" + diff --git a/code/unix/matha.s b/code/unix/matha.s new file mode 100644 index 0000000..73174ee --- /dev/null +++ b/code/unix/matha.s @@ -0,0 +1,402 @@ +// +// math.s +// x86 assembly-language math routines. + +#define GLQUAKE 1 // don't include unneeded defs +#include "qasm.h" + + +#if id386 + + .data + + .align 4 +Ljmptab: .long Lcase0, Lcase1, Lcase2, Lcase3 + .long Lcase4, Lcase5, Lcase6, Lcase7 + + .text + +// TODO: rounding needed? +// stack parameter offset +#define val 4 + +.globl C(Invert24To16) +C(Invert24To16): + + movl val(%esp),%ecx + movl $0x100,%edx // 0x10000000000 as dividend + cmpl %edx,%ecx + jle LOutOfRange + + subl %eax,%eax + divl %ecx + + ret + +LOutOfRange: + movl $0xFFFFFFFF,%eax + ret + +#if 0 + +#define in 4 +#define out 8 + + .align 2 +.globl C(TransformVector) +C(TransformVector): + movl in(%esp),%eax + movl out(%esp),%edx + + flds (%eax) // in[0] + fmuls C(vright) // in[0]*vright[0] + flds (%eax) // in[0] | in[0]*vright[0] + fmuls C(vup) // in[0]*vup[0] | in[0]*vright[0] + flds (%eax) // in[0] | in[0]*vup[0] | in[0]*vright[0] + fmuls C(vpn) // in[0]*vpn[0] | in[0]*vup[0] | in[0]*vright[0] + + flds 4(%eax) // in[1] | ... + fmuls C(vright)+4 // in[1]*vright[1] | ... + flds 4(%eax) // in[1] | in[1]*vright[1] | ... + fmuls C(vup)+4 // in[1]*vup[1] | in[1]*vright[1] | ... + flds 4(%eax) // in[1] | in[1]*vup[1] | in[1]*vright[1] | ... + fmuls C(vpn)+4 // in[1]*vpn[1] | in[1]*vup[1] | in[1]*vright[1] | ... + fxch %st(2) // in[1]*vright[1] | in[1]*vup[1] | in[1]*vpn[1] | ... + + faddp %st(0),%st(5) // in[1]*vup[1] | in[1]*vpn[1] | ... + faddp %st(0),%st(3) // in[1]*vpn[1] | ... + faddp %st(0),%st(1) // vpn_accum | vup_accum | vright_accum + + flds 8(%eax) // in[2] | ... + fmuls C(vright)+8 // in[2]*vright[2] | ... + flds 8(%eax) // in[2] | in[2]*vright[2] | ... + fmuls C(vup)+8 // in[2]*vup[2] | in[2]*vright[2] | ... + flds 8(%eax) // in[2] | in[2]*vup[2] | in[2]*vright[2] | ... + fmuls C(vpn)+8 // in[2]*vpn[2] | in[2]*vup[2] | in[2]*vright[2] | ... + fxch %st(2) // in[2]*vright[2] | in[2]*vup[2] | in[2]*vpn[2] | ... + + faddp %st(0),%st(5) // in[2]*vup[2] | in[2]*vpn[2] | ... + faddp %st(0),%st(3) // in[2]*vpn[2] | ... + faddp %st(0),%st(1) // vpn_accum | vup_accum | vright_accum + + fstps 8(%edx) // out[2] + fstps 4(%edx) // out[1] + fstps (%edx) // out[0] + + ret + +#endif + +#define EMINS 4+4 +#define EMAXS 4+8 +#define P 4+12 + + .align 2 +.globl C(BoxOnPlaneSide) +C(BoxOnPlaneSide): + pushl %ebx + + movl P(%esp),%edx + movl EMINS(%esp),%ecx + xorl %eax,%eax + movl EMAXS(%esp),%ebx + movb pl_signbits(%edx),%al + cmpb $8,%al + jge Lerror + flds pl_normal(%edx) // p->normal[0] + fld %st(0) // p->normal[0] | p->normal[0] + jmp Ljmptab(,%eax,4) + + +//dist1= p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +//dist2= p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +Lcase0: + fmuls (%ebx) // p->normal[0]*emaxs[0] | p->normal[0] + flds pl_normal+4(%edx) // p->normal[1] | p->normal[0]*emaxs[0] | + // p->normal[0] + fxch %st(2) // p->normal[0] | p->normal[0]*emaxs[0] | + // p->normal[1] + fmuls (%ecx) // p->normal[0]*emins[0] | + // p->normal[0]*emaxs[0] | p->normal[1] + fxch %st(2) // p->normal[1] | p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fld %st(0) // p->normal[1] | p->normal[1] | + // p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fmuls 4(%ebx) // p->normal[1]*emaxs[1] | p->normal[1] | + // p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + flds pl_normal+8(%edx) // p->normal[2] | p->normal[1]*emaxs[1] | + // p->normal[1] | p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fxch %st(2) // p->normal[1] | p->normal[1]*emaxs[1] | + // p->normal[2] | p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fmuls 4(%ecx) // p->normal[1]*emins[1] | + // p->normal[1]*emaxs[1] | + // p->normal[2] | p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fxch %st(2) // p->normal[2] | p->normal[1]*emaxs[1] | + // p->normal[1]*emins[1] | + // p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fld %st(0) // p->normal[2] | p->normal[2] | + // p->normal[1]*emaxs[1] | + // p->normal[1]*emins[1] | + // p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fmuls 8(%ebx) // p->normal[2]*emaxs[2] | + // p->normal[2] | + // p->normal[1]*emaxs[1] | + // p->normal[1]*emins[1] | + // p->normal[0]*emaxs[0] | + // p->normal[0]*emins[0] + fxch %st(5) // p->normal[0]*emins[0] | + // p->normal[2] | + // p->normal[1]*emaxs[1] | + // p->normal[1]*emins[1] | + // p->normal[0]*emaxs[0] | + // p->normal[2]*emaxs[2] + faddp %st(0),%st(3) //p->normal[2] | + // p->normal[1]*emaxs[1] | + // p->normal[1]*emins[1]+p->normal[0]*emins[0]| + // p->normal[0]*emaxs[0] | + // p->normal[2]*emaxs[2] + fmuls 8(%ecx) //p->normal[2]*emins[2] | + // p->normal[1]*emaxs[1] | + // p->normal[1]*emins[1]+p->normal[0]*emins[0]| + // p->normal[0]*emaxs[0] | + // p->normal[2]*emaxs[2] + fxch %st(1) //p->normal[1]*emaxs[1] | + // p->normal[2]*emins[2] | + // p->normal[1]*emins[1]+p->normal[0]*emins[0]| + // p->normal[0]*emaxs[0] | + // p->normal[2]*emaxs[2] + faddp %st(0),%st(3) //p->normal[2]*emins[2] | + // p->normal[1]*emins[1]+p->normal[0]*emins[0]| + // p->normal[0]*emaxs[0]+p->normal[1]*emaxs[1]| + // p->normal[2]*emaxs[2] + fxch %st(3) //p->normal[2]*emaxs[2] + + // p->normal[1]*emins[1]+p->normal[0]*emins[0]| + // p->normal[0]*emaxs[0]+p->normal[1]*emaxs[1]| + // p->normal[2]*emins[2] + faddp %st(0),%st(2) //p->normal[1]*emins[1]+p->normal[0]*emins[0]| + // dist1 | p->normal[2]*emins[2] + + jmp LSetSides + +//dist1= p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +//dist2= p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +Lcase1: + fmuls (%ecx) // emins[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ebx) // emaxs[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ebx) // emaxs[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ecx) // emins[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ebx) // emaxs[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ecx) // emins[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + + jmp LSetSides + +//dist1= p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +//dist2= p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +Lcase2: + fmuls (%ebx) // emaxs[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ecx) // emins[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ecx) // emins[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ebx) // emaxs[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ebx) // emaxs[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ecx) // emins[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + + jmp LSetSides + +//dist1= p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +//dist2= p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +Lcase3: + fmuls (%ecx) // emins[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ebx) // emaxs[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ecx) // emins[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ebx) // emaxs[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ebx) // emaxs[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ecx) // emins[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + + jmp LSetSides + +//dist1= p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +//dist2= p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +Lcase4: + fmuls (%ebx) // emaxs[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ecx) // emins[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ebx) // emaxs[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ecx) // emins[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ecx) // emins[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ebx) // emaxs[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + + jmp LSetSides + +//dist1= p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +//dist2= p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +Lcase5: + fmuls (%ecx) // emins[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ebx) // emaxs[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ebx) // emaxs[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ecx) // emins[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ecx) // emins[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ebx) // emaxs[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + + jmp LSetSides + +//dist1= p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +//dist2= p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +Lcase6: + fmuls (%ebx) // emaxs[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ecx) // emins[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ecx) // emins[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ebx) // emaxs[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ecx) // emins[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ebx) // emaxs[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + + jmp LSetSides + +//dist1= p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +//dist2= p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +Lcase7: + fmuls (%ecx) // emins[0] + flds pl_normal+4(%edx) + fxch %st(2) + fmuls (%ebx) // emaxs[0] + fxch %st(2) + fld %st(0) + fmuls 4(%ecx) // emins[1] + flds pl_normal+8(%edx) + fxch %st(2) + fmuls 4(%ebx) // emaxs[1] + fxch %st(2) + fld %st(0) + fmuls 8(%ecx) // emins[2] + fxch %st(5) + faddp %st(0),%st(3) + fmuls 8(%ebx) // emaxs[2] + fxch %st(1) + faddp %st(0),%st(3) + fxch %st(3) + faddp %st(0),%st(2) + +LSetSides: + +// sides = 0; +// if (dist1 >= p->dist) +// sides = 1; +// if (dist2 < p->dist) +// sides |= 2; + + faddp %st(0),%st(2) // dist1 | dist2 + fcomps pl_dist(%edx) + xorl %ecx,%ecx + fnstsw %ax + fcomps pl_dist(%edx) + andb $1,%ah + xorb $1,%ah + addb %ah,%cl + + fnstsw %ax + andb $1,%ah + addb %ah,%ah + addb %ah,%cl + +// return sides; + + popl %ebx + movl %ecx,%eax // return status + + ret + + +Lerror: + movl 1, %eax + ret + +#endif // id386 diff --git a/code/unix/q3test.spec.sh b/code/unix/q3test.spec.sh new file mode 100644 index 0000000..a50e1f6 --- /dev/null +++ b/code/unix/q3test.spec.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# Generate Quake3 test +# $1 is version +# $2 is release +# $3 is arch +# $4 is install dir (assumed to be in /var/tmp) +cat < +URL: http://www.idsoftware.com/ +Source: q3test-%{version}.tar.gz +Group: Games +Copyright: Restricted +Icon: quake3.gif +BuildRoot: /var/tmp/%{name}-%{version} +Summary: Q3Test for Linux + +%description + +%install + +%files + +%attr(644,root,root) $4/README.EULA +%attr(644,root,root) $4/README.Q3Test +%attr(755,root,root) $4/linuxquake3 +%attr(755,root,root) $4/cgamei386.so +%attr(755,root,root) $4/qagamei386.so +%attr(755,root,root) $4/libMesaVoodooGL.so.3.1 +%attr(644,root,root) $4/demoq3/pak0.pk3 + +EOF + diff --git a/code/unix/quake3.gif b/code/unix/quake3.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e7a01cee0fdaab8ba941cec08f5806957c56f07 GIT binary patch literal 1378 zcmeIx`%fHI6bJBGb{BS`zz&Zxv^-{7i!7m*wOAM+b$5gO|u~lvh)W7HC0Gd>h*u{N5A>x z=A3iSPdB*->b&K2kiN1sEFm7=R{z#1B{&a2()yAPA6fKnfwClY%ZMq+O7vAwxqS1ARW|NBodw zA!-%0GhQwB*(bX6dTU|v~*O7H({W0U+E%u2Rn}L#;{@x<=;<&**39!x_hQ}Y_iXsu%oKIF*rSt zlv}}$_Xn9iM|MZfM&a;QCdu{I@r^>xThnyEy7-$f7rkP#J-c&ccC7ZJ)IHZ{77}ir zAFVigCa3$*Vou((3Hyq&11kpyI$sW%I)oT=t~&Qq)4Ub`;e)b-r+(hKe5>Y^b^6^2 zruMSib8PJi|BWYSN1q$K8eNLJRM#Tsq<_)G9BCcg-?hBdY*`@Brc`WJ&D>b|@FLzt z(71cwpDSOvy@QJx!({&)wauI+miw*Aa%J})YjqHslghxOg-av-H-~Y1 z+HB$bHNSmQkhRrj!xkq@w!9rzAIy7d?5PgNW@9SZV~Q_m_*iZVY@6R+T;?xtpKCR3 zo8$lf^f@|YQaNgn>5qI&Pz zI^bWp*HRQ%oJ!0n?3wO;uV;3)*?ztBbYA|oRwkiX`W(aimLA=0!+$l!CGB-jOxe>m ze!tT|rDcR{<@b(Z`2NN<%k$0n>xak^2W5$?t`GKR1%lR*nl1LHne^%{ZcAoiXp*>C zdO7n)`{Cmr3~#yD>h&~zJG1OLd1vlBBKbvAeEMrJLpj&JE9lM1XvMu*Z+=~Rp(U;J zp*Mf;iJ+ccL@NbK{ok$uvV;*I4v^z-cb)w#4rfBd8zobr!@+0bUy#hZZa+A9=6-X) T6LKh5hK6zz)zMQH3s(6LlNBB6 literal 0 HcmV?d00001 diff --git a/code/unix/snd_mixa.s b/code/unix/snd_mixa.s new file mode 100644 index 0000000..d6c2945 --- /dev/null +++ b/code/unix/snd_mixa.s @@ -0,0 +1,197 @@ +// +// snd_mixa.s +// x86 assembly-language sound code +// + +#include "qasm.h" + +#if id386 + + .text + +#if 0 +//---------------------------------------------------------------------- +// 8-bit sound-mixing code +//---------------------------------------------------------------------- + +#define ch 4+16 +#define sc 8+16 +#define count 12+16 + +.globl C(S_PaintChannelFrom8) +C(S_PaintChannelFrom8): + pushl %esi // preserve register variables + pushl %edi + pushl %ebx + pushl %ebp + +// int data; +// short *lscale, *rscale; +// unsigned char *sfx; +// int i; + + movl ch(%esp),%ebx + movl sc(%esp),%esi + +// if (ch->leftvol > 255) +// ch->leftvol = 255; +// if (ch->rightvol > 255) +// ch->rightvol = 255; + movl ch_leftvol(%ebx),%eax + movl ch_rightvol(%ebx),%edx + cmpl $255,%eax + jna LLeftSet + movl $255,%eax +LLeftSet: + cmpl $255,%edx + jna LRightSet + movl $255,%edx +LRightSet: + +// lscale = snd_scaletable[ch->leftvol >> 3]; +// rscale = snd_scaletable[ch->rightvol >> 3]; +// sfx = (signed char *)sc->data + ch->pos; +// ch->pos += count; + andl $0xF8,%eax + addl $20,%esi + movl (%esi),%esi + andl $0xF8,%edx + movl ch_pos(%ebx),%edi + movl count(%esp),%ecx + addl %edi,%esi + shll $7,%eax + addl %ecx,%edi + shll $7,%edx + movl %edi,ch_pos(%ebx) + addl $(C(snd_scaletable)),%eax + addl $(C(snd_scaletable)),%edx + subl %ebx,%ebx + movb -1(%esi,%ecx,1),%bl + + testl $1,%ecx + jz LMix8Loop + + movl (%eax,%ebx,4),%edi + movl (%edx,%ebx,4),%ebp + addl C(paintbuffer)+psp_left-psp_size(,%ecx,psp_size),%edi + addl C(paintbuffer)+psp_right-psp_size(,%ecx,psp_size),%ebp + movl %edi,C(paintbuffer)+psp_left-psp_size(,%ecx,psp_size) + movl %ebp,C(paintbuffer)+psp_right-psp_size(,%ecx,psp_size) + movb -2(%esi,%ecx,1),%bl + + decl %ecx + jz LDone + +// for (i=0 ; i>8; +// if (val > 0x7fff) +// snd_out[i] = 0x7fff; +// else if (val < (short)0x8000) +// snd_out[i] = (short)0x8000; +// else +// snd_out[i] = val; + movl -8(%ebx,%ecx,4),%eax + sarl $8,%eax + cmpl $0x7FFF,%eax + jg LClampHigh + cmpl $0xFFFF8000,%eax + jnl LClampDone + movl $0xFFFF8000,%eax + jmp LClampDone +LClampHigh: + movl $0x7FFF,%eax +LClampDone: + +// val = (snd_p[i+1]*snd_vol)>>8; +// if (val > 0x7fff) +// snd_out[i+1] = 0x7fff; +// else if (val < (short)0x8000) +// snd_out[i+1] = (short)0x8000; +// else +// snd_out[i+1] = val; + movl -4(%ebx,%ecx,4),%edx + sarl $8,%edx + cmpl $0x7FFF,%edx + jg LClampHigh2 + cmpl $0xFFFF8000,%edx + jnl LClampDone2 + movl $0xFFFF8000,%edx + jmp LClampDone2 +LClampHigh2: + movl $0x7FFF,%edx +LClampDone2: + shll $16,%edx + andl $0xFFFF,%eax + orl %eax,%edx + movl %edx,-4(%edi,%ecx,2) + +// } + subl $2,%ecx + jnz LWLBLoopTop + +// snd_p += snd_linear_count; + + popl %ebx + popl %edi + + ret + + +#endif // id386 + diff --git a/code/unix/sys_dosa.s b/code/unix/sys_dosa.s new file mode 100644 index 0000000..cc29312 --- /dev/null +++ b/code/unix/sys_dosa.s @@ -0,0 +1,94 @@ +// +// sys_dosa.s +// x86 assembly-language DOS-dependent routines. + +#include "qasm.h" + + + .data + + .align 4 +fpenv: + .long 0, 0, 0, 0, 0, 0, 0, 0 + + .text + +.globl C(MaskExceptions) +C(MaskExceptions): + fnstenv fpenv + orl $0x3F,fpenv + fldenv fpenv + + ret + +#if 0 +.globl C(unmaskexceptions) +C(unmaskexceptions): + fnstenv fpenv + andl $0xFFFFFFE0,fpenv + fldenv fpenv + + ret +#endif + + .data + + .align 4 +.globl ceil_cw, single_cw, full_cw, cw, pushed_cw +ceil_cw: .long 0 +single_cw: .long 0 +full_cw: .long 0 +cw: .long 0 +pushed_cw: .long 0 + + .text + +.globl C(Sys_LowFPPrecision) +C(Sys_LowFPPrecision): + fldcw single_cw + + ret + +.globl C(Sys_HighFPPrecision) +C(Sys_HighFPPrecision): + fldcw full_cw + + ret + +.globl C(Sys_PushFPCW_SetHigh) +C(Sys_PushFPCW_SetHigh): + fnstcw pushed_cw + fldcw full_cw + + ret + +.globl C(Sys_PopFPCW) +C(Sys_PopFPCW): + fldcw pushed_cw + + ret + +.globl C(Sys_SetFPCW) +C(Sys_SetFPCW): + fnstcw cw + movl cw,%eax +#if id386 + andb $0xF0,%ah + orb $0x03,%ah // round mode, 64-bit precision +#endif + movl %eax,full_cw + +#if id386 + andb $0xF0,%ah + orb $0x0C,%ah // chop mode, single precision +#endif + movl %eax,single_cw + +#if id386 + andb $0xF0,%ah + orb $0x08,%ah // ceil mode, single precision +#endif + movl %eax,ceil_cw + + ret + diff --git a/code/unix/vssver.scc b/code/unix/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..d8a9f55b375abeca83d3bdc5523c916403074aa7 GIT binary patch literal 272 zcmXpJVr2M{@S`hK$I`7OuF1e)tTp3zB>TZ2MxY1>kpEOb z-CT3wLNK2b$lq~vueSI5-C#Z!kpJqi`VMCAa4?@6$mf#gl(Rfs2j=qt`KC@GtezKy z!F*mI-&xsJM|i3^n9m2~yCnvE`zdiM6l5PikY5rexNUv&12A6z$iJv|>hDyu?_j{3@~35$iMaQ L`zb?TMlc@${p&)V literal 0 HcmV?d00001 diff --git a/code/vssver.scc b/code/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..43c6185b3d0880720bacdcf554ef00096f61e7e3 GIT binary patch literal 208 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

rbcCSs(?A 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

6w&Mpk?3u`kG3bIsSo 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 literal 0 HcmV?d00001 diff --git a/code/win32/clear.bmp b/code/win32/clear.bmp new file mode 100644 index 0000000000000000000000000000000000000000..14516380f383bc87c4b5940113cc160b5b0afed4 GIT binary patch literal 5174 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 literal 0 HcmV?d00001 diff --git a/code/win32/feelit/FFC10.dll b/code/win32/feelit/FFC10.dll new file mode 100644 index 0000000000000000000000000000000000000000..0536f23bd32a58b9a7eed9c85fc223026b60f629 GIT binary patch literal 126976 zcmeFa4}4U`)jxbUxk)atAq#A9)u@ZE8YS9jVhslDhWsHQ#7#mrAdt|CHm0Z%cNJ?$ zLzgI*aV@pB)z-F9wY87^L#urrY%5I&vcx|KXj`aYu~j>Cv5kd7(8#{uGjs3VyG!7) z)%SgWzt2Z>bMKuybLPyMGv}O{Idkru>((lnilV6aB@&9V5m)->7k^LvXFpz#J?B?r zm8VC&G-;z__DhrIw%v5Qw`19@pI`Rbo4wb6_Lf_24S7FzgLhf@7Vk~Bc&n~$^xk~y zk{d3~%^mGCKsP;;ecQO*ZReW52e#aJu4+6_5Z9Z|t-|&8*xlz&#PwM0bLV!5>-Fb4 zasAQjx18$|&r8L%;il``2$qR?pjuI8JF=Aaoxi`*Oxv%FoixUgtteiHqU?~VvUAE-2q0cJHy3Zq>+TLMY zli7$D{FlmXO53OKVjc2%jVmtZKfj{%Ub^h|W!ED?v=wa@b@t+F`{yTk%WhbDD>9bm z_;u=A6w<{w-k&P=vlfKjl0PYk3tU^nnAnOaV z**>i~+TmpNsvb~Ty`~4WXuXr&<juyR=r;;M9XoHnTvlEr=;oLHCx; zY6|qVYyVStCZxtS3w;_o{YZaCXfmrAZjN>hx9$J5;tI5TgZzs>P?RJ6j?k!Pz67_C zEh>w(wk!Y^Y&-wC&v+T+GmMv8#k*v00>6sosqL@wsgb^gLAHZkreDr(Q}tykyG_%V zX)SD~Q=jEbYvD#(09Pyu~4s_&1MDk+5nq1SFfGR zX3f)U=S62NWM5ne!rmnadzU0EYN~UxSxfcWrEFG*UfaQDh4k7Go3&i8UCtUh^+0D# znKu%_8yV;&5V+lrz$?+(*^_r{q7@)Eb+kSu(x=vi{}rvBYb1@clCD`84J>RuN#j}L zQa!MgT_aFx4C#RoyGEeYNGK8A?frGB*O`2Ym)6ZUZ%A_$U+#M&!~X)+jUnsTqV7Se%RWQ_h7HVga4<|horGN zmTBC5Jp5_&VA=?cKGhAf$YFX4P8Hn=c12$@(U&dyYPu5pt{t)eyjWf}`!DDFR{y=b zKE40CjwKR89tHWU#>=$+YitUZyw=Q)HS+1-0j?om0XU%iklw24t?BV84&>N`qLZ^#wk zbBpjgk07WI$49rT{FO%pz{>L1JNH-sOM1%>b&X-C`OCNJ3%@+v`7i5@DI+0zS&a&q z{^pWIPj8o(Wi#i-o`Fyv8`thgjAz*~m58Sx*NpO^&i!m`J>R`f)D^>$HO5E{F{{$b zYBY)3uhz-8H5#R-DR8JU)Yh3>UZJkg*eIs1M6UpSw?x0hgd#1`H8Whu8cr9G2BW6#@dUR(!??n^Y4l27#4{9i$!5hJpmNiN{;ANP)*mOhq^8&G2m$;{*{o`rm|n22#?MCrb**IIdk6>y&n1zrj?D0dEY}aoAFWxa*DYlERk$ZREw`3# zYBiQWTckLdz@s)YlzHc*gs3PEHj2exH6FGb#kV3ctd{qMo(hieZ0U2DJ&Kf7YhJM#A&TOXzt;UVzWA z*CcreecPVJFSWl|do?g_!|%)Zy@nqVOz=OEEE8ERl1%`~{`pNiOFI?zpHVHciF!{B zO#nr{mkyG~*FsDvI(?pYrKzzw+1M)ViJ|Xu#CURoCsvX@-wn$ADU`L*kNe06iBM+u zi;e(DaR;O`NHIRZr>0er9HvgeAf`NWBcIjW@n~*lvLFrVkJ#Gr)c@bG2q+*f#1QPH zNkwD3(%kM9vm4-k9e5rs%_ixjSq(KC`F^sIU!5!(IWEAPQz5suSdvKgC&{xCZK|ha zn)dku^$m?dvp-+vPrF1bWqXU|32COro5kkj4AZVNGa+4 zNc34~qYv@8NuNeZpFn+6yAm{6;AQ^JJR5PmN#dAGAGDLj zt0c*C;`~=5n>RTX4>Tn2)9(2FA0!f_MUwv@#Wcti7VtOs>|*bR-ED8KbGQ=uTCu~0 zN=tf)$)j}(qg`6bYq2Vy2YjKhi}X*in^gT)mEEN2w`yc^Uh8DFMZcxlVEN18%b35I z(I`>b%kc$~AvHXP{qY%^eUew#41?r)W|VU_*~XjDvbLhez%LQP(oR(T8*Dc z6?>_4Z#*w@tT;UNnM^!Iuk)}N>HJ3GU@yB_3p6*>v+epV9sFsHNEtdC?Q^s30lwt| zm|)V1Z1bO3y+shxZ5WM@KY&(tLI8k+p@-NEs13cQBXl{mN%#_$Zz`amZRq6-1r#t9 z(ET)A^?(x~XvM@0!z{mNS9lyusTqJSv>Vi-OX(TdNUaHHZ6pFAOO_B14Td@)dHHsZ zV7M%izZnVtI-i<@!Un$o`l^Mm_oLzqa|1m`czzF1O+4LXU_uy*B^#(Z7@5FhP7*P< zLWnJth*^s)27XOR{5~>0llUdpCh>DA61M_e+Pwm~4Y0q_k|foB>ocfkb@y5Wzh459 z(ce=)I{k`3szPE(K`fFXUcsT(V=X;mA*9OZuWx8~Q5RQ^v5+kmlpHUSEw+!=wS;e{ z&xuLNY+vz5;z}&~0ftZs7Fuao`Wpi6O1(kMM@L)u6$<>8!Gr?~7N+7CIjEKN!l;{4 zvph^%Y~fdoE^3Kv(I85u2(vJBDGXdParMamdI(v))_TaA4R~tRSJQ>95k~K7`YRVo%ykm7ddUWk z9P|)lG_tcELCVH0qZFkn2ts)AD=2wqBQ1cI9BF3L9wL4EJ4(gR0|Dq>0-*X*pDS9iPJP(%5`wq)&_VYVpYuYWzIbVN?+Jur~8H*IrcM&`Ym?Lvhcpyq;hpkw8B} zwuFfDiULhMaVU`>p&Z%b>2E7qpQ?8#vFDx81j-w1;)ni~%xka%QL-S|*i8IeOrxx< z0Sq$RH=A!gYRjBB{{qETieDvu4fuT)zb^bbj4R#WgWp&2dj!9vbb!6RCb|A^Wg zkz5Zs3dvzC!M=f85*}EtFqUA)qJhSG$QI*e+Ik33$9zhzXBA`K!Ujur9r|JDHkm?d z#z<+EDS>3l9GS8>nNluOI+7_D$&~J7%4uv+rmaO9t)7KQKB|f_mzA@|Bn2V|-DDoT z+bpJDZZ^#czHC<#e`t3wp7;aX9oJw{N((dSVKr6kdE(c|8{W`atY$8Zyqv5+jiSVz z)9BKrWo>vSkeRv;?{>hv1qKIA~S=Q>LTIn6GMYtC3Lq)p>_Ac=i z?s;QR-|px4W^JR&-h2JnzCCzXxEBjsdofn`p4E%=KkYxV#SzNbv%e=1%I+Chfjj;_ z1S6X00srd`i~zT^%bM81$eTlvgGG%&7WTm69&BcNLK+*3=6T~JGQDg?LHQ7pP7|Y> zl6>WZ;nT~9!uinIaoy613)owWHhUEI0{=9039ELN>~dz54Cs}f$hL%DS*TYQuxd?j z^iBf}yJM9;5?#D^^LahsZlSUTfUPDre)p z607ukaAC1{8D5Yh=sXiI!Tr-!9F)~*%E(DxfDUo z(Ae@UF$(}8yJcPv8@2KnZoBa=m!?Z-AA5+3e2qvQc~1?W&Z=Fqc&1)CmsPvvLvCCX zCLz-F%6U-%Fnaq!^t?;2tdhf-ga-}ha4Cz>z`#Jdm_VK{%tA zBSQ|P6^CnBWoe{L31`zth^zQp%$-rdzzAi7%n?<)t^fP>XFYuM_$7k#9HNmBo|11P zcl(Qh6A|e4(#X}R@P32N6!3;dfR`}fiIv+FGD_Z2?e*+QpoN}2eS2Y&VcZw)IkY!-KZv#W3KBznJgTG&QWT&Ir8F2V z3hgHVd-E+Jk+(r`!HJ2U-G=Z(C3}}{KF-iCvVOq z0qLeb*qy%{l~NV{(D`j`(5d@&%h}w%EUJZOQUI>tTA(O{pNU^hUAdjC_p#BTsUQ)5LA7K6FxL4wb2WP89N zvq854B-PSt>k`r_cOPB*0!k z+X8y0Z!RpcLfn_(ek!kdFM-X0@Mvkw6mKq49$D zl?ZZI+t!yhBLUV*Nw1g|V|r)E1apB86mkdZ8=J8x#9rcCAn(yaxgO-EWiKhBbLBdp zvGTFHo|gO~ojzXzsoeoU`XcyGuKoDaFaRQgNDFLx^aB4qz<&ba zUunZXBc-&9@b{vN#p0yEy{TC&+CakP*pYW7k(UdTMhgh(59}y=4U}KtvC~YHqhGcY z&4u1GQ8pYML!MA!$<{5xAWUj8Az(OkdB561KZxf&zgw2 z4W2Cyknko-cm*g?%d8kqyw zw9#ukgqu(`de9rIk#;~`p&l#>O~A^w(-_{)?!GrN^*S0&9;ukJb-|HHa0v2EdT^><=hthhM7N7}BakbfQ*V?I)kTX2ePKJq$d z)y90J)OeXTAF=PRliW$)UnhA)a}a*$Elkj}J(pvGVwXWN2PGZIe>;&76eP|I=d%|=)EN9T4!5cNbM|qIe-6ViqnD@PAL5gA{$YJ31JYMY zuT`;I2iK{T{m7Vu{HT&i?TNOU$qv_&^Vb83>snB zgvPLKyru;bZZMuvas+DK2aV?KIYJq*1d#|$ZdaQdAs)xIlKc(1X?Jn~B&)hahmNII zx%yc)=C|7uuJ&SXG!(V?WGzr8im0VK)2zh?{gQSpL<;zC;Ppx2PZaRSqgq%5SY@}> zZAcz@f#y5CQ&3vS$jx$BESUw&sxn7IB4F(IBL9KAZTZvv(FBwvdDnu$)nK$%#ns6! ziw2xJ9N%nSUs&3Y`RPm=v?jd2$eSQpIqq0Rp$!^67o|S``~GzG1$w~nr(^Zr7Cqo) z^*%k|WA%l4ppeZh(rb%iN*Nd${QMvI*9rK5JR;yU@t-1ZE&n@zImSzSage{)Wet`$ zahp0=z6z=t!Zv2SOdBkMe%@4iRrpe$>wP7?SU&rDuT1_=+bhSMNza)+z19~~=1Lmc zJM=$=Z_rZ!w$soqZ!G$)`#RCDFvx$k!lK_}xJ{+s&#$xScdzmCMEa3E^8~b7NpCEh zSVFHU)N6|L8lPSROGd*GOtq0APv)H{PXGnByedIJP`FS`;ob}s-cFAsH~42!4aTe1 zVjrvZ!a$`hqh-sHJDZxYJrVG9UyNa6I7FVKiS|Blw?FKPm5V*+k z<+T+P8u`U16v}B^yb%n;v_yRo08a|=Y~*1%L~D?wL5t;3f58@qAf?vArv^H_eH0J^ zGNmXpCct;yA!ri6faQql&>l+uwUM01CZgjS;NO$i(*ZR{xlrK=uuA!DP6vBo~YA{6xk@fs|bX~+p$x+unjKW!pXHz^e>Wg(Wh?osXmQ5T<`MgT|T%N zw;J<0lJBUaq_;ViO%AVm%~HK4q}MEGS7BFH?}GQNs^29%lCe?`hvb@09lpxgPXZ6y z{BBINV-A9HpvRma0ycQ}zr)CE_rG}@2_P@|-(b&zyl!$ar_z`f1VMfAG2+36hXyam zm>=LFSwOnH$zq04pQ?dmeKqOzU6HKMOTIEa*kPx!hUPml*A&ZUVQuAm=;rRwd923c zbjd_aUW9iE<{5Q!jrW;)a2^U9IYMWWhfWseE%CglQ;A+Yc3B^r!hRv{4_6KakaQ56}Ot zmfr&M+k72P%*&s|*tKn9VE+O|#7+?`I5Kl+r_G6FAF9@e9W*5X39q_|hL~z_Y{P={ z-M0C~i1h`MRf{`*9-%1hkr0-XlFskZT6mOe=?>+FmoC`50ru(z*r~=Y3~Z~UJ~?-p z=yI{9fuRUYY5NoFC!a(5P)`EFcntpliwJmW3VL{bAsg0VLs;vFB>Vd2$Yy7JE<1;1 z!{SW@$h}T&&xu#ES0FuDhVEd~RlP!G(>1+9BjP}W^z=f4gfp=6LgP zDCRo)$1`_D{_LFIz*ow;*-Op*0^nqdUnh2lU*c|=A~+o~*)m&=@sFY@{CI>qTiF%J5PFeQ+q7n#3Dl6f?-C=`27TeIjLxP}FOFyey zioK^IA=DtyAkVzATKa~DML`Vu%A4 zM=t@deBa3%*>M71x23}(dna$zBNEoANhgQ3_5{4nPlu%mSOE!Z-zi{q+wt0hQhX0Y z6u3RvMyNaBrAk43pu zO6Xg$u}s}Cadv5YH6i- z1)^ZPzYzY>w4Xw%Gc+pFTTHZyYsgeUb0$_-#Dc}FrWAR+tgZ~%d<=`eaOq%mRmh92 zd_P~hcHu?s{ncz-J5`o zD{RP*yr1-M`v;P`vHSxc_%WVvUXm_2FKMj9n`nMK`%53~JRqTKoCg%R;yfT-<#|B1 zvnd!|HoK&kZI50zH;T1$Od39*Il~LO0~dM3_sQt=h0$3!CR`e;R%%h0mFd@&=~LKp zu{yC_)9=E0X}_~YufVz9&PDpH;sv6s?CXP;e_inc+K(Vr9^~J=$yy>@iCbtp+kV#B zPHTy9iSaURiO{~EwE_Hm!hXd6AN&EVll<}F{73II_+~_U`9DweBHJ4Ke{B}M>T#P& zujANWHuwLGm#3f?Nsj+p>Gk7N(Q9#Al3rJS-lEqe+@{j&?@4;8#>-RCYwiEV^xAeR zdSOS);;)<=Eqc9sLpr@$PP6#yRpaF;=tVm1W8klqo4djJY|2T32pkka1O`PAfx{w* zzz_uym^F;^?S>P;<^Q3eFgjl&SrY=VL9T7hk&s@JQmQPb-+*63Vd;%VuZH6!>hE8n92q?t&N zU%ABU&q=sV<^TJut^QPvmudZJw@;H6U&!!HPFjy4!#7z$pBo;{hHtVfnPT}SdkxMw z(Kng)k9F)C%e`Y~KO2{_JtpjB=orI#hW*?ZLo*e{v{@TuykP$tioS?E&YutT8Y@uG&|0?emwkka!xx{JPW)33Hw?SSJM}TP#jSo zZTJE4*J?B?$p7$Ji@*ACo629WUu*H#W5&xg{<7Ou6M_+vO z{&#^GN&CJRPq6Rl5>sl8el~~k|55#|0Y&O>Z(4s7>R7(lSJRDsbf08=@Axn3-z~@- zTI_1ufEWCqe@-N#-{?lA&(MSg6O#90*)*M^ zhyy=H3U)hV8AZ6UPXc2O%5os~|#tzg-Mwfcvix zLhA>itTTHfyWu5_g{KGsVNX$h_R`J+ncLXrojh}E{3_`++?Fi%!?2sZgtrG`5o#iq z#gv^qJ|0?EoZgeENL1LrcK&_xcJ>tI!Z3D4XJ14Ma~}5m&I6MvCIqdvxubJkbOx(d zEJV%q`2%?HlT)gnHe39GdaOgiSq?6|MuXk$q-E40WyBI? z#1dtKCA@+q-T+C^IitkBlnbuw$mFF1ByI4=v=U9hXIue|;=OsW&O_M=dI3Q%NV-{) zTm5z(kxtBlbD9Q-LV?axwyiK03I4P59zKV9OAj>AqlQPWTk{hWJ1zQ z`Z1XxPg+rqbuz(;1+8-%nJ4-U5()Zuges1ko~B=?Vaa5HKHUjqjH5sm<$d8R z***7B@%u&YZ>+{WhWPy?g#44AM~>Sw5Ju;v7hinw=o@{1%b2cz<3YTNqgJ{CmQNy@ zkIKie+U5HFPssP1=qhEb-ZfkAnyYus)4Qe`4&AXDd5WvXUxaLWu*y6#Xy4Bl@_HS~ z>*@O}c@5_UQ(nXQgygl@)**RahF59wn*39mP+0W3C9fwm0`(OCeqP(V5`e({(dLB_;2W;|st|6~y)9{&1!)G=PpA#NQd?R!thGag0 zeTsma;=5FiBI#d%fFn4!;^v!Zv&j_Vv@`S*Bv?XxKC~btjz>yy3-c=9RA5jB1WHLo z(v~;&p@hqHDd8r0CN2b0@#gHi$&$T!-eHM?3)6u zh5#ba5{Q(6mO#!|`AQ+@A(0^GQEw>g8KNoG;^vpZ$6W6F9EF*Yg0&^;sWzMRkoze~ z>HHz?0(`*kQIae{0zy225FQm91B2gYr|SbEsEy+S#3wOv z7!WUTzL3n4Q|W_Rn?4|xBYjXsELTMYuOgN^;gMLbNU&T6s7Xf2ltTA*?L@0e{qOILd&x&XNIB zcZ>(XSdG{cg_oJ3KVmh7v|k7pDx1nM&dDS-gdwYuKqLUzq?RGAhlHe3*&q`NEj{#v zOwbx}ipP6OEhCkTp|CE&E+;~P6Xc#iwPxDQ^4kw7_>UHzrPZzzv8!0DfqB4=qJU@i7j?QoE zAobJu6rE3@W%IQ2DU@^|jJJYqfCL#_&cOOrkm5L>(v1tTA>gngh9 zdP+qsfRJx445P?P2@2%c=?lm%RLlFrKI15zTK<06V;m4faL2IIaLn|UzY;3Ie!d&d z)@~>u500=FK+t$`^+EU)qN>@bY6K$elvt$Ck}QZ&J{qH;YxO{Uxd2y z@cUqOOO;qE3`?9BE!hQYTePbRTao2QLq$+&0mLn%Nyb6@@@f4;Ne6z3w?=f3X?Kz>#%DA@W(`7xz<4n-v+Xz)L%X2TdlJs$p$t764Rpb`vPK1OxFY>3SjdH= z=+T1izQ1HP@&p-OLj)&*DAM7vSR;jfWY))Cz{iiPh@EknDbxrzT;`eRn`wF- zb)Q>ypWD`beuA0ozRafh%>T8|+~~9Ki@u>gdnu*Qz6d8nVus$P@M-*30LMd+Zvl^@ z&5{TCJef@X{DSmi=!-vMe*paZTG-;)b|-%X>*{8^Psyt7g$PeeHY2}@iX@u_{;3cs zNDQ7KZ#*nxJt=uvBWVa*b~{#(1s@W>jkDz!XX=RGD1Kung8n2-{NR-~LuGd&njE6G z&Su%52ZG4niQ3U_5Jo$uyCCynA0V36nIJ95QqVJyw<-_!IBmCzA_hQHw9u>FM9kOn zRviKgtkN4T73_eW)7f@%6y&YiMH!$G*n1`KNCCcGGDM}9-7Xno1`d|OKfcxlCrgCJ z8i$Zsw0#>8+qZrvdB;oyh91`7BDZ(p+1PmzY9(ITs#cft&Syz~B9B+_%QY6ikdyti zvz46gFP$GMm^Rm;BF@Y-M~2!RE@->&F^4NYsckM@&S>+}Wx}*( zA%~O)VT_N|H`3^j^IKpEi zeHoFh8LM`M_m>RBv(6ld>`8$A^Qt2;EFpA0Cz0)!VZ3S27x;>CLG@5f?a^$eCc+u? z^_S3*O1VEHVv<*@Yz5U{2br>|7c^SqTJ!u>6M?}1FbFvC5F`wG1qK7apcfd(Mg8zt zD6nEsi+H6sl+UUmmVnak&R+l}x$N9;AeYj9%vYuDSy1v?$vbeiZDw7N1c)<^UT6+* zI(jQ%W@gUw;yqgGLQD6<6&DpjH2#;=`3M!YTONDNTScMZqD9{!snx{S&IDJQg55`A znAY>Pe)bX>8kp|7kxfZ8I0{%D+2gQUARP4;FD!p=SDUbFfEEnb9uzSKM(7H#C%fBM z@($3xh~**tIVwh8A4VZcXN0CwhUbAeg@Y^S1g!H9XrC}#S)Iop+3YIsBO8kbWamQ` z#RQr)z5w4U^bGc9WDCtE$o_>qFWH4KbXYNkB7BDo_O1&f{Ti%9k8s9h@6)a^_FXXR zm=0w@=F;zAkGnhf8eKxj5YT>c{)P%R8yb%thaH9ii5U;`uuPZ(5w5cLi8wOY`Al}8 zx`|J&MUxHHFp;c7EOhl7A<;AUQBd@>DCdCbf^eAp+@Z$=p_AdzCBQ$<06-AR1X{0t z7^oy}9wU7_`GZiPyIcuh0~iJDb_WIU`@32n>CbB056%uY@>i$_F<*){Vcz(nO#2F$ zO|LG9swFUe%AUb_*Tm%Qku6?5GxHeYyg_T}XRtr6--wf_&(a?-V2!8%UrHgB2D<$l zV+KmAT8lh~@e+QHWo9C3o}Ot870?cR7VYo`aqJODDQrxAqDch?g~A-wr~AS$A|zA@ zg~Xvx)4hZAJ31zEa7oE7-O<=Yeu_(d9l>T8=pg0ZnBi9 z|7W&e-q4E7{{KxQ%IEqzZy)Slf$f#Q*_uC71p38vwsQ>{6b)VESOx#k(737PVaJR$ z6^@Ekz2QUj+GwCYrSGq5GtYuMk;%{xik62SOtYcb--OCslg*B=>J8n<&Jtt-iP^SV zgy6+ZSN)otk|TJTJGDGCYE9LZjvA_sXb2MHBo#DN0bGhc_}-S zRYyCobVQzWq3k+z8VoMcX|hA=`P)@OcgZ=0>D%|>Xw|Vc;r+du%0)2XcdGFPyd(C?v28?-Ms8266 z?~C;5Mdtlfefm_oufQ4WJLcdBL(i^I4U8RBi;37Q!u1*#kkc!Q35PEh!=?wyUl0n) zL>ckxusgYvbrj35IfxnTV|K8mDPRvxPl7EKU`r)fvUih|u)vn4fJJ4sWl;ZDqDOvY zgH$FUl}Sj?1OF6A&tSrZ@PTD;f~a* zvIBgw%mPt*re!<*wVB_D<^XGB>eAneBh^C2iTNJpFRwL=SX`K$^`mCcG{mO+0R*k6 z9jO(EO5TAA{2Z%w8?7J`O)r)v#IXud8DZ|nX?e0L-ZqkO0<@w`CcR=LHM$yjOx`#0 zP4dRTlgKg)4h6HOf+U)-Tf*NE!$S-n{DBaoh}fh|R0LGxMGmSOD-2;rKf|d3^6`OL zoL@>;SjPEf;s$S~iksB0SDXlMuOMdv)Y92$I3ShEO zmMZOz_(i-4GXqH$R}(M9j+SkNA@V`g?eF_Dj^R&@Z1q$9M_iPhBrvicqj-~B5aEC{ zcfSmJVb|Z}AK{XAdC4wVbOU$X3Cp73-%{4>gV5xYC~J?Utbc@xyn;KetTTmz=2eh( z5=D7R!Q@_RzR(<<`V&~WSQNPIY7iPTW~>U5Noi^WS{c~MjvHpRSQ+Sf=g@z3eF>uK zIF_|hK&Q2jJ4yziF_I3gdaaAUj`wUL<(Tfm=Z2PJ^(6GUq%s(b1rN1+AFFr8GK5m7 z8ODS%Rv{e%gTrjP3n6=eoWkmcDc5u_h1cxtA^TS@A(46I4)9xH;h`Es-H<@5=L=HO z#CSakzrBm?FoWOBR)gV;5xiauU|3(~0A4S~FHA6tDJ$T{mBN&?zh*GyTbRTXEj}J_OiaQ_lo&>wO7_&nX(BuVB6ss1ZCQcc~ zAw#anU?h@dUCek)fdNBur?I)7?-b*l*3L2T^Hwb;@id15j}{VdVzuS|YlXy$s{|h0 zS17bd`L@tRtgvfH@IVibHfN|J__3QcDeK8kP|skwtLQpQUB8;H(>0cRpGa^b4_oF6 zf(Wl`_AWufcfj3vL2~cQc*pA8?P_Ge6{``=)a%^*vsY0MA%YNeqZFeEsytgHs(KAL zF>jSlZ6vz^M_acY-GfDlH&lHztHaBfgN7Pd(~CTz(P)EMs=?%mmhwQ&dhlz2P|Fk& z)D01E0d!$8-WB>I!Q=v7$Wmv`S^i5)>Z5>SyXZW^*!sQ(Qjn_E01l4(zaKc1d! zN-UI0(YFghaw)i_zNIszq<^;1mGtd4aRYt(qPQ7J-=1Xryn#`7qCAias0oV{DPzNp z%*NO_hRHpR^`E0dtg-$o&Q@FP><2+f+8SfM78=V^K2N4(B=(>tVJ-;<5sd1 zf&PJAX!g%Cs7Nd0?@}@v{qxg%71yiy9mVeqP-e&Ogi|PEl6Vy$%2F$w_ z{A%=P81JY*FG0Ur{TWC>){wDdM7s?!a%oBqTe|`3++@3(cvebAo4kRWcgW`wd!z^| zy?>1m7)0!_)aS^=S31Ku<7T+jx!sx=sQ(&eb z!nofIcwbnQtvsgCJ%w5cLX=;mvD7mJBG+!`GDR+=h(=Yl+OHt1cr#!6Jg0 z6sm!Vbdi|=VT~;T3`>C4fK&jLVJqo8sw`NHx{mI~rpbO43c9AWC8m(UBr&5k4iqF? z2{A8Fl;)%;%E4V|rjHG=8n+W6@Z4D8O=RGszkY;IjJkVh+%)hXV*dpekwmEx0r>j% zX9W0HMXEI2Lep4X@wG?)bY>#**WpM^#rgDLX)J>VNBx+S4kgD(ua)S$bgsVbB0+h(Wepahoj5{qR(_x1FMhvY#zuHqXwWtvI1QV z0aQx}@If#Qu%Pa708v4tme_Q9r(pL=EC`KIzv!QDeahB94X9r?6R7@*4^@8$)qh86 zv`(!L2KX<8DlU*%nAIouORyM$Aj~EUUV)-`dPFc9AHefIvc*rc5fl%JWX_Q&3okJX7xP!hM<22Gu|3iA8XF8{PXPkqvG7%1 ziaS^6#-4Y=pTlJPtCxbZg2`z!%30fj*2aOpQ z(b>Ksfp9Bu#UCXopx@?_dpz)7gAj{R*Go3W#*d9ZNNl?!A2@<}U%rM+?+-Ha?wyXC zXw}V1-~P-1fAp#bY*{@rwL;_TMP5)>X4j1DPQF@XM@_>ZFD6G7E*>`WdVxCDn)B{ih2|m0 zVUdFeZ56y}6!LJtC?ui3DpRKy@QZDEw-|Z7+-+1~AoH}5-N)a5hnk71o-pzja!yHD z55bCdQR@Qv@ytd2@XuP*zqTpZ?%_Wvk~A!N2UIM7PR|Z!iML5IHknj>M1XHqY(to5NVn1be<*dE5B zA4V|ZN4G7Phz?NLxUm9JGKa`7fZn#rw@=br5Dzotg4PAb=uILJ1j@IZSU=zh`JEh| zki&~DP#G4SW{8$csXWk<_~(Q(TKfg%rOA>6(b&Y#0toc&YT$+yzCoT#Ah&_^@;gt1 zEJrV9IoOVIEy&zSqcV>_BO^Ombv&8q((2bwLp1sU>mduwY z^64{-74-g;{8lRDce{(1P0T5Xivc*BQYIp0olL>#n<6r` z`KRY8Z4b#*jK1?kMvOiZBFTQB`u~2>De6a0z9@k3H~wZ+{fLj@|Nnu7t2`=#jrjIM#DJ>;X(W8T!bgiTlF9WQQKamCqq$RN@zvz z^uiIeEfcTJP}KNh6CB?bm{qmnh=iM*+Gcp!wVH@L-OOAf_B6#_gSko}+=@=j4tE$4 zczWE4uTZTI5#sReSsB0$EI~m2iq&sHC#y~@F0yQK&V<1OIMDzjs1tHIKp~z1pJGb? z0)=G!ZW&V=<_=6h3=#uv5kwE7H|#OWX)@TcElW0h+bQ;)Ms@|!-slVAVPoqPkC5iB z`u04af<9RRHZGAkGdhhzFleg<2U;h#X9TT0c`{FIhH%+5%uBO?c) zGH~3Bzk;_IBho1c@Kve+SCd}^pWs=rX6THd{NNY1(tqFXAahK7>8qe6euglnjyaZH z3TO!b=U8?=){ouD;$bs<#F!23xxyEW8ir%I*I8&qws_G0LSVGYdojL5{4Za5EHqve z^MaoPA|5y*VZ%!jFGiWczP#&+3z3qHnoSAzc-a+RurMUUJXYbur5+ejGli)~%{IEk zY_1TP)NG;FF-&sgFrnDR>&{4yl74|UXx$Hmd9VG29QWp5^53T!IInyR#~<(S29Zg0 zPz)K)+bXyM2hbn;1ejnINpvAWQhE1t3J9#x+P=5lAKrZ58rnp|NkqHTU1H@ z2#mh(bciBk+Q0AgXCxSd06xQB>ilB#9i6@^q#XljY#*!+`;pw_=bqjIhl15}Xnu~e z;s`c<{yQ|P{FwQb>pk?HCw$teSbQf5-}iQlgV~;xgW2+n?=SIHKQ)hK&q~7!RS4Qr zJ+!}u_R#tK^Qb-c^Pb~V%He!DoR^3Ni67A>586{e?P&@iwE%~T#pj<~I1EX{&1y`6 ztugZZPiPS}1fQqRaCWCP!za#{7aAWfe}O;y6SEl+jGrWV3zTFt?8jl(0vE!r0DVk| z5^ly?pQlcPSD5@L)HxO~ zbU#EBovHrylLX84jVedkz>n7$=HEhVY9cI^SI z0^2=MN!fwhZUBq0J5|gcCy`-s1coC_jP3k`yRbyWH7UYGhVY+Q4g@fupr6R!_>7%6 zsFOp_WF`szC4GH8LWhAx#k}qvdv;==V0y+N`(KkXaRx6DKh%LcLD4x@TYWA z-VR6nyXD}LAK3Q|Kj z|1S2#P&$*Ex{U`=#NJk_0_`R0zXg?xhPyy-G^w#0-ZphW4vszeuz5D$ir2>A-K;6( zNI0&2EZ>lls@G}E0WTJ`G4>)1zyaE?&-;2`E9;{`D-RM*TO)`o)we5xNrR ze8foyuuFV9o$DfYF~af!Ehi>dB}j+QqNrnYE88prq1OoKNFba)LRF$d*qh}i*qf1q zV)+zm0jJMAd^eU@;+I@~4Bddy*eU>PzvYB4Ns1ObCbQusWU>&FxP<8rI$ z3KzNDT5*Gv+2V%wmR*&R%__X9pGBv-iEA-!S|BAbSso&oIxKiBpW{=pFyq;_2CVOf zY4$;1ffCaNDw4Wl^FU_QJi=~7U=|H+=dw~D#4j~=QhT-hqc7DNf z!G~v4qB&<`H20e$iH6Qeta zaPsEEbmz;w1=!FTEIP<2y7Spn7B#zb#)#edyN{zgu{wq>rS7~>ipP_6XA|$c{UqHv z1e=b!^W`S~9Y~{*I|EEq$nr4Ip2uLOJ{(Wnk!&H%hV8r#eGQ_X-Go3g4JQRfk!s!q zuTd`Y8#q%Tk){mR!7k z9_(JAIvVUeBz#3wnuq`u+h@#ZG{auN$xF0t7m*MC2xJ6I3_+~{d(0^bd)T8^xbX;r zAKA`mU@##FHXTyIvIU7Ae*n4>4oOBLI}N@*qxCDT1ERB>!U`vk8@AKWW|6Dw z5q+6cqGr*U<~Ov%&#(WceSV|iV6T|pBxg3VNX$X64)h?mNU-KBm2l!nnXg=q1mGy0 z(d0>Y)3)~-^A$Q_fN#>m)j@ug_Gi-ekh2tz&9EO~mQrY%_xK1CjC`MA(!a$2hGiEy zQ{4cP+A&C)^vMshTJw_#GN;T>mZg-&mn@gU@+WJZe1IV02=}Hyz4cMrf1(>PfF<&7 z8}cL1N(uzpUTY>&VxfHuCT$XJH{_o=p~A;1fdQT0rbQ$|gytU}ns9hz*Z|BGTwt9W zB`%nCU|vNd9D478@6kjdWio>vr1F60lJG>_0rRW2?Ml7)6fNdy#uO&`UE68_3}mGF z#uJYV$@`J!8`KyvC%{*sj-kTtkW+q(R+mwc{>_<#*FJNg0hXLOq*8$RpUfA2sDtdd zLNIp<%f}p)bRhq>kID2eTR@Fbxpo<2jB z3xsKH7#R|wN(l7b=+I~7{OqM5IXJS7d*q5cg0^%+* z^V^k1oRw|&wxOBbq~9dwI9x{nOvFv3-%ld#kw{~m`*mnegDzC2Rqoo+tx0q1dt2nZ z&3}sg7StAYI1y4qPB!znZt5K7q<2XSBi`|!Et2M`$xG7pilu-ZOC1VrjF za4=j%Pye>)GpvLEN%&sbu(vwRii?%jeiTS;e<}nYaTXo@Eyf@zLUls+fF7jX%9=!6 z6Kg#SuZz%w*x{6o|GDfxaR7Bbmb0wJn+uB5M8mc6OQ_Lk@}3Xfy0S>>JBvZu0;0r*P1D7=@DGjTAM1fLLvt#~NZr^b4v2*`yPk6<~{ zMPj`&`IwA9SJe<`chSUx;s;3Z#TITe1^8k)Eyc-CvM zSn2m7iMTi>)A1#r}B9Q&dz@d<)* zmphs3K`WOn@oACEnap*cmCKg+W0A{~%=M6!%a*uNl*t+jI55;urk1<72GSh;M8 zzoA?+Rl|lu;ICC?t_IbJ8kMbo<1r*oK^KKD2P>N2siZG{;?ev{<+%tHCO2I4x++W3 zd*ptTUNcv(F-;M&=1~N3g(}O`8gT% z6d8|>O*oO(CeP#I4SnzlMsdj31_tcFYq5q#eAs~{c{TDx}T!EP`gY2DxW*5VFJ zb<=2RAaB)qcsi1`5cipRt0v-sou%RwY%`sVZQJ$)?clx=oq;`fXJlyXowvh~TKG%F zwP_>X9Owp4n;yem{H{%F>9TB7H(kE4DMXhgo0iaJ(Wbd{32vH7muolq=u*4MMVE?A zgFnROs!e<8QnIO+E=8Ljqs#f5?xV}u>}8O~x$=!f0=0D@slK@_fJ;N-mB<#C#N83P zfEFX8_xXrn1HraZ$|o{J9~5agH?3iZT4v7(eJVA(nw}l1cnI6q4Ri!s13h3(tlUC0 z>|eY1X~or!-);CU$L~w{-Gg5gzX$RAHh$m7???D;!0&(X+l1e9_z|y&f0YihewEBb zqMOXab$BLOVLorbvu1nl#k14)yaUe!z|6lN&$J$7J`ds<>z*mk*cG;(y;TmE7tb!L zAOGmtm-bwk_FQCp#;sC}pVKH$&+zO_dA>aDxg_nmH0}9{wC7K!JztsjT$c7cCG8o9 zaZ>OpPkWx4_DmAp-X5ITOL_iG+Ot3Hxgza(dfIbk+H+Ofb9LHtP1^H}wCCEi=b35G zv(lcgNqe51_Bz71yK{Qf3( z5X+m3>m07OgIg4r{4}chO;qebKq^IUcvE3vtS{#MtlH&3xQ82tmBbv^@-Y|TfY%%? z(d3Q~#;V_>+9Gp?6C#Ebn=@!EkYj8Pz^I9=cvA_F!v}A1;5-p_B9s(;MN={A?-;rM z`g&Ba-@wfp&qQ^T=Qwp)={t$=LH;b(T@h&lc~JEUwYEFZRE=Mc(K~;BKgYtH!e{0x z%A-plQu#kXjMx6$-@oy(=V1Y4sXubK>fp=#sDhhVmWIDi<1v=y#NFYobmzj|Bb3FB z8^S%Zea)0ZXW*Aio<(uKF+ESv!Fst8gJ z6E*ug0J7T2{HpH*1{zhUGB;Z^q-QSCMU@6{!uuda%o_$aCB1<_AQ1)(Ti1lZJ`wn8 zR>Sdp0jqYiw-$-k;zP`6#SI5>+(pyTylQu>dT{iw6_;P1Gek{WPc71`4@P?qVwqAl zFcJ3Dqt|&g_!4Iss}CCO?h~XL21J;)i4Iqy1Fq)89vy-`2E~fF*QmG@=tgeXt;DML zzJ>Z&wMVbskD_|@o2#Ae#6K<_&><5-*8yJdC0_WceDro zhX!`B>KBO-vE8Lt@1S4;)vrdYcLea9DCXA#`o_Z#nP4@M%#uv zr$mn9kO_a3)@A0n>Z0m@PnjK2qiSSDR(Y+~l|`?e)NXK3^)Lz%oE6Wr>R~p=U87&d z=6G~R`3&csYWd(DS$qND07h#IAfUa7R4$v`MBxP627d$f1-2}@1^(B>MBpG8dg{>% z74vgx(19RwCWn)tV&c^giXq7rXg}UI1OQ7Cq;`}g`uTLh8!zGmu?{CN4P9D}(*&Wy zXz3ly`4qgDaQxaC>3m96!sCTs8moFr<9-xN%za9W_b>Sh#2qm;Er!GMeF=jYP?VK- zsZ>$e#p<1i=rN^UGv<8#jrG6gWCV>iZiwTr(ez4H|AKQqZT%;%=!6gv@`WaikT39~ zQTN|@u8^*z&wG03hbO}1)k2g_MfnfY(g|-RuGZ8xoWNZ{Hrgifq9i zXp6~iU^Qpn&sMnDB8|Na+jYe-1avs3r1!v&P>O}!Hy*8VIvpXz6~mx)$DOfiH|eK% zCTMEByI49>oL9b$9b1;chME(fZsZTb=(%Wxc2Sq=xEi#`{1aO-9KWV~j(gdqkrh~+ z?+cA8*>x0H^-bO!XiVJU;uFu6RO=0Wn$`xdyr^2s+#UA>`6R-6C^0`&xH=PPR3=D% zxg#qyC9enjg$WFNF=``qPFGyTUoVT5?3!Gy9Su9LZ{o!e!o#C!i(v zi-breWr<-|@*2C-HKkS6!-rR7>aA+KqcO-IxJYC!@28R23a{B4kM?Pfur_&ydO!rP z%VEtL+dcV@NBT1LMMH?m_Bz|%_kLF7jdNJRcf6bM5fbOXkt&9Wa2K)X%eUQrUiXyI z;mkz!P(}RRBYoZB2|V{gOkfr4z$%y$AJ|G)NG#~+>Y)Q0@pNQ{(~-C82e@O`!t*q& zO`0=w;G1}yyg9Q^hn(8lHCc=k#47MlQ zU0yvLJ`3?0(TSPc@V$aD-DLtH%@2fTca9^!m1gTR!#O4fV_KA*>T@ZOWaiqrS4`oMgbSm-Fg8Xsp zekOb50G`Yqu@{JhO2Go~5T_`oz32(zmEE!#*fz=nSbUGA22P}iOUZwR-Mq++14GU-m_KDt(twlIzhS{MB=Z@wackmf82{VchXySQ%LC8pVGP00;)SERkOdu#YZ=c;#b? zVJa@AZ2jlKa{SpP`13BB&9?*fL{=N##IG(Hz~?-QrsUF7*Ru(6oswJl43uXC{{!^fafe>*3}Xi+d}VW>k@r)cBLpTh zd;w+ph2exX35Er-Xb8kJ_JNS_E0Xsjg3rOjzVCf9JZdPuJv zX16=p-5P24&qkehL^{8sDxvCNQ}he2#N4l_i&_9-OmC=U`Bda;kKGW`x{p71Rvdb-%oTRjt{LaAShZ`l zD}01RjJi+RdseS(>N05Wd1xt-slJ}<1<3!{jCy+~UM!AabxUTD?0Mh*l5MF z?MohRIeJ`iu>OaS9%p|<@@SDfIwe_|?;yP+r!FTU(ITR=L89uznOl<-%B+SnW(-SL zk}|1eDKf|cijZmA3=6Zi8)jqZjB<#^d?-$$3N`Ho*0)tD?q2MG7wIMJeGn$|lIYzI zVUm6c8m5_l2IF@A)|}$`GvXPULnJY~swn+Jq^~2^o4+~-p1CvT_Z(Rm4|vMLrI=X)kW(4}+4>xvi`}+4jaD7^FF!L0Zu~T1i;sigqL{-ayOQ z5HSr7sc*$v9&$vs6x5av<~`CE85-`qpuB&@xnTOyYjS2FI^r?!jN?Qj2h3!!&RdZF zSe=dM%QSG5Nd6z#BZQPOeT}Se-4MDQf2%`9_+i%_vjlA4_ z$Azr60KtOcRq+3?_wI2~RqOxw9%jH124_Yg$sor>vx5~yCODddFo-6KqTpC6BoLAU z!QNg9ba0@A`@2JGMkAh9&%3$eEPzp-`g8l=_-&cfdjkWB` z@EVg=xF=~%gs{-H2Gr+B1NA_@Y8hv&8I3+9T^fKkEL$d>qo=K`Sd;Cxo0{!sG*TBN ztF)2Bg4+%~u_R!me&iyICc+rTFa}GX_(G5SLXEYpctZ?h?OwcyRUIC?gx=MYnZt@3 zB^_WFwIjr%*y3C5lF=nn0_)mJ>w~(rD`82H*zy!G5fJsP$p?RoFPV8(=|nJ0Sh&{= zmsdo~&gg=?mK`Cn@{~3037~H>5Ay!4x+}^*Iw*JIMh1kJrsk>s9^^VFE z>l)qKJ23r;Gr>&iw2fl=1$43y=W0DCj4sx=8bBCPh#huje-bG>3#+ZMRM6%K?<0iNz$rRO}EdR*{_RS9t>sjtA$xE_WUQy_I`ec`&!kRa@y2I%qa2y7rk z4qF9)8h+r`Abw!yfFQ;WLSlffOFb8?N(W~0-xcvf#!9>Q3cXu61^&}2MDX*#hOG&< zuB5JAMtl!g4chIcb`X&Uc1tiTQ!0aKl^7TAFp|dJj1Cl##wsEKU_`RpI)K{ylDh%} zroU*IEx0153|d}`m9~9TCu=%al?8X`7t%p+l>rhIbR2YCT!ClRhi)|%lc`?N=6JQT zFjhKB_h?b)w=2~RL$&BZn8KNY4^+l&?x}jY0_}~qH!(yc4R-Ari_#2$k?w4y_b)`K zE^gNER97^3Syo+9?uDPb3QjQ5cp4X=B1!2F?6nLsN@+N~R_WcVmPrxx zngIp*GDSAY*g@8hqcH(TWJ^zh2+Y8cK~e<95Yj=3X#ZSQYgE~gtobUt;ByXUiLn|; zA3*Hta9}HNkR z=lXmO!$)2bfoM5W%1vyZbFGQc8Ebb^!{Ad8#+rBV=4#ewd!KZzfx4s*t1v;b_F-A? z!)y2X@N0mR(opu75a@8An*W6jCgxFZp``K0%O+}!ekh$v9zzg%t+g{m$43`yJZZ4n z4>W&Q&>%{V)bu@8;^F>~r~8GxKq0}>bLY|1{^Q7`iMU-HrnJW(SeZA*{B|4qk7lqo zgOqF7I!hn1FjGs-mdm1~BxLj(IV3bB+6~4h8dx^l$)F7OSZsG7YQ)((ZFBA6%5d?v zTd{15hC$l>+QvmBTkih@VRU{mo48+gq5>l3VN_FhTHYf~!63@ckq^Pf?>`s9Z=UFd zY699_2xi}6oh?}qW1$1*QU(Z*=3wcOBh#^i!IHk&0)Z?)p_qp)R>v)9;0~~K4*rI0 zc^rkvk*Uf~2O>ox_DnufMypAQ%$8okRM(FbcZgRH zJ@izVW^n*>CgH;6fF?gl#+pZwE30!z8t59XKRbRIF7DEVm?^!2@3uO`v@r_wi~_|g zkVkrM!#VEZiHenq5hnea6BnyE~3p7ZzM7I zn$%760byO4ln>BTW+>upkYLcEDVC3~iZ~}G0ro1d&=HYL*8T-n>l7AE z>Rw9352@~@L=aKRU&*&idVHbK0V}fAy>y6BxknyHu@IzWg(qPlm{Q4KDVzX?O15ia zEoH{RFgQJhJ91!u zOK>Xw(bC-frcD%p8>XzyJcc?*n(2C?E-sUOkWU{%TkOs-SP!nyx~pJBWr)r?V~Acz$HA)WqNO5w7f5p+`Pnl=qwD%=MCG>B-ho0K zavhQ6jdeA)`GOJK7vsZidyoQ=LMYN|9Wd&}${{*8d)47puf;j-YCVV%FE`4%SuT0< z3T^S^#SkmN)T=w=jInkjP{cuumeIo~bkFOaw!pd{WUdHyqs;rY3w!WUi-i{`x%JYD zAn}s*Ab%f(6PQ-5IN0i={(T^F9{GXMc6h|x0QF`@y)W2L{oxUhUqL+#j1o#cG`?`L zT|tk@8Xw-mX}7ED3?~ds!hw)tVKt+}W4P##N$-e8CQ4yQ9~h?Vtkdmhq><_(j)7QwY1)DqHafv_qPCWT@jEn9WX;~g{;}~S4ucb z;;Wp2nR*8LQrb+e7wf2r6}+O&)SI57L`XL|SEry(T)Dbl=Hpt0Biv9-R{gR>Zw5V%%QO4D*@Up7aRtH2;8D8KVshgB(tS#2QRxTA_7G z5n?zcb%)bn!ZDj&znOyE~)AtVtqMU1-jZabor`5 zt^@LspIjN(^$Hif*pIZ~kSU?_hy)Ou!A+Etc+~o>d!fGKYVl5;XdRi+J+e3KAoizC z5!Qu02q^y^PhqwAHNJ9#XpvV$3q~~WX?#Z5fk+i**Mrze>EVZ%-XAI5Xn(qJ7RKWL zg!qG`L=0&0Xzg)Cr}HS9}KxF8G_AFV-r?A;KEFX4#2Ba_0u;@d@x z%l!$mGP(FCmW&JH4B$NgGs{Xg#TI0;xOQJ$ zTl$X+7T2?$_0X;(Bd+c>BAF28i+raJT?FYcfFFP|KsQIT5=Qm|dQ3>L7DM#|N-NLm zJchIG2j~-f>LHw8KO;ov>ctQatGc1L(Fv2^b?_0w*iaM?9Qk>mweJbYF3Yy94*T@8*0t1Dx4e6)af z($lf=W2kMHH#4qpYQQZH{jDL&`omXKcC9EKYX4BUwv9i{odY2 ze0|2QubY`7Xa}y+v1wNPY|Ll}W$M)x=hlh$7mpf4UKjrup3n1p>hI=}*nk(9)(GrJlr7}b-? zUI$0@L&CoIxmOW*R%~qS4aR}Ec-ueNNxZH>)ICJJJ@&4G))gwdc3YCGFXbX~Wh?mq z!B8x7PKw15Ajb!{KaZ>#*Z&@6Wo;}UIw=$QSDNA)ap3N1h|ZLjK;!}akp>I+T4JSG zbXRvoRTv9SWx?$9^U5f{kFmTTMqOoF*Xu_w5k$kXgs-Q9n=hq`Di*U1ox9fw z;~_B1p$lF^#fyzH({7mfkx#q9Gw~5`@UEkDk~~Yd*m-iD^Wr)o#CgEt&NftIV~u_d zU5}YebHD)20p&~_9ZnpSj;xH^HOcNli<%VEr1;Q_X<(YcRj4Cv2%m13DJk=K6G9XJe4D z){V%Wjp=+$y)AfRD1Q}HEuphAz>}qEvD0AUnp5M0Lp}Bj5G}&QmjG4k+v4TOIy5qR zW0JCyEDl~|ZH6MxMO`1EU3hiJW9jZ*Ze#{3Go>PUIcU@mB?1SC^Db!Sb$e#S>*`bE zbz7arnr>u=%L)UX)=)ub(0PMmFV~UM8s=Wer%CMttCrFA38LW~x1O6g%vkdVfQjLJ zSe-USwwu~%t2r$x!&DK47&g)o331s?LEc5p+VB)0@m45BL0pd=yJ#v?zw%()K|5oV zY$^$oAru|Z3F6ZEA@z0{)iV@mL}N-_>Mg|ZrLYT8k4i$o%wV__9#TCO^gkE|e zg!M-X;dPWR=m$y0byKmu@tRP%Jjxuh)rLX_)rG_@G(ZIh>L)Ne(ZFV&{?Z4g=avIO zKWf25BDO}cRoiUsU7@#j8`rHuO?I_F#)iI%?=`r-)4DF|%WpWpMUH(!|8FQRw!BY) zu6A9y!PTbK?uE|28P-kDS6&!c)TY44!B3?7*`F&kJ~7z_T0AZajPN?D6P4C^o0<(02Q4 zLZ$*+;Kst);4nlME#B9(flAx|T`9TG2Q*$$8>k9@Tn~Q>IGv;(U;W1h>OcI~^ILk5 z@5a-}MeaI=TF%5PaQWNgqS795)E-+w3t~{@4Lk6D6pjN>pQatzS~pcY6NqO~&28_8 zmgw?@2ioYTAlJ{V_Sg4|xuIV?P><62+Uh5*>t||FL%h4_XoW9kjw) z_55{UOwuONoL_m?b#X}fb*_uCD`TW7h}y!1;~%Rjj!HSv@C%O=i`@FA>Wd%3qdc7MV}mK&`;EuG18eu= zn5qh0RX=dXnpPx+t}|^ho9Q*tGar?0h5FwPq7~ozhMHs2B+92MduJ?=DKu^Qg4B7S z$mCLJaEEy67zvFP(av0upqE{_Ai)+K3WKo?vDJ-?fHp{i6l|66dP78p7dCTbe4ZJa zbb4BH6YI4&Cc1U2UciSKBRMv!@*{t1E%fNB!6b_V-TL~lx^$h(-lI!Pv36Cy1J%ZG zWxYJ^npiD^#}zVak2k03s)gX<&iP(^B`=+=zYV{jHgw1W#_eUS_TVyo85)>QmirE} z)E(lSsk3>Fqz@H}SG`wDb%H6)?66e8pIGaf(892RlR^(?InYI-U7-Fz6yf%}v^g zZ~m~tvlUrsH$}%X1{#uAgYT5O56g04b)lgPUy60OL)>6V({w(@FIyUkF-XHI7&W-4 zsWUCy1~D^O)t5n7*HH&P*U3cp%#^<&;W)HKV1Ejqv2#Ze3kfZC02o0ty%*Tu&}*BnZC zFjo*w5?X47m=y0Y@`c4#@R2xnkTkv^AtIY2BBPl;1;c)xacz1s0Y&YXs^dd?QejJxw^wMGU z4Kj*tvVKxUs+q%ZS4Iw&aKPa%Gq~sL+)*%9@17rxZ^ij%H(#H~fm}bKGbx6)tq$YE z&!I5>eqn9m$5X!$Mxb9DJ4@{-hAVyME!JNm;6DUsYJv9M<6SIHe9N0!oQO?^lztFl zN)oqjkPmGL&`wbHo+RP-`v!KSiqFIl>t$5jERzhKcK2d~d$Ha<+`Tv&9VnQNA_Dye z90HWdlruM6L1D_l#&>neURV@Fk0N#7MsPXXTRT&;HO@u+AZI}@SC`RKXaBW0$UD$k z@GDnm@4?ZHCj;6abe&{2)5yR8n$G51Qq>6B*JOOx9y-!)V0TaYbLg~D2BTpL+lzmL zFp!R|yH4T~T2|LdD7zrED?c_utGu1m9=Quan@%WNltJ>LqNt5njP>}Fen90H=?LTq zqz;TGZ30PjvCP0Olwk(I&?YJ+Z~`O9pyvVng`PG{b%bqic<08qM}%$ zE1Kv^L2eF5Q9OB!ArG7o)8Y8>yZ8YTIwH52uKelUj2by|6$n_|R2(jyArT0@q@Jc1 zWz|5rD#H6RY}R>yT%;VK8HgYl9hXjDhrT_I^r92w`j81t{NRa`c+J#oX~|$@>)}H* zUdf~Th-xEK`r=c@V_DC;#~G-IdR#tv^$7KsNrWMBIG;2xN4fziMaf}zPM*YHH&5D# zMAjzE;w<`u6dgB0qzZ6^w1hjfza|bB_ASH_7f?vOi0yF4(7XFueDxt%4@xl>xx0MR z7##riQ9lOM?~Dg2MLNWRCUxXi)W@b=3^(_x5M3XWE>XuH$cjQPEMx?T0(pX+FZG zWZod-8-RRBy{Yc1G#h*Wg1y5+B?ai5qq#IfkY@9yFrQ!+TyL@&w}0K~>W?J2KC158 zG~{C82O^h&&PxM@Piqbf+H@~WzXMgFj4O3foHG&JZ5v8fZ=$%t6b~A;XPN(A`1dDX zoEISnwb)7Pf=f8=OuSpr*&wMTlE!v6X@pS;a#B?kbaPi}uJdGS1f96siz7EZEjWjh z=0zDF-|e0k)#??G+zC0vpcEpcIppp%S#zgwzTN~nr@N}6IIxc(Wim*?Oa>)g{w74c zx?d4Pl=@NX23HpPDo~4BlQp*X`Ix}{6((!ihY|>DG_LE>fTR&Aa|@eh&)#$!Rzuhe zxbZ`D8OV!|Cv-w)+$1E(Ux*#n^Sq%Ym|{?Ay<_Ca9f&1%TQ3`HXd+Rt}q`72D8g8-PMFA>E7V+1CcH!x+(k=uy8CT|w8 z;xnw5K}8?M{KUlJVhbN?ON8UFktxU-z~aA7 z2%8nD$-=v!Fm%P$fj{`K4vZ-3K{2H${B24^b&)a)&AT%BQvEQk^lE(O7Q<&AG?8~$ zwqdu3lW%P1k|%8gPPwWXvF0rP zJ+*g3ft5`Fnc%(I41fefeEx?ZINp5|F0h?NS>=&tSA~FTSAczp&mk#AD;UuL*`< zUqT6ruafqIEQbR|n{I>3C^353xWkN#T0PPP)D0;*8oCaR#6yqOHLN3B`UkunxD(mmiU=mmdz>Ay`BB2s}{1rZkh(hs`_Zc1gcQQI+6i$X8Y&`(e>HCFnT=e$pouBH73Z3{#^+~!^!5a__bO<3~ z7y)6s7ZE-kY}q1`Nm)Rh=<5P~&I`)J$(86t3)apBmxXQU&Ql+tzhFr2MO!7sv;h() z?ZG=gC|mxjc!)IR8`N;I<}Nml(R^I(aR*r|fqLu^=^+aAY7rB-iJfH2o@)~2M`lHE zO%KP!-O0xFuOcO~H9oS5UK%Xzq#1^@zg-|4{EGG4MOCAc#_7@h)`a0w&CPU5;P8g} zZfMOP*^EJ=!<11VMiLh%HZ^vGkK5asI$h)Bjn0Blt~jU;r#K4-&L=)@AXkTT#bzkM zdNO*7wZz526tg^z2$QsIa9A+*-+-t(#JJtw;|<6Eug2}raA?zqDHs2!x?q0lX-C(^ z;^F90RW5^0 zEf?5)P>O>RRO#=+vH#QJC)kW(U~*j-*`lP=(std(IcZpradIvTl)^96~C;=|+Hj6qF&fUBu@O8y% zxH};kU(Ku_P$$NhFW`^5HNKl3Djvf~bK(#q1E!2a+&Gd>4>G z3hi!eGgV*K;Qk`&Prw9uA)ymja!{eDUPUV&ewmVl+0aoOG{3zOMI#^5kC)zsue?&v zVhqQ-i#~bIYf_+`E$)q*rMDidGO)l`D7kl{_2}BkaZO@}qFfKOE8vd^xOV+UKUAMX z;v-Hq*pLb0JkAhX5<1%}k(+gRCGG~nJDVjiI5WDO3|NZcFB;Rl#5u#xhCzoxwm}IY1HGo(eZS6a z_TomWMF@tE`xe%9ifB>A_$Mh9hG5F3UwU@GaI#lh9KWE>WW!Z%0s0pvrv;N@t+QouA3!R;G8-M&FPOhv_koj>aE2p7N~6q{*K^laHuxJ4Rt z9VSeunpWW(g?i&o``7r~+b&YF)_LqFpu&3yNpWe!y@uIiX62s^jWl%OLUBsSE_ncw z?;SFECMF&KJn{D z@9?l=9>ZXKuYSI+x`pgEiJy4CMOO$rSct=U)*brqra%3ZO&;E2&x^4jkrPQ{SC`Y( zNHYR&tk)#hKo?m7g|njOeYv-HjrNeMLr&O@v-DRuji#EH#N-}C8(DLTANC4b9=hdt zKi7)xUbRp4C0HZTI27y55Ydd3=7|(5b#Ge)0yphhlDF`G^`{ zPNKOluak&>TTLf_eb;W5(_nhCtXkYdX^vdnRH(c(PX)u^2NpNg`9h&y2%W!J9d;a3 z6B_D~0`{L>mvrSfb{&IAkk`kx)(x0CO}HfPWjBfGVZt4d{W$HzQ4Sw+{xu}UA=cFC zh{H0(zphV>83XA5(fMJz221X5oFC?L7`w5a`3R=-!xI2El;Q7LxCXesGr|9Men`l1 z&eRvzcP6DeKcrZ{eSYXmKN%6m!o|Wx!$rUu;B;_3pathnr*Q7{e|Ub#YC@(0=fW+6 zbHbs^|9^ab*cOCbl=H(4c>SI8LkYB?9VqgKZoEg~#Rlg;_xq3YLyGyocYerl`tkIg zvi-O7Lm%$Pk;SucFT%YJ_YT~LaC_jsf!vB{I%OZeH_uYGScC6OP5 zoj-!H@X5-=5Z`6P2zD1{kpC`BaQis_67#AXt3zr7bd9t1sGv z>X9Qq1*gB6{F~%)^iX`7aQ9=8e@&Jn4{Ua6HNk#!XEmRRq?M&3D7L zGR|Y9e;y)+Pz$Lo$==s2%vJ>7U0_&6T?pzvnF-m$VI%qjV4y=6O^Qp7sJ!7ynfWph z!F=S~LZm!wjv3%^#fETGtqgbNmPP1E2Pi-2w%ygFoD49fJn6-E$(NR&258Lj;jU>0 zeM@o_oo0B=0Cb+@2n4{3Y8e`Ut~{JEX&{{` zJ_-O&HBK@mJMKWmDyQLFa852Z$Jx2!SO@kBVz(BjOE?D>mQzeuYHWnX^|3Cc`d2!5 zB_fUM7l8-#&fMw5hCf@{v|VYiJA7y09)n^5X9ESp2G#D0DD_b|H1}e)UwTh9{wr9# zoFmObuXGd-mhNK*9=Ku7#8FhM+17B%HK$@8wEAH0W};&6rqO5bW&j%7H8EZmZubd~ zNT?AZT@z9*%s}=oLp+8hveyT) z54j?HFd$Z@QBZ*$sZS3LdW^~eGCK~&sXvVIa81&lZ~BU`8?Qp+w<#KI z(LP1ChQ{xMv|W8Y>Cw-Aw>1;wJ$NYR-q`(SN%sJa17giV(rbYLYSaH)`U4*!b4=zctwP$B_URAI=tD0}$E#BB z?EY@`8M-=(O$3R{P4230cU1>dYcE7U$MQ-w5v_D&Y@_>IZi?4g_(8=%Or}urEoEj9 zwXBmljWvxlf!Ga%5{klAdgDVRr-to5oVG&&Bn~%VptyGfUZL<_KhSwGR2U%JJDRz0 zTbPNt}3Dt#n~#4MTuV+9&}x3#4*43djD zJ1j|=%Ioo|GV(LlZU6~MFko>HbQqIx!FPsq+X;VrNVnn@N{q>has=+Dds{pi7jnqH zAYJB;SEQZD1gI~dM7WyZeK`>MS(3DrA4hwVBE?v;ITf$7@g(tZCPH`dRWy?HF~VE8 zXpkW_;nkh!g(0vGwl88^-)QWWaHlLAR=09s_Yz`D?7Sp?Aav@R?Xt-m<}8qLe0_!% z#vPm!EB{`>-1)Ih&?f~yi`5-RDH*b}Sc`9vjckr#b;rY`RJTpw-9m>q5;hKLB_O+M9h4^yP!@K)&ta#zgPLXJ zekR?s?p=Ee{|DCf_#tBW87#+Lts^rc z$XXdK^jmFwX!QYvqdqz{oqHf14(r-#;q}Z@?+x8*;zQWGNg57GwRjXuoAp~^m^6}6 zK<5Y22)tsTh%N1Z00ppAFAL~=ry!WzHt#^vO``VFLmc`M5z*uzC6)RN*}rl$IrnKWFfsWJysGSm78C(n4p?S<(}IsQG`;1q}2# zyFrhEFu(~~EFSc9@jQ&`U1GDDzdPfWc0A51e$z5Q6eb+p(%zJcPRk?@cTmlu<+6*$ zAPuVPlro}qm>pv%EW0R{0>Bouu@GYowJ&6Bn+XS1Yb>mFLWU8%iDbacfCv7`3Ipb4 zO4I&VBw#ka9>+`4!YDz%X#=9V?NK<(Vxt_EJ{28ry)Bcj^GC)a9d6n~jbRByAfAcn z4Xy@lY>zY&b%X+l7u>>$92nsn*}-bE&*~DL-_aFioZQ_Y3vK8-L<~f|eyl)AL}nrc z9f?XyoV%ysQ`L2RMO2CEf{EQHn=z+jnt1~KQ9SAZ2McMw1Hvmz*q!ZV@U1;=tjWeR z;qZ>Kw;=D2;(1p?{FF(#Z_~jR2@+9(5;8+oTbqrwBdBNFT%&Y2*5)AU+r{DRH%XAr zzxJw|VK+YHMP)gwe!}tAhj{a3{7iB(W6hfYjN6lC9C%uH8~;dE>a1gjzBcbqB&ja8 z`SE#fn{)oP#?!i2JyLR^oPLPyL^Y5JA6z@Yt*^ zD}G5%b|!Jc=ge{kjE45;${VpJwFLK|;2@pL+)PyypWXXB~Fb&n&QP_P|{m!Y)}lx(NhQ5^=cF zNBC=BkLeu435~Mk<3O(`S&VBGi|y*}6`<@%??k9Psspv|>i+dg&oj)kM=-LU7>Lez zmK$Hh1PVP?NyiU$N#VR9omsKip~E!Vv|}*)*Wvi8X@{BKa{@Jv=JOSR)z4-s5~~p= zrAL>-s*m~9V?UFPyGT@pO0Qs}gN(r^H0-2vo4T6dGbpId+FX92-hQsRmLLnHZR4|Y zJoC;Qw}%?HH&`22#^AuxJ@^DNt@E!=nNmMRhN+-Ki|@j5P3;*> z6Y@A}A0=yA%Yil&~ezZz#<5SFtZZ>rzxY_!zXF-*f<-Ff9hT-^_>9OOs0*V%6Iw)v3()lQsq zx+am@2u#Wr|0+cxHwTPC!-M*Ya-=r{JqHJDQ;L>h-cvraP6z({z4-JtdQDL-ymRC) zao?F@@|i`Mibv5zdT!2yr~KvSxp-`%cQ7tj$%p7JBR^;p`NAU@w*JJUe%6tmm>mck zF`%@2{S;dZLk_OSJ&>Ix9)r=Ch^}VTD*JY-FaT{VlzKrcv%k+ zX1o5S<-?T-2)!Aa6&NC>yI_w=(WK`GQ&MA1J&^iz>wi*`ES=@dZVhpBVjb&2H_1^;Z29HsgkTW zp=N%`;5>~^?X^bT>j zH%5$^PciAQ7`Jm2>wZr{K7`W?hwHLNxQZ;W8f!jBX|kkmNpRG@7w<3`c}$2%%IM)? zfJAB`f1Jj@1YUrO(XA)$E)1%w-8$hKF?%k2aM>GQ$`GcB+4Eb{=C7yPnRfyH!gyTu z#f-Y?Zv1H*t$VA+cy!a~!fT&|&0KJXx`FdTl9 z2l1KP!MbPkEeA)jcV#gKgw1|rJEI#z4I@SGj-fc->vD3k6h;JL7g(6FhBQ@M zf+?IB-K46BHMFv0#h0E(2yDaHBQ{YeF)1-H62=S#1x%tVh}yqFS~mY4VMr`}+=(Rz zTP%t$+GG21Cl-Y}5pm)9l=WL<&9l^UxL&QhM&VGZ!vKRr+2gjKAWp;!mXBFrNq`+? z<|8gVl~i?tF9h>*Ldk*n6CYj_Is=7eLBvEURUyLG(ot&{e`}{bT*upzs-lfGZzE%? z5WV(VrD*CTxTa7`N=d}r>{T&0zK-qD-LBC5S*Swu3HQP_M)Tl4nqlD;g%FYZxBNR` z1BFv6(m?RDpeH9s(B5|YIF1fj#NACK+oWEIBS(+nR_p$9o%KKkseT{;*GEDXB}Y2Z z0{=Q53N!e+slr|JLp^CaEN?LT4hfvkPYdA}dCMzx@c*mIA57~?G86wt#h;`+AOo_I zcoAmO4rn{w@t)fzH?|KCJBx2Ai(k3Rbd5g@Z#@~dANOJPeX()D6`xE#hZ~Wnhqtze z9l(j5sBiop@2x+C9bD|r)VmRx&2#8p2Aq$Y62Q-8qhV&+&=y17Svq%?e#Pt@+@}-I zd#XCNY{}Xpm4T`(sTlvvP@ojV;05?+lci!L-?$S-SaEm_OM=o#Eby=*DBEEI-Xv^K zIJ`J1OD~L}Yx<242)k2Yq*?4}{K?dK(iC= zfC`~Bp*y@@d>x@@QK35}R8f3%ow*yVGS2Ni_7|ZNf%Ex>1+bsxo+ptQ0+t%=C&13b z2o@~z!dC@ z`}}aQu$OPCG&nCOtsPLTZI6Nfgc!p%Od$h`gWJ;p8h1944*IoNECyknFxGw!Po|nz z43)*BRGRtTm+7Me*uZ$72Riq>j>=$QT=Ry4O5wJhm*e^^K+b+Q;ZM0 zfy#N=zGkrV@)G024>G90_((ZkibLA>V#b+O9M;}|Cs8>NIE@cyqhf> zMcmyU0~om{Me0$4HD=@XCg>MzAgxoVtt{{k@+nzwZ-NnK($e9t#q@r41-i=xu;or~ zyllTv7X?dc_HNXa_g!CA+$%P>@1|DAG6nSRc_*OVbU7XqNd}8|{>lu8|CbD-S%&8R z83IXN6lM1ws>oOq%F1-3v4-v?w10tY73|2>U!t85>ir#SLZ=?*0u>+tvxC!i8A$lUvngu@99(8WFO zea-&{MA(9G-bh!~A?ynKc{4IH^kMd+i{1B!xE(=-?&MI>eg-p?857jK*Jw=J;liUe zrtxrpf*Tm4F-?YZ!xh2(2=^7-W;ix4N25f{SfRLgC(}h@no1*^3v2h~G}}*o+HC(f z+-bP);Uu_rxF6uWaA)9tg!}1ov;F7EzV%i-#D_Ge1l{P>;UBtKhC+Oh@LC*g4TE%4 zh%9uC$f#(8Kk!>$V2Hze z()jLfd<(Cmu{~;OgDC?lE5D9|QD>N0=$?1!zI_?)s!q>48pDqtp1~^A*bBkU zIpeP8uA^vN*e`q#8(uVMVRh9dd2%@xh*N1wz!dCg9F9(Vl%~*~fUoCOMIe?$lMr!xn^*G?hZ2sg&+L z3&vPyE0ndp+#j08YU@(8xGd$&kJ52|1wX`xoI0LV@-HCru`Bw3Cf>Ou7*##rdjwr_ zhYsh35;475*$JJnp-S7Aa;W>@UK%QxeTTwWL-S#A5DUwuFbXi%oPaM~M__l|1bjXR zwO32FKC-are0zedh&zd0(@W_XVkjfDn5>t@rYhVW%T!{r-BQZ;3?+n=P?@27bHltx zrLsNnObiynq=k4>F8M-6qX+?|F4oN6^r|$dWiz>;^pQ`VHUXDaps@uxVGrXGyS}-m zv+J9g&_o|54empwh(P zz28WGwHoGMaVBoBxTjVlo)qa*KABDQottb${SBW^%7k_o>23t!jC;To<7>KD?|E$h zT>In=$@L-RnP%Lqi>){(HbO59G6kRgfGk)K_}6Ic*KygQE1}`s8(qg>h`JYM1+_y8l%4Wsb5*Qg!LCre6Ps!-6MC8++Y1YwRPbnd95cx?ltEd_(gyecV0 zCzzA8Lb!5o(;d=IhCmr>3Qn-6#csgNfPv7Vg?V(C-=3yz_TY0o^!)&Q59|W_02DqK zasdjV#&-uA-)zL8m8-F5cBXubB%Nn%53UIN)*iaXg3}Jy@(V$7h9vC8?dBjHYT>I# zgm~?<)pmVQ1I-Vkb zakSHZLPK9PIl~Zy1HqjR;RiC3#^X@oga-563C_6^ABH*s%|8t{iE~1Oe4MN58<@0p z6?_9bBHzhEjH}=~RC(2DjFK=^SYeC(H0SgVDwOS~y?WXH9r1PFU^=B{s<@_5%=jj( zrO-V{%xH7Z3=(1Yb!JGRJ1x|EO<~u!*Wd=bjzhCzk*IFrobp=Si*~P3^!`}?Fl2pD z_6{We`&{1KqznVU1a^Gwh7S(?1LrqKG1Qs2iDUr!Lbsk`B!ioWf74tjCTm@717NZE zdJm?u>WMDS>AB5SZtzrH*s^7doY4u5N@Xeniv+dReMl}S)_vI4sox1O+fMi|IM1!t z)z5%y9EIMy(f4TZTew)ROQv?RwKQU9dbDNK|#Of4G^M(b~BFTXu(N1z5)4M zPx%a=ns}5yht1bCFmX8H+M|;u;|TiF<_bX~I{q|G&pr^9-=Phk+~`*KNRS*Rggt9=}oAt9|5&$B4YY^_5rr1dQ2n z5%&bc8tRAhBg2mK!_%hDMuF!;HA5-zOwu~pqjTU~Xy7#A3rNSB_<=0f@}RC`R}_8_ z!~X>EQ}JQA|B8vxr{DzLqSV+Z)L9fHqp*Mxi|umPS$6Z&faei!vbdMDI!GjdPy_ba z$6J4BJsO5DMs%GQJ8(NR3NfIj(sf$fT0Y2%cq{eg1FVR)PU*>oj*0y`}iU1w!d;yswq49zbnlS7YJh#tk%d5_Qo zU$3e@jo#oC_AFX_7nH)pDLv@Sw?l^fbK(j9dg$4G53vEfBH?ucULo-M-23N6ixrBe z^deo8XUeb2qlX^ys4-aG{WYsRG3#ea=^jiNO_*~srAh2{N7Psfw=UX;<%UKb|I zJJQMLTKK5bgNfDq(&P2l^$IGyo(sHwA9y_xcx?^5HV0lm2)u3!ylx4+{w47GNZ_@G zz3wO@GFLv_M<&s~7rWyf-4w7W5a26@Qhp_^WgenfuZ+UN$0*_H6n@QbgzJ5IQ}|`n z1sd*ue*aSg|5F41|JT6V4h{DLTuF|GtAYD7+)Hrp!0mzi9PSj{CAg6J8g4M$wQ%up zcfieoD}q}Aw+?PS+_P}6!o3f-7w${AQ*ije4i^O%50?&?4Oa-q!_~lTfE#_6hHJp{ zFx)A)b8sOGG~6(_c)00s`EU=w{R!@MxE*kZ;3T*Zq`wO8cDU(q^Wlo&D&gwj{si|t z+#7H^;pjI3Wg80@1*eCj-yGjF_bP0^B01B>WX{wE*DwWk!cyQ0I8%oi-}Q!R4{{yj z;g<;8VQ>U*90G$~ga0$#M*7_3@8F|+iNEpv*5bJ~>c-T$mq!e=m0i!74#8zw6goD> zDs)hqz^`NStv5ZopxzQbIpBx4$6IaOZJa3=PF;?Tw}5syf2RI)w%ZXGPMx1=9Q@$Q zl2AUBbt7E=vTwjXb=w5citskL_@@y51ZaI4et17L6MnP)lMZe%>Ln92!m0CYxEEni zNRFS4JmJ*gnM;vw4%!Az9adHhdf?*cA}yS{{M()Z?q?B}4Lae};qhBx_YQ8ue1yZP z@ta(HnF?O6f=g6zsS4)i ze(?0;ae?}{Ulm@if-6)ouYv^?yg~)9RKcrMuuBE6R>2Rb;0IN3r3$W6!E06UIu*P| z1+#ur*VN#9+H4blE?Uqwda}P?wGDdrD_hDz^R^}EPrE-Gw{d8qL{^2s0W+A#IRduOKu z-wXv`-JZAI7y7|zAEvYo%|dvF65g}cP%*V1eC_b7XUEM#coVmAU&swx*G!$*aCHIT zIZFH*HGL|$ZO~uuToZoC{7eYaYd7z>Bf4?veeblI|MmdV?|x=x?)9qrcx?F<_2GQ_ z{M_8H5B8-uY9(xKfH1D=AQm=?v^=2^7`S+Jv%m`KWu5t_UMZP z^ln@zKEJcrDWOQ5GIc|4c+ zkTc}I0R1-MRe9?J0oXbGRMlh89WuLLLwf`#-{5@ep~nv1-fDj48lrc{8-==h>(X)*pak={I?|M)4mC1NC9M z^|}w@zDN1rQOa+*Pk-*OqXO}B?=F0?Vsrp*n{>M7)wF}=>Qd-hTOvy~O}o18{Fj09 zrxZSx**>Jz?0!|LkL$j@_m7{x4|u6UFIQ*EuX-X7UlTdzvF`N&IM@2xwy)41Ua3ZX zef1XKcI?F1js55eQpKOrI5hQd2?2UiRj^hS|3ccc`#(O?YJPVC>TAy52isNg(^N30 zN}s2qZ{E1f2V5BcTaKfA+Izbn&fYw0@;wL5uTMw)B#zqjhzj1If*)1Ee^SAZso=*| z@DnQd&noyy75tP6ep&_pMFl^jf;aup9$sTb|6h*st-7Y^1r@wm1;3<%Usl0eRj}>M zRd&lG0sJ?9f7{%`<*nuqpzPBvJhXuO7e>sADbRUTKl?4bFPIh-wF+~b?mRN={!&vibuA`m`B1>00` ziV99u!FClqOO;=y3f`LbPt#p11NpzAf^AXBnuq#@C#&EoD%e?a^2oSV0emT{@HSO_ zRIB2*ZMgnLQ@`{lRq%Hz*s>%3sww^Ak5Iw6Z`7ts{lYiCRFyS;e_;GJe0=SXTN?uK z5>OCKa69w4}c3=|K567Mq`X z|D#s(x(3YWOUv(X8(~~~67#noKBFFIuYvJ>rT%=!Ah_S-W?{p)~v zSEHVbJE@IYrh-dV@W!DF_#^xw^Y&gPeM1)?H}}zl=2t$$d{FezznsBo&t13mp!v@R z&e@VRbDgdCjv*&*J!F3NGUA7(e3Gn!<3D~Y)IPP<{PHI7Q`*;hZc)LO<=)njD9>|G zD(SgBcNL9&E|6c_qW0TY)&}y+Es8N7t2=0Zb|&HnPg#`v@(-y+p9J8I?Q`cA96w=bP_b(;wat z`|gcnv7di=t3v;yD%jL5-Mr=PL*|$NsDy9&Z0w4wjvX?;pG5neAMf30S^7)V;Q)Ny zW4F8$-Vf$%tJ1IT2j~70HDv6gs1Mq2p*|a~IyT_Vwm|u8+3z{-{WJ2bQu5pAKC`NS zc-aFB-rt4&>$8nYdAQvtI(uITl&|eiziQ-u@WzZSd-|u}cV7GdTNbe!uSKkeA(Qzh^xkA0}jZ_WWDwta^7glWf(`$m0smFv=9uCJaJkmuB@ z;2IVDkP5C=;ajJIT`D;K^`CFKdp7pJuTuN&eC)}ht=XT49xy{D40+PaWv0L0x1`F@ zYJTEvz$f?-+b$T>-yYLy-r0rr+V#lKhu+ye|NAuTZ(pbSOTJ-&`SyYvA3SV+A2)2f zh1UnK8uR+$Xa3%5{-X~3=3{StwD0IS{qFIH&F``O!s~;-&uTpoa(e)NKo$Q%6BSZ6>&>wRZdPb?>(JFY;Yk$t)mUr0v=1ZuL*rVHDP{G%$;-{{9C3NLp zl+U1)&#r0DE)`s(f@@XqLn`=>D!5Js*Q;Pr1+Q1Z9u@qs z3VuWdZ&1PI53M=-4%+vRVM_h{NfrLM3g(`FfAvq>Tg?ycRQm6qRpC#m;Kx+((<=Dm zySl0u&OB`Xum%19y3^jjsKTF7!OyDT=Tz|XD)_G|c#{f#Q3Y>N!LO^}zp3CiRq)Fy zc&iG&?~S)&Zfb8eZ~Ykcx4FFJ6;=4FD)==OEST;I>7V|=vL5?8F{nS9KTv;_D!57o zuTjC$C*Iur6Xa_jdKCPdRN>l5pAQ&WfcP;={P$J(R_^{e?#a2J?-M2c zN2>6hDtMO)ZcxFsX}^s5HRQ1Q?FR_oEq~6vesoMu`$6-TFUK6$HFDgC-Rp*llMkEU zC3!%?RWLoJsCQi0fpa$e2u^>GGtGhX!}PQ?E3g4i6P!QY3ZMTycor(}4Qn)+$w=aq z<*CWjDl*GUmlRY~l$NIzz zrT7rYWlftowI9f(&dNxhHZ$Ne=l1wp6T?Gqv&NIH$io{uWk00&?`lSuQN& zm-0pB1$p_Xp(XdJC^_j7BNqK2SX(4aPURps-l@b?cnd9rAGnU>{o>#t_`fn&YrQh35{dPoXC`Jwy zY67}2chgNbaTEQeEXhOf7E10bDP37|2c-`DXk4r_YD^EoO)cPOhM!*ryRy@CeyJh6; znaMLb?v|0$W~L!qdZw~x7V}S^uzdN1iV7|tzp<7K{4Dgc8b2=M=KP!S;4*RDBN;BW zU`fI9dkV^l`kAFG`rc>myuV# zqzKQnf_usZU!6|RD`Bt5hwyX2OE@{;B0O*afr_$9)~y_!pY$kJ_tZKq9I4*g}gxm zC;>sB3*>=H5DS_?I!ZtV@%=2pk6lfdpAw-4==baYq&AC>Q`*joC&kwwLeYPTpXrMi zj(8jXOT024-Uofp3%=(=zUQO9=d-@&%f9E^zUN22=U(6Qi0}E0@7a#0pWZ0wAoeep z|DDPQv{Fi%$0&MSX!Q0T7hw?0i3nE0uw|=0bjm!3H)|y`p;&s z2d%8Y~s7xTL_mjBWqe}T6yX6EF>(sm&3Z|3;abhOW?}{KDFQ;3_BK@ z%yD;6Uc|;E=jVfYK~B3hGcd>drfpzaXUuv(e2#bNFTRN>(B&_p~M*97pmptd`tg**oRO zar;@VlrCSMR|0BE3X(Z|Tc?1}E-0@6H^6bD3CbwV7nT*IBg!&F;4b-UvK(vKT($^L z%jdW)L35W?WFcwZGR#yj5TszweU)4?K(2 z)!tmAW=28YivNhtRdIH3I@E~NfFJnt_m%MlM%|nO1>B*TRxu?nKL?}~Wb)-)RL~r- zDrrlXf%4^42TEP0lwujjs!iq2;`0?xj*BFiBF|l2R={N{p?Tob%BGbRmL}s49WYRM zCNT`O`d!1NEGw<>wGj7w&|DuA16Elfm+R`+W`56D!mP9{VVen_0ImBr>xuRNU!(Nm zie&EZzY~(f9S-t$y1Au&J&_9`{QrrF)Bm=A4##~P#Hx%{)ZfsiC>*hO1^HOF$_t2h z;<#=7{il`m`HNI5^Gb?XFU_~FT7tD7?GId3MgLG*gqndGgnL_oQ%dt$196p%Z8mT%ML0g`Qie{=`3jy6@H9jsKYAjsvIOLnq`YrKxhz8v59Oga6z+Gq6F^s%lFkNN zJK!j68|buP9o|Z7FU1`afm?Z=L5;qc_piw@a92kIoA9O`2m>cV+9%8Gih-Gg|!pb>RZhPp7J zE=+#`K9qkO%HM(bZHT`C;WmV|A;01v@8}5I#_a*RA6xshZ8V~_>xD*80;Sxl|zUMxYOdts%2{|Al7y=nWmXO38 z5)d_9g4|#b4^|^`L_|46%_2fnKtvP}6&68JqvC<0qKk_1|5o?(bkAglWBu*te@%xk z)lUu^#yY z4Y)S}4MxPFyqJ(Ti#(t=*t<+>A;aS%k?s!A8-sZ0o3Ou_U=K0DUSTroA%s1KeCrUO z$^r4QKbm0AGX}Q^LmccECfE~9uY}s{Xv3`q z(&0yODhV_xeP9F9lSG^vQg0w50PIUA*n>?P5FdNA$^I1JVbH-`%h(b50Vc>@#;qv# zO`yZUA3W89r*xFL0c9?I9&t7z40)Y`EIcJZDR3v~P#2RWBSr@4mLgnxAz_<>(* z*q>g26(|Je1M7f2z-NGA9QOGG5-=Dj1ge22fmeVdz>h$iLIb%ONCHL!Q-H<5bHFa( z6X4&#^?yfu1cm^Gz%*bvun~A0Xao#+wYL*+3y=bg1?~eL2G#?+fMdYVz%@l^uYeQC z2F3$3faSmoz#iZe;8&pI1OpL)kw7)D0@wjG0x>wXpeK+3j05HXb-OUCJb?NG)&h+{*Ex^}umv~=#LmUb*uWa#2yn$b1Gx#v0;+&jz#iZnV44rz0!o2L zfnC5iK&u7NUmyX<2bKaa0SAEZfmRE_Col?_4;%p6EP^b6M}cEN*Tv9FU?T7+@F~!C z33vh0fO6m=;2>}cX!Ri4Jdg@32DSj716S6d-hi3F4xr^yv?*X2a1glaA-ul>Oaf*C zwZLn@A>c=##WDlw4S0atfxCdY0R8OQW#n=aLzFO;wByvOX5g8@sb2GfDD8QP9n)<5J@3}Nh(Rh zD=tGw2FWB@B%2H+!$=OfjSMHZlM!SjxdR=*D3V7;lQATp_{dmNfG(#HLz?lVh)f{G zq=b}`J4qQSCl#cU+(jmmDl&;oCU=u5n1S3&?jzM?Dw#&6lNn?txu47;v&jQw4w*~l zk@;i+Sx6R<#bgP2kkpW+{){$q)b7Vc)KsI6y@H}RuFOV0>OE}i~pJWSpnQSGm;Mkn)q=CFjUL&uQ9b_lj zMcyF0$(xu(zD4$ux5+zXAK6b1kax*J@*a7gd_WG7!{lG&2>Fm4CCA7|@+~<@z9Zk0Q{)HoBl(G(CO?y3FmE|Se#MOQcXF2eLH@+I zeCWHtml-ZM#2A_xnj5Y#v@l$0XlZC=Xl=O4aJ2!8mWDQlwuW|w_J$6IYYo>KIvNHH zh-Vpj!0dK2@dJFmA}m&VJVRm=Jh5>@8INZ;X%dj5`Nfw^D8)oAKLOK#F%=$964Ir| zrpIO{4aiXal65rVv5?E&8pHGuG!E7M7ydtj{nT2CAI8?`}H^(b4 zu7^(+9I8*2H=)#579o)?OrPX@`RKxQNmNlOB?=>x;0VD2Nhm5REG_qi=P@WypJVYD z%!=`pBSNy^U|mA2r^;&w;nM|&>XHq_N^kfiT8J)sQn9ZLkAuRe2ny6C8eD=k_V7t` zLAnI#zOurS{K7G6nlOS7jS?*S;7~o~vXZ~c4T9EaQ~z=$M_oV$bV+3+I1epE7d?}% zy%mH{pbyg}$?{dv2ZZ6%1O>{8Sj`w@t7TC9Lfd?xh-z@4i8o28w%m{at@VWl_*+=0 zx4#vIc&m*h)LU&Iq5hhVhlFTa91@`DYKUh*9Yg&6Iv3)rsZ3}<6O~cqi4`fTN_v%1 z0u;pvp`uoPhT{B=qVSHb%f;g$-2|G!g>=O>G(>*Q_a}6z9Rf#P6dUF@*a2)hfta)1_c`)W!Nw)cePIHga=W4B8I+t|kyntOmXw<1@g&PbU_}mrsOL$a9;XT;J}uRo zl$Dg0>hUm|DE?y_=V3%A)ByPirHRN$WEx>hq?3xbunc`1ofkA!4lTR$#nKUzC5xw8 zWqwstXEcf60+o`H5Krp_+M=kjs)<@Y5eew)6v}z=6d+QqgQNP998TdQbD-x7y!EA7?Lg%4<}h-0fgV@ZtV>iawJ)H#>%>V-SlBid+{pD>eep`IqY`bM&M9V6f22NHVd(&M}?%1s3~WdSm;zM@(PQ6K?BuLUZAQfH)=;O zR}*qkb}R&?*4LPtER-UKxl}?R5L8!z^~InfsS@xPOrIiL+0GMPV=XRFqOj5B5o?hC z42eq^e(N35k9U4s5NXyPgnDTN}%aP4>s3o4^zbp(X(h3|2vn zR!O&Ar;QCUPyWeBn4~IwwS~*g&HqE`A5>GM#_%Nin^0y2c2kF$QK!es{eB`g>kTNu zHc7?4Di%j3?>9cQBd2WBErMEem1Af>>4TOgCS9K626z85QqvF8UG{&HSaNbx zYPxa3#gtS(&iO0E!WLFzPgP>M2Gk$n<*&@c^nA(v8kN7A@WNCyb^_xtma5iYrlO3; zbYyh$R@pmGx%9;f;pburg(+G+YNtvCtm8v%gKEE_vUO3kz{~|! z9;m4Fq;yJ24Vs#}%3N$q|pvoNpN-lpSrvrWk`9h7QP-1(~E` zZ0e4c$D?{5g;fp#;aJo6*rANk$+f0Hda0 zixN&ap-U!BHB;s@X!`X(KsSh2e-0NzHh8q6rchNiVr6RMm8MB(_oB>QLp3pI(9$$v zB+b!vcN|07O9kmPCf)KN!jL|>YJ#fq`Ia}{ZvKsuUrIA{pd)X?${5Pi}nafuY+MzC`04q2x^O01LE;c1orNP z8_nt@K}!)5ImnT!5H10i<1LcyhsUni9mDBEBNLDy$Snl`f^Hno0Rph)9tl z*({ofz788^(vu^%05yXA`VHN25qRleZ^Rj%dG5X!oa zJ6v$U)+#0TYNG+Ywr5t9ltwNMovvvy^sEMlgyyAis#5lcDs4!f0%lGutQa#ct0Z=` zyqxUA%TIoFQ+cB$lFdfssM?yA5;MEpSB`g~c}@<<^p(-~+x_!Zl`NHoOg66+h9N)K zC+{W9ttiPYDlGR`YoIXLV3?zJgQ0azOE{(kEv2jiNsE2C@=N2CP>D`GbpvZkEJQ)E zqKPhtNHaFhY26EHe;}KpC$r>sc2&IIz8<~!;xN<^n zzP$UOJhv3DswqsULK`#?Qv!7$;!PNu6rZ3j4by>m4rN6lfj1syp+_X*O$tsgkK|FYyM))C8-GQrKiZ)MTe=lSxsi zEU6Ge>8K3`>^DhI<4?$iMTD%i1t2ClmU`z;M1X1s2NdNMP_@v-8iZJ-Wxmq9GM~TR zf@^FrGNdguTpWM1QKOXMrA%y>xS$rI0CX0nZMCHZD8m6D{wmNWZJ;baW6%Za1Q8mf zv7?0qGoutOlms%)MFUh8<^2hin4wKoFMXAYtoD=yJ%Hgn$&}@HIbvjGQ_KV_Pd$U9 zYT6bW2UUlhwS5D@mO_5)OQ$9JogGx*l>9{`MW^MTH|UnR562R8$xTMjld! zOCA`($b!~&t@5-=HK3~GBb7qen>C?xp6OvYhO|+$S{}N*qM0yl*H0v7lwq=(I`RZ6 zT<(D(iJTnLq}3QScZ!s2layLD23E|%R3eUm2{Hnzq>+Cz9W&*6i;4#0*_DUoNG=+% z@+eA)h4)?MPA77Z`amvBjB=GC9#1I)bGmA+Ca}nv=|=tXFuaLx@LZrtusTU-5}>|x zukw(g*sZJ`3*XNg`>2}C6jl|WPiQ3*sP5S74xPXd;YapXZe zgRy0d0jDP@*Kzo%_nmeAs-OI9-85!2-ExzO^Y;qJ7LHLi%*jX9u_l~S$l+*1Q}7z3 z&897bcWVh^$_S}q@bY#LosG0rsES5_j&)jd;GM#VTgBEOJ6V${xcse8&`Y?y-MIQ;Iz zaEiY{a9Jr+yz_)X_q)L%a0hn~TR z`=RtmMY_`z_v(y}#=-H2B)O!hg5D36Yt|%_qrd$#C=y#-fDURR zd7+fX^*@y%$^#*sBTCo2;jcW`0FUx3B7~HUCjRq=6zw*R%>&cX+oDvi8aM12NsCe*XH%te7NMGZ}_GLSu2x zCk@N+m16l*K3nRpJk(QGSz$qeuPm;zqC&27Z)KqRQCDN>+L}-AN9&c+3B0I*`vEwv zQy+)^PVwPM1;PgB6@Wx#KCR=}ii*53EOHkp&5-h} zv|LJ|*jH4J^ET<0+JFfqbTPNkZ$q(eX_6oOARWC&HaL5>0xg%C@^SQdU7Uu8!|@7~ zreJH?vU{)c?k#(jwNe%P2ei)NHliC(ciYLw_ z_1~4l7U75j%3pk5aqkL~A`^e8i9WbAVeuhCxIc~7VVjgCcz>TQbE*X*m!x7eox*$* zeHcn?FpQFE@n64*1i!@;RXXM6>I)agj<# z@79Ne?+^K18}eJ9_P>39=5i$m&vvB@)HTrKQq(Ij%2PdXUL0=qQM3@{j)qf2uc!nr zRsvL?t_4)xp=wF*V*ngMhEscRo;uJRxDvPmXbrURyVQ^VrpA_r;WLJTFiMxErS3HV zrAyVC`n3Vt`a%7>0o0!!>qdXa`hUm!f2YHxX{b@8@iP4`j{KA9-v*cFP5W>fJ^?TR zr2svu52j4!pO%C2Qw>m_r~2J#aA{el12lXFKnvfh$GZ;I=t%Xb5N)_BH zxZ~hXf|~<(GTcPCXW@F`;$$Zxz@>)5aQ56e+HR@7dw_E=BGquGLg#6IlvfjQ9{_vO zK;zNt2HYdLd_APQpO1T*hF%MF_X~CRi*)yBqk;HKboUSH?x|g)_KB8@%F1wAjGVd$#hv=Zaav^Jxwl$&>k$9dr;a>jQi7ZOKlM+=%j0)nxXAdi z{`fB<{=OBBE3PM>uQ;&+hlqw;0s8koDW@0$fetxx#}O0BJ@WS>Tu5xx!NJ2H9sd=l z*xsw8j7JQL|J~RB2|Q34R6VbZzxHPujC+CIzz(1R*b3AG8-O~X7N`Mc1JytUPzn?Q zfIff;pz%8bMxX_7Hp5^%4V(au0*8V3fW1IHumPZa zQ`ldVT z`ewT4&W8>yjla6t{F~N4?)i0lt@q^AwhO0D`=@8Sa~NOl3mB=eO3MD zz%38f#crKBKD)Pd{=Z9)Pl?-lY{5sr{^R#=?p-@1{>d-y`fTryH{Cj8>W$t$#_QIe zdCvIR&K0BUhh#($tW(YMwdoz#nsm&pq60~K znV))ZU$J}SvFhTKHy>MOnsZsks2#m3QC{-)-naKE*YEB-oh=VNRZ9Om;~t)G|2S>_ zvf{SWe|Eoqu%EBfr#aWXbl?Z~{%d;77}$B>x}9sjb9+|5SXi{a*(>Jzzj5=N-wwk41yy;%DBhy~#eY^d(N7uVQD%etE zO?bBJ#(g#Jo;`Mbx^;`4&6_*fotJ&vtM_iqoYMB?T=${xZk^wJ+me|be)qb2x>tQ= zUDf;R`|A3-?^*X`|heL8Man>86vcyD{j*soVo<1LbqmigQ}<9jWnh)-o$ zA;&ESwIW@q1|Z*f#8u?j260mmuRxAPC0Ys@P_F6e|Tenm->}`;8J1~gv#LrO*X!*fDe&gn>7 z0>4VgxI$ODOP4Pv%Qu)_sFXDsQ>o!wd^mre>TW4YI0mw!+{b|zs=xUN*Z4L;9}B_Z zIJvGXAU7|57b9h*EM2URA-(~vi^@rrfYt)&XHw8eapFAHwqnSUYKNwESci_;KqEx2 zs05-Ch)N(Tfv5zc5{OD5DuJj3q7wLjT>?hzEk_w!GToU+*=AfT{ssPSVUh5H&{}*< z+#ps;23rT)KWwkrn%mpjJKKBOZT4^Nr|hTgXY39~qGO0-xTCLAa=M*~&epDuu5PZr zuKBJab@cdR?vz1qFWjVTMh8%4-yW*oDVd5iI~$?PolL3TO2iZyfbTnd-X9pXOY zzU6-ACi2tydHhoT2H_@w6YRnvVXjy&?h(HdyGci+p)1*=tTTr_z` z2=gfOO!HCmclaDvTT4%iWJ$J6wcKd!XMM!F(K^kx&c55;$zgF6I3_!$I%hf8IG=TH zb$;ON?&|N7Tn<-}Yr3n2yS3ZsZts51ecDYYw&TEWGst8RKaB4n6bUngg~AG9i}0%O zh48J=MeHFC74HyRNfs$vS|{z2K9zowzP4OxooTh%2HSSpy4d6Gx%Q{+>+SXSukF9t z4UTNb8;)Nbdz|k(KXjgT#<`GzM|r050Kbku!+V9{LaA`Suw2+A{3#3)mx-T=w@P(L1+Ujku+Vb=cf-jiaNZn}c(B97&E0 z$L)?HNNKubo@1$Fg=4MbdB;}AGtLI*=Prl)E%zBWCeN5j;uD@s5%W9KhfP2&-pu82 zmE2w~oiFDT!2feXgYYio^s;zFTqT{A=9=rxt1M?NbFH=3nYN?0pKaIJIs3ErM*C^! z&2)ihltObAvz_^r8OheLF~WGUr}ixp}Yopt-r_YKzyBW*Kd1w0>{B z%yzx4n{9wC#Wuw@-S(nwo2?}@w7Z?P4{?BIsX|lYoSc`-;BMn`xp91)G*p@)Js|Bd zA2a`8FEq}AzXt~v5 zw!~SIEE$&JmP$yESYxa$tgWqa)+B3&b-1!j;X*H2XDi5i`Xp;#1;wae`DXO_pX#^P~gP zc<|WD+Qz!l`jYia)DNju)&|?5)gNR&WEz>1%x7#3w}M;CJ*a4OovLpCWd_F&p?R9VVp(QsYrW1o-MZMi%=#EK zd9`(|b%S-Yb&GYI^>u54ZJ*6;FSa*2dN~(3>zo^%yPd6E39dn|1+E&ZI}OU-K#qBW zspk%IXE`IE$fxml@MHNq`HB2Jkna=xO8z;1H~#_u5#Px77OW`G29)DNVUM^^ycxWt zNlT^2rGH9$rFW$dVRKrUZ!}A=fh)~VSe~)$vsSt$yH>iNruDlY`v47ue8qgnJj-q3 zYWU^+i~LspZT<`XM_8L?LIOSoL()}xy#c_h~17e>f)0K&31~FMoDf1v>WN%>aW*4x{xvS9s z*}(I~bTCyO(oF>Azi z(3;KS0r7VcTMN)5IG{6LDN#y+TppEbrIk`0`iK~F8%W@B)YUHY5p!!xJ4+w5?0m~i z%cGWUmJ^m=EWNF_SZ&tZt<})6mDbL-KCtqIux`KGn%TSA+c~ax@QzByEXT8s-<&tP zI9IBxz%|wNfa_7$6RvfxjjmI!bFQWCTK6jVdiQ4cx3Jdd-1uN3ZR+G2rUTQ3xsh=* z1DO;i2km__Q_Z}@>|)L^E!aWqFgA~^WT&%>*rn`a>@VyeYyvljo50`Czs$eRALGB` zf8{O0Y~eAqsc(eepedZ_hMwezMe|Q*1AlNzX_P(%Vu?b3e0St~M_;*O}je z9d2d0*)rHN*|Na0+p^E{v*jvlZ!2eYSyNFvbF2rfjn*978C!yVq`l1kyZskOiSusf zBIjeyH=PU7-Z!{jckOWx*2ymMnd)O@7?mo36#GT(~;@LSfG!CVR;ub zwalx`8z}pa%pc5UY)iHqE3ppNi}DX+XR?b?C#%^FkV6A|IrOzHcOBP-6CsDS+y?F) z?qlvp?h3va&+{HW9rolNej)!4j4EE?-{RlnkD$$e!~e{mh3#%B%cZvvFU*3?s}UbT z-K`eig3U{lvZOnuiP8rcZ*(-9F~S;xafi=5!F;#*5%Y_X%6H}gmJybPmVaBiSjX5W z+jpXeabR3C6B@b8(aPD|dB$mU#kq#N9!CpY?Ouz~)F$_f?k(9C|j0YBQh4iA--@L&50mg7&o2`~Y%MQyP%VCRT?TWF>ZTPrqC*(82F@^T) zbfXIXnb@9eAGROMumWp=q&$$7sx3L}2zC^k&yHh@*iyEFtzxIJ)$9y*He1K8gA_Nj z_3T#mgkPJ^uxIf}*BGuNBx>S%a(%dd9K#8mg>!Hoj2#j&K27JcFvc0djpFjTaa<8s z+C=+mxQDsrTrIbftK-(8PBx?0+{!g@JGk8#8SUrZ;|_C20~&gYJI$RzA3*pRz6Hh& zMvNRf@?Cfn-;?jd_v0B}z&OHz+VrBANI{)u@j3hm9_9DoyUlRMxhh;$uGz4BHR#*x z(Ed-m&R`Tv$FN=8CU-yR97(57RIqOrWuYyFwiA=!5WGSScvI<%PBDMIIG@RCqk!jDEn0^eEVFSB^-OcW0_p|S@ zhuNcOqm51E+JbA%8M*dNdjltU@Uq?B@mTBR02^6L?sZFKvV)z2}C6j al|WPiQ3*sP5S2hw0#OM>CGa0g;C}%#h?dC! literal 0 HcmV?d00001 diff --git a/code/win32/feelit/FFC10d.dll b/code/win32/feelit/FFC10d.dll new file mode 100644 index 0000000000000000000000000000000000000000..1f546c2e40fcf999183299c764142ae734442d7e GIT binary patch literal 405591 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 GlK%#D>d=b- literal 0 HcmV?d00001 diff --git a/code/win32/feelit/vssver.scc b/code/win32/feelit/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..3cf99a69fbd229a04c837d54d00d25af6eb2479a GIT binary patch literal 528 zcmW;GO(=r_7zgn8O%h9*EhJI9U^d&ZVZ$&(K5DYJhJ3djDCWCx5IGR$LWq3t<1#Hf zkcJ2cO%a6@+ChnwwQQ5-d7tO@`}gnPlMzW0-X`xP#ZfAzhFHeIk3~{@wozH0NZ@gk z2_igG#60cQ)sT>+fJ0ZEFQL~QG!NYEGUU$rrD#6blGSv`9KF%d{Z#Ok+Yq-YG@%7x zs>gKqO!T9L;K60bDW8l+i@>rYqnu^uqtn1ICR@NKKdz(q(!rm8K|pzNkIta`TQl(~ zWnXA9*nG*HXa0?&CEz7*5;tA8ip~UUr`I)9^FBHYoOfs)4R@;1+2B`umD8>MqL<(7E8CpOa4h@Odr$Zys3ZTL`e;p3rizcz)aH zYjdOX!NYqz@y^Nwx&RzwfAqRY2f7fPjN$+Q literal 0 HcmV?d00001 diff --git a/code/win32/vssver.scc b/code/win32/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..c121f66f004c3eba40007a5e8fe3da7a21507e47 GIT binary patch literal 352 zcmXpJVr2M{@S`hK$_)yYO&EpolM!e^WFy z?KPiTI5UthrpdstJIqBt_}N*oyf~1b$MEavOrJI|UjoQa?>^Jq`*;PIFA3xes)zht zujvHlO9A=EBubwOrWAtt(m=jJZ`_vS@7ck886cl;&(80>B?rP-f%eG)`6sg!dJSJc z3gZRx<$(MfvmBIzFa8N*1M=m8{N!Eto9_Rb62=7ND**W-Oe^wd?%xq64dg2V`7`f5 ziF4gq7RC;BlTZs literal 0 HcmV?d00001 diff --git a/code/win32/win_local.h b/code/win32/win_local.h index 65e3e81..7c35d3f 100644 --- a/code/win32/win_local.h +++ b/code/win32/win_local.h @@ -44,7 +44,7 @@ LONG WINAPI MainWndProc ( void Conbuf_AppendText( const char *msg ); -void SNDDMA_Activate( void ); +void SNDDMA_Activate( qboolean bAppActive ); typedef struct { diff --git a/code/win32/win_main.cpp b/code/win32/win_main.cpp index 51e70d2..d343c12 100644 --- a/code/win32/win_main.cpp +++ b/code/win32/win_main.cpp @@ -282,7 +282,7 @@ static qboolean Sys_ScanForCD( void ) { Result = GetVolumeInformation(drive,VolumeName,sizeof(VolumeName),&VolumeSerialNumber, &MaximumComponentLength,&FileSystemFlags,FileSystemName,sizeof(FileSystemName)); - if (Result && (strcmpi(VolumeName,"JEDI_OUTCAST") == 0 ) ) + if (Result && (strcmpi(VolumeName,"JEDIOUTCAST") == 0 ) ) { sprintf (test, "%s%s\\%s", drive, CD_BASEDIR, CD_EXE); f = fopen( test, "r"); diff --git a/code/win32/win_snd.cpp b/code/win32/win_snd.cpp index a59914b..9187523 100644 --- a/code/win32/win_snd.cpp +++ b/code/win32/win_snd.cpp @@ -15,6 +15,8 @@ HRESULT (WINAPI *pDirectSoundCreate)(GUID FAR *lpGUID, LPDIRECTSOUND FAR *lplpDS #define SECONDARY_BUFFER_SIZE 0x10000 +extern int s_UseOpenAL; + static qboolean dsound_init; static int sample16; static DWORD gSndBufSize; @@ -365,7 +367,13 @@ SNDDMA_Activate When we change windows we need to do this ================= */ -void SNDDMA_Activate( void ) { +void SNDDMA_Activate( qboolean bAppActive ) +{ + if (s_UseOpenAL) + { + S_AL_MuteAllSounds(!bAppActive); + } + if ( !pDS ) { return; } @@ -377,6 +385,7 @@ void SNDDMA_Activate( void ) { } + // I know this is a bit horrible, but I need to pass our LPDIRECTSOUND ptr to Bink for video playback, // and I don't want other modules to have to know about LPDIRECTSOUND handles, hence the int casting // diff --git a/code/win32/win_syscon.cpp b/code/win32/win_syscon.cpp index c9d8140..2adce86 100644 --- a/code/win32/win_syscon.cpp +++ b/code/win32/win_syscon.cpp @@ -434,8 +434,10 @@ char *Sys_ConsoleInput( void ) void Conbuf_AppendText( const char *pMsg ) { #define CONSOLE_BUFFER_SIZE 16384 - - char buffer[CONSOLE_BUFFER_SIZE*2]; + if ( !s_wcd.hWnd ) { + return; + } + char buffer[CONSOLE_BUFFER_SIZE*4]; char *b = buffer; const char *msg; int bufLen; diff --git a/code/win32/win_wndproc.cpp b/code/win32/win_wndproc.cpp index a58872b..ccf12d5 100644 --- a/code/win32/win_wndproc.cpp +++ b/code/win32/win_wndproc.cpp @@ -405,7 +405,7 @@ LONG WINAPI MainWndProc ( fMinimized = (BOOL) HIWORD(wParam); VID_AppActivate( fActive != WA_INACTIVE, fMinimized); - SNDDMA_Activate(); + SNDDMA_Activate( fActive != WA_INACTIVE && !fMinimized ); } break; diff --git a/ui/vssver.scc b/ui/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..c146db8d06ae73ce4ad9722e92030ba7fa37e00e GIT binary patch literal 48 ycmXpJVq~y1nfcuPzlLj9*7D~uCC~M@at6h+Gctey2atA}ps@MPipN*@fFb~Wu@1}t literal 0 HcmV?d00001

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 literal 0 HcmV?d00001 diff --git a/code/FFC10.dll b/code/FFC10.dll new file mode 100644 index 0000000000000000000000000000000000000000..0536f23bd32a58b9a7eed9c85fc223026b60f629 GIT binary patch literal 126976 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 al|WPiQ3*sP5S2hw0#OM>CGa0g;C}%#h?dC! literal 0 HcmV?d00001 diff --git a/code/FFC10d.dll b/code/FFC10d.dll new file mode 100644 index 0000000000000000000000000000000000000000..1f546c2e40fcf999183299c764142ae734442d7e GIT binary patch literal 405591 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 GlK%#D>d=b- literal 0 HcmV?d00001 diff --git a/code/FinalBuild/jk2gamex86.lib b/code/FinalBuild/jk2gamex86.lib deleted file mode 100644 index f5190e2a18931cf85926cb53b27f59a6c475c2d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2672 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