From 5d37d48c23b4c84d28bcc60d4b241cfc87a588be Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Sat, 9 Jul 2022 23:06:44 -0700 Subject: [PATCH] Slight cleanup to the build/dismantle sendevents --- src/client/cmds.qc | 20 +++-------- src/server/dispencer.qc | 75 ---------------------------------------- src/server/dispenser.qc | 64 ++++++++++++++++++++++++++++++++-- src/server/sentry.qc | 10 ++++-- src/server/server.qc | 43 +++++++++++++++++++++++ src/server/teleporter.qc | 18 +++++++--- 6 files changed, 130 insertions(+), 100 deletions(-) delete mode 100644 src/server/dispencer.qc diff --git a/src/client/cmds.qc b/src/client/cmds.qc index e52d7d9..f04211b 100644 --- a/src/client/cmds.qc +++ b/src/client/cmds.qc @@ -19,22 +19,10 @@ ClientGame_ConsoleCommand(void) { switch(argv(0)) { case "build": - int type = stoi(argv(1)); - - switch (type) { - case 1: - sendevent("TFC_BuildDispenser", ""); - break; - case 2: - sendevent("TFC_BuildSentry", ""); - break; - case 4: - sendevent("TFC_BuildTele", ""); - break; - case 5: - sendevent("TFC_BuildTeleExit", ""); - break; - } + sendevent("TFCBuild", "i", stoi(argv(1))); + break; + case "dismantle": + sendevent("TFCDismantle", "i", stoi(argv(1))); break; default: return (0); diff --git a/src/server/dispencer.qc b/src/server/dispencer.qc deleted file mode 100644 index 4d7ff32..0000000 --- a/src/server/dispencer.qc +++ /dev/null @@ -1,75 +0,0 @@ - -#define TFC_SENTRY_COST 130 - -class -TFCSentry:NSSurfacePropEntity -{ - NSSurfacePropEntity m_eHead; - - void(void) TFCSentry; - - virtual void(player) Place; - virtual void(void) FinishPlacing; -}; - -void -TFCSentry::Place(player pl) -{ - SetAngles(pl.GetAngles()); - - makevectors([0, pl.v_angle[1], 0]); - SetOrigin(pl.origin + (v_forward * 48)); - DropToFloor(); - - think = FinishPlacing; - nextthink = time + 5.0f; - real_owner = pl; - - env_message_single(real_owner, "#Engineer_building"); - Sound_Play(this, CHAN_BODY, "engineer.build"); -} - -void -TFCSentry::FinishPlacing(void) -{ - /* put the top on that spins */ - m_eHead.SetModel("models/sentry1.mdl"); - m_eHead.SetAngles(GetAngles()); - m_eHead.SetSolid(SOLID_BBOX); - m_eHead.SetMovetype(MOVETYPE_NONE); - m_eHead.SetSize([-16,-16,0], [16,16,32]); - m_eHead.SetOrigin(GetOrigin() + [0,0,20]); - - env_message_single(real_owner, "#Sentry_finish"); - Sound_Play(this, CHAN_BODY, "engineer.turret_set"); -} - -void -TFCSentry::TFCSentry(void) -{ - m_eHead = spawn(NSSurfacePropEntity); - SetModel("models/base.mdl"); - SetSolid(SOLID_BBOX); - SetMovetype(MOVETYPE_NONE); - SetSize([-16,-16,0], [16,16,20]); -} - -void -CSEv_TFC_BuildSentry_(void) -{ - player pl = (player)self; - - /* only engineers can do this */ - if (pl.classtype != CLASS_ENGINEER) - return; - - /* it costs */ - if (pl.m_iAmmoCells < TFC_SENTRY_COST) - return; - - pl.m_iAmmoCells -= TFC_SENTRY_COST; - - /* deploy */ - TFCSentry sentry = spawn(TFCSentry); - sentry.Place(pl); -} diff --git a/src/server/dispenser.qc b/src/server/dispenser.qc index d476ba7..a711475 100644 --- a/src/server/dispenser.qc +++ b/src/server/dispenser.qc @@ -16,16 +16,68 @@ #define TFC_DISPENSER_COST 100 +/* The unit has 150 health and can hold up to 400 shells, 600 nails, 300 rockets, 400 cells, and 500 armor points. */ + class TFCDispenser:NSSurfacePropEntity { - + int m_iShells; + int m_iNails; + int m_iRockets; + int m_iCells; + int m_iArmor; + void(void) TFCDispenser; virtual void(player) Place; virtual void(void) FinishPlacing; + + virtual void(void) Replenish; + virtual void(void) ClampValues; }; + +void +TFCDispenser::ClampValues(void) +{ + if (m_iShells >= 400) + m_iShells = 400; + + if (m_iNails >= 600) + m_iNails = 600; + + if (m_iRockets >= 300) + m_iRockets = 300; + + if (m_iCells >= 400) + m_iCells = 400; + + if (m_iArmor >= 500) + m_iArmor = 500; +} + +void +TFCDispenser::Replenish(void) +{ + m_iShells += 5; + m_iNails += 5; + m_iRockets += 5; + m_iCells += 5; + m_iArmor += 5; + ClampValues(); + + nextthink = time + 1.0f; +} + +void +TFCDispenser::Touch(entity eToucher) +{ + if (team != real_owner.team) + return; + + player pl = (player)eToucher; +} + void TFCDispenser::Place(player pl) { @@ -61,7 +113,7 @@ TFCDispenser::TFCDispenser(void) } void -CSEv_TFC_BuildDispenser_(void) +TFCDispenser_Build(void) { player pl = (player)self; @@ -91,4 +143,10 @@ CSEv_TFC_BuildDispenser_(void) /* deploy */ TFCDispenser dispenser = spawn(TFCDispenser); dispenser.Place(pl); -} +} + +void +TFCDispenser_Dismantle(void) +{ + +} diff --git a/src/server/sentry.qc b/src/server/sentry.qc index 2db8aa5..cf8b34c 100644 --- a/src/server/sentry.qc +++ b/src/server/sentry.qc @@ -71,7 +71,7 @@ TFCSentry::TFCSentry(void) } void -CSEv_TFC_BuildSentry_(void) +TFCSentry_Build(void) { player pl = (player)self; @@ -101,4 +101,10 @@ CSEv_TFC_BuildSentry_(void) /* deploy */ TFCSentry sentry = spawn(TFCSentry); sentry.Place(pl); -} +} + +void +TFCSentry_Dismantle(void) +{ + +} diff --git a/src/server/server.qc b/src/server/server.qc index 7248689..13f11ff 100644 --- a/src/server/server.qc +++ b/src/server/server.qc @@ -32,6 +32,11 @@ Game_Worldspawn(void) Sound_Precache("engineer.build"); Sound_Precache("engineer.turret_set"); + precache_model("models/base.mdl"); + precache_model("models/dispenser.mdl"); + precache_model("models/sentry1.mdl"); + precache_model("models/sentry2.mdl"); + precache_model("models/sentry3.mdl"); precache_model("models/player.mdl"); precache_model("models/w_weaponbox.mdl"); Weapons_Init(); @@ -42,3 +47,41 @@ Game_Worldspawn(void) void weaponbox_spawn(player pl) { } + +void +CSEv_TFCBuild_i(int type) +{ + switch (type) { + case 1: + TFCDispenser_Build(); + break; + case 2: + TFCSentry_Build(); + break; + case 4: + TFCTeleporter_Build(); + break; + case 5: + TFCTeleporterExit_Build(); + break; + } +} + +void +CSEv_TFCDismantle_i(int type) +{ + switch (type) { + case 1: + TFCDispenser_Dismantle(); + break; + case 2: + TFCSentry_Dismantle(); + break; + case 4: + TFCTeleporter_Dismantle(); + break; + case 5: + TFCTeleporterExit_Dismantle(); + break; + } +} diff --git a/src/server/teleporter.qc b/src/server/teleporter.qc index 1f14239..b4083d7 100644 --- a/src/server/teleporter.qc +++ b/src/server/teleporter.qc @@ -127,7 +127,7 @@ TFCTeleporterExit::TFCTeleporterExit(void) } void -CSEv_TFC_BuildTele_(void) +TFCTeleporter_Build(void) { player pl = (player)self; @@ -159,9 +159,8 @@ CSEv_TFC_BuildTele_(void) start.Place(pl); } - void -CSEv_TFC_BuildTeleExit_(void) +TFCTeleporterExit_Build(void) { player pl = (player)self; @@ -191,4 +190,15 @@ CSEv_TFC_BuildTeleExit_(void) /* deploy */ TFCTeleporterExit end = spawn(TFCTeleporterExit); end.Place(pl); -} +} + +void +TFCTeleporter_Dismantle(void) +{ + +} +void +TFCTeleporterExit_Dismantle(void) +{ + +}