Slight cleanup to the build/dismantle sendevents

This commit is contained in:
Marco Cawthorne 2022-07-09 23:06:44 -07:00
parent 54d2fe4e0b
commit 5d37d48c23
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
6 changed files with 130 additions and 100 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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)
{
}

View File

@ -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)
{
}

View File

@ -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;
}
}

View File

@ -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)
{
}