-
Notifications
You must be signed in to change notification settings - Fork 3
/
ServerStats.cs
54 lines (51 loc) · 2.66 KB
/
ServerStats.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
namespace AlweStats {
public static class ServerStats {
private static Block serverBlock = null;
public static Block Start() {
serverBlock = new Block(
"ServerStats",
Main.serverStatsColor.Value,
Main.serverStatsSize.Value,
Main.serverStatsPosition.Value,
Main.serverStatsMargin.Value,
Main.serverStatsAlign.Value
);
return serverBlock;
}
public static void Update() {
Player localPlayer = Player.m_localPlayer;
if (serverBlock != null && localPlayer != null) {
ZNet.instance.GetNetStats(out var lq, out var rq, out var ping, out var obs, out var ibs);
int totalPlayers = ZNet.instance.GetNrOfPlayers();
if (Main.showOtherPlayersHealth.Value) {
List<Player> playersList = new List<Player>();
Player.GetPlayersInRange(localPlayer.transform.position, Main.rangeForPlayers.Value, playersList);
playersList.RemoveAll(player => player.GetPlayerID() == localPlayer.GetPlayerID());
string[] playersTexts = playersList.Select(p => {
string playerName = p.GetPlayerName();
int playerHealth = Mathf.CeilToInt(p.GetHealth());
int playerMaxHealth = Mathf.CeilToInt(p.GetMaxHealth());
float playerHealthPercentage = p.GetHealthPercentage() * 100f;
//int playerStamina = Mathf.CeilToInt(p.GetStamina());
//int playerMaxStamina = Mathf.CeilToInt(p.GetMaxStamina());
//float playerStaminaPercentage = p.GetStaminaPercentage() * 100f;
return string.Format(
Main.playersInRangeFormat.Value.Replace(
"<color>", $"<color={Utilities.GetColorString(playerHealthPercentage)}>"
), playerName, playerHealth, playerMaxHealth, $"{playerHealthPercentage:0.#}"
);
}).ToArray();
serverBlock.SetText(
string.Format(Main.serverStatsFormat.Value, $"{ping:0} ms", totalPlayers) +
(playersList.Count > 0 ? $"\n{string.Join("\n", playersTexts)}" : "")
);
} else {
serverBlock.SetText(string.Format(Main.serverStatsFormat.Value, $"{ping:0} ms", totalPlayers));
}
}
}
}
}