From 348052dd76b9b21a577b26a7fb54ef996100bfd5 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sat, 29 Aug 2020 00:32:11 +0200 Subject: [PATCH] targ_speaker: Initial implementation. It plays a sound - that's it. Read the trivia for more info. --- src/gs-entbase/server.src | 1 + src/gs-entbase/server/targ_speaker.cpp | 71 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 src/gs-entbase/server/targ_speaker.cpp diff --git a/src/gs-entbase/server.src b/src/gs-entbase/server.src index 6f2961d8..244ccab8 100644 --- a/src/gs-entbase/server.src +++ b/src/gs-entbase/server.src @@ -52,6 +52,7 @@ server/stubs.cpp server/infodecal.cpp server/player_weaponstrip.cpp server/player_loadsaved.cpp +server/targ_speaker.cpp server/target_cdaudio.cpp server/trigger_auto.cpp server/trigger_autosave.cpp diff --git a/src/gs-entbase/server/targ_speaker.cpp b/src/gs-entbase/server/targ_speaker.cpp new file mode 100644 index 00000000..39211529 --- /dev/null +++ b/src/gs-entbase/server/targ_speaker.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2016-2020 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. + */ + +/*QUAKED targ_speaker (1 0 0) (-8 -8 -8) (8 8 8) +"targetname" Name +"target" Target when triggered +"killtarget" Target to kill when triggered +"tsnoise" Path to the sound file +"volume" Volume to play the sound as (normalized, 0.0 - 1.0) + +This entity plays a sample upon triggering at a specified volume. + +Trivia: +It was introduced in Gunman Chronicles. +It's not any more useful than an ambient_generic. +I suspect it's a carry-over from when Gunman was a Quake II mod, as +Quake/Quake II did not have an entity that allowed custom sound samples +to be played. +*/ + +class targ_speaker:CBaseTrigger +{ + string m_strSample; + float m_flVolume; + + void(void) targ_speaker; + + virtual void(entity,int) Trigger; +}; + +void +targ_speaker::Trigger(entity act, int state) +{ + if (GetMaster() == FALSE) + return; + + sound(this, CHAN_AUTO, m_strSample, m_flVolume, ATTN_NORM); + +} + +void +targ_speaker::targ_speaker(void) +{ + for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) { + switch (argv(i)) { + case "tsnoise": + m_strSample = argv(i+1); + break; + case "volume": + m_flVolume = stof(argv(i+1)); + break; + default: + break; + } + } + + CBaseTrigger::CBaseTrigger(); +}