From 2bb9280623544339f0b44fd9812820aa4e3267db Mon Sep 17 00:00:00 2001 From: Mikusch Date: Thu, 22 Feb 2024 14:50:19 +0100 Subject: [PATCH] Add chat visuals config (#24) --- addons/sourcemod/configs/chaos/visuals.cfg | 4 ++++ addons/sourcemod/scripting/chaos.sp | 19 ++++++++-------- addons/sourcemod/scripting/chaos/data.sp | 22 ++++++++++++++++--- .../chaos/effects/removerandomentity.sp | 2 +- .../sourcemod/scripting/chaos/shareddefs.sp | 2 -- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/addons/sourcemod/configs/chaos/visuals.cfg b/addons/sourcemod/configs/chaos/visuals.cfg index df59d4c..397d510 100644 --- a/addons/sourcemod/configs/chaos/visuals.cfg +++ b/addons/sourcemod/configs/chaos/visuals.cfg @@ -1,5 +1,9 @@ "visuals" { + "chat" + { + "tag" "[{darkorange}TF2 CHAOS{default}] " + } "timer_bar" { "num_blocks" "20" diff --git a/addons/sourcemod/scripting/chaos.sp b/addons/sourcemod/scripting/chaos.sp index 69bcb20..c1ec6f2 100644 --- a/addons/sourcemod/scripting/chaos.sp +++ b/addons/sourcemod/scripting/chaos.sp @@ -33,8 +33,9 @@ float g_flLastEffectDisplayTime; float g_flTimerBarDisplayTime; char g_szForceEffectId[64]; -ProgressBar g_aEffectBarConfig; -ProgressBar g_aTimerBarConfig; +ProgressBarConfig g_stEffectBarConfig; +ProgressBarConfig g_stTimerBarConfig; +ChatConfig g_stChatConfig; #include "chaos/data.sp" #include "chaos/events.sp" @@ -772,22 +773,22 @@ bool ActivateEffectById(const char[] szEffectId, bool bForce = false) void DisplayTimerBar() { - SetHudTextParams(g_aTimerBarConfig.x, g_aTimerBarConfig.y, 0.1, g_aTimerBarConfig.color[0], g_aTimerBarConfig.color[1], g_aTimerBarConfig.color[2], g_aTimerBarConfig.color[3]); + SetHudTextParams(g_stTimerBarConfig.x, g_stTimerBarConfig.y, 0.1, g_stTimerBarConfig.color[0], g_stTimerBarConfig.color[1], g_stTimerBarConfig.color[2], g_stTimerBarConfig.color[3]); float flRatio = g_flTimeElapsed / sm_chaos_effect_interval.FloatValue; - int iNumBlocks = g_aTimerBarConfig.num_blocks; + int iNumBlocks = g_stTimerBarConfig.num_blocks; int iFilledBlocks = RoundToNearest(flRatio * iNumBlocks); int iEmptyBlocks = iNumBlocks - iFilledBlocks; char szProgressBar[64]; for (int i = 0; i < iFilledBlocks; i++) { - StrCat(szProgressBar, sizeof(szProgressBar), g_aTimerBarConfig.filled); + StrCat(szProgressBar, sizeof(szProgressBar), g_stTimerBarConfig.filled); } for (int i = 0; i < iEmptyBlocks; i++) { - StrCat(szProgressBar, sizeof(szProgressBar), g_aTimerBarConfig.empty); + StrCat(szProgressBar, sizeof(szProgressBar), g_stTimerBarConfig.empty); } for (int client = 1; client <= MaxClients; client++) @@ -833,18 +834,18 @@ void DisplayActiveEffects() float flEndTime = effect.activate_time + effect.current_duration; float flRatio = (GetGameTime() - effect.activate_time) / (flEndTime - effect.activate_time); - int iNumBlocks = g_aEffectBarConfig.num_blocks; + int iNumBlocks = g_stEffectBarConfig.num_blocks; int iEmptyBlocks = RoundToNearest(flRatio * iNumBlocks); int iFilledBlocks = iNumBlocks - iEmptyBlocks; char szProgressBar[64]; for (int j = 0; j < iFilledBlocks; j++) { - StrCat(szProgressBar, sizeof(szProgressBar), g_aEffectBarConfig.filled); + StrCat(szProgressBar, sizeof(szProgressBar), g_stEffectBarConfig.filled); } for (int j = 0; j < iEmptyBlocks; j++) { - StrCat(szProgressBar, sizeof(szProgressBar), g_aEffectBarConfig.empty); + StrCat(szProgressBar, sizeof(szProgressBar), g_stEffectBarConfig.empty); } Format(szLine, sizeof(szLine), "%T %s", szName, client, szProgressBar); diff --git a/addons/sourcemod/scripting/chaos/data.sp b/addons/sourcemod/scripting/chaos/data.sp index 6cc3158..75a2a21 100644 --- a/addons/sourcemod/scripting/chaos/data.sp +++ b/addons/sourcemod/scripting/chaos/data.sp @@ -131,7 +131,17 @@ enum struct ChaosEffect } } -enum struct ProgressBar +enum struct ChatConfig +{ + char tag[64]; + + void Parse(KeyValues kv) + { + kv.GetString("tag", this.tag, sizeof(this.tag)); + } +} + +enum struct ProgressBarConfig { int num_blocks; char filled[64]; @@ -213,15 +223,21 @@ void Data_Initialize() KeyValues kv = new KeyValues("visuals"); if (kv.ImportFromFile(szFilePath)) { + if (kv.JumpToKey("chat")) + { + g_stChatConfig.Parse(kv); + } + kv.GoBack(); + if (kv.JumpToKey("timer_bar")) { - g_aTimerBarConfig.Parse(kv); + g_stTimerBarConfig.Parse(kv); } kv.GoBack(); if (kv.JumpToKey("effect_bar")) { - g_aEffectBarConfig.Parse(kv); + g_stEffectBarConfig.Parse(kv); } kv.GoBack(); } diff --git a/addons/sourcemod/scripting/chaos/effects/removerandomentity.sp b/addons/sourcemod/scripting/chaos/effects/removerandomentity.sp index 9419751..a805bbc 100644 --- a/addons/sourcemod/scripting/chaos/effects/removerandomentity.sp +++ b/addons/sourcemod/scripting/chaos/effects/removerandomentity.sp @@ -32,7 +32,7 @@ public bool RemoveRandomEntity_OnStart(ChaosEffect effect) strcopy(szName, sizeof(szName), szClassname); } - CPrintToChatAll("%s %t", PLUGIN_TAG, "#Chaos_Effect_RemoveRandomEntity_Removing", szClassname, szName); + CPrintToChatAll("%s%t", g_stChatConfig.tag, "#Chaos_Effect_RemoveRandomEntity_Removing", szClassname, szName); } RequestFrame(RequestFrame_RemoveEntity, EntIndexToEntRef(entity)); diff --git a/addons/sourcemod/scripting/chaos/shareddefs.sp b/addons/sourcemod/scripting/chaos/shareddefs.sp index e3f2869..bffd109 100644 --- a/addons/sourcemod/scripting/chaos/shareddefs.sp +++ b/addons/sourcemod/scripting/chaos/shareddefs.sp @@ -3,8 +3,6 @@ #define INVALID_EFFECT_ID -1 -#define PLUGIN_TAG "[{darkorange}TF2 CHAOS{default}]" - #define MAX_USER_MSG_DATA 255 #define PI 3.14159265358979323846