Slight cleanup to the build/dismantle sendevents
This commit is contained in:
parent
54d2fe4e0b
commit
5d37d48c23
6 changed files with 130 additions and 100 deletions
|
@ -19,22 +19,10 @@ ClientGame_ConsoleCommand(void)
|
|||
{
|
||||
switch(argv(0)) {
|
||||
case "build":
|
||||
int type = stoi(argv(1));
|
||||
|
||||
switch (type) {
|
||||
case 1:
|
||||
sendevent("TFC_BuildDispenser", "");
|
||||
sendevent("TFCBuild", "i", stoi(argv(1)));
|
||||
break;
|
||||
case 2:
|
||||
sendevent("TFC_BuildSentry", "");
|
||||
break;
|
||||
case 4:
|
||||
sendevent("TFC_BuildTele", "");
|
||||
break;
|
||||
case 5:
|
||||
sendevent("TFC_BuildTeleExit", "");
|
||||
break;
|
||||
}
|
||||
case "dismantle":
|
||||
sendevent("TFCDismantle", "i", stoi(argv(1)));
|
||||
break;
|
||||
default:
|
||||
return (0);
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
@ -92,3 +144,9 @@ CSEv_TFC_BuildDispenser_(void)
|
|||
TFCDispenser dispenser = spawn(TFCDispenser);
|
||||
dispenser.Place(pl);
|
||||
}
|
||||
|
||||
void
|
||||
TFCDispenser_Dismantle(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ TFCSentry::TFCSentry(void)
|
|||
}
|
||||
|
||||
void
|
||||
CSEv_TFC_BuildSentry_(void)
|
||||
TFCSentry_Build(void)
|
||||
{
|
||||
player pl = (player)self;
|
||||
|
||||
|
@ -102,3 +102,9 @@ CSEv_TFC_BuildSentry_(void)
|
|||
TFCSentry sentry = spawn(TFCSentry);
|
||||
sentry.Place(pl);
|
||||
}
|
||||
|
||||
void
|
||||
TFCSentry_Dismantle(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
@ -192,3 +191,14 @@ CSEv_TFC_BuildTeleExit_(void)
|
|||
TFCTeleporterExit end = spawn(TFCTeleporterExit);
|
||||
end.Place(pl);
|
||||
}
|
||||
|
||||
void
|
||||
TFCTeleporter_Dismantle(void)
|
||||
{
|
||||
|
||||
}
|
||||
void
|
||||
TFCTeleporterExit_Dismantle(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue