mirror of
https://github.com/ApeMV/AmongUsRevamped.git
synced 2026-10-20 01:46:28 +00:00
155 lines
5.4 KiB
C#
155 lines
5.4 KiB
C#
using System.Data;
|
|
using AmongUs.GameOptions;
|
|
using Hazel;
|
|
using UnityEngine;
|
|
using Il2CppInterop.Runtime.InteropTypes.Arrays;
|
|
using InnerNet;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using AmongUs.InnerNet.GameDataMessages;
|
|
|
|
using Object = UnityEngine.Object;
|
|
|
|
namespace HNSRevamped;
|
|
|
|
public static class Utils
|
|
{
|
|
private static readonly DateTime Epoch = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
private static readonly DateTime StartTime = DateTime.UtcNow;
|
|
private static readonly long EpochStartSeconds = (long)(StartTime - Epoch).TotalSeconds;
|
|
private static readonly Stopwatch Stopwatch = Stopwatch.StartNew();
|
|
|
|
public static long TimeStamp => EpochStartSeconds + (long)Stopwatch.Elapsed.TotalSeconds;
|
|
|
|
public static bool IsLobby => AmongUsClient.Instance.GameState == InnerNetClient.GameStates.Joined;
|
|
public static bool InGame => AmongUsClient.Instance && AmongUsClient.Instance.GameState == InnerNetClient.GameStates.Started;
|
|
public static bool isHideNSeek => GameOptionsManager.Instance.CurrentGameOptions.GameMode == GameModes.HideNSeek;
|
|
|
|
public static string ColorString(Color32 color, string str) => $"<#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}>{str}</color>";
|
|
public static string ColorToHex(Color32 color) => $"#{color.r:x2}{color.g:x2}{color.b:x2}{color.a:x2}";
|
|
|
|
public static bool IsPlayerModerator(string friendCode)
|
|
{
|
|
if (friendCode == "") return false;
|
|
|
|
var friendCodesFilePath = @"./HNSR-DATA/Moderators.txt";
|
|
var friendCodes = File.ReadAllLines(friendCodesFilePath);
|
|
return friendCodes.Any(code => code.Contains(friendCode));
|
|
}
|
|
|
|
public static string GetTabName(TabGroup tab)
|
|
{
|
|
switch (tab)
|
|
{
|
|
case TabGroup.SystemSettings:
|
|
return "System Settings";
|
|
case TabGroup.ModSettings:
|
|
return "Mod Settings";
|
|
case TabGroup.HNSSettings:
|
|
return "HNS Settings";
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public static void DestroyTranslator(this GameObject obj)
|
|
{
|
|
var translator = obj.GetComponent<TextTranslatorTMP>();
|
|
if (translator != null)
|
|
{
|
|
Object.Destroy(translator);
|
|
}
|
|
}
|
|
|
|
public static void DestroyTranslator(this MonoBehaviour obj) => obj.gameObject.DestroyTranslator();
|
|
|
|
public static void CustomSettingsChangeMessageLogic(this NotificationPopper notificationPopper, OptionItem optionItem, string text, bool playSound)
|
|
{
|
|
if (notificationPopper.lastMessageKey == 10000 + optionItem.Id && notificationPopper.activeMessages.Count > 0)
|
|
{
|
|
notificationPopper.activeMessages[notificationPopper.activeMessages.Count - 1].UpdateMessage(text);
|
|
}
|
|
else
|
|
{
|
|
notificationPopper.lastMessageKey = 10000 + optionItem.Id;
|
|
LobbyNotificationMessage settingmessage = Object.Instantiate(notificationPopper.notificationMessageOrigin, Vector3.zero, Quaternion.identity, notificationPopper.transform);
|
|
settingmessage.transform.localPosition = new Vector3(0f, 0f, -2f);
|
|
settingmessage.SetUp(text, notificationPopper.settingsChangeSprite, notificationPopper.settingsChangeColor, new Action(() =>
|
|
{
|
|
notificationPopper.OnMessageDestroy(settingmessage);
|
|
}));
|
|
notificationPopper.ShiftMessages();
|
|
notificationPopper.AddMessageToQueue(settingmessage);
|
|
}
|
|
if (playSound)
|
|
{
|
|
SoundManager.Instance.PlaySoundImmediate(notificationPopper.settingsChangeSound, false, 1f, 1f, null);
|
|
}
|
|
}
|
|
|
|
public static string GetOptionNameSCM(this OptionItem optionItem)
|
|
{
|
|
if (optionItem.Name == "Enable")
|
|
{
|
|
int id = optionItem.Id;
|
|
while (id % 10 != 0)
|
|
--id;
|
|
var optionItem2 = OptionItem.AllOptions.FirstOrDefault(opt => opt.Id == id);
|
|
return optionItem2 != null ? optionItem2.GetName() : optionItem.GetName();
|
|
}
|
|
else
|
|
return optionItem.GetName();
|
|
}
|
|
|
|
public static string GetRegionName(IRegionInfo region = null)
|
|
{
|
|
region ??= ServerManager.Instance.CurrentRegion;
|
|
|
|
string name = region.Name;
|
|
|
|
if (AmongUsClient.Instance.NetworkMode != NetworkModes.OnlineGame)
|
|
{
|
|
name = "Local Game";
|
|
return name;
|
|
}
|
|
|
|
if (region.PingServer.EndsWith("among.us", StringComparison.Ordinal))
|
|
{
|
|
// Official servers
|
|
name = name switch
|
|
{
|
|
"North America" => "NA",
|
|
"Europe" => "EU",
|
|
"Asia" => "AS",
|
|
_ => name
|
|
};
|
|
|
|
return name;
|
|
}
|
|
|
|
string ip = region.Servers.FirstOrDefault()?.Ip ?? string.Empty;
|
|
|
|
if (ip.Contains("aumods.us", StringComparison.Ordinal) || ip.Contains("duikbo.at", StringComparison.Ordinal))
|
|
{
|
|
// Modded Servers
|
|
if (ip.Contains("au-eu"))
|
|
name = "MEU";
|
|
else if (ip.Contains("au-as"))
|
|
name = "MAS";
|
|
else
|
|
name = "MNA";
|
|
|
|
return name;
|
|
}
|
|
|
|
if (name.Contains("Niko", StringComparison.OrdinalIgnoreCase))
|
|
name = name.Replace("233(", "-").TrimEnd(')');
|
|
|
|
return name;
|
|
}
|
|
}
|