Skip to content

Commit

Permalink
Add chat visuals config (#24)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mikusch authored Feb 22, 2024
1 parent 8aa79fa commit 2bb9280
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 15 deletions.
4 changes: 4 additions & 0 deletions addons/sourcemod/configs/chaos/visuals.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
"visuals"
{
"chat"
{
"tag" "[{darkorange}TF2 CHAOS{default}] "
}
"timer_bar"
{
"num_blocks" "20"
Expand Down
19 changes: 10 additions & 9 deletions addons/sourcemod/scripting/chaos.sp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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++)
Expand Down Expand Up @@ -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);
Expand Down
22 changes: 19 additions & 3 deletions addons/sourcemod/scripting/chaos/data.sp
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
2 changes: 0 additions & 2 deletions addons/sourcemod/scripting/chaos/shareddefs.sp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 2bb9280

Please sign in to comment.