From 507a10eec578c9164ce690447971f47787902610 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Tue, 5 Jan 2021 15:51:49 +0100 Subject: [PATCH] Client: Allow game-specific model event overrides. --- src/botlib/bot.cpp | 1 + src/botlib/way.c | 2 +- src/client/base/event.c | 24 ++++++++++++++++++++++++ src/client/base/progs.src | 1 + src/client/cstrike/progs.src | 1 + src/client/defs.h | 1 + src/client/{events.c => event.c} | 18 ++++++++++++------ src/client/gearbox/progs.src | 1 + src/client/hunger/progs.src | 1 + src/client/include.src | 2 +- src/client/poke646/progs.src | 1 + src/client/rewolf/progs.src | 1 + src/client/scihunt/progs.src | 1 + src/client/tfc/progs.src | 1 + src/client/valve/progs.src | 1 + src/client/view.c | 4 ++-- src/client/way.c | 2 +- 17 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 src/client/base/event.c rename src/client/{events.c => event.c} (93%) diff --git a/src/botlib/bot.cpp b/src/botlib/bot.cpp index c7ea2bbb..d3561e74 100644 --- a/src/botlib/bot.cpp +++ b/src/botlib/bot.cpp @@ -365,4 +365,5 @@ void bot::bot(void) { classname = "player"; + targetname = "_nuclide_bot_"; } diff --git a/src/botlib/way.c b/src/botlib/way.c index 50d2d0a6..7f2e5caa 100644 --- a/src/botlib/way.c +++ b/src/botlib/way.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Marco Hladik + * Copyright (c) 2016-2021 Marco Hladik * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/src/client/base/event.c b/src/client/base/event.c new file mode 100644 index 00000000..033a47b5 --- /dev/null +++ b/src/client/base/event.c @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +void +Game_ModelEvent(float flTimeStamp, int iCode, string strData) +{ + switch (iCode) { + default: + Event_ProcessModel(flTimeStamp, iCode, strData); + } +} diff --git a/src/client/base/progs.src b/src/client/base/progs.src index c42c335b..03a7fb7a 100755 --- a/src/client/base/progs.src +++ b/src/client/base/progs.src @@ -29,6 +29,7 @@ ../base/hud_weaponselect.c ../base/scoreboard.c ../base/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/cstrike/progs.src b/src/client/cstrike/progs.src index b5023255..401fa09a 100644 --- a/src/client/cstrike/progs.src +++ b/src/client/cstrike/progs.src @@ -36,6 +36,7 @@ ../valve/scoreboard.c ../valve/input.c ../cstrike/radio.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/defs.h b/src/client/defs.h index a4b8ee97..e6bc3189 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -90,6 +90,7 @@ void View_SetMuzzleflash(int); void View_PlayAnimation(int); void View_PlayAnimation(int); void Vox_Play(string); +void Event_ProcessModel(float, int, string); /* this really should be done in-engine */ diff --git a/src/client/events.c b/src/client/event.c similarity index 93% rename from src/client/events.c rename to src/client/event.c index de2461a9..7186b0aa 100644 --- a/src/client/events.c +++ b/src/client/event.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Marco Hladik + * Copyright (c) 2016-2021 Marco Hladik * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -62,30 +62,36 @@ tries to play an event. void Event_ProcessModel(float fTimeStamp, int iCode, string sData) { - if (iCode == 5004) { + switch(iCode) { + case 5004: localsound(sData, CHAN_AUTO, 1.0); - } else if (iCode == 5001) { + break; + case 5001: pSeat->m_eMuzzleflash.alpha = 1.0f; pSeat->m_eMuzzleflash.scale = 0.25; pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones; Event_EjectShell(); - } else if(iCode == 5011) { + break; + case 5011: pSeat->m_eMuzzleflash.alpha = 1.0f; pSeat->m_eMuzzleflash.scale = 0.25; pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones + 1; //setmodel(pSeat->m_eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1))); Event_EjectShell(); - } else if (iCode == 5021) { + break; + case 5021: pSeat->m_eMuzzleflash.alpha = 1.0f; pSeat->m_eMuzzleflash.scale = 0.25; pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones + 2; //setmodel(pSeat->m_eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1))); Event_EjectShell(); - } else if (iCode == 5031) { + break; + case 5031: pSeat->m_eMuzzleflash.alpha = 1.0f; pSeat->m_eMuzzleflash.scale = 0.25; pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones + 3; //setmodel(pSeat->m_eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1))); Event_EjectShell(); + break; } } diff --git a/src/client/gearbox/progs.src b/src/client/gearbox/progs.src index 9f0794d8..bcf89b72 100644 --- a/src/client/gearbox/progs.src +++ b/src/client/gearbox/progs.src @@ -32,6 +32,7 @@ ../gearbox/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/hunger/progs.src b/src/client/hunger/progs.src index 69be67db..6917c461 100644 --- a/src/client/hunger/progs.src +++ b/src/client/hunger/progs.src @@ -32,6 +32,7 @@ ../valve/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/include.src b/src/client/include.src index 3bbadf09..4e3c12b9 100644 --- a/src/client/include.src +++ b/src/client/include.src @@ -12,7 +12,7 @@ player.c predict.c npc.c entities.c -events.c +event.c view.c damage.c chat.c diff --git a/src/client/poke646/progs.src b/src/client/poke646/progs.src index a9c650fa..fd0d2f25 100644 --- a/src/client/poke646/progs.src +++ b/src/client/poke646/progs.src @@ -32,6 +32,7 @@ ../valve/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/rewolf/progs.src b/src/client/rewolf/progs.src index 63a9f26a..fe715075 100755 --- a/src/client/rewolf/progs.src +++ b/src/client/rewolf/progs.src @@ -32,6 +32,7 @@ ../rewolf/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/scihunt/progs.src b/src/client/scihunt/progs.src index e05248c1..ed36ea8c 100644 --- a/src/client/scihunt/progs.src +++ b/src/client/scihunt/progs.src @@ -31,6 +31,7 @@ ../valve/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/tfc/progs.src b/src/client/tfc/progs.src index 04c3a9bc..aa2a7547 100755 --- a/src/client/tfc/progs.src +++ b/src/client/tfc/progs.src @@ -31,6 +31,7 @@ ../valve/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/valve/progs.src b/src/client/valve/progs.src index b438ee79..272b0868 100755 --- a/src/client/valve/progs.src +++ b/src/client/valve/progs.src @@ -31,6 +31,7 @@ ../valve/hud_weaponselect.c ../valve/scoreboard.c ../valve/input.c +../base/event.c ../include.src ../../shared/include.src diff --git a/src/client/view.c b/src/client/view.c index f270a946..0bc8d337 100644 --- a/src/client/view.c +++ b/src/client/view.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Marco Hladik + * Copyright (c) 2016-2021 Marco Hladik * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -154,7 +154,7 @@ View_DrawViewModel(void) m_eViewModel.frame2time = pl.weapontime; m_eViewModel.frame1time = pl.weapontime; processmodelevents(m_eViewModel.modelindex, m_eViewModel.frame, fBaseTime, - m_eViewModel.frame1time, Event_ProcessModel); + m_eViewModel.frame1time, Game_ModelEvent); makevectors(view_angles); m_eViewModel.angles = view_angles; diff --git a/src/client/way.c b/src/client/way.c index a8f27f01..9d2a29a5 100644 --- a/src/client/way.c +++ b/src/client/way.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Marco Hladik + * Copyright (c) 2016-2021 Marco Hladik * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above