diff --git a/src/server/gamerules.qc b/src/server/gamerules.qc index 30ae7cd..b8716c1 100644 --- a/src/server/gamerules.qc +++ b/src/server/gamerules.qc @@ -21,7 +21,6 @@ var int autocvar_sv_playerkeepalive = TRUE; void HLGameRules::PlayerPostFrame(base_player pp) { - Animation_PlayerUpdate(); } void diff --git a/src/shared/include.src b/src/shared/include.src index 280f545..0ae18c7 100644 --- a/src/shared/include.src +++ b/src/shared/include.src @@ -12,7 +12,7 @@ player.qc ../../../valve/src/shared/fx_breakmodel.qc ../../../valve/src/shared/fx_explosion.qc ../../../valve/src/shared/fx_gibhuman.qc -../../../valve/src/shared/fx_spark.qc +../../../base/src/shared/fx_spark.qc ../../../valve/src/shared/fx_impact.qc items.h diff --git a/src/shared/player.qc b/src/shared/player.qc index 5776006..29fe772 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -33,8 +33,8 @@ enumflags PLAYER_ARMOR, PLAYER_MOVETYPE, PLAYER_VIEWOFS, - PLAYER_BASEFRAME, - PLAYER_FRAME, + PLAYER_TOPFRAME, + PLAYER_BOTTOMFRAME, PLAYER_AMMO1, PLAYER_AMMO2, PLAYER_AMMO3, @@ -154,6 +154,12 @@ class player:base_player int mode_sporelauncher; int mode_sporelauncher_net; int mode_m249; int mode_m249_net; + float anim_top; float anim_top_net; + float anim_top_time; float anim_top_time_net; + float anim_top_delay; float anim_top_delay_net; + float anim_bottom; float anim_bottom_net; + float anim_bottom_time; float anim_bottom_time_net; + #ifdef CLIENT /* External model */ entity p_model; @@ -161,7 +167,6 @@ class player:base_player int p_model_bone; float lastweapon; - virtual void(void) gun_offset; virtual void(void) draw; virtual float() predraw; virtual void(void) postdraw; @@ -237,12 +242,16 @@ player::ReceiveEntity(float new) movetype = readbyte(); if (fl & PLAYER_VIEWOFS) view_ofs[2] = readfloat(); - if (fl & PLAYER_BASEFRAME) - baseframe = readbyte(); - if (fl & PLAYER_FRAME) { - frame = readbyte(); - frame1time = 0.0f; - frame2time = 0.0f; + + /* animation */ + if (fl & PLAYER_TOPFRAME) { + anim_top = readbyte(); + anim_top_time = readfloat(); + anim_top_delay = readfloat(); + } + if (fl & PLAYER_BOTTOMFRAME) { + anim_bottom = readbyte(); + anim_bottom_time = readfloat(); } if (fl & PLAYER_AMMO1) { @@ -358,6 +367,12 @@ player::PredictPreFrame(void) mode_wrench_net = mode_wrench; mode_sporelauncher_net = mode_sporelauncher; mode_m249_net = mode_m249; + + anim_top_net = anim_top; + anim_top_delay_net = anim_top_delay; + anim_top_time_net = anim_top_time; + anim_bottom_net = anim_bottom; + anim_bottom_time_net = anim_bottom_time; } /* @@ -413,6 +428,12 @@ player::PredictPostFrame(void) mode_wrench = mode_wrench_net; mode_sporelauncher = mode_sporelauncher_net; mode_m249 = mode_m249_net; + + anim_top = anim_top_net; + anim_top_delay = anim_top_delay_net; + anim_top_time = anim_top_time_net; + anim_bottom = anim_bottom_net; + anim_bottom_time = anim_bottom_time_net; } #else @@ -475,11 +496,11 @@ player::EvaluateEntity(void) if (old_viewofs != view_ofs[2]) SendFlags |= PLAYER_VIEWOFS; - if (old_baseframe != baseframe) - SendFlags |= PLAYER_BASEFRAME; - - if (old_frame != frame) - SendFlags |= PLAYER_FRAME; + /* animation */ + if (anim_bottom_net != anim_bottom || anim_bottom_time != anim_bottom_time_net) + SendFlags |= PLAYER_BOTTOMFRAME; + if (anim_top_net != anim_top || anim_top_time != anim_top_time_net || anim_top_delay != anim_top_delay_net) + SendFlags |= PLAYER_TOPFRAME; /* ammo 1 type updates */ if (glock_mag != glock_mag_net) { @@ -650,6 +671,12 @@ player::EvaluateEntity(void) mode_wrench_net = mode_wrench; mode_sporelauncher_net = mode_sporelauncher; mode_m249_net = mode_m249; + + anim_top_net = anim_top; + anim_top_delay_net = anim_top_delay; + anim_top_time_net = anim_top_time; + anim_bottom_net = anim_bottom; + anim_bottom_time_net = anim_bottom_time; } /* @@ -718,10 +745,16 @@ player::SendEntity(entity ePEnt, float fChanged) WriteByte(MSG_ENTITY, movetype); if (fChanged & PLAYER_VIEWOFS) WriteFloat(MSG_ENTITY, view_ofs[2]); - if (fChanged & PLAYER_BASEFRAME) - WriteByte(MSG_ENTITY, baseframe); - if (fChanged & PLAYER_FRAME) - WriteByte(MSG_ENTITY, frame); + + if (fChanged & PLAYER_TOPFRAME) { + WriteByte(MSG_ENTITY, anim_top); + WriteFloat(MSG_ENTITY, anim_top_time); + WriteFloat(MSG_ENTITY, anim_top_delay); + } + if (fChanged & PLAYER_BOTTOMFRAME) { + WriteByte(MSG_ENTITY, anim_bottom); + WriteFloat(MSG_ENTITY, anim_bottom_time); + } if (fChanged & PLAYER_AMMO1) { WriteByte(MSG_ENTITY, glock_mag); diff --git a/src/shared/w_displacer.qc b/src/shared/w_displacer.qc index e47d9b9..d7a9956 100644 --- a/src/shared/w_displacer.qc +++ b/src/shared/w_displacer.qc @@ -120,7 +120,7 @@ w_displacer_teleport(entity target) #ifdef SERVER player pl = (player)target; /* TODO, 250 damage */ - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/displacer_teleport.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/displacer_teleport.wav", 1, ATTN_NORM); /* FIXME: This will teleport upon your standard spawn positions * in other game modes, such as CTF (your team spawns), no clue @@ -235,7 +235,7 @@ w_displacer_primary(void) #ifdef CLIENT Weapons_ViewAnimation(DISP_SPINUP); #else - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/displacer_spin.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/displacer_spin.wav", 1, ATTN_NORM); #endif pl.w_idle_next = pl.w_attack_next = 1.0f; } @@ -264,7 +264,7 @@ w_displacer_secondary(void) #ifdef CLIENT Weapons_ViewAnimation(DISP_SPINUP); #else - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/displacer_spin2.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/displacer_spin2.wav", 1, ATTN_NORM); #endif pl.w_idle_next = pl.w_attack_next = 1.0f; } diff --git a/src/shared/w_knife.qc b/src/shared/w_knife.qc index ae8faef..c7b1138 100644 --- a/src/shared/w_knife.qc +++ b/src/shared/w_knife.qc @@ -116,7 +116,6 @@ w_knife_primary(void) } pl.w_idle_next = 2.5f; -#ifdef CLIENT r = (float)input_sequence % 3; switch (r) { case 0: @@ -129,13 +128,14 @@ w_knife_primary(void) anim = trace_fraction >= 1 ? KNIFE_ATTACK3MISS:KNIFE_ATTACK3HIT; } Weapons_ViewAnimation(anim); -#else + if (pl.flags & FL_CROUCHING) { - Animation_PlayerTopTemp(ANIM_SHOOTCROWBAR, 0.5f); + Animation_PlayerTop(pl, ANIM_SHOOTCROWBAR, 0.5f); } else { - Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f); + Animation_PlayerTop(pl, ANIM_CR_SHOOTCROWBAR, 0.42f); } +#ifdef SERVER r = (float)input_sequence % 3; switch (r) { case 0: diff --git a/src/shared/w_m249.qc b/src/shared/w_m249.qc index 0fd3daf..ba51c52 100644 --- a/src/shared/w_m249.qc +++ b/src/shared/w_m249.qc @@ -185,13 +185,13 @@ w_m249_primary(void) int r = (float)input_sequence % 3; switch (r) { case 0: - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/saw_fire1.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/saw_fire1.wav", 1, ATTN_NORM); break; case 1: - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/saw_fire2.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/saw_fire2.wav", 1, ATTN_NORM); break; default: - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/saw_fire3.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/saw_fire3.wav", 1, ATTN_NORM); } pl.m249_mag--; diff --git a/src/shared/w_pipewrench.qc b/src/shared/w_pipewrench.qc index c0562f0..06fb845 100644 --- a/src/shared/w_pipewrench.qc +++ b/src/shared/w_pipewrench.qc @@ -124,7 +124,6 @@ w_pipewrench_primary(void) } pl.w_idle_next = 2.5f; -#ifdef CLIENT int r = (float)input_sequence % 3; switch (r) { case 0: @@ -137,13 +136,14 @@ w_pipewrench_primary(void) anim = trace_fraction >= 1 ? PIPE_ATTACK3MISS:PIPE_ATTACK3HIT; } Weapons_ViewAnimation(anim); -#else + if (pl.flags & FL_CROUCHING) { - Animation_PlayerTopTemp(ANIM_SHOOTCROWBAR, 0.5f); + Animation_PlayerTop(pl, ANIM_SHOOTCROWBAR, 0.5f); } else { - Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f); + Animation_PlayerTop(pl, ANIM_CR_SHOOTCROWBAR, 0.42f); } +#ifdef SERVER sound(pl, CHAN_WEAPON, "weapons/pwrench_miss1.wav", 1, ATTN_NORM); if (trace_fraction >= 1.0) { @@ -252,7 +252,7 @@ w_pipewrench_release(void) snd = "weapons/pwrench_big_hit1.wav"; break; } - Weapons_PlaySound(pl, CHAN_WEAPON, snd, 1.0f, ATTN_NORM); + sound(pl, CHAN_WEAPON, snd, 1.0f, ATTN_NORM); #endif pl.w_attack_next = 1.0f; pl.w_idle_next = 10.0f; diff --git a/src/shared/w_shockrifle.qc b/src/shared/w_shockrifle.qc index 72ddd56..3771ad7 100644 --- a/src/shared/w_shockrifle.qc +++ b/src/shared/w_shockrifle.qc @@ -185,7 +185,7 @@ w_shockrifle_primary(void) #ifdef SERVER w_shockrifle_shoothornet(); - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/shock_fire.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/shock_fire.wav", 1, ATTN_NORM); pl.ammo_shock--; Weapons_UpdateAmmo(pl, -1, pl.ammo_shock, -1); diff --git a/src/shared/w_sniperrifle.qc b/src/shared/w_sniperrifle.qc index 2c8bab8..42f0601 100644 --- a/src/shared/w_sniperrifle.qc +++ b/src/shared/w_sniperrifle.qc @@ -131,7 +131,7 @@ w_sniperrifle_primary(void) /* Actual firing */ #ifdef SERVER TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 40, [0.00873, 0.00873], WEAPON_SNIPERRIFLE); - Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/sniper_fire.wav", 1, ATTN_NORM); + sound(pl, CHAN_WEAPON, "weapons/sniper_fire.wav", 1, ATTN_NORM); pl.sniper_mag--; Weapons_UpdateAmmo(pl, pl.sniper_mag, pl.ammo_762, __NULL__);