entWatch4: Actually make it work.

Since pushing the configurated 'item' as an item would break stuff, so now the configs and items are split between 2 classes.
This commit is contained in:
zaCade
2018-11-19 16:27:52 +01:00
parent 8564ffcfc6
commit a800e655eb
3 changed files with 224 additions and 187 deletions
+35 -28
View File
@@ -15,6 +15,7 @@
#include <basic>
/* CLASSES */
#include "CConfig.inc"
#include "CItem.inc"
/* BOOLS */
@@ -142,7 +143,7 @@ public void OnMapStart()
{
do
{
CItem item = new CItem();
CConfig config = new CConfig();
char sName[64], sShort[64], sColor[64], sFilter[64];
hConfig.GetString("name", sName, sizeof(sName));
@@ -150,20 +151,20 @@ public void OnMapStart()
hConfig.GetString("color", sColor, sizeof(sColor));
hConfig.GetString("filter", sFilter, sizeof(sFilter));
item.SetName(sName);
item.SetShort(sShort);
item.SetColor(sColor);
item.SetFilter(sFilter);
config.SetName(sName);
config.SetShort(sShort);
config.SetColor(sColor);
config.SetFilter(sFilter);
item.iWeaponID = hConfig.GetNum("weaponid");
item.iButtonID = hConfig.GetNum("buttonid");
item.iTriggerID = hConfig.GetNum("triggerid");
item.iDisplay = hConfig.GetNum("display");
item.iMode = hConfig.GetNum("mode");
item.iMaxUses = hConfig.GetNum("maxuses");
item.iCooldown = hConfig.GetNum("cooldown");
config.iWeaponID = hConfig.GetNum("weaponid");
config.iButtonID = hConfig.GetNum("buttonid");
config.iTriggerID = hConfig.GetNum("triggerid");
config.iDisplay = hConfig.GetNum("display");
config.iMode = hConfig.GetNum("mode");
config.iMaxUses = hConfig.GetNum("maxuses");
config.iCooldown = hConfig.GetNum("cooldown");
g_hArray_Configs.Push(item);
g_hArray_Configs.Push(config);
}
while (hConfig.GotoNextKey());
}
@@ -213,7 +214,9 @@ public void OnEntitySpawned(int entity)
{
CItem item = g_hArray_Items.Get(index);
if (RegisterItem(item, entity))
CConfig config = item.dConfig;
if (RegisterItem(item, config, entity))
{
g_hArray_Items.Set(index, item);
return;
@@ -222,9 +225,11 @@ public void OnEntitySpawned(int entity)
for (int index; index < g_hArray_Configs.Length; index++)
{
CItem item = g_hArray_Configs.Get(index);
CItem item = new CItem(g_hArray_Configs.Get(index));
if (RegisterItem(item, entity))
CConfig config = item.dConfig;
if (RegisterItem(item, config, entity))
{
g_hArray_Items.Push(item);
return;
@@ -236,11 +241,11 @@ public void OnEntitySpawned(int entity)
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
stock bool RegisterItem(CItem item, int entity)
stock bool RegisterItem(CItem item, CConfig config, int entity)
{
if (Entity_IsValid(entity))
{
if (item.iWeaponID && item.iWeaponID == Entity_GetHammerId(entity))
if (config.iWeaponID && config.iWeaponID == Entity_GetHammerId(entity))
{
if (!item.bWeapon && (Entity_GetOwner(entity) == INVALID_ENT_REFERENCE))
{
@@ -248,7 +253,7 @@ stock bool RegisterItem(CItem item, int entity)
return true;
}
}
else if (item.iButtonID && item.iButtonID == Entity_GetHammerId(entity))
else if (config.iButtonID && config.iButtonID == Entity_GetHammerId(entity))
{
if (!item.bButton && (Entity_GetParent(entity) == INVALID_ENT_REFERENCE || (item.bWeapon && Entity_GetParent(entity) == item.iWeapon)))
{
@@ -258,7 +263,7 @@ stock bool RegisterItem(CItem item, int entity)
return true;
}
}
else if (item.iTriggerID && item.iTriggerID == Entity_GetHammerId(entity))
else if (config.iTriggerID && config.iTriggerID == Entity_GetHammerId(entity))
{
if (!item.bTrigger && (Entity_GetParent(entity) == INVALID_ENT_REFERENCE || (item.bWeapon && Entity_GetParent(entity) == item.iWeapon)))
{
@@ -446,6 +451,8 @@ public Action OnButtonPress(int button, int client)
{
CItem item = g_hArray_Items.Get(index);
CConfig config = item.dConfig;
if (item.bButton && item.iButton == button && item.bOwner && item.iOwner == client)
{
Action aResult;
@@ -456,19 +463,19 @@ public Action OnButtonPress(int button, int client)
if ((aResult == Plugin_Continue) || (aResult == Plugin_Changed))
{
switch(item.iMode)
switch(config.iMode)
{
case(1):
{
if (item.iTimeReady < RoundToCeil(GetEngineTime()))
{
item.iTimeReady = RoundToCeil(GetEngineTime()) + item.iCooldown;
item.iTimeReady = RoundToCeil(GetEngineTime()) + config.iCooldown;
}
else return Plugin_Handled;
}
case(2):
{
if (item.iTimesUsed < item.iMaxUses)
if (item.iTimesUsed < config.iMaxUses)
{
item.iTimesUsed++;
}
@@ -476,9 +483,9 @@ public Action OnButtonPress(int button, int client)
}
case(3):
{
if (item.iTimeReady < RoundToCeil(GetEngineTime()) && item.iTimesUsed < item.iMaxUses)
if (item.iTimeReady < RoundToCeil(GetEngineTime()) && item.iTimesUsed < config.iMaxUses)
{
item.iTimeReady = RoundToCeil(GetEngineTime()) + item.iCooldown;
item.iTimeReady = RoundToCeil(GetEngineTime()) + config.iCooldown;
item.iTimesUsed++;
}
else return Plugin_Handled;
@@ -489,9 +496,9 @@ public Action OnButtonPress(int button, int client)
{
item.iTimesUsed++;
if (item.iTimesUsed >= item.iMaxUses)
if (item.iTimesUsed >= config.iMaxUses)
{
item.iTimeReady = RoundToCeil(GetEngineTime()) + item.iCooldown;
item.iTimeReady = RoundToCeil(GetEngineTime()) + config.iCooldown;
item.iTimesUsed = 0;
}
}
@@ -500,7 +507,7 @@ public Action OnButtonPress(int button, int client)
}
char sFilter[64];
if (item.GetFilter(sFilter, sizeof(sFilter)))
if (config.GetFilter(sFilter, sizeof(sFilter)))
Entity_SetName(client, sFilter);
Call_StartForward(g_hFwd_OnClientItemActivate);