From 24b00565e3fbbd2ae8bcd113647bd0a6a2731d6b Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 20 Jan 2022 12:47:59 -0800 Subject: [PATCH] Make it easier to parse Input/Output entity data by adding PrepareOutput() to the NSIO class --- src/gs-entbase/server/func_button.qc | 15 +++++-------- src/gs-entbase/server/func_guntarget.qc | 3 +-- src/gs-entbase/server/trigger_changelevel.qc | 3 +-- src/gs-entbase/server/trigger_hurt.qc | 6 ++--- src/gs-entbase/server/trigger_look.qc | 3 +-- src/gs-entbase/server/trigger_multiple.qc | 10 ++++----- src/gs-entbase/server/trigger_once.qc | 6 ++--- src/gs-entbase/shared/NSIO.h | 1 + src/gs-entbase/shared/NSIO.qc | 23 +++++++++++--------- src/gs-entbase/shared/NSSurfacePropEntity.qc | 3 +-- 10 files changed, 31 insertions(+), 42 deletions(-) diff --git a/src/gs-entbase/server/func_button.qc b/src/gs-entbase/server/func_button.qc index 35d13a19..b3982ac8 100644 --- a/src/gs-entbase/server/func_button.qc +++ b/src/gs-entbase/server/func_button.qc @@ -465,24 +465,19 @@ func_button::SpawnKey(string strKey, string strValue) break; /* input/output */ case "OnPressed": - strValue = strreplace(",", ",_", strValue); - m_strOnPressed = strcat(m_strOnPressed, ",_", strValue); + m_strOnPressed = PrepareOutput(m_strOnPressed, strValue); break; case "OnDamaged": - strValue = strreplace(",", ",_", strValue); - m_strOnDamaged = strcat(m_strOnDamaged, ",_", strValue); + m_strOnDamaged = PrepareOutput(m_strOnDamaged, strValue); break; case "OnUseLocked": - strValue = strreplace(",", ",_", strValue); - m_strOnUseLocked = strcat(m_strOnUseLocked, ",_", strValue); + m_strOnUseLocked = PrepareOutput(m_strOnUseLocked, strValue); break; case "OnIn": - strValue = strreplace(",", ",_", strValue); - m_strOnIn = strcat(m_strOnIn, ",_", strValue); + m_strOnIn = PrepareOutput(m_strOnIn, strValue); break; case "OnOut": - strValue = strreplace(",", ",_", strValue); - m_strOnOut = strcat(m_strOnOut, ",_", strValue); + m_strOnOut = PrepareOutput(m_strOnOut, strValue); break; /* compatibility */ case "sounds": diff --git a/src/gs-entbase/server/func_guntarget.qc b/src/gs-entbase/server/func_guntarget.qc index 4a575f4c..fdb12fcf 100644 --- a/src/gs-entbase/server/func_guntarget.qc +++ b/src/gs-entbase/server/func_guntarget.qc @@ -241,8 +241,7 @@ func_guntarget::SpawnKey(string strKey, string strValue) m_strOnDeathLegacy = strValue; break; case "OnDeath": - strValue = strreplace(",", ",_", strValue); - m_strOnDeath = strcat(m_strOnDeath, ",_", strValue); + m_strOnDeath = PrepareOutput(m_strOnDeath, strValue); break; default: super::SpawnKey(strKey, strValue); diff --git a/src/gs-entbase/server/trigger_changelevel.qc b/src/gs-entbase/server/trigger_changelevel.qc index 707d8ea1..4df6880d 100644 --- a/src/gs-entbase/server/trigger_changelevel.qc +++ b/src/gs-entbase/server/trigger_changelevel.qc @@ -258,8 +258,7 @@ trigger_changelevel::SpawnKey(string strKey, string strValue) break; case "OnLevelChange": case "OnChangeLevel": - strValue = strreplace(",", ",_", strValue); - m_strOnLevelChange = strcat(m_strOnLevelChange, ",_", strValue); + m_strOnLevelChange = PrepareOutput(m_strOnLevelChange, strValue); break; default: super::SpawnKey(strKey, strValue); diff --git a/src/gs-entbase/server/trigger_hurt.qc b/src/gs-entbase/server/trigger_hurt.qc index aa3b5f71..e28e1626 100644 --- a/src/gs-entbase/server/trigger_hurt.qc +++ b/src/gs-entbase/server/trigger_hurt.qc @@ -251,12 +251,10 @@ trigger_hurt::SpawnKey(string strKey, string strValue) m_flNextDmg = stof(strValue); break; case "OnHurt": - strValue = strreplace(",", ",_", strValue); - m_strOnHurt = strcat(m_strOnHurt, ",_", strValue); + m_strOnHurt = PrepareOutput(m_strOnHurt, strValue); break; case "OnHurtPlayer": - strValue = strreplace(",", ",_", strValue); - m_strOnHurtPlayer = strcat(m_strOnHurtPlayer, ",_", strValue); + m_strOnHurtPlayer = PrepareOutput(m_strOnHurtPlayer, strValue); break; default: super::SpawnKey(strKey, strValue); diff --git a/src/gs-entbase/server/trigger_look.qc b/src/gs-entbase/server/trigger_look.qc index 6098effa..07677200 100644 --- a/src/gs-entbase/server/trigger_look.qc +++ b/src/gs-entbase/server/trigger_look.qc @@ -168,8 +168,7 @@ trigger_look::SpawnKey(string strKey, string strValue) m_flLookTime = stof(strValue); break; case "OnTrigger": - strValue = strreplace(",", ",_", strValue); - m_strOnTrigger = strcat(m_strOnTrigger, ",_", strValue); + m_strOnTrigger = PrepareOutput(m_strOnTrigger, strValue); break; default: super::SpawnKey(strKey, strValue); diff --git a/src/gs-entbase/server/trigger_multiple.qc b/src/gs-entbase/server/trigger_multiple.qc index 32439f8b..db576f9d 100644 --- a/src/gs-entbase/server/trigger_multiple.qc +++ b/src/gs-entbase/server/trigger_multiple.qc @@ -169,15 +169,13 @@ trigger_multiple::SpawnKey(string strKey, string strValue) break; case "OnStartTouch": case "OnStartTouchAll": - strValue = strreplace(",", ",_", strValue); - m_strOnStartTouch = strcat(m_strOnStartTouch, ",_", strValue); + m_strOnStartTouch = PrepareOutput(m_strOnStartTouch, strValue); break; case "OnEndTouchAll": - strValue = strreplace(",", ",_", strValue); - m_strOnEndTouchAll = strcat(m_strOnEndTouchAll, ",_", strValue); + m_strOnEndTouchAll = PrepareOutput(m_strOnEndTouchAll, strValue); + break; case "OnTrigger": - strValue = strreplace(",", ",_", strValue); - m_strOnTrigger = strcat(m_strOnTrigger, ",_", strValue); + m_strOnTrigger = PrepareOutput(m_strOnTrigger, strValue); break; default: super::SpawnKey(strKey, strValue); diff --git a/src/gs-entbase/server/trigger_once.qc b/src/gs-entbase/server/trigger_once.qc index 44b63af9..e37510ae 100644 --- a/src/gs-entbase/server/trigger_once.qc +++ b/src/gs-entbase/server/trigger_once.qc @@ -113,12 +113,10 @@ trigger_once::SpawnKey(string strKey, string strValue) { switch (strKey) { case "OnStartTouch": - strValue = strreplace(",", ",_", strValue); - m_strOnStartTouch = strcat(m_strOnStartTouch, ",_", strValue); + m_strOnStartTouch = PrepareOutput(m_strOnStartTouch, strValue); break; case "OnTrigger": - strValue = strreplace(",", ",_", strValue); - m_strOnTrigger = strcat(m_strOnTrigger, ",_", strValue); + m_strOnTrigger = PrepareOutput(m_strOnTrigger, strValue); break; default: super::SpawnKey(strKey, strValue); diff --git a/src/gs-entbase/shared/NSIO.h b/src/gs-entbase/shared/NSIO.h index aa9eb3df..b014a323 100644 --- a/src/gs-entbase/shared/NSIO.h +++ b/src/gs-entbase/shared/NSIO.h @@ -42,6 +42,7 @@ class NSIO /* helper functions to allocate outputs */ nonvirtual void(entity, string) UseOutput; + nonvirtual string(string, string) PrepareOutput; nonvirtual string(string) CreateOutput; /* whenever gamerules want entities to respawn */ diff --git a/src/gs-entbase/shared/NSIO.qc b/src/gs-entbase/shared/NSIO.qc index 4ee44154..7c11bca5 100644 --- a/src/gs-entbase/shared/NSIO.qc +++ b/src/gs-entbase/shared/NSIO.qc @@ -117,6 +117,14 @@ NSIO::CreateOutput(string outmsg) return outname; } +string +NSIO::PrepareOutput(string strOut, string strValue) +{ + strValue = strreplace(",", ",_", strValue); + strOut = strcat(strOut, ",_", strValue); + return strOut; +} + /* entities receive the inputs here and need to act on intype and data accordingly. this is just a stub for unknown event troubleshooting */ void @@ -278,24 +286,19 @@ NSIO::SpawnKey(string strKey, string strValue) #ifdef SERVER /* Input/Output system */ case "OnTrigger": - strValue = strreplace(",", ",_", strValue); - m_strOnTrigger = strcat(m_strOnTrigger, ",_", strValue); + m_strOnTrigger = PrepareOutput(m_strOnTrigger, strValue); break; case "OnUser1": - strValue = strreplace(",", ",_", strValue); - m_strOnUser1 = strcat(m_strOnUser1, ",_", strValue); + m_strOnUser1 = PrepareOutput(m_strOnUser1, strValue); break; case "OnUser2": - strValue = strreplace(",", ",_", strValue); - m_strOnUser2 = strcat(m_strOnUser2, ",_", strValue); + m_strOnUser2 = PrepareOutput(m_strOnUser2, strValue); break; case "OnUser3": - strValue = strreplace(",", ",_", strValue); - m_strOnUser3 = strcat(m_strOnUser3, ",_", strValue); + m_strOnUser3 = PrepareOutput(m_strOnUser3, strValue); break; case "OnUser4": - strValue = strreplace(",", ",_", strValue); - m_strOnUser4 = strcat(m_strOnUser4, ",_", strValue); + m_strOnUser4 = PrepareOutput(m_strOnUser4, strValue); break; #endif default: diff --git a/src/gs-entbase/shared/NSSurfacePropEntity.qc b/src/gs-entbase/shared/NSSurfacePropEntity.qc index 3a8d0687..a12d503d 100644 --- a/src/gs-entbase/shared/NSSurfacePropEntity.qc +++ b/src/gs-entbase/shared/NSSurfacePropEntity.qc @@ -195,8 +195,7 @@ NSSurfacePropEntity::SpawnKey(string strKey, string strValue) /* Input/Output system */ #ifdef SERVER case "OnBreak": - strValue = strreplace(",", ",_", strValue); - m_strOnBreak = strcat(m_strOnBreak, ",_", strValue); + m_strOnBreak = PrepareOutput(m_strOnBreak, strValue); break; #endif default: