Skip to content
This repository has been archived by the owner on Feb 12, 2025. It is now read-only.

Added a ReplaceHelper to allow developers to add their own {PLACEHOLDERS} #24

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions RespawnTimer/API/Features/TimerView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#if EXILED
using Exiled.API.Features;
using Exiled.Loader;
using System;
#else
using PluginAPI.Core;
#endif
Expand Down Expand Up @@ -69,6 +70,19 @@ public static void AddTimer(string name)
CachedTimers.Add(name, timerView);
}

public static void AddReplaceHelper(string name, Func<Player, string> action)
{
ReplaceHelper.Add(name, action);
}

public static void RemoveReplaceHelper(string name)
{
if (!ReplaceHelper.ContainsKey(name))
return;

ReplaceHelper.Remove(name);
}

public static bool TryGetTimerForPlayer(Player player, out TimerView timerView)
{
string groupName = !ServerStatic.PermissionsHandler._members.TryGetValue(player.UserId, out string str) ? null : str;
Expand Down Expand Up @@ -100,16 +114,22 @@ public static bool TryGetTimerForPlayer(Player player, out TimerView timerView)
return false;
}

public string GetText(int? spectatorCount = null)
public string GetText(Player player, int? spectatorCount = null)
{
StringBuilder.Clear();
StringBuilder.Append(
RespawnManager.Singleton._curSequence is not RespawnManager.RespawnSequencePhase.PlayingEntryAnimations or RespawnManager.RespawnSequencePhase.SpawningSelectedTeam
? BeforeRespawnString
: DuringRespawnString);

foreach (KeyValuePair<string, Func<Player, string>> data in ReplaceHelper)
{
StringBuilder.Replace("{" + data.Key + "}", data.Value(player));
}

SetAllProperties(spectatorCount);
StringBuilder.Replace("{RANDOM_COLOR}", $"#{Random.Range(0x0, 0xFFFFFF):X6}");

StringBuilder.Replace("{RANDOM_COLOR}", $"#{UnityEngine.Random.Range(0x0, 0xFFFFFF):X6}");
StringBuilder.Replace('{', '[').Replace('}', ']');

return StringBuilder.ToString();
Expand Down Expand Up @@ -149,5 +169,7 @@ private TimerView(string beforeRespawnString, string duringRespawnString, Proper
public List<string> Hints { get; }

private readonly StringBuilder StringBuilder = new(1024);

public static Dictionary<string, Func<Player, string>> ReplaceHelper { get; } = new();
}
}
2 changes: 1 addition & 1 deletion RespawnTimer/EventHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ private IEnumerator<float> TimerCoroutine()
if (!TimerView.TryGetTimerForPlayer(player, out TimerView timerView))
continue;

string text = timerView.GetText(specNum);
string text = timerView.GetText(player, specNum);

#if EXILED
player.ShowHint(text, 1.25f);
Expand Down