Make everything that is public internal and remove debugmenu

This commit is contained in:
D1GQ committed 2025-03-23 22:14:00 -05:00
1 parent 1f4673c54b
commit e333f8a357
155 files changed
+971 -1366

No files matched your search

+3 -3
View File
@@ -44,15 +44,15 @@ dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.applicable_accessibilities = internal, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_accessibilities = internal, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.applicable_accessibilities = internal, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
# Naming styles
+4 -4
View File
@@ -3,12 +3,12 @@
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class AllCommandsCommand : BaseCommand
internal class AllCommandsCommand : BaseCommand
{
public override string Name => "commands";
public override string Description => "Get information about all commands";
internal override string Name => "commands";
internal override string Description => "Get information about all commands";
public override void Run()
internal override void Run()
{
BaseCommand?[] allNormalCommands = allCommands.Where(cmd => cmd.Type == CommandType.Normal && cmd.ShowCommand()).ToArray();
BaseCommand?[] allSponsorCommands = allCommands.Where(cmd => cmd.Type == CommandType.Sponsor && cmd.ShowCommand()).ToArray();
+6 -6
View File
@@ -1,12 +1,12 @@
namespace BetterAmongUs.Commands
{
public abstract class BaseArgument(BaseCommand? command, string argInfo)
internal abstract class BaseArgument(BaseCommand? command, string argInfo)
{
public BaseCommand? Command { get; } = command;
public string ArgInfo { get; } = argInfo;
public string Arg { get; set; } = string.Empty;
internal BaseCommand? Command { get; } = command;
internal string ArgInfo { get; } = argInfo;
internal string Arg { get; set; } = string.Empty;
protected virtual string[] ArgSuggestions => GetArgSuggestions.Invoke();
public Func<string[]> GetArgSuggestions { get; set; } = () => { return []; };
public string GetClosestSuggestion() => ArgSuggestions.FirstOrDefault(name => name.StartsWith(Arg, StringComparison.OrdinalIgnoreCase)) ?? string.Empty;
internal Func<string[]> GetArgSuggestions { get; set; } = () => { return []; };
internal string GetClosestSuggestion() => ArgSuggestions.FirstOrDefault(name => name.StartsWith(Arg, StringComparison.OrdinalIgnoreCase)) ?? string.Empty;
}
}
+2 -2
View File
@@ -1,9 +1,9 @@
namespace BetterAmongUs.Commands;
public class BoolArgument(BaseCommand? command, string argInfo = "{bool}") : BaseArgument(command, argInfo)
internal class BoolArgument(BaseCommand? command, string argInfo = "{bool}") : BaseArgument(command, argInfo)
{
protected override string[] ArgSuggestions => ["true", "false"];
public bool? GetBool()
internal bool? GetBool()
{
if (Arg.ToLower() is "true")
{
+2 -2
View File
@@ -2,10 +2,10 @@
namespace BetterAmongUs.Commands;
public class PlayerArgument(BaseCommand? command, string argInfo = "{player}") : BaseArgument(command, argInfo)
internal class PlayerArgument(BaseCommand? command, string argInfo = "{player}") : BaseArgument(command, argInfo)
{
protected override string[] ArgSuggestions => Main.AllPlayerControls.OrderBy(pc => pc.IsLocalPlayer() ? 0 : 1).Select(pc => pc.Data.PlayerName.Replace(' ', '_')).ToArray();
public PlayerControl? TryGetTarget()
internal PlayerControl? TryGetTarget()
{
var player = Main.AllPlayerControls.FirstOrDefault(pc => pc.Data.PlayerName.ToLower().Replace(' ', '_') == Arg.ToLower());
+1 -1
View File
@@ -1,5 +1,5 @@
namespace BetterAmongUs.Commands;
public class StringArgument(BaseCommand? command, string argInfo = "{String}") : BaseArgument(command, argInfo)
internal class StringArgument(BaseCommand? command, string argInfo = "{String}") : BaseArgument(command, argInfo)
{
}
+15 -15
View File
@@ -3,34 +3,34 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Commands;
public enum CommandType
internal enum CommandType
{
Normal,
Sponsor,
Debug,
}
public abstract class BaseCommand
internal abstract class BaseCommand
{
public static readonly BaseCommand?[] allCommands = [.. RegisterCommandAttribute.Instances];
public virtual CommandType Type => CommandType.Normal;
public string[] Names => ShortNames.Concat(new[] { Name }).ToArray();
public abstract string Name { get; }
public virtual string[] ShortNames => [];
public abstract string Description { get; }
public virtual BaseArgument[]? Arguments { get; } = [];
public virtual bool SetChatTimer { get; set; } = false;
public virtual bool ShowCommand() => true;
public virtual bool ShowSuggestion() => ShowCommand();
public abstract void Run();
internal static readonly BaseCommand?[] allCommands = [.. RegisterCommandAttribute.Instances];
internal virtual CommandType Type => CommandType.Normal;
internal string[] Names => ShortNames.Concat(new[] { Name }).ToArray();
internal abstract string Name { get; }
internal virtual string[] ShortNames => [];
internal abstract string Description { get; }
internal virtual BaseArgument[]? Arguments { get; } = [];
internal virtual bool SetChatTimer { get; set; } = false;
internal virtual bool ShowCommand() => true;
internal virtual bool ShowSuggestion() => ShowCommand();
internal abstract void Run();
public static string CommandResultText(string text, bool onlyGetStr = false)
internal static string CommandResultText(string text, bool onlyGetStr = false)
{
if (!onlyGetStr) Utils.AddChatPrivate(text);
return text;
}
public static string CommandErrorText(string error, bool onlyGetStr = false)
internal static string CommandErrorText(string error, bool onlyGetStr = false)
{
string er = "<color=#f50000><size=150%><b>Error:</b></size></color>";
if (!onlyGetStr) Utils.AddChatPrivate($"<color=#730000>{er}\n{error}");
+5 -5
View File
@@ -5,13 +5,13 @@ using BetterAmongUs.Modules;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class DumpCommand : BaseCommand
internal class DumpCommand : BaseCommand
{
public override string Name => "dump";
public override string Description => "Dump the entire log to the user's desktop";
public override bool ShowCommand() => !GameState.IsInGamePlay || GameState.IsDev;
internal override string Name => "dump";
internal override string Description => "Dump the entire log to the user's desktop";
internal override bool ShowCommand() => !GameState.IsInGamePlay || GameState.IsDev;
public override void Run()
internal override void Run()
{
if (GameState.IsInGamePlay && !GameState.IsDev) return;
+5 -5
View File
@@ -4,12 +4,12 @@ using BetterAmongUs.Modules;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class EndGameCommand : BaseCommand
internal class EndGameCommand : BaseCommand
{
public override string Name => "endgame";
public override string Description => "Force end the game";
public override bool ShowCommand() => GameState.IsHost && !GameState.IsLobby && !GameState.IsFreePlay;
public override void Run()
internal override string Name => "endgame";
internal override string Description => "Force end the game";
internal override bool ShowCommand() => GameState.IsHost && !GameState.IsLobby && !GameState.IsFreePlay;
internal override void Run()
{
GameManager.Instance.RpcEndGame(GameOverReason.ImpostorDisconnect, false);
}
+6 -6
View File
@@ -5,13 +5,13 @@ using BetterAmongUs.Modules;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class ExileCommand : BaseCommand
internal class ExileCommand : BaseCommand
{
public override CommandType Type => CommandType.Debug;
public override string Name => "exile";
public override string Description => "Set self as dead";
public override bool ShowCommand() => GameState.IsFreePlay;
public override void Run()
internal override CommandType Type => CommandType.Debug;
internal override string Name => "exile";
internal override string Description => "Set self as dead";
internal override bool ShowCommand() => GameState.IsFreePlay;
internal override void Run()
{
PlayerControl.LocalPlayer.Exiled();
}
+4 -4
View File
@@ -3,11 +3,11 @@
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class HelpCommand : BaseCommand
internal class HelpCommand : BaseCommand
{
public override string Name => "help";
public override string Description => "Get help with commands";
public override void Run()
internal override string Name => "help";
internal override string Description => "Get help with commands";
internal override void Run()
{
CommandResultText("Welcome to <color=#0dff00>♻BetterAmongUs♻</color> This mod enhances your gameplay experience with a variety of exciting features.\n" +
"Explore the pause menu to access more options and better settings tailored to your needs.\n" +
+6 -6
View File
@@ -5,10 +5,10 @@ using BetterAmongUs.Modules;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class KickCommand : BaseCommand
internal class KickCommand : BaseCommand
{
public override string Name => "kick";
public override string Description => "Kick a player from the game";
internal override string Name => "kick";
internal override string Description => "Kick a player from the game";
public KickCommand()
{
_arguments = new Lazy<BaseArgument[]>(() => new BaseArgument[]
@@ -18,12 +18,12 @@ public class KickCommand : BaseCommand
});
}
private readonly Lazy<BaseArgument[]> _arguments;
public override BaseArgument[]? Arguments => _arguments.Value;
internal override BaseArgument[]? Arguments => _arguments.Value;
private PlayerArgument? playerArgument => (PlayerArgument)Arguments[0];
private BoolArgument? boolArgument => (BoolArgument)Arguments[1];
public override bool ShowCommand() => GameState.IsHost;
public override void Run()
internal override bool ShowCommand() => GameState.IsHost;
internal override void Run()
{
var player = playerArgument.TryGetTarget();
var isBan = boolArgument.GetBool();
+4 -4
View File
@@ -5,12 +5,12 @@ using System.Text;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class MeCommand : BaseCommand
internal class MeCommand : BaseCommand
{
public override string Name => "me";
public override string Description => "Get information about your user data";
internal override string Name => "me";
internal override string Description => "Get information about your user data";
public override void Run()
internal override void Run()
{
StringBuilder sb = new();
var format1 = "┌ •";
+5 -5
View File
@@ -5,10 +5,10 @@ using System.Text;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class PlayerInfoCommand : BaseCommand
internal class PlayerInfoCommand : BaseCommand
{
public override string Name => "player";
public override string Description => "Get a Players information";
internal override string Name => "player";
internal override string Description => "Get a Players information";
public PlayerInfoCommand()
{
@@ -18,11 +18,11 @@ public class PlayerInfoCommand : BaseCommand
});
}
private readonly Lazy<BaseArgument[]> _arguments;
public override BaseArgument[]? Arguments => _arguments.Value;
internal override BaseArgument[]? Arguments => _arguments.Value;
private PlayerArgument? playerArgument => (PlayerArgument)Arguments[0];
public override void Run()
internal override void Run()
{
var player = playerArgument.TryGetTarget();
if (player != null)
+4 -4
View File
@@ -5,12 +5,12 @@ using System.Text;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class PlayersInfoCommand : BaseCommand
internal class PlayersInfoCommand : BaseCommand
{
public override string Name => "players";
public override string Description => "Get all Player information";
internal override string Name => "players";
internal override string Description => "Get all Player information";
public override void Run()
internal override void Run()
{
StringBuilder sb = new();
foreach (PlayerControl player in Main.AllPlayerControls.Where(player => !player.isDummy))
+4 -4
View File
@@ -5,11 +5,11 @@ using BetterAmongUs.Managers;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class RemoveAllCommand : BaseCommand
internal class RemoveAllCommand : BaseCommand
{
public override string Name => "removeall";
public override string Description => "Remove all players from local <color=#4f92ff>Anti-Cheat</color> data";
public override void Run()
internal override string Name => "removeall";
internal override string Description => "Remove all players from local <color=#4f92ff>Anti-Cheat</color> data";
internal override void Run()
{
BetterDataManager.ClearCheatData();
Utils.AddChatPrivate($"All data successfully removed from local <color=#4f92ff>Anti-Cheat</color>!");
+5 -5
View File
@@ -6,10 +6,10 @@ using BetterAmongUs.Modules.AntiCheat;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class RemovePlayerCommand : BaseCommand
internal class RemovePlayerCommand : BaseCommand
{
public override string Name => "removeplayer";
public override string Description => "Remove player from local <color=#4f92ff>Anti-Cheat</color> data";
internal override string Name => "removeplayer";
internal override string Description => "Remove player from local <color=#4f92ff>Anti-Cheat</color> data";
public RemovePlayerCommand()
{
@@ -20,10 +20,10 @@ public class RemovePlayerCommand : BaseCommand
identifierArgument.GetArgSuggestions = BAUAntiCheat.GatherAllData;
}
private readonly Lazy<BaseArgument[]> _arguments;
public override BaseArgument[]? Arguments => _arguments.Value;
internal override BaseArgument[]? Arguments => _arguments.Value;
private StringArgument? identifierArgument => (StringArgument)Arguments[0];
public override void Run()
internal override void Run()
{
if (BetterDataManager.RemovePlayer(identifierArgument.Arg) == true)
{
+6 -6
View File
@@ -5,13 +5,13 @@ using BetterAmongUs.Modules;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class ReviveCommand : BaseCommand
internal class ReviveCommand : BaseCommand
{
public override CommandType Type => CommandType.Debug;
public override string Name => "revive";
public override string Description => "Set self as alive";
public override bool ShowCommand() => GameState.IsFreePlay;
public override void Run()
internal override CommandType Type => CommandType.Debug;
internal override string Name => "revive";
internal override string Description => "Set self as alive";
internal override bool ShowCommand() => GameState.IsFreePlay;
internal override void Run()
{
PlayerControl.LocalPlayer.Revive();
}
+8 -7
View File
@@ -7,11 +7,11 @@ using BetterAmongUs.Patches;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class RoleCommand : BaseCommand
internal class RoleCommand : BaseCommand
{
public override CommandType Type => CommandType.Debug;
public override string Name => "role";
public override string Description => "Set your role for the next game";
internal override CommandType Type => CommandType.Debug;
internal override string Name => "role";
internal override string Description => "Set your role for the next game";
public RoleCommand()
{
@@ -21,14 +21,15 @@ public class RoleCommand : BaseCommand
});
roleArgument.GetArgSuggestions = () => { return RoleManager.Instance.AllRoles.Select(role => role.NiceName.ToLower()).ToArray(); };
}
private readonly Lazy<BaseArgument[]> _arguments;
public override BaseArgument[]? Arguments => _arguments.Value;
internal override BaseArgument[]? Arguments => _arguments.Value;
private StringArgument? roleArgument => (StringArgument)Arguments[0];
public override bool ShowCommand() => GameState.IsHost && Main.MyData.HasAll() && Main.MyData.IsVerified();
internal override bool ShowCommand() => GameState.IsHost && Main.MyData.HasAll() && Main.MyData.IsVerified();
public override void Run()
internal override void Run()
{
var role = RoleManager.Instance.AllRoles.FirstOrDefault(r => r.NiceName.StartsWith(roleArgument.Arg));
if (role != null)
+5 -5
View File
@@ -3,10 +3,10 @@
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class SetPrefixCommand : BaseCommand
internal class SetPrefixCommand : BaseCommand
{
public override string Name => "setprefix";
public override string Description => "Set command prefix";
internal override string Name => "setprefix";
internal override string Description => "Set command prefix";
public SetPrefixCommand()
{
@@ -16,11 +16,11 @@ public class SetPrefixCommand : BaseCommand
});
}
private readonly Lazy<BaseArgument[]> _arguments;
public override BaseArgument[]? Arguments => _arguments.Value;
internal override BaseArgument[]? Arguments => _arguments.Value;
private StringArgument? prefixArgument => (StringArgument)Arguments[0];
public override void Run()
internal override void Run()
{
var oldPrefix = Main.CommandPrefix.Value;
var prefix = prefixArgument.Arg.ToCharArray().First().ToString();
+7 -7
View File
@@ -7,11 +7,11 @@ using BetterAmongUs.Patches;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class SetRoleCommand : BaseCommand
internal class SetRoleCommand : BaseCommand
{
public override CommandType Type => CommandType.Debug;
public override string Name => "setrole";
public override string Description => "Set another players role for the next game";
internal override CommandType Type => CommandType.Debug;
internal override string Name => "setrole";
internal override string Description => "Set another players role for the next game";
public SetRoleCommand()
{
@@ -23,14 +23,14 @@ public class SetRoleCommand : BaseCommand
roleArgument.GetArgSuggestions = () => { return RoleManager.Instance.AllRoles.Select(role => role.NiceName.ToLower()).ToArray(); };
}
private readonly Lazy<BaseArgument[]> _arguments;
public override BaseArgument[]? Arguments => _arguments.Value;
internal override BaseArgument[]? Arguments => _arguments.Value;
private PlayerArgument? playerArgument => (PlayerArgument)Arguments[0];
private StringArgument? roleArgument => (StringArgument)Arguments[1];
public override bool ShowCommand() => GameState.IsHost && Main.MyData.HasAll() && Main.MyData.IsVerified();
internal override bool ShowCommand() => GameState.IsHost && Main.MyData.HasAll() && Main.MyData.IsVerified();
public override void Run()
internal override void Run()
{
var player = playerArgument.TryGetTarget();
if (player.IsLocalPlayer())
+6 -6
View File
@@ -5,13 +5,13 @@ using BetterAmongUs.Modules;
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class SuicideCommand : BaseCommand
internal class SuicideCommand : BaseCommand
{
public override CommandType Type => CommandType.Debug;
public override string Name => "suicide";
public override string Description => "Kill self";
public override bool ShowCommand() => GameState.IsFreePlay;
public override void Run()
internal override CommandType Type => CommandType.Debug;
internal override string Name => "suicide";
internal override string Description => "Kill self";
internal override bool ShowCommand() => GameState.IsFreePlay;
internal override void Run()
{
PlayerControl.LocalPlayer.MurderPlayer(PlayerControl.LocalPlayer, MurderResultFlags.Succeeded);
}
+5 -5
View File
@@ -3,12 +3,12 @@
namespace BetterAmongUs.Commands;
[RegisterCommand]
public class TestCommand : BaseCommand
internal class TestCommand : BaseCommand
{
public override CommandType Type => CommandType.Debug;
public override string Name => "test";
public override string Description => "Test Command";
public override void Run()
internal override CommandType Type => CommandType.Debug;
internal override string Name => "test";
internal override string Description => "Test Command";
internal override void Run()
{
}
}
+3 -3
View File
@@ -1,10 +1,10 @@
namespace BetterAmongUs.Helpers;
public static class CastHelper
internal static class CastHelper
{
public static bool TryCast<T>(this object obj) => obj is T;
internal static bool TryCast<T>(this object obj) => obj is T;
public static bool TryCast<T>(this object obj, out T? item) where T : class
internal static bool TryCast<T>(this object obj, out T? item) where T : class
{
if (obj != null && obj is T casted)
{
+12 -12
View File
@@ -11,7 +11,7 @@ namespace BetterAmongUs;
class Logger
{
public static void Log(string info, string tag = "Log", bool logConsole = true, ConsoleColor color = ConsoleColor.White, bool hostOnly = false)
internal static void Log(string info, string tag = "Log", bool logConsole = true, ConsoleColor color = ConsoleColor.White, bool hostOnly = false)
{
try
{
@@ -30,7 +30,7 @@ class Logger
}
catch { }
}
public static void LogMethod(
internal static void LogMethod(
string info = "",
Type? runtimeType = null,
bool hostOnly = false,
@@ -52,7 +52,7 @@ class Logger
Log(logMessage, "MethodLog", hostOnly);
}
public static void LogMethodPrivate(
internal static void LogMethodPrivate(
string info = "",
Type? runtimeType = null,
bool hostOnly = false,
@@ -74,18 +74,18 @@ class Logger
LogPrivate(logMessage, "MethodLog", hostOnly);
}
public static void LogHeader(string info, string tag = "LogHeader", bool hostOnly = false, bool logConsole = true) => Log($" >-------------- {info} --------------<", tag, hostOnly: hostOnly, logConsole: logConsole);
public static void LogCheat(string info, string tag = "AntiCheat", bool hostOnly = false, bool logConsole = true) => Log(info, tag, color: ConsoleColor.Green, hostOnly: hostOnly, logConsole: logConsole);
public static void Error(string info, string tag = "Error", bool hostOnly = false, bool logConsole = true) => Log(info, tag, color: ConsoleColor.Red, hostOnly: hostOnly, logConsole: logConsole);
public static void Error(Exception ex, string tag = "Error", bool hostOnly = false, bool logConsole = true) => Log(ex.ToString(), tag, color: ConsoleColor.Red, hostOnly: hostOnly, logConsole: logConsole);
public static void Warning(string info, string tag = "Warning", bool hostOnly = false, bool logConsole = true) => Log(info, tag, color: ConsoleColor.Yellow, hostOnly: hostOnly, logConsole: logConsole);
public static void Test()
internal static void LogHeader(string info, string tag = "LogHeader", bool hostOnly = false, bool logConsole = true) => Log($" >-------------- {info} --------------<", tag, hostOnly: hostOnly, logConsole: logConsole);
internal static void LogCheat(string info, string tag = "AntiCheat", bool hostOnly = false, bool logConsole = true) => Log(info, tag, color: ConsoleColor.Green, hostOnly: hostOnly, logConsole: logConsole);
internal static void Error(string info, string tag = "Error", bool hostOnly = false, bool logConsole = true) => Log(info, tag, color: ConsoleColor.Red, hostOnly: hostOnly, logConsole: logConsole);
internal static void Error(Exception ex, string tag = "Error", bool hostOnly = false, bool logConsole = true) => Log(ex.ToString(), tag, color: ConsoleColor.Red, hostOnly: hostOnly, logConsole: logConsole);
internal static void Warning(string info, string tag = "Warning", bool hostOnly = false, bool logConsole = true) => Log(info, tag, color: ConsoleColor.Yellow, hostOnly: hostOnly, logConsole: logConsole);
internal static void Test()
{
Log("------------------> TEST <------------------", "TEST");
InGame("TEST");
}
// Log in game join msg
public static void InGame(string info, bool hostOnly = false)
internal static void InGame(string info, bool hostOnly = false)
{
if (hostOnly && !GameState.IsHost) return;
@@ -96,7 +96,7 @@ class Logger
// ------------- Private Log -------------
// Logs that can only be accessed when dumped
public static void LogPrivate(string info, string tag = "Log", bool hostOnly = false)
internal static void LogPrivate(string info, string tag = "Log", bool hostOnly = false)
{
try
{
@@ -119,7 +119,7 @@ class Logger
}
}
public class CustomLogListener : ILogListener
internal class CustomLogListener : ILogListener
{
public LogLevel LogLevelFilter { get; set; } = LogLevel.Info | LogLevel.Warning | LogLevel.Error;
public void LogEvent(object sender, LogEventArgs eventArgs)
+4 -4
View File
@@ -1,19 +1,19 @@
namespace BetterAmongUs.Helpers;
public static class EnumHelper
internal static class EnumHelper
{
/// <summary>
/// Get all values of enum
/// </summary>
/// <typeparam name="T">Type of enum to be obtained</typeparam>
/// <returns>All values of T</returns>
public static T[] GetAllValues<T>() where T : Enum => Enum.GetValues(typeof(T)) as T[];
internal static T[] GetAllValues<T>() where T : Enum => Enum.GetValues(typeof(T)) as T[];
/// <summary>
/// Get all names in enum
/// </summary>
/// <typeparam name="T">Type of enum to be obtained</typeparam>
/// <returns>All values of T</returns>
public static string[] GetAllNames<T>() where T : Enum => Enum.GetNames(typeof(T));
internal static string[] GetAllNames<T>() where T : Enum => Enum.GetNames(typeof(T));
/// <summary>
@@ -22,7 +22,7 @@ public static class EnumHelper
/// <typeparam name="TEnum">Type of enum to be obtained</typeparam>
/// <param name="chunkSize">The number of elements each chunk should contain. </param>
/// <returns>A list of arrays, each containing up to <paramref name="chunkSize"/> elements of the enum type.</returns>
public static List<TEnum[]> Achunk<TEnum>(int chunkSize, bool shuffle = false, Func<TEnum, bool> exclude = null) where TEnum : Enum
internal static List<TEnum[]> Achunk<TEnum>(int chunkSize, bool shuffle = false, Func<TEnum, bool> exclude = null) where TEnum : Enum
{
List<TEnum[]> chunkedList = [];
TEnum[] allValues = GetAllValues<TEnum>();
+10 -10
View File
@@ -4,22 +4,22 @@ using UnityEngine;
namespace BetterAmongUs.Helpers;
public class BetterPlayerControl(IntPtr intPtr) : MonoBehaviour(intPtr)
internal class BetterPlayerControl(IntPtr intPtr) : MonoBehaviour(intPtr)
{
public PlayerControl? _Player { get; set; }
public TextMeshPro? InfoTextInfo { get; set; }
public TextMeshPro? InfoTextTop { get; set; }
public TextMeshPro? InfoTextBottom { get; set; }
internal PlayerControl? _Player { get; set; }
internal TextMeshPro? InfoTextInfo { get; set; }
internal TextMeshPro? InfoTextTop { get; set; }
internal TextMeshPro? InfoTextBottom { get; set; }
}
public static class PlayerControlExtension
internal static class PlayerControlExtension
{
[HarmonyPatch(typeof(PlayerControl))]
class PlayerControlPatch
{
[HarmonyPatch(nameof(PlayerControl.Awake))]
[HarmonyPrefix]
public static void Awake_Prefix(PlayerControl __instance)
internal static void Awake_Prefix(PlayerControl __instance)
{
var nameTextTransform = __instance.gameObject.transform.Find("Names/NameText_TMP");
var nameText = nameTextTransform?.GetComponent<TextMeshPro>();
@@ -46,7 +46,7 @@ public static class PlayerControlExtension
TryCreateExtendedPlayerControl(__instance, text1, text2, text3);
}
public static void TryCreateExtendedPlayerControl(PlayerControl pc, TextMeshPro InfoText_Info_TMP, TextMeshPro InfoText_T_TMP, TextMeshPro InfoText_B_TMP)
internal static void TryCreateExtendedPlayerControl(PlayerControl pc, TextMeshPro InfoText_Info_TMP, TextMeshPro InfoText_T_TMP, TextMeshPro InfoText_B_TMP)
{
if (pc.BetterPlayerControl() == null)
{
@@ -59,12 +59,12 @@ public static class PlayerControlExtension
}
}
public static BetterPlayerControl? BetterPlayerControl(this PlayerControl player)
internal static BetterPlayerControl? BetterPlayerControl(this PlayerControl player)
{
return player?.GetComponent<BetterPlayerControl>();
}
public static BetterPlayerControl? BetterPlayerControl(this PlayerPhysics playerPhysics)
internal static BetterPlayerControl? BetterPlayerControl(this PlayerPhysics playerPhysics)
{
return playerPhysics?.GetComponent<BetterPlayerControl>();
}
+41 -41
View File
@@ -8,10 +8,10 @@ using UnityEngine;
namespace BetterAmongUs.Helpers;
public class ExtendedPlayerInfo : MonoBehaviour
internal class ExtendedPlayerInfo : MonoBehaviour
{
private bool hasSet = false;
public void SetInfo(NetworkedPlayerInfo data)
internal void SetInfo(NetworkedPlayerInfo data)
{
if (hasSet) return;
MyUserData = UserData.GetPlayerUserData(data);
@@ -21,7 +21,7 @@ public class ExtendedPlayerInfo : MonoBehaviour
}
private float timeAccumulator = 0f;
public void Update()
internal void Update()
{
var time = Time.deltaTime;
@@ -49,7 +49,7 @@ public class ExtendedPlayerInfo : MonoBehaviour
}
}
public void LateUpdate()
internal void LateUpdate()
{
if (gameObject == null) return;
@@ -59,71 +59,71 @@ public class ExtendedPlayerInfo : MonoBehaviour
}
}
public UserData? MyUserData { get; private set; } = UserData.AllUsers.First();
public byte _PlayerId { get; private set; }
public NetworkedPlayerInfo? _Data { get; private set; }
public string? RealName { get; private set; }
public bool IsDirtyInfo { get; set; } = true;
public Dictionary<byte, string> LastNameSetFor { get; set; } = [];
public bool IsBetterUser { get; set; } = false;
public bool IsVerifiedBetterUser { get; set; } = false;
public bool IsTOHEHost { get; set; } = false;
public bool HasShowDcMsg { get; set; } = false;
public DisconnectReasons DisconnectReason { get; set; } = DisconnectReasons.Unknown;
public ExtendedRoleInfo? RoleInfo { get; } = new();
public ExtendedAntiCheatInfo? AntiCheatInfo { get; } = new();
internal UserData? MyUserData { get; private set; } = UserData.AllUsers.First();
internal byte _PlayerId { get; private set; }
internal NetworkedPlayerInfo? _Data { get; private set; }
internal string? RealName { get; private set; }
internal bool IsDirtyInfo { get; set; } = true;
internal Dictionary<byte, string> LastNameSetFor { get; set; } = [];
internal bool IsBetterUser { get; set; } = false;
internal bool IsVerifiedBetterUser { get; set; } = false;
internal bool IsTOHEHost { get; set; } = false;
internal bool HasShowDcMsg { get; set; } = false;
internal DisconnectReasons DisconnectReason { get; set; } = DisconnectReasons.Unknown;
internal ExtendedRoleInfo? RoleInfo { get; } = new();
internal ExtendedAntiCheatInfo? AntiCheatInfo { get; } = new();
}
public class ExtendedAntiCheatInfo
internal class ExtendedAntiCheatInfo
{
public bool BannedByAntiCheat { get; set; } = false;
public List<string> AUMChats { get; set; } = [];
public static int MaxRPCSent => 35;
public int RPCSentPS { get; set; } = 0;
public int TimesAttemptedKilled { get; set; } = 0;
public int OpenSabotageNum { get; set; } = 0;
public bool IsFixingPanelSabotage => OpenSabotageNum != 0;
public float TimeSinceLastTask { get; set; } = 5f;
public uint LastTaskId { get; set; } = 999;
public bool HasSetName { get; set; }
public bool HasSetLevel { get; set; }
internal bool BannedByAntiCheat { get; set; } = false;
internal List<string> AUMChats { get; set; } = [];
internal static int MaxRPCSent => 35;
internal int RPCSentPS { get; set; } = 0;
internal int TimesAttemptedKilled { get; set; } = 0;
internal int OpenSabotageNum { get; set; } = 0;
internal bool IsFixingPanelSabotage => OpenSabotageNum != 0;
internal float TimeSinceLastTask { get; set; } = 5f;
internal uint LastTaskId { get; set; } = 999;
internal bool HasSetName { get; set; }
internal bool HasSetLevel { get; set; }
}
public class ExtendedRoleInfo
internal class ExtendedRoleInfo
{
public int Kills { get; set; } = 0;
public bool HasNoisemakerNotify { get; set; } = false;
public RoleTypes DeadDisplayRole { get; set; }
internal int Kills { get; set; } = 0;
internal bool HasNoisemakerNotify { get; set; } = false;
internal RoleTypes DeadDisplayRole { get; set; }
}
public static class PlayerControlDataExtension
internal static class PlayerControlDataExtension
{
[HarmonyPatch(typeof(NetworkedPlayerInfo))]
class NetworkedPlayerInfoPatch
{
[HarmonyPatch(nameof(NetworkedPlayerInfo.Init))]
[HarmonyPostfix]
public static void Init_Postfix(NetworkedPlayerInfo __instance)
internal static void Init_Postfix(NetworkedPlayerInfo __instance)
{
TryCreateExtendedData(__instance);
}
[HarmonyPatch(nameof(NetworkedPlayerInfo.Serialize))]
[HarmonyPostfix]
public static void Serialize_Postfix(NetworkedPlayerInfo __instance)
internal static void Serialize_Postfix(NetworkedPlayerInfo __instance)
{
__instance.DirtyNameDelay();
}
[HarmonyPatch(nameof(NetworkedPlayerInfo.Deserialize))]
[HarmonyPostfix]
public static void Deserialize_Postfix(NetworkedPlayerInfo __instance)
internal static void Deserialize_Postfix(NetworkedPlayerInfo __instance)
{
TryCreateExtendedData(__instance);
__instance.DirtyNameDelay();
}
public static void TryCreateExtendedData(NetworkedPlayerInfo data)
internal static void TryCreateExtendedData(NetworkedPlayerInfo data)
{
if (data.BetterData() == null)
{
@@ -135,19 +135,19 @@ public static class PlayerControlDataExtension
}
// Get BetterData from PlayerControl
public static ExtendedPlayerInfo? BetterData(this PlayerControl player)
internal static ExtendedPlayerInfo? BetterData(this PlayerControl player)
{
return player?.Data?.GetComponent<ExtendedPlayerInfo>();
}
// Get BetterData from NetworkedPlayerInfo
public static ExtendedPlayerInfo? BetterData(this NetworkedPlayerInfo data)
internal static ExtendedPlayerInfo? BetterData(this NetworkedPlayerInfo data)
{
return data?.GetComponent<ExtendedPlayerInfo>();
}
// Get BetterData from ClientData
public static ExtendedPlayerInfo? BetterData(this ClientData data)
internal static ExtendedPlayerInfo? BetterData(this ClientData data)
{
var player = Utils.PlayerFromClientId(data.Id);
return player?.Data?.GetComponent<ExtendedPlayerInfo>();
+2 -2
View File
@@ -3,9 +3,9 @@ using UnityEngine;
namespace BetterAmongUs.Helpers;
public class GamePrefabHelper
internal class GamePrefabHelper
{
public static UnityEngine.Object? GetPrefabByName(string objectName)
internal static UnityEngine.Object? GetPrefabByName(string objectName)
{
UnityEngine.Object[] allObjects = UnityEngine.Resources.FindObjectsOfTypeAll(Il2CppType.Of<UnityEngine.Object>());
+22 -22
View File
@@ -10,7 +10,7 @@ static class InnerNetClientHelper
/// Writes an array of boolean values to a MessageWriter in a packed format to save space.
/// Each byte stores up to 8 boolean values as bits.
/// </summary>
public static void WriteBooleans(this MessageWriter writer, IEnumerable<bool> boolsEnumerable)
internal static void WriteBooleans(this MessageWriter writer, IEnumerable<bool> boolsEnumerable)
{
bool[] bools = boolsEnumerable.ToArray();
@@ -39,7 +39,7 @@ static class InnerNetClientHelper
/// <summary>
/// Reads an array of boolean values from a MessageReader that were previously packed using WriteBooleans.
/// </summary>
public static bool[] ReadBooleans(this MessageReader reader)
internal static bool[] ReadBooleans(this MessageReader reader)
{
int length = reader.ReadInt32();
bool[] bools = new bool[length];
@@ -65,7 +65,7 @@ static class InnerNetClientHelper
/// <summary>
/// Writes an array of bytes to a MessageWriter in a packed format, combining two bytes into one to save space.
/// </summary>
public static void WritePackedBytes(this MessageWriter writer, IEnumerable<byte> bytesEnumerable)
internal static void WritePackedBytes(this MessageWriter writer, IEnumerable<byte> bytesEnumerable)
{
byte[] bytes = bytesEnumerable.ToArray();
@@ -83,7 +83,7 @@ static class InnerNetClientHelper
/// <summary>
/// Reads an array of bytes from a MessageReader that were previously packed using WritePackedBytes.
/// </summary>
public static byte[] ReadPackedBytes(this MessageReader reader)
internal static byte[] ReadPackedBytes(this MessageReader reader)
{
int count = reader.ReadByte();
List<byte> bytes = [];
@@ -103,7 +103,7 @@ static class InnerNetClientHelper
/// Writes a floating-point value to a MessageWriter in a packed format to save space.
/// Handles negative values, integers, and decimal numbers efficiently.
/// </summary>
public static void WritePacked(this MessageWriter writer, float value)
internal static void WritePacked(this MessageWriter writer, float value)
{
bool isNegative = value < 0;
float absValue = Math.Abs(value);
@@ -181,7 +181,7 @@ static class InnerNetClientHelper
/// Reads a floating-point value from a MessageReader that was previously packed using WritePacked.
/// Handles negative values, integers, and decimal numbers efficiently.
/// </summary>
public static float ReadPackedSingle(this MessageReader reader)
internal static float ReadPackedSingle(this MessageReader reader)
{
var flags = reader.ReadBooleans();
bool isNegative = flags[0];
@@ -218,28 +218,28 @@ static class InnerNetClientHelper
}
}
public static void WritePlayerId(this MessageWriter writer, PlayerControl player) => writer.Write(player?.PlayerId ?? 255);
internal static void WritePlayerId(this MessageWriter writer, PlayerControl player) => writer.Write(player?.PlayerId ?? 255);
public static PlayerControl? ReadPlayerId(this MessageReader reader) => Utils.PlayerFromPlayerId(reader.ReadByte());
internal static PlayerControl? ReadPlayerId(this MessageReader reader) => Utils.PlayerFromPlayerId(reader.ReadByte());
public static void WritePlayerDataId(this MessageWriter writer, NetworkedPlayerInfo data) => writer.Write(data?.PlayerId ?? 255);
internal static void WritePlayerDataId(this MessageWriter writer, NetworkedPlayerInfo data) => writer.Write(data?.PlayerId ?? 255);
public static NetworkedPlayerInfo? ReadPlayerDataId(this MessageReader reader) => Utils.PlayerDataFromPlayerId(reader.ReadByte());
internal static NetworkedPlayerInfo? ReadPlayerDataId(this MessageReader reader) => Utils.PlayerDataFromPlayerId(reader.ReadByte());
public static void WriteDeadBodyId(this MessageWriter writer, DeadBody body) => writer.Write(body?.ParentId ?? 255);
internal static void WriteDeadBodyId(this MessageWriter writer, DeadBody body) => writer.Write(body?.ParentId ?? 255);
public static DeadBody? ReadDeadBodyId(this MessageReader reader) => Main.AllDeadBodys.FirstOrDefault(deadbody => deadbody.ParentId == reader.ReadByte());
internal static DeadBody? ReadDeadBodyId(this MessageReader reader) => Main.AllDeadBodys.FirstOrDefault(deadbody => deadbody.ParentId == reader.ReadByte());
public static void WriteVentId(this MessageWriter writer, Vent vent) => writer.Write(vent?.Id ?? -1);
internal static void WriteVentId(this MessageWriter writer, Vent vent) => writer.Write(vent?.Id ?? -1);
public static Vent? ReadVentId(this MessageReader reader) => Main.AllVents.FirstOrDefault(vent => vent.Id == reader.ReadInt32());
internal static Vent? ReadVentId(this MessageReader reader) => Main.AllVents.FirstOrDefault(vent => vent.Id == reader.ReadInt32());
/// <summary>
/// Converts a MessageWriter to a MessageReader.
/// </summary>
public static MessageReader ToReader(this MessageWriter writer) => MessageReader.Get(writer.ToByteArray(false));
internal static MessageReader ToReader(this MessageWriter writer) => MessageReader.Get(writer.ToByteArray(false));
public static MessageReader[] ToReaders(this MessageWriter writer)
internal static MessageReader[] ToReaders(this MessageWriter writer)
{
var reader = writer.ToReader();
List<MessageReader> readers = [];
@@ -252,7 +252,7 @@ static class InnerNetClientHelper
return [.. readers];
}
public static MessageReader[] ToReaders(this MessageReader reader)
internal static MessageReader[] ToReaders(this MessageReader reader)
{
List<MessageReader> readers = [];
@@ -264,7 +264,7 @@ static class InnerNetClientHelper
return [.. readers];
}
public static MessageReader[] ToReadersNewBuffer(this MessageReader reader)
internal static MessageReader[] ToReadersNewBuffer(this MessageReader reader)
{
List<MessageReader> readers = [];
@@ -276,7 +276,7 @@ static class InnerNetClientHelper
return [.. readers];
}
public static MessageWriter WriteReaders(this MessageWriter writer, IEnumerable<MessageReader> readers, bool clear = false)
internal static MessageWriter WriteReaders(this MessageWriter writer, IEnumerable<MessageReader> readers, bool clear = false)
{
if (clear) writer.Clear(writer.SendOption);
@@ -290,7 +290,7 @@ static class InnerNetClientHelper
return writer;
}
public static MessageWriter Copy(this MessageWriter writer)
internal static MessageWriter Copy(this MessageWriter writer)
{
var newWriter = MessageWriter.Get(writer.SendOption);
newWriter.Write(writer.ToByteArray(false));
@@ -318,7 +318,7 @@ static class InnerNetClientHelper
messageWriter.ForEach(mW => mW.Write("RPC TEST"));
AmongUsClient.Instance.FinishRpcDesync(messageWriter);
*/
public static List<MessageWriter> StartRpcDesync(this InnerNetClient client, uint playerNetId, byte callId, SendOption option, int ignoreClientId = -1, Func<ClientData, bool> clientCheck = null)
internal static List<MessageWriter> StartRpcDesync(this InnerNetClient client, uint playerNetId, byte callId, SendOption option, int ignoreClientId = -1, Func<ClientData, bool> clientCheck = null)
{
List<MessageWriter> messageWriters = new List<MessageWriter>();
@@ -342,7 +342,7 @@ static class InnerNetClientHelper
public static void FinishRpcDesync(this InnerNetClient client, List<MessageWriter> messageWriters)
internal static void FinishRpcDesync(this InnerNetClient client, List<MessageWriter> messageWriters)
{
foreach (var msg in messageWriters)
{
+8 -7
View File
@@ -2,12 +2,12 @@ namespace BetterAmongUs.Helpers;
class LateTask
{
public string name;
public float timer;
public bool shouldLog;
public Action action;
public static List<LateTask> Tasks = [];
public bool Run(float deltaTime)
internal string name;
internal float timer;
internal bool shouldLog;
internal Action action;
internal static List<LateTask> Tasks = [];
internal bool Run(float deltaTime)
{
timer -= deltaTime;
if (timer <= 0)
@@ -28,7 +28,8 @@ class LateTask
this.shouldLog = shouldLog;
Tasks.Add(this);
}
public static void Update(float deltaTime)
internal static void Update(float deltaTime)
{
var TasksToRemove = new List<LateTask>();
foreach (var task in Tasks.ToArray())
+9 -9
View File
@@ -2,9 +2,9 @@
namespace BetterAmongUs.Helpers;
public static class ObjectHelper
internal static class ObjectHelper
{
public static GameObject? FindObjectByName(string objectName)
internal static GameObject? FindObjectByName(string objectName)
{
GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>(true);
@@ -18,19 +18,19 @@ public static class ObjectHelper
return null;
}
public static void DestroyObj(this GameObject obj)
internal static void DestroyObj(this GameObject obj)
{
if (obj != null)
{
UnityEngine.Object.Destroy(obj);
}
}
public static void DestroyObj(this UnityEngine.Object obj) => obj.DestroyObj();
public static void DestroyCom(this Component com) => com.DestroyObj();
public static void DestroyObj(this MonoBehaviour mono) => mono?.gameObject?.DestroyObj();
public static void DestroyMono(this MonoBehaviour mono) => UnityEngine.Object.Destroy(mono);
internal static void DestroyObj(this UnityEngine.Object obj) => obj.DestroyObj();
internal static void DestroyCom(this Component com) => com.DestroyObj();
internal static void DestroyObj(this MonoBehaviour mono) => mono?.gameObject?.DestroyObj();
internal static void DestroyMono(this MonoBehaviour mono) => UnityEngine.Object.Destroy(mono);
public static void DestroyTextTranslator(this GameObject obj)
internal static void DestroyTextTranslator(this GameObject obj)
{
var translator = obj.GetComponent<TextTranslatorTMP>();
if (translator != null)
@@ -38,5 +38,5 @@ public static class ObjectHelper
UnityEngine.Object.Destroy(translator);
}
}
public static void DestroyTextTranslator(this MonoBehaviour mono) => mono.gameObject.DestroyTextTranslator();
internal static void DestroyTextTranslator(this MonoBehaviour mono) => mono.gameObject.DestroyTextTranslator();
}
+38 -38
View File
@@ -11,7 +11,7 @@ namespace BetterAmongUs.Helpers;
static class PlayerControlHelper
{
// Get players client
public static ClientData? GetClient(this PlayerControl player)
internal static ClientData? GetClient(this PlayerControl player)
{
try
{
@@ -24,9 +24,9 @@ static class PlayerControlHelper
}
}
// Get players client id
public static int GetClientId(this PlayerControl player) => player?.GetClient()?.Id != null ? player.GetClient().Id : -1;
internal static int GetClientId(this PlayerControl player) => player?.GetClient()?.Id != null ? player.GetClient().Id : -1;
// Get player name with outfit color
public static string GetPlayerNameAndColor(this PlayerControl player)
internal static string GetPlayerNameAndColor(this PlayerControl player)
{
if (player?.Data == null) return string.Empty;
@@ -40,10 +40,10 @@ static class PlayerControlHelper
}
}
public static void DirtyName(this PlayerControl player) => player.BetterData().IsDirtyInfo = true;
public static void DirtyName(this NetworkedPlayerInfo data) => data.BetterData().IsDirtyInfo = true;
public static void DirtyNameDelay(this PlayerControl player, float delay = 1f) => player.Data.DirtyNameDelay(delay);
public static void DirtyNameDelay(this NetworkedPlayerInfo data, float delay = 1f)
internal static void DirtyName(this PlayerControl player) => player.BetterData().IsDirtyInfo = true;
internal static void DirtyName(this NetworkedPlayerInfo data) => data.BetterData().IsDirtyInfo = true;
internal static void DirtyNameDelay(this PlayerControl player, float delay = 1f) => player.Data.DirtyNameDelay(delay);
internal static void DirtyNameDelay(this NetworkedPlayerInfo data, float delay = 1f)
{
_ = new LateTask(() =>
{
@@ -56,7 +56,7 @@ static class PlayerControlHelper
// Set players over head text
public static void SetPlayerTextInfo(this PlayerControl player, string text, bool isBottom = false, bool isInfo = false)
internal static void SetPlayerTextInfo(this PlayerControl player, string text, bool isBottom = false, bool isInfo = false)
{
if (player == null) return;
@@ -83,7 +83,7 @@ static class PlayerControlHelper
}
// Reset players over head text
public static void ResetAllPlayerTextInfo(this PlayerControl player)
internal static void ResetAllPlayerTextInfo(this PlayerControl player)
{
if (player == null) return;
player.SetPlayerTextInfo("", isInfo: true);
@@ -91,7 +91,7 @@ static class PlayerControlHelper
player.SetPlayerTextInfo("", isBottom: true);
}
// Check if players character has been created and received from the Host
public static bool DataIsCollected(this PlayerControl player)
internal static bool DataIsCollected(this PlayerControl player)
{
if (player == null) return false;
@@ -111,7 +111,7 @@ static class PlayerControlHelper
return true;
}
// Kick player
public static void Kick(this PlayerControl player, bool ban = false, string setReasonInfo = "", bool AntiCheatBan = false, bool bypassDataCheck = false, bool forceBan = false)
internal static void Kick(this PlayerControl player, bool ban = false, string setReasonInfo = "", bool AntiCheatBan = false, bool bypassDataCheck = false, bool forceBan = false)
{
var Ban = ban || forceBan;
@@ -140,7 +140,7 @@ static class PlayerControlHelper
player.BetterData().AntiCheatInfo.BannedByAntiCheat = AntiCheatBan;
}
// Set color outline on player
public static void SetOutline(this PlayerControl player, bool active, Color? color = null)
internal static void SetOutline(this PlayerControl player, bool active, Color? color = null)
{
player.cosmetics.currentBodySprite.BodySprite.material.SetFloat("_Outline", active ? 1 : 0);
SpriteRenderer[] longModeParts = player.cosmetics.currentBodySprite.LongModeParts;
@@ -159,7 +159,7 @@ static class PlayerControlHelper
}
}
// Set color outline on player
public static void SetOutlineByHex(this PlayerControl player, bool active, string hexColor = "")
internal static void SetOutlineByHex(this PlayerControl player, bool active, string hexColor = "")
{
Color color = Utils.HexToColor32(hexColor);
player.cosmetics.currentBodySprite.BodySprite.material.SetFloat("_Outline", active ? 1 : 0);
@@ -180,27 +180,27 @@ static class PlayerControlHelper
}
// RPCs
// Set name for Target
public static void RpcSetNamePrivate(this PlayerControl player, string name, PlayerControl target)
internal static void RpcSetNamePrivate(this PlayerControl player, string name, PlayerControl target)
{
if (player == null || target == null) return;
RPC.SetNamePrivate(player, name, target);
}
// Exile player
public static void RpcExile(this PlayerControl player)
internal static void RpcExile(this PlayerControl player)
{
if (player == null) return;
RPC.ExileAsync(player);
}
// Check if player is selecting room to spawn in, for Airship
public static bool IsInRoomSelect(this PlayerControl player)
internal static bool IsInRoomSelect(this PlayerControl player)
{
if (player == null) return false;
return GameState.AirshipIsActive && Vector2.Distance(player.GetTruePosition(), new(-25, 40)) < 5f;
}
// Check if player controller is self client
public static bool IsLocalPlayer(this PlayerControl player) => player != null && PlayerControl.LocalPlayer != null && player == PlayerControl.LocalPlayer;
internal static bool IsLocalPlayer(this PlayerControl player) => player != null && PlayerControl.LocalPlayer != null && player == PlayerControl.LocalPlayer;
// Get vent Id that the player is in.
public static int GetPlayerVentId(this PlayerControl player)
internal static int GetPlayerVentId(this PlayerControl player)
{
if (player == null) return -1;
@@ -211,16 +211,16 @@ static class PlayerControlHelper
return ventilationSystem.PlayersInsideVents.TryGetValue(player.PlayerId, out var playerIdVentId) ? playerIdVentId : -1;
}
// Get true position
public static Vector2 GetCustomPosition(this PlayerControl player) => new(player.transform.position.x, player.transform.position.y);
internal static Vector2 GetCustomPosition(this PlayerControl player) => new(player.transform.position.x, player.transform.position.y);
// Check if player is a dev
public static bool IsDev(this PlayerControl player) => player.BetterData().MyUserData.IsDev();
internal static bool IsDev(this PlayerControl player) => player.BetterData().MyUserData.IsDev();
// Check if player is alive
public static bool IsAlive(this PlayerControl player) => player?.Data != null && !player.Data.IsDead;
internal static bool IsAlive(this PlayerControl player) => player?.Data != null && !player.Data.IsDead;
// Check if player is in a vent
public static bool IsInVent(this PlayerControl player) => player != null && (player.inVent || player.walkingToVent || player.MyPhysics?.Animations?.IsPlayingEnterVentAnimation() == true);
internal static bool IsInVent(this PlayerControl player) => player != null && (player.inVent || player.walkingToVent || player.MyPhysics?.Animations?.IsPlayingEnterVentAnimation() == true);
// Check if player role name
public static void UpdateColorBlindTextPosition(this PlayerControl player)
internal static void UpdateColorBlindTextPosition(this PlayerControl player)
{
var text = player.cosmetics.colorBlindText;
if (!text.enabled) return;
@@ -234,7 +234,7 @@ static class PlayerControlHelper
}
}
public static string GetRoleName(this PlayerControl player)
internal static string GetRoleName(this PlayerControl player)
{
if (!player.IsAlive() && !player.IsGhostRole() && Main.GetRoleName().TryGetValue((int)player.BetterData().RoleInfo.DeadDisplayRole, out var roleName))
{
@@ -249,9 +249,9 @@ static class PlayerControlHelper
return string.Empty;
}
// Check if player is Shapeshifting
public static bool IsInShapeshift(this PlayerControl player) => player != null && (player.shapeshiftTargetPlayerId > -1 || player.shapeshifting) && !player.waitingForShapeshiftResponse;
internal static bool IsInShapeshift(this PlayerControl player) => player != null && (player.shapeshiftTargetPlayerId > -1 || player.shapeshifting) && !player.waitingForShapeshiftResponse;
// Check if player is in vanish as Phantom
public static bool IsInVanish(this PlayerControl player)
internal static bool IsInVanish(this PlayerControl player)
{
if (player != null && player.Data.Role is PhantomRole phantomRole)
{
@@ -260,7 +260,7 @@ static class PlayerControlHelper
return false;
}
// Get hex color for team
public static string GetTeamHexColor(this PlayerControl player)
internal static string GetTeamHexColor(this PlayerControl player)
{
if (player == null) return "#ffffff";
@@ -274,47 +274,47 @@ static class PlayerControlHelper
}
}
// Check if player is role type
public static bool Is(this PlayerControl player, RoleTypes role) => player?.Data?.RoleType == role;
internal static bool Is(this PlayerControl player, RoleTypes role) => player?.Data?.RoleType == role;
// Check if player is Ghost role type
public static bool IsGhostRole(this PlayerControl player) => player?.Data?.RoleType is RoleTypes.GuardianAngel;
internal static bool IsGhostRole(this PlayerControl player) => player?.Data?.RoleType is RoleTypes.GuardianAngel;
// Check if player is on imposter team
public static bool IsImpostorTeam(this PlayerControl player) => player?.Data != null && player.Data.RoleType is RoleTypes.Impostor or RoleTypes.ImpostorGhost or RoleTypes.Shapeshifter or RoleTypes.Phantom;
internal static bool IsImpostorTeam(this PlayerControl player) => player?.Data != null && player.Data.RoleType is RoleTypes.Impostor or RoleTypes.ImpostorGhost or RoleTypes.Shapeshifter or RoleTypes.Phantom;
// Check if player is a imposter teammate
public static bool IsImpostorTeammate(this PlayerControl player) =>
internal static bool IsImpostorTeammate(this PlayerControl player) =>
player != null && PlayerControl.LocalPlayer != null &&
(player.IsLocalPlayer() && PlayerControl.LocalPlayer.IsImpostorTeam() ||
PlayerControl.LocalPlayer.IsImpostorTeam() && player.IsImpostorTeam());
// Check if player is in the Anti-Cheat list
public static bool IsCheater(this PlayerControl player) =>
internal static bool IsCheater(this PlayerControl player) =>
player != null && (BAUAntiCheat.PlayerData.ContainsKey(player.GetHashPuid()) ||
BAUAntiCheat.SickoData.ContainsKey(player.GetHashPuid()) ||
BAUAntiCheat.AUMData.ContainsKey(player.GetHashPuid()));
// Check if player is the host
public static bool IsHost(this PlayerControl player) => player?.Data != null && GameData.Instance?.GetHost() == player.Data;
internal static bool IsHost(this PlayerControl player) => player?.Data != null && GameData.Instance?.GetHost() == player.Data;
// Get players HashPuid
public static string GetHashPuid(this PlayerControl player)
internal static string GetHashPuid(this PlayerControl player)
{
return player.Data.GetHashPuid() ?? "";
}
public static string GetHashPuid(this NetworkedPlayerInfo data)
internal static string GetHashPuid(this NetworkedPlayerInfo data)
{
if (data?.Puid == null) return "";
return Utils.GetHashStr(data.Puid);
}
// Get players Friendcode
public static string GetHashFriendcode(this PlayerControl player)
internal static string GetHashFriendcode(this PlayerControl player)
{
return player.Data.GetHashFriendcode() ?? "";
}
public static string GetHashFriendcode(this NetworkedPlayerInfo data)
internal static string GetHashFriendcode(this NetworkedPlayerInfo data)
{
if (data?.FriendCode == null) return "";
return Utils.GetHashStr(data.FriendCode);
}
// Report player
public static void ReportPlayer(this PlayerControl player, ReportReasons reason = ReportReasons.None)
internal static void ReportPlayer(this PlayerControl player, ReportReasons reason = ReportReasons.None)
{
if (player?.GetClient() != null)
{
+2 -2
View File
@@ -1,6 +1,6 @@
namespace BetterAmongUs.Helpers;
public static class ShuffleListExtension
internal static class ShuffleListExtension
{
/// <summary>
/// Shuffles all elements in a collection randomly
@@ -9,7 +9,7 @@ public static class ShuffleListExtension
/// <param name="collection">The collection to be shuffled</param>
/// <param name="random">An instance of a randomizer algorithm</param>
/// <returns>The shuffled collection</returns>
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection, Random random)
internal static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection, Random random)
{
var list = collection.ToList();
int n = list.Count;
+34 -34
View File
@@ -12,9 +12,9 @@ using UnityEngine.Networking;
namespace BetterAmongUs.Helpers;
public static class Utils
internal static class Utils
{
public static bool IsInternetAvailable()
internal static bool IsInternetAvailable()
{
if (Application.internetReachability == NetworkReachability.NotReachable)
return false;
@@ -37,21 +37,21 @@ public static class Utils
}
}
// Get player by client id
public static ClientData? ClientFromClientId(int clientId) => AmongUsClient.Instance.allClients.ToArray().FirstOrDefault(cd => cd.Id == clientId) ?? null;
internal static ClientData? ClientFromClientId(int clientId) => AmongUsClient.Instance.allClients.ToArray().FirstOrDefault(cd => cd.Id == clientId) ?? null;
// Get player data from player id
public static NetworkedPlayerInfo? PlayerDataFromPlayerId(int playerId) => GameData.Instance.AllPlayers.ToArray().FirstOrDefault(data => data.PlayerId == playerId);
internal static NetworkedPlayerInfo? PlayerDataFromPlayerId(int playerId) => GameData.Instance.AllPlayers.ToArray().FirstOrDefault(data => data.PlayerId == playerId);
// Get player data from client id
public static NetworkedPlayerInfo? PlayerDataFromClientId(int clientId) => GameData.Instance.AllPlayers.ToArray().FirstOrDefault(data => data.ClientId == clientId);
internal static NetworkedPlayerInfo? PlayerDataFromClientId(int clientId) => GameData.Instance.AllPlayers.ToArray().FirstOrDefault(data => data.ClientId == clientId);
// Get player data from friend code
public static NetworkedPlayerInfo? PlayerDataFromFriendCode(string friendCode) => GameData.Instance.AllPlayers.ToArray().FirstOrDefault(data => data.FriendCode == friendCode);
internal static NetworkedPlayerInfo? PlayerDataFromFriendCode(string friendCode) => GameData.Instance.AllPlayers.ToArray().FirstOrDefault(data => data.FriendCode == friendCode);
// Get player from player id
public static PlayerControl? PlayerFromPlayerId(int playerId) => Main.AllPlayerControls.FirstOrDefault(player => player.PlayerId == playerId) ?? null;
internal static PlayerControl? PlayerFromPlayerId(int playerId) => Main.AllPlayerControls.FirstOrDefault(player => player.PlayerId == playerId) ?? null;
// Get player from client id
public static PlayerControl? PlayerFromClientId(int clientId) => Main.AllPlayerControls.FirstOrDefault(player => player.GetClientId() == clientId) ?? null;
internal static PlayerControl? PlayerFromClientId(int clientId) => Main.AllPlayerControls.FirstOrDefault(player => player.GetClientId() == clientId) ?? null;
// Get player from net id
public static PlayerControl? PlayerFromNetId(uint netId) => Main.AllPlayerControls.FirstOrDefault(player => player.NetId == netId) ?? null;
internal static PlayerControl? PlayerFromNetId(uint netId) => Main.AllPlayerControls.FirstOrDefault(player => player.NetId == netId) ?? null;
// Add msg to chat
public static void AddChatPrivate(string text, string overrideName = "", bool setRight = false)
internal static void AddChatPrivate(string text, string overrideName = "", bool setRight = false)
{
ChatController chat = HudManager.Instance.Chat;
NetworkedPlayerInfo data = PlayerControl.LocalPlayer.Data;
@@ -95,14 +95,14 @@ public static class Utils
throw;
}
}
public static bool SystemTypeIsSabotage(SystemTypes type) => type is SystemTypes.Reactor
internal static bool SystemTypeIsSabotage(SystemTypes type) => type is SystemTypes.Reactor
or SystemTypes.Laboratory
or SystemTypes.Comms
or SystemTypes.LifeSupp
or SystemTypes.MushroomMixupSabotage
or SystemTypes.HeliSabotage
or SystemTypes.Electrical;
public static bool SystemTypeIsSabotage(int typeNum) => (SystemTypes)typeNum is SystemTypes.Reactor
internal static bool SystemTypeIsSabotage(int typeNum) => (SystemTypes)typeNum is SystemTypes.Reactor
or SystemTypes.Laboratory
or SystemTypes.Comms
or SystemTypes.LifeSupp
@@ -110,13 +110,13 @@ public static class Utils
or SystemTypes.HeliSabotage
or SystemTypes.Electrical;
// Get players HashPuid
public static string GetHashPuid(PlayerControl player)
internal static string GetHashPuid(PlayerControl player)
{
if (player?.Data?.Puid == null) return "";
return GetHashStr(player.Data.Puid);
}
// Get HashPuid from puid
public static string GetHashStr(string str)
internal static string GetHashStr(string str)
{
if (string.IsNullOrEmpty(str)) return "";
@@ -125,16 +125,16 @@ public static class Utils
string sha256Hash = BitConverter.ToString(sha256Bytes).Replace("-", "").ToLower();
return sha256Hash.Substring(0, 5) + sha256Hash.Substring(sha256Hash.Length - 4);
}
public static ushort GetHashUInt16(string input)
internal static ushort GetHashUInt16(string input)
{
if (string.IsNullOrEmpty(input)) return 0;
return (ushort)(BitConverter.ToUInt16(SHA256.HashData(Encoding.UTF8.GetBytes(input)), 0) % 65536);
}
// Remove Html Tags Template
public static string RemoveHtmlTagsTemplate(string str) => Regex.Replace(str, "", "");
internal static string RemoveHtmlTagsTemplate(string str) => Regex.Replace(str, "", "");
// Get raw text
public static string RemoveHtmlText(string text)
internal static string RemoveHtmlText(string text)
{
text = Regex.Replace(text, "<[^>]*>", "");
text = Regex.Replace(text, "{[^}]*}", "");
@@ -144,10 +144,10 @@ public static class Utils
return text;
}
public static string ToColor(this string str, string hexColor) => $"<{hexColor}>{str}</color>";
public static string ToColor(this string str, Color color) => $"<{Color32ToHex(color)}>{str}</color>";
internal static string ToColor(this string str, string hexColor) => $"<{hexColor}>{str}</color>";
internal static string ToColor(this string str, Color color) => $"<{Color32ToHex(color)}>{str}</color>";
public static bool IsHtmlText(string text)
internal static bool IsHtmlText(string text)
{
if (Regex.IsMatch(text, "<[^>]*>"))
{
@@ -165,7 +165,7 @@ public static class Utils
return false;
}
public static void DirtyAllNames()
internal static void DirtyAllNames()
{
foreach (var player in Main.AllPlayerControls)
{
@@ -175,11 +175,11 @@ public static class Utils
}
// Get name for role
public static string GetRoleName(RoleTypes role) => Main.GetRoleName()[(int)role];
internal static string GetRoleName(RoleTypes role) => Main.GetRoleName()[(int)role];
// Get color for role
public static string GetRoleColor(RoleTypes role) => Main.GetRoleColor[(int)role];
internal static string GetRoleColor(RoleTypes role) => Main.GetRoleColor[(int)role];
// Get hex color for team
public static string GetTeamHexColor(RoleTeamTypes team)
internal static string GetTeamHexColor(RoleTeamTypes team)
{
if (team == RoleTeamTypes.Impostor)
{
@@ -190,9 +190,9 @@ public static class Utils
return "#8cffff";
}
}
public static string Color32ToHex(Color32 color) => $"#{color.r:X2}{color.g:X2}{color.b:X2}{255:X2}";
internal static string Color32ToHex(Color32 color) => $"#{color.r:X2}{color.g:X2}{color.b:X2}{255:X2}";
public static Color HexToColor32(string hex)
internal static Color HexToColor32(string hex)
{
if (hex.StartsWith("#"))
{
@@ -206,7 +206,7 @@ public static class Utils
return new Color32(r, g, b, 255);
}
public static void DisconnectAccountFromOnline(bool apiError = false)
internal static void DisconnectAccountFromOnline(bool apiError = false)
{
if (GameState.IsInGame)
{
@@ -222,7 +222,7 @@ public static class Utils
}
// Disconnect client
public static void DisconnectSelf(string reason, bool showReason = true)
internal static void DisconnectSelf(string reason, bool showReason = true)
{
AmongUsClient.Instance.ExitGame(0);
_ = new LateTask(() =>
@@ -239,16 +239,16 @@ public static class Utils
}, 0.2f, "DisconnectSelf 1");
}
// Show dc pop up with text
public static void ShowPopUp(string text, bool enableWordWrapping = false)
internal static void ShowPopUp(string text, bool enableWordWrapping = false)
{
DisconnectPopup.Instance.gameObject.SetActive(true);
DisconnectPopup.Instance._textArea.enableWordWrapping = enableWordWrapping;
DisconnectPopup.Instance._textArea.text = text;
}
public static Dictionary<string, Sprite> CachedSprites = [];
internal static Dictionary<string, Sprite> CachedSprites = [];
public static Sprite? LoadSprite(string path, float pixelsPerUnit = 1f)
internal static Sprite? LoadSprite(string path, float pixelsPerUnit = 1f)
{
try
{
@@ -272,7 +272,7 @@ public static class Utils
}
}
public static Texture2D? LoadTextureFromResources(string path)
internal static Texture2D? LoadTextureFromResources(string path)
{
try
{
@@ -299,7 +299,7 @@ public static class Utils
}
// Get platform name
public static string GetPlatformName(PlayerControl player, bool useTag = false)
internal static string GetPlatformName(PlayerControl player, bool useTag = false)
{
if (player == null) return string.Empty;
if (player.GetClient() == null) return string.Empty;
@@ -368,7 +368,7 @@ public static class Utils
return $"{Tag}: {PlatformName}";
}
public static string GetPlatformName(Platforms platform, bool useTag = false)
internal static string GetPlatformName(Platforms platform, bool useTag = false)
{
string Tag = string.Empty;
+9 -9
View File
@@ -4,9 +4,9 @@ using System.Reflection;
namespace BetterAmongUs.Items.Attributes;
public abstract class InstanceAttribute : Attribute
internal abstract class InstanceAttribute : Attribute
{
public static void RegisterAll()
internal static void RegisterAll()
{
var assembly = Assembly.GetExecutingAssembly();
@@ -28,11 +28,11 @@ public abstract class InstanceAttribute : Attribute
}
[AttributeUsage(AttributeTargets.Class)]
public abstract class StaticInstanceAttribute<T> : InstanceAttribute where T : class
internal abstract class StaticInstanceAttribute<T> : InstanceAttribute where T : class
{
private static readonly List<T> _instances = [];
public static IReadOnlyList<T> Instances => _instances.AsReadOnly();
public static J? GetClassInstance<J>() where J : class => _instances.FirstOrDefault(instance => instance.GetType() == typeof(J)) as J;
internal static IReadOnlyList<T> Instances => _instances.AsReadOnly();
internal static J? GetClassInstance<J>() where J : class => _instances.FirstOrDefault(instance => instance.GetType() == typeof(J)) as J;
protected override void RegisterInstances()
{
@@ -45,8 +45,8 @@ public abstract class StaticInstanceAttribute<T> : InstanceAttribute where T : c
{
if (typeof(T).IsAssignableFrom(type))
{
var instance = Activator.CreateInstance(type) as T;
if (instance != null)
var constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, Type.EmptyTypes, null);
if (constructor != null && constructor.Invoke(null) is T instance)
{
_instances.Add(instance);
}
@@ -56,10 +56,10 @@ public abstract class StaticInstanceAttribute<T> : InstanceAttribute where T : c
}
// Class instances
public sealed class RegisterCommandAttribute : StaticInstanceAttribute<BaseCommand>
internal sealed class RegisterCommandAttribute : StaticInstanceAttribute<BaseCommand>
{
}
public sealed class RegisterRPCHandlerAttribute : StaticInstanceAttribute<RPCHandler>
internal sealed class RegisterRPCHandlerAttribute : StaticInstanceAttribute<RPCHandler>
{
}
+12 -12
View File
@@ -4,26 +4,26 @@ using System.Text.Json.Serialization;
namespace BetterAmongUs.Items;
[method: JsonConstructor]
public class BannedUserData(string name = "", string puid = "", string friendCode = "", string reason = "")
internal class BannedUserData(string name = "", string puid = "", string friendCode = "", string reason = "")
{
public static List<BannedUserData> AllBannedUsers = [new BannedUserData("Default")];
internal static List<BannedUserData> AllBannedUsers = [new BannedUserData("Default")];
public bool IsLocalBan { get; private set; }
internal bool IsLocalBan { get; private set; }
[JsonPropertyName("name")]
public string Name { get; } = name;
internal string Name { get; } = name;
[JsonPropertyName("puid")]
public string Puid { get; } = puid;
internal string Puid { get; } = puid;
[JsonPropertyName("friendcode")]
public string FriendCode { get; } = friendCode;
internal string FriendCode { get; } = friendCode;
[JsonPropertyName("reason")]
public string Reason { get; } = reason;
internal string Reason { get; } = reason;
public static bool IsBanned = false;
public static bool CheckLocalBan(out BannedUserData? bannedData)
internal static bool IsBanned = false;
internal static bool CheckLocalBan(out BannedUserData? bannedData)
{
bannedData = null;
if (IsBanned) return true;
@@ -42,7 +42,7 @@ public class BannedUserData(string name = "", string puid = "", string friendCod
return false;
}
public static bool CheckPlayerBan(NetworkedPlayerInfo data) => AllBannedUsers?.FirstOrDefault(user => user.Puid == data.GetHashPuid() || user.FriendCode == data.GetHashFriendcode()) != null;
public static bool CheckPuidBan(string puid) => AllBannedUsers?.FirstOrDefault(user => user.Puid == Utils.GetHashStr(puid)) != null;
public static bool CheckFriendCodeBan(string friendcode) => AllBannedUsers?.FirstOrDefault(user => user.FriendCode == Utils.GetHashStr(friendcode)) != null;
internal static bool CheckPlayerBan(NetworkedPlayerInfo data) => AllBannedUsers?.FirstOrDefault(user => user.Puid == data.GetHashPuid() || user.FriendCode == data.GetHashFriendcode()) != null;
internal static bool CheckPuidBan(string puid) => AllBannedUsers?.FirstOrDefault(user => user.Puid == Utils.GetHashStr(puid)) != null;
internal static bool CheckFriendCodeBan(string friendcode) => AllBannedUsers?.FirstOrDefault(user => user.FriendCode == Utils.GetHashStr(friendcode)) != null;
}
@@ -3,16 +3,16 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionCheckboxItem : BetterOptionItem
internal class BetterOptionCheckboxItem : BetterOptionItem
{
private ToggleOption? ThisOption;
private bool? IsChecked;
public override bool ShowChildrenCondition() => IsChecked == true;
public override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
public Func<bool>? ShowCondition = null;
internal override bool ShowChildrenCondition() => IsChecked == true;
internal override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
internal Func<bool>? ShowCondition = null;
public BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, bool DefaultValue = true, BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
internal BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, bool DefaultValue = true, BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
{
Id = id;
Tab = gameOptionsMenu;
@@ -73,7 +73,7 @@ public class BetterOptionCheckboxItem : BetterOptionItem
return this;
}
public void Load(bool DefaultValue)
internal void Load(bool DefaultValue)
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -89,7 +89,7 @@ public class BetterOptionCheckboxItem : BetterOptionItem
}
}
public override bool GetBool()
internal override bool GetBool()
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -101,7 +101,7 @@ public class BetterOptionCheckboxItem : BetterOptionItem
}
}
public override void SetData(OptionBehaviour optionBehaviour)
internal override void SetData(OptionBehaviour optionBehaviour)
{
optionBehaviour.data = new BaseGameSetting
{
@@ -110,7 +110,7 @@ public class BetterOptionCheckboxItem : BetterOptionItem
};
}
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
internal override void ValueChanged(int id, OptionBehaviour optionBehaviour)
{
IsChecked = !IsChecked;
BetterDataManager.SaveSetting(Id, IsChecked.ToString());
+15 -15
View File
@@ -3,20 +3,20 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionFloatItem : BetterOptionItem
internal class BetterOptionFloatItem : BetterOptionItem
{
private NumberOption? ThisOption;
public float CurrentValue;
public FloatRange floatRange = new(0f, 180f);
public float Increment = 2.5f;
internal float CurrentValue;
internal FloatRange floatRange = new(0f, 180f);
internal float Increment = 2.5f;
private string? PostFix;
private string? PreFix;
public override bool ShowChildrenCondition() => CurrentValue > floatRange.min;
public override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
public Func<bool>? ShowCondition = null;
internal override bool ShowChildrenCondition() => CurrentValue > floatRange.min;
internal override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
internal Func<bool>? ShowCondition = null;
public BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, float[] values, float DefaultValue, string preFix = "", string postFix = "", BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
internal BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, float[] values, float DefaultValue, string preFix = "", string postFix = "", BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
{
Id = id;
floatRange = new(values[0], values[1]);
@@ -117,7 +117,7 @@ public class BetterOptionFloatItem : BetterOptionItem
BetterDataManager.SaveSetting(Id, CurrentValue.ToString());
}
public void Increase()
internal void Increase()
{
int times = 1;
if (Input.GetKey(KeyCode.LeftShift))
@@ -137,7 +137,7 @@ public class BetterOptionFloatItem : BetterOptionItem
AdjustButtonsActiveState();
}
public void Decrease()
internal void Decrease()
{
int times = 1;
if (Input.GetKey(KeyCode.LeftShift))
@@ -157,7 +157,7 @@ public class BetterOptionFloatItem : BetterOptionItem
AdjustButtonsActiveState();
}
public void Load(float DefaultValue)
internal void Load(float DefaultValue)
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -177,7 +177,7 @@ public class BetterOptionFloatItem : BetterOptionItem
}
}
public override float GetFloat()
internal override float GetFloat()
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -189,7 +189,7 @@ public class BetterOptionFloatItem : BetterOptionItem
}
}
public override int GetInt()
internal override int GetInt()
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -201,7 +201,7 @@ public class BetterOptionFloatItem : BetterOptionItem
}
}
public override void SetData(OptionBehaviour optionBehaviour)
internal override void SetData(OptionBehaviour optionBehaviour)
{
optionBehaviour.data = new BaseGameSetting
{
@@ -210,7 +210,7 @@ public class BetterOptionFloatItem : BetterOptionItem
};
}
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
internal override void ValueChanged(int id, OptionBehaviour optionBehaviour)
{
if (IsParent || IsChild)
{
+15 -15
View File
@@ -3,20 +3,20 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionIntItem : BetterOptionItem
internal class BetterOptionIntItem : BetterOptionItem
{
private NumberOption? ThisOption;
public int CurrentValue;
public IntRange intRange = new(0, 180);
public int Increment = 1;
internal int CurrentValue;
internal IntRange intRange = new(0, 180);
internal int Increment = 1;
private string? PostFix;
private string? PreFix;
public override bool ShowChildrenCondition() => CurrentValue > intRange.min;
public override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
public Func<bool>? ShowCondition = null;
internal override bool ShowChildrenCondition() => CurrentValue > intRange.min;
internal override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
internal Func<bool>? ShowCondition = null;
public BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, int[] values, int DefaultValue, string preFix = "", string postFix = "", BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
internal BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, int[] values, int DefaultValue, string preFix = "", string postFix = "", BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
{
Id = id;
intRange = new(values[0], values[1]);
@@ -117,7 +117,7 @@ public class BetterOptionIntItem : BetterOptionItem
BetterDataManager.SaveSetting(Id, CurrentValue.ToString());
}
public void Increase()
internal void Increase()
{
int times = 1;
if (Input.GetKey(KeyCode.LeftShift))
@@ -137,7 +137,7 @@ public class BetterOptionIntItem : BetterOptionItem
AdjustButtonsActiveState();
}
public void Decrease()
internal void Decrease()
{
int times = 1;
if (Input.GetKey(KeyCode.LeftShift))
@@ -157,7 +157,7 @@ public class BetterOptionIntItem : BetterOptionItem
AdjustButtonsActiveState();
}
public void Load(int DefaultValue)
internal void Load(int DefaultValue)
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -177,7 +177,7 @@ public class BetterOptionIntItem : BetterOptionItem
}
}
public override float GetFloat()
internal override float GetFloat()
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -189,7 +189,7 @@ public class BetterOptionIntItem : BetterOptionItem
}
}
public override int GetInt()
internal override int GetInt()
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -201,7 +201,7 @@ public class BetterOptionIntItem : BetterOptionItem
}
}
public override void SetData(OptionBehaviour optionBehaviour)
internal override void SetData(OptionBehaviour optionBehaviour)
{
optionBehaviour.data = new BaseGameSetting
{
@@ -210,7 +210,7 @@ public class BetterOptionIntItem : BetterOptionItem
};
}
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
internal override void ValueChanged(int id, OptionBehaviour optionBehaviour)
{
if (IsParent || IsChild)
{
+28 -28
View File
@@ -5,31 +5,31 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionItem
internal class BetterOptionItem
{
public float StaticSpacingNum => 1f;
public float StaticSpacingNumPlus => 0.45f;
public static Dictionary<int, int> TempPlayerOptionData = [];
public static int TempPlayerOptionDataNum = 0;
public static List<BetterOptionItem> BetterOptionItems = [];
public static float SpacingNum = 0;
internal float StaticSpacingNum => 1f;
internal float StaticSpacingNumPlus => 0.45f;
internal static Dictionary<int, int> TempPlayerOptionData = [];
internal static int TempPlayerOptionDataNum = 0;
internal static List<BetterOptionItem> BetterOptionItems = [];
internal static float SpacingNum = 0;
public int maskLayer = 20;
public int Id = 0;
public GameOptionsMenu? Tab;
public OptionBehaviour? Option;
public string? Name = "None";
public TextMeshPro? TitleText;
public GameObject? obj;
internal int maskLayer = 20;
internal int Id = 0;
internal GameOptionsMenu? Tab;
internal OptionBehaviour? Option;
internal string? Name = "None";
internal TextMeshPro? TitleText;
internal GameObject? obj;
public BetterOptionItem? ThisParent;
public bool IsChild = false;
public bool IsParent => ChildrenList.Count > 0;
public List<BetterOptionItem> ChildrenList = [];
public virtual bool ShowChildrenCondition() => false;
public virtual bool SelfShowCondition() => true;
internal BetterOptionItem? ThisParent;
internal bool IsChild = false;
internal bool IsParent => ChildrenList.Count > 0;
internal List<BetterOptionItem> ChildrenList = [];
internal virtual bool ShowChildrenCondition() => false;
internal virtual bool SelfShowCondition() => true;
public static void UpdatePositions()
internal static void UpdatePositions()
{
SpacingNum = 0f;
@@ -78,7 +78,7 @@ public class BetterOptionItem
GameSettingMenuPatch.BetterSettingsTab.scrollBar.ScrollRelative(new(0f, 0f));
}
public void SetUp(OptionBehaviour optionBehaviour)
internal void SetUp(OptionBehaviour optionBehaviour)
{
SpriteRenderer[] componentsInChildren = optionBehaviour.GetComponentsInChildren<SpriteRenderer>(true);
for (int i = 0; i < componentsInChildren.Length; i++)
@@ -92,32 +92,32 @@ public class BetterOptionItem
}
}
public virtual bool GetBool()
internal virtual bool GetBool()
{
throw new NotImplementedException();
}
public virtual float GetFloat()
internal virtual float GetFloat()
{
throw new NotImplementedException();
}
public virtual int GetInt()
internal virtual int GetInt()
{
throw new NotImplementedException();
}
public virtual int GetValue()
internal virtual int GetValue()
{
throw new NotImplementedException();
}
public virtual void SetData(OptionBehaviour optionBehaviour)
internal virtual void SetData(OptionBehaviour optionBehaviour)
{
throw new NotImplementedException();
}
public virtual void ValueChanged(int id, OptionBehaviour optionBehaviour)
internal virtual void ValueChanged(int id, OptionBehaviour optionBehaviour)
{
throw new NotImplementedException();
}
+12 -12
View File
@@ -3,16 +3,16 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionPlayerItem : BetterOptionItem
internal class BetterOptionPlayerItem : BetterOptionItem
{
private NumberOption? ThisOption;
public int CurrentIndex = -1;
internal int CurrentIndex = -1;
public override bool ShowChildrenCondition() => CurrentIndex > -1;
public override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
public Func<bool>? ShowCondition = null;
internal override bool ShowChildrenCondition() => CurrentIndex > -1;
internal override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
internal Func<bool>? ShowCondition = null;
public BetterOptionItem Create(GameOptionsMenu gameOptionsMenu, string name, BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
internal BetterOptionItem Create(GameOptionsMenu gameOptionsMenu, string name, BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
{
Id = TempPlayerOptionDataNum + 1;
Tab = gameOptionsMenu;
@@ -110,7 +110,7 @@ public class BetterOptionPlayerItem : BetterOptionItem
TempPlayerOptionData[Id] = CurrentIndex;
}
public void Increase()
internal void Increase()
{
if (CurrentIndex < Main.AllPlayerControls.Count)
{
@@ -119,7 +119,7 @@ public class BetterOptionPlayerItem : BetterOptionItem
}
}
public void Decrease()
internal void Decrease()
{
if (CurrentIndex > -1)
{
@@ -128,7 +128,7 @@ public class BetterOptionPlayerItem : BetterOptionItem
}
}
public int Load()
internal int Load()
{
if (TempPlayerOptionData.ContainsKey(Id))
{
@@ -150,7 +150,7 @@ public class BetterOptionPlayerItem : BetterOptionItem
return CurrentIndex;
}
public override int GetValue()
internal override int GetValue()
{
if (SelfShowCondition())
{
@@ -162,7 +162,7 @@ public class BetterOptionPlayerItem : BetterOptionItem
}
}
public override void SetData(OptionBehaviour optionBehaviour)
internal override void SetData(OptionBehaviour optionBehaviour)
{
optionBehaviour.data = new BaseGameSetting
{
@@ -171,7 +171,7 @@ public class BetterOptionPlayerItem : BetterOptionItem
};
}
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
internal override void ValueChanged(int id, OptionBehaviour optionBehaviour)
{
if (IsParent || IsChild)
{
+13 -13
View File
@@ -3,17 +3,17 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionStringItem : BetterOptionItem
internal class BetterOptionStringItem : BetterOptionItem
{
private StringOption? ThisOption;
public string[] Values = [];
public int CurrentValue;
internal string[] Values = [];
internal int CurrentValue;
public override bool ShowChildrenCondition() => CurrentValue > 0;
public override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
public Func<bool>? ShowCondition = null;
internal override bool ShowChildrenCondition() => CurrentValue > 0;
internal override bool SelfShowCondition() => ShowCondition != null ? ShowCondition() : base.SelfShowCondition();
internal Func<bool>? ShowCondition = null;
public BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, string[] strings, int DefaultValue = 0, BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
internal BetterOptionItem Create(int id, GameOptionsMenu gameOptionsMenu, string name, string[] strings, int DefaultValue = 0, BetterOptionItem? Parent = null, Func<bool>? selfShowCondition = null)
{
Id = id;
Values = strings;
@@ -112,7 +112,7 @@ public class BetterOptionStringItem : BetterOptionItem
BetterDataManager.SaveSetting(Id, CurrentValue.ToString());
}
public void Increase()
internal void Increase()
{
if (CurrentValue < Values.Length)
{
@@ -121,7 +121,7 @@ public class BetterOptionStringItem : BetterOptionItem
}
}
public void Decrease()
internal void Decrease()
{
if (CurrentValue > 0)
{
@@ -130,7 +130,7 @@ public class BetterOptionStringItem : BetterOptionItem
}
}
public void Load(int DefaultValue)
internal void Load(int DefaultValue)
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -150,7 +150,7 @@ public class BetterOptionStringItem : BetterOptionItem
}
}
public override int GetValue()
internal override int GetValue()
{
if (BetterDataManager.CanLoadSetting(Id))
{
@@ -162,7 +162,7 @@ public class BetterOptionStringItem : BetterOptionItem
}
}
public override void SetData(OptionBehaviour optionBehaviour)
internal override void SetData(OptionBehaviour optionBehaviour)
{
optionBehaviour.data = new BaseGameSetting
{
@@ -171,7 +171,7 @@ public class BetterOptionStringItem : BetterOptionItem
};
}
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
internal override void ValueChanged(int id, OptionBehaviour optionBehaviour)
{
if (IsParent || IsChild)
{
@@ -3,9 +3,9 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionDividerItem : BetterOptionItem
internal class BetterOptionDividerItem : BetterOptionItem
{
public BetterOptionItem Create(GameOptionsMenu gameOptionsMenu)
internal BetterOptionItem Create(GameOptionsMenu gameOptionsMenu)
{
if (gameOptionsMenu == null)
{
@@ -2,9 +2,9 @@
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionHeaderItem : BetterOptionItem
internal class BetterOptionHeaderItem : BetterOptionItem
{
public BetterOptionItem Create(GameOptionsMenu gameOptionsMenu, string name)
internal BetterOptionItem Create(GameOptionsMenu gameOptionsMenu, string name)
{
if (gameOptionsMenu == null)
{
@@ -3,9 +3,9 @@ using UnityEngine;
namespace BetterAmongUs.Items.OptionItems;
public class BetterOptionTitleItem : BetterOptionItem
internal class BetterOptionTitleItem : BetterOptionItem
{
public BetterOptionItem Create(GameOptionsMenu gameOptionsMenu, string name)
internal BetterOptionItem Create(GameOptionsMenu gameOptionsMenu, string name)
{
if (gameOptionsMenu == null)
{
@@ -45,7 +45,7 @@ public class BetterOptionTitleItem : BetterOptionItem
return this;
}
public override void SetData(OptionBehaviour optionBehaviour)
internal override void SetData(OptionBehaviour optionBehaviour)
{
optionBehaviour.data = new BaseGameSetting
{
+24 -24
View File
@@ -4,7 +4,7 @@ using System.Text.Json.Serialization;
namespace BetterAmongUs.Items;
[Flags]
public enum MultiPermissionFlags : ushort
internal enum MultiPermissionFlags : ushort
{
Contributor_1 = 1 << 0,
Contributor_2 = 1 << 1,
@@ -16,32 +16,32 @@ public enum MultiPermissionFlags : ushort
}
[method: JsonConstructor]
public class UserData(string name = "", string puid = "", string friendCode = "", string overheadTag = "", string overheadColor = "", ushort permissions = 0)
internal class UserData(string name = "", string puid = "", string friendCode = "", string overheadTag = "", string overheadColor = "", ushort permissions = 0)
{
public static List<UserData> AllUsers = [new UserData("Default")];
internal static List<UserData> AllUsers = [new UserData("Default")];
public bool IsLocalData { get; private set; }
internal bool IsLocalData { get; private set; }
[JsonPropertyName("name")]
public string Name { get; } = name;
internal string Name { get; } = name;
[JsonPropertyName("puid")]
public string Puid { get; } = puid;
internal string Puid { get; } = puid;
[JsonPropertyName("friendcode")]
public string FriendCode { get; } = friendCode;
internal string FriendCode { get; } = friendCode;
[JsonPropertyName("overheadtag")]
public string OverheadTag { get; } = overheadTag;
internal string OverheadTag { get; } = overheadTag;
[JsonPropertyName("overheadColor")]
public string OverheadColor { get; } = overheadColor;
internal string OverheadColor { get; } = overheadColor;
[JsonPropertyName("permissions")]
public ushort Permissions { get; } = permissions;
internal ushort Permissions { get; } = permissions;
private static bool HasLocalData = false;
public static void TrySetLocalData()
internal static void TrySetLocalData()
{
if (!HasLocalData)
{
@@ -61,9 +61,9 @@ public class UserData(string name = "", string puid = "", string friendCode = ""
}
}
}
public static UserData? GetPlayerUserData(NetworkedPlayerInfo data) => AllUsers?.FirstOrDefault(user => user.Puid == data.GetHashPuid() || user.FriendCode == data.GetHashFriendcode()) ?? AllUsers.First();
public static UserData? GetPlayerUserDataFromPuid(string puid) => AllUsers?.FirstOrDefault(user => user.Puid == Utils.GetHashStr(puid)) ?? AllUsers.First();
public static UserData? GetPlayerUserDataFromFriendCode(string friendcode) => AllUsers?.FirstOrDefault(user => user.FriendCode == Utils.GetHashStr(friendcode)) ?? AllUsers.First();
internal static UserData? GetPlayerUserData(NetworkedPlayerInfo data) => AllUsers?.FirstOrDefault(user => user.Puid == data.GetHashPuid() || user.FriendCode == data.GetHashFriendcode()) ?? AllUsers.First();
internal static UserData? GetPlayerUserDataFromPuid(string puid) => AllUsers?.FirstOrDefault(user => user.Puid == Utils.GetHashStr(puid)) ?? AllUsers.First();
internal static UserData? GetPlayerUserDataFromFriendCode(string friendcode) => AllUsers?.FirstOrDefault(user => user.FriendCode == Utils.GetHashStr(friendcode)) ?? AllUsers.First();
private bool HasPermission(MultiPermissionFlags permissionFlags)
{
@@ -75,14 +75,14 @@ public class UserData(string name = "", string puid = "", string friendCode = ""
return (Permissions & (ushort)permissionFlags) == (ushort)permissionFlags;
}
public bool IsDev() => HasPermission(MultiPermissionFlags.Dev);
public bool IsTester() => HasPermission(MultiPermissionFlags.Tester);
public bool IsSponsorTier3() => HasPermission(MultiPermissionFlags.Contributor_3);
public bool IsSponsorTier2() => HasPermission(MultiPermissionFlags.Contributor_2 | MultiPermissionFlags.Contributor_3);
public bool IsSponsorTier1() => IsSponsor();
public bool IsSponsor() => HasPermission(MultiPermissionFlags.Contributor_1 | MultiPermissionFlags.Contributor_2 | MultiPermissionFlags.Contributor_3 | MultiPermissionFlags.Dev);
public bool HasAll() => (Permissions & (ushort)MultiPermissionFlags.All) == (ushort)MultiPermissionFlags.All;
public bool IsVerified() => Puid == Utils.GetHashStr(EOSManager.Instance.ProductUserId) && FriendCode == Utils.GetHashStr(EOSManager.Instance.FriendCode);
public bool IsVerified(NetworkedPlayerInfo data) => Puid == Utils.GetHashStr(data?.Puid ?? string.Empty) && FriendCode == Utils.GetHashStr(data?.FriendCode ?? string.Empty);
public bool IsVerified(PlayerControl player) => Puid == Utils.GetHashStr(player?.Data?.Puid ?? string.Empty) && FriendCode == Utils.GetHashStr(player?.Data?.FriendCode ?? string.Empty);
internal bool IsDev() => HasPermission(MultiPermissionFlags.Dev);
internal bool IsTester() => HasPermission(MultiPermissionFlags.Tester);
internal bool IsSponsorTier3() => HasPermission(MultiPermissionFlags.Contributor_3);
internal bool IsSponsorTier2() => HasPermission(MultiPermissionFlags.Contributor_2 | MultiPermissionFlags.Contributor_3);
internal bool IsSponsorTier1() => IsSponsor();
internal bool IsSponsor() => HasPermission(MultiPermissionFlags.Contributor_1 | MultiPermissionFlags.Contributor_2 | MultiPermissionFlags.Contributor_3 | MultiPermissionFlags.Dev);
internal bool HasAll() => (Permissions & (ushort)MultiPermissionFlags.All) == (ushort)MultiPermissionFlags.All;
internal bool IsVerified() => Puid == Utils.GetHashStr(EOSManager.Instance.ProductUserId) && FriendCode == Utils.GetHashStr(EOSManager.Instance.FriendCode);
internal bool IsVerified(NetworkedPlayerInfo data) => Puid == Utils.GetHashStr(data?.Puid ?? string.Empty) && FriendCode == Utils.GetHashStr(data?.FriendCode ?? string.Empty);
internal bool IsVerified(PlayerControl player) => Puid == Utils.GetHashStr(player?.Data?.Puid ?? string.Empty) && FriendCode == Utils.GetHashStr(player?.Data?.FriendCode ?? string.Empty);
}
+22 -22
View File
@@ -7,20 +7,20 @@ namespace BetterAmongUs.Managers;
class BetterDataManager
{
private static string filePath = GetFilePath("BetterData");
public static string filePathFolder = Path.Combine(Main.GetGamePathToAmongUs(), $"Better_Data");
public static string filePathFolderSaveInfo = Path.Combine(filePathFolder, $"SaveInfo");
public static string filePathFolderSettings = Path.Combine(filePathFolder, $"Settings");
public static string SettingsFile = Path.Combine(filePathFolderSettings, "Preset.json");
public static string banPlayerListFile = Path.Combine(filePathFolderSaveInfo, "BanPlayerList.txt");
public static string banNameListFile = Path.Combine(filePathFolderSaveInfo, "BanNameList.txt");
public static string banWordListFile = Path.Combine(filePathFolderSaveInfo, "BanWordList.txt");
internal static string filePathFolder = Path.Combine(Main.GetGamePathToAmongUs(), $"Better_Data");
internal static string filePathFolderSaveInfo = Path.Combine(filePathFolder, $"SaveInfo");
internal static string filePathFolderSettings = Path.Combine(filePathFolder, $"Settings");
internal static string SettingsFile = Path.Combine(filePathFolderSettings, "Preset.json");
internal static string banPlayerListFile = Path.Combine(filePathFolderSaveInfo, "BanPlayerList.txt");
internal static string banNameListFile = Path.Combine(filePathFolderSaveInfo, "BanNameList.txt");
internal static string banWordListFile = Path.Combine(filePathFolderSaveInfo, "BanWordList.txt");
public static string GetFilePath(string name)
internal static string GetFilePath(string name)
{
return Path.Combine(Main.GetDataPathToAmongUs(), $"{name}.json");
}
public static void SetUp()
internal static void SetUp()
{
if (!Directory.Exists(filePathFolder))
{
@@ -122,7 +122,7 @@ class BetterDataManager
}
}
public static void Save(string name, string dataToSave, string category = "Data")
internal static void Save(string name, string dataToSave, string category = "Data")
{
string filePath = GetFilePath("BetterData");
@@ -140,7 +140,7 @@ class BetterDataManager
File.WriteAllText(filePath, json);
}
public static string Load(string name, string category = "Data")
internal static string Load(string name, string category = "Data")
{
try
{
@@ -162,7 +162,7 @@ class BetterDataManager
return string.Empty;
}
public static void SaveSetting(int id, string input)
internal static void SaveSetting(int id, string input)
{
string filePath = SettingsFile;
@@ -174,7 +174,7 @@ class BetterDataManager
File.WriteAllText(filePath, json);
}
public static bool CanLoadSetting(int id)
internal static bool CanLoadSetting(int id)
{
string filePath = SettingsFile;
string json = File.ReadAllText(filePath);
@@ -191,7 +191,7 @@ class BetterDataManager
return false;
}
public static bool LoadBoolSetting(int id, bool Default = false)
internal static bool LoadBoolSetting(int id, bool Default = false)
{
string filePath = SettingsFile;
string json = File.ReadAllText(filePath);
@@ -212,7 +212,7 @@ class BetterDataManager
return Default;
}
public static float LoadFloatSetting(int id, float Default = 0f)
internal static float LoadFloatSetting(int id, float Default = 0f)
{
string filePath = SettingsFile;
string json = File.ReadAllText(filePath);
@@ -233,7 +233,7 @@ class BetterDataManager
return Default;
}
public static int LoadIntSetting(int id, int Default = 0)
internal static int LoadIntSetting(int id, int Default = 0)
{
string filePath = SettingsFile;
string json = File.ReadAllText(filePath);
@@ -254,7 +254,7 @@ class BetterDataManager
return Default;
}
public static void SaveBanList(string friendCode = "", string hashPUID = "")
internal static void SaveBanList(string friendCode = "", string hashPUID = "")
{
if (!string.IsNullOrEmpty(friendCode) || !string.IsNullOrEmpty(hashPUID))
{
@@ -284,7 +284,7 @@ class BetterDataManager
}
}
public static void SaveCheatData(string puid, string friendCode, string name, string category = "cheatData", string reason = "None")
internal static void SaveCheatData(string puid, string friendCode, string name, string category = "cheatData", string reason = "None")
{
string filePath = GetFilePath("BetterData");
@@ -309,7 +309,7 @@ class BetterDataManager
File.WriteAllText(filePath, json);
}
public static bool RemovePlayer(string identifier)
internal static bool RemovePlayer(string identifier)
{
bool successful = false;
string filePath = GetFilePath("BetterData");
@@ -417,7 +417,7 @@ class BetterDataManager
}
}
public static void ClearCheatData()
internal static void ClearCheatData()
{
string filePath = GetFilePath("BetterData");
string json = File.ReadAllText(filePath);
@@ -460,12 +460,12 @@ class BetterDataManager
Logger.LogCheat("Cleared cheat memory and data");
}
public static void LoadData()
internal static void LoadData()
{
LoadCheatData();
}
public static void LoadCheatData()
internal static void LoadCheatData()
{
try
{
+9 -9
View File
@@ -10,15 +10,15 @@ namespace BetterAmongUs.Managers;
class BetterNotificationManager
{
public static GameObject? BAUNotificationManagerObj;
public static TextMeshPro? NameText;
public static TextMeshPro? TextArea => BAUNotificationManagerObj.transform.Find("Sizer/ChatText (TMP)").GetComponent<TextMeshPro>();
public static Dictionary<string, float> NotifyQueue = [];
public static float showTime = 0f;
internal static GameObject? BAUNotificationManagerObj;
internal static TextMeshPro? NameText;
internal static TextMeshPro? TextArea => BAUNotificationManagerObj.transform.Find("Sizer/ChatText (TMP)").GetComponent<TextMeshPro>();
internal static Dictionary<string, float> NotifyQueue = [];
internal static float showTime = 0f;
private static Camera? localCamera;
public static bool Notifying = false;
internal static bool Notifying = false;
public static void Notify(string text, float Time = 5f)
internal static void Notify(string text, float Time = 5f)
{
if (!Main.BetterNotifications.Value) return;
@@ -41,7 +41,7 @@ class BetterNotificationManager
}
}
public static void NotifyCheat(PlayerControl player, string reason, string newText = "", bool kickPlayer = true, bool forceBan = false)
internal static void NotifyCheat(PlayerControl player, string reason, string newText = "", bool kickPlayer = true, bool forceBan = false)
{
if (player?.Data == null) return;
@@ -86,7 +86,7 @@ class BetterNotificationManager
}
public static void Update()
internal static void Update()
{
if (BAUNotificationManagerObj != null)
{
+12 -12
View File
@@ -10,13 +10,13 @@ namespace BetterAmongUs.Modules.AntiCheat;
class BAUAntiCheat
{
public static Dictionary<string, string> PlayerData = []; // HashPuid, FriendCode
public static Dictionary<string, string> SickoData = []; // HashPuid, FriendCode
public static Dictionary<string, string> AUMData = []; // HashPuid, FriendCode
public static Dictionary<string, string> KNData = []; // HashPuid, FriendCode
public static bool IsEnabled => PlayerControl.LocalPlayer?.Data?.IsIncomplete == false;
internal static Dictionary<string, string> PlayerData = []; // HashPuid, FriendCode
internal static Dictionary<string, string> SickoData = []; // HashPuid, FriendCode
internal static Dictionary<string, string> AUMData = []; // HashPuid, FriendCode
internal static Dictionary<string, string> KNData = []; // HashPuid, FriendCode
internal static bool IsEnabled => PlayerControl.LocalPlayer?.Data?.IsIncomplete == false;
public static string[] GatherAllData()
internal static string[] GatherAllData()
{
return PlayerData.Keys
.Concat(PlayerData.Values)
@@ -30,7 +30,7 @@ class BAUAntiCheat
.ToArray();
}
public static void Update()
internal static void Update()
{
if (GameState.IsHost && GameState.IsInGame)
{
@@ -71,7 +71,7 @@ class BAUAntiCheat
{
[HarmonyPatch(nameof(PlatformSpecificData.Deserialize))]
[HarmonyPostfix]
public static void Deserialize_Postfix(PlatformSpecificData __instance)
internal static void Deserialize_Postfix(PlatformSpecificData __instance)
{
if (!Main.AntiCheat.Value || !GameState.IsVanillaServer) return;
@@ -128,7 +128,7 @@ class BAUAntiCheat
}
// Handle RPC before anti cheat detection
public static void HandleCheatRPCBeforeCheck(PlayerControl player, byte callId, MessageReader oldReader)
internal static void HandleCheatRPCBeforeCheck(PlayerControl player, byte callId, MessageReader oldReader)
{
MessageReader reader = MessageReader.Get(oldReader);
@@ -138,7 +138,7 @@ class BAUAntiCheat
}
// Check and notify for invalid rpcs
public static void CheckRPC(PlayerControl player, byte callId, MessageReader oldReader)
internal static void CheckRPC(PlayerControl player, byte callId, MessageReader oldReader)
{
MessageReader reader = MessageReader.Get(oldReader);
@@ -149,7 +149,7 @@ class BAUAntiCheat
}
// Check notify and cancel out request for invalid rpcs
public static bool CheckCancelRPC(PlayerControl player, byte callId, MessageReader oldReader)
internal static bool CheckCancelRPC(PlayerControl player, byte callId, MessageReader oldReader)
{
try
{
@@ -243,7 +243,7 @@ class BAUAntiCheat
}
// Check game states when sabotaging
public static bool RpcUpdateSystemCheck(PlayerControl player, SystemTypes systemType, MessageReader oldReader)
internal static bool RpcUpdateSystemCheck(PlayerControl player, SystemTypes systemType, MessageReader oldReader)
{
MessageReader reader = MessageReader.Get(oldReader);
+19 -19
View File
@@ -7,7 +7,7 @@ using UnityEngine;
namespace BetterAmongUs.Modules.AntiCheat;
public enum HandlerFlag
internal enum HandlerFlag
{
Handle,
AntiCheatCheck,
@@ -17,33 +17,33 @@ public enum HandlerFlag
HandleGameDataTag
}
public abstract class RPCHandler
internal abstract class RPCHandler
{
public static readonly RPCHandler?[] allHandlers = [.. RegisterRPCHandlerAttribute.Instances];
internal static readonly RPCHandler?[] allHandlers = [.. RegisterRPCHandlerAttribute.Instances];
public static RPCHandler?[] GetAllHandlerInstances() => Assembly.GetExecutingAssembly()
internal static RPCHandler?[] GetAllHandlerInstances() => Assembly.GetExecutingAssembly()
.GetTypes()
.Where(t => t.IsSubclassOf(typeof(RPCHandler)) && !t.IsAbstract)
.Select(t => (RPCHandler?)Activator.CreateInstance(t))
.ToArray();
public InnerNetClient innerNetClient => DestroyableSingleton<InnerNetClient>.Instance;
public virtual byte CallId => byte.MaxValue;
public virtual byte GameDataTag => byte.MaxValue;
public virtual bool LocalHandling { get; set; }
internal InnerNetClient innerNetClient => DestroyableSingleton<InnerNetClient>.Instance;
internal virtual byte CallId => byte.MaxValue;
internal virtual byte GameDataTag => byte.MaxValue;
internal virtual bool LocalHandling { get; set; }
protected static bool CancelAsHost => !(GameState.IsHost);
public static bool CheckRange(Vector2 pos1, Vector2 pos2, float range) => Vector2.Distance(pos1, pos2) <= range;
public virtual void Handle(PlayerControl? sender, MessageReader reader) { }
public virtual void HandleGameData(MessageReader reader) { }
public virtual void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) { }
public virtual bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader) => true;
public virtual void HandleAntiCheat(PlayerControl? sender, MessageReader reader) { }
public virtual bool BetterHandle(PlayerControl? sender, MessageReader reader) => true;
internal static bool CheckRange(Vector2 pos1, Vector2 pos2, float range) => Vector2.Distance(pos1, pos2) <= range;
internal virtual void Handle(PlayerControl? sender, MessageReader reader) { }
internal virtual void HandleGameData(MessageReader reader) { }
internal virtual void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader) { }
internal virtual bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader) => true;
internal virtual void HandleAntiCheat(PlayerControl? sender, MessageReader reader) { }
internal virtual bool BetterHandle(PlayerControl? sender, MessageReader reader) => true;
protected static PlayerControl? catchedSender;
protected static HandlerFlag catchedHandlerFlag = HandlerFlag.Handle;
public static bool HandleRPC(byte calledId, PlayerControl? sender, MessageReader reader, HandlerFlag handlerFlag)
internal static bool HandleRPC(byte calledId, PlayerControl? sender, MessageReader reader, HandlerFlag handlerFlag)
{
catchedSender = sender;
catchedHandlerFlag = handlerFlag;
@@ -83,20 +83,20 @@ public abstract class RPCHandler
return !(cancel);
}
public void LogRpcInfo(string info, PlayerControl? player = null)
internal void LogRpcInfo(string info, PlayerControl? player = null)
{
string Name = Enum.GetName((RpcCalls)CallId) ?? Enum.GetName((CustomRPC)CallId) ?? $"Unregistered({CallId})";
Name = $"[{Enum.GetName(catchedHandlerFlag)}] > " + Name;
Logger.LogCheat($"{catchedSender?.BetterData()?.RealName ?? player.BetterData()?.RealName ?? string.Empty} {Name}: {info}");
}
public string GetFormatActionText()
internal string GetFormatActionText()
{
string Name = Enum.GetName((RpcCalls)CallId) ?? Enum.GetName((CustomRPC)CallId) ?? $"Unregistered({CallId})";
return string.Format(Translator.GetString("AntiCheat.InvalidActionRPC"), Name);
}
public string GetFormatSetText()
internal string GetFormatSetText()
{
string Name = Enum.GetName((RpcCalls)CallId) ?? Enum.GetName((CustomRPC)CallId) ?? $"Unregistered({CallId})";
return string.Format(Translator.GetString("AntiCheat.InvalidSetRPC"), Name);
@@ -8,11 +8,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class AUMChatHandler : RPCHandler
internal sealed class AUMChatHandler : RPCHandler
{
public override byte CallId => unchecked((byte)CustomRPC.AUMChat);
internal override byte CallId => unchecked((byte)CustomRPC.AUMChat);
public override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
{
var nameString = reader.ReadString();
var msgString = reader.ReadString();
+3 -3
View File
@@ -8,11 +8,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class AUMHandler : RPCHandler
internal sealed class AUMHandler : RPCHandler
{
public override byte CallId => unchecked((byte)CustomRPC.AUM);
internal override byte CallId => unchecked((byte)CustomRPC.AUM);
public override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
{
if (Main.AntiCheat.Value && BetterGameSettings.DetectCheatClients.GetBool())
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class AddVoteHandler : RPCHandler
internal sealed class AddVoteHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.AddVote;
internal override byte CallId => (byte)RpcCalls.AddVote;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class BootFromVentHandler : RPCHandler
internal sealed class BootFromVentHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.BootFromVent;
internal override byte CallId => (byte)RpcCalls.BootFromVent;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CancelPetHandler : RPCHandler
internal sealed class CancelPetHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CancelPet;
internal override byte CallId => (byte)RpcCalls.CancelPet;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CastVoteHandler : RPCHandler
internal sealed class CastVoteHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CastVote;
internal override byte CallId => (byte)RpcCalls.CastVote;
}
@@ -6,11 +6,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckAppearHandler : RPCHandler
internal sealed class CheckAppearHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckAppear;
internal override byte CallId => (byte)RpcCalls.CheckAppear;
public override bool BetterHandle(PlayerControl? sender, MessageReader reader)
internal override bool BetterHandle(PlayerControl? sender, MessageReader reader)
{
bool flag = reader.ReadBoolean();
@@ -35,7 +35,7 @@ public sealed class CheckAppearHandler : RPCHandler
return false;
}
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -4,11 +4,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckColorHandler : RPCHandler
internal sealed class CheckColorHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckColor;
internal override byte CallId => (byte)RpcCalls.CheckColor;
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -6,11 +6,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckMurderHandler : RPCHandler
internal sealed class CheckMurderHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckMurder;
internal override byte CallId => (byte)RpcCalls.CheckMurder;
public override bool BetterHandle(PlayerControl? sender, MessageReader reader)
internal override bool BetterHandle(PlayerControl? sender, MessageReader reader)
{
PlayerControl target = reader.ReadNetObject<PlayerControl>();
@@ -41,7 +41,7 @@ public sealed class CheckMurderHandler : RPCHandler
return false;
}
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -6,11 +6,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckNameHandler : RPCHandler
internal sealed class CheckNameHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckName;
internal override byte CallId => (byte)RpcCalls.CheckName;
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost) return false;
@@ -7,11 +7,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckProtectHandler : RPCHandler
internal sealed class CheckProtectHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckProtect;
internal override byte CallId => (byte)RpcCalls.CheckProtect;
public override bool BetterHandle(PlayerControl? sender, MessageReader reader)
internal override bool BetterHandle(PlayerControl? sender, MessageReader reader)
{
PlayerControl target = reader.ReadNetObject<PlayerControl>();
if (target != null)
@@ -31,7 +31,7 @@ public sealed class CheckProtectHandler : RPCHandler
return false;
}
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -7,11 +7,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckShapeshiftHandler : RPCHandler
internal sealed class CheckShapeshiftHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckShapeshift;
internal override byte CallId => (byte)RpcCalls.CheckShapeshift;
public override bool BetterHandle(PlayerControl? sender, MessageReader reader)
internal override bool BetterHandle(PlayerControl? sender, MessageReader reader)
{
PlayerControl target = reader.ReadNetObject<PlayerControl>();
bool flag = reader.ReadBoolean();
@@ -38,7 +38,7 @@ public sealed class CheckShapeshiftHandler : RPCHandler
return false;
}
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -4,11 +4,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckSporeHandler : RPCHandler
internal sealed class CheckSporeHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckSpore;
internal override byte CallId => (byte)RpcCalls.CheckSpore;
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -6,11 +6,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckVanishHandler : RPCHandler
internal sealed class CheckVanishHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckVanish;
internal override byte CallId => (byte)RpcCalls.CheckVanish;
public override bool BetterHandle(PlayerControl? player, MessageReader reader)
internal override bool BetterHandle(PlayerControl? player, MessageReader reader)
{
if (player.Is(RoleTypes.Phantom)
&& player.IsAlive()
@@ -31,7 +31,7 @@ public sealed class CheckVanishHandler : RPCHandler
return false;
}
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -4,11 +4,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CheckZiplineHandler : RPCHandler
internal sealed class CheckZiplineHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CheckZipline;
internal override byte CallId => (byte)RpcCalls.CheckZipline;
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsHost)
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ClearVoteHandler : RPCHandler
internal sealed class ClearVoteHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.ClearVote;
internal override byte CallId => (byte)RpcCalls.ClearVote;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ClimbLadderHandler : RPCHandler
internal sealed class ClimbLadderHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.ClimbLadder;
internal override byte CallId => (byte)RpcCalls.ClimbLadder;
}
@@ -6,10 +6,10 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CloseDoorsOfTypeHandler : RPCHandler
internal sealed class CloseDoorsOfTypeHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CloseDoorsOfType;
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override byte CallId => (byte)RpcCalls.CloseDoorsOfType;
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
if (!sender.IsImpostorTeam())
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CloseMeetingHandler : RPCHandler
internal sealed class CloseMeetingHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CloseMeeting;
internal override byte CallId => (byte)RpcCalls.CloseMeeting;
}
@@ -6,16 +6,16 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class CompleteTaskHandler : RPCHandler
internal sealed class CompleteTaskHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.CompleteTask;
internal override byte CallId => (byte)RpcCalls.CompleteTask;
public override void Handle(PlayerControl? sender, MessageReader reader)
internal override void Handle(PlayerControl? sender, MessageReader reader)
{
sender.DirtyName();
}
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
var taskId = reader.ReadPackedUInt32();
@@ -7,11 +7,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class EnterVentHandler : RPCHandler
internal sealed class EnterVentHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.EnterVent;
internal override byte CallId => (byte)RpcCalls.EnterVent;
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
if (!sender.IsImpostorTeam() && !sender.Is(RoleTypes.Engineer))
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ExiledHandler : RPCHandler
internal sealed class ExiledHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.Exiled;
internal override byte CallId => (byte)RpcCalls.Exiled;
}
@@ -4,9 +4,9 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ExitVentHandler : RPCHandler
internal sealed class ExitVentHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.ExitVent;
internal override byte CallId => (byte)RpcCalls.ExitVent;
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader) => RegisterRPCHandlerAttribute.GetClassInstance<EnterVentHandler>().HandleAntiCheat(sender, reader);
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader) => RegisterRPCHandlerAttribute.GetClassInstance<EnterVentHandler>().HandleAntiCheat(sender, reader);
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ExtendLobbyTimerHandler : RPCHandler
internal sealed class ExtendLobbyTimerHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.ExtendLobbyTimer;
internal override byte CallId => (byte)RpcCalls.ExtendLobbyTimer;
}
@@ -8,11 +8,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class KillNetworkChatHandler : RPCHandler
internal sealed class KillNetworkChatHandler : RPCHandler
{
public override byte CallId => unchecked((byte)CustomRPC.KillNetworkChat);
internal override byte CallId => unchecked((byte)CustomRPC.KillNetworkChat);
public override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
{
if (!Main.AntiCheat.Value || !BetterGameSettings.DetectCheatClients.GetBool()) return;
@@ -8,11 +8,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class KillNetworkHandler : RPCHandler
internal sealed class KillNetworkHandler : RPCHandler
{
public override byte CallId => unchecked((byte)CustomRPC.KillNetwork);
internal override byte CallId => unchecked((byte)CustomRPC.KillNetwork);
public override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheatCheck(PlayerControl? sender, MessageReader reader)
{
if (Main.AntiCheat.Value && BetterGameSettings.DetectCheatClients.GetBool())
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class LobbyTimeExpiringHandler : RPCHandler
internal sealed class LobbyTimeExpiringHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.LobbyTimeExpiring;
internal override byte CallId => (byte)RpcCalls.LobbyTimeExpiring;
}
@@ -8,17 +8,17 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class MurderPlayerHandler : RPCHandler
internal sealed class MurderPlayerHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.MurderPlayer;
internal override byte CallId => (byte)RpcCalls.MurderPlayer;
public override void Handle(PlayerControl? sender, MessageReader reader)
internal override void Handle(PlayerControl? sender, MessageReader reader)
{
Utils.DirtyAllNames();
}
// Prevent ban exploit
public override bool HandleAntiCheatCancel(PlayerControl? player, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? player, MessageReader reader)
{
PlayerControl target = reader.ReadNetObject<PlayerControl>();
@@ -46,7 +46,7 @@ public sealed class MurderPlayerHandler : RPCHandler
return true;
}
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
PlayerControl target = reader.ReadNetObject<PlayerControl>();
@@ -4,11 +4,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
public class DeserializeNetObjectHandler : RPCHandler
internal class DeserializeNetObjectHandler : RPCHandler
{
public override byte GameDataTag => (byte)HandleGameDataTags.NetObjectDeserialize;
internal override byte GameDataTag => (byte)HandleGameDataTags.NetObjectDeserialize;
public override void HandleGameData(MessageReader reader)
internal override void HandleGameData(MessageReader reader)
{
uint netId = reader.ReadPackedUInt32();
var innerNetObject = innerNetClient.FindObjectByNetId<InnerNetObject>(netId);
@@ -4,11 +4,11 @@ using InnerNet;
namespace BetterAmongUs.Modules.AntiCheat;
public class DespawnNetObjectHandler : RPCHandler
internal class DespawnNetObjectHandler : RPCHandler
{
public override byte GameDataTag => (byte)HandleGameDataTags.NetObjectDespawn;
internal override byte GameDataTag => (byte)HandleGameDataTags.NetObjectDespawn;
public override void HandleGameData(MessageReader reader)
internal override void HandleGameData(MessageReader reader)
{
// if (!GameState.IsHost) return;
+3 -3
View File
@@ -5,10 +5,10 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class PetHandler : RPCHandler
internal sealed class PetHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.Pet;
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override byte CallId => (byte)RpcCalls.Pet;
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
if (sender?.CurrentOutfit?.PetId == "pet_EmptyPet")
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class PlayAnimationHandler : RPCHandler
internal sealed class PlayAnimationHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.PlayAnimation;
internal override byte CallId => (byte)RpcCalls.PlayAnimation;
}
@@ -7,11 +7,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ProtectPlayerHandler : RPCHandler
internal sealed class ProtectPlayerHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.ProtectPlayer;
internal override byte CallId => (byte)RpcCalls.ProtectPlayer;
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
if (!sender.Is(RoleTypes.GuardianAngel))
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class RejectShapeshiftHandler : RPCHandler
internal sealed class RejectShapeshiftHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.RejectShapeshift;
internal override byte CallId => (byte)RpcCalls.RejectShapeshift;
}
@@ -6,11 +6,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class ReportDeadBodyHandler : RPCHandler
internal sealed class ReportDeadBodyHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.ReportDeadBody;
internal override byte CallId => (byte)RpcCalls.ReportDeadBody;
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (!GameState.IsInGamePlay || !Main.AllPlayerControls.All(pc => pc.roleAssigned))
{
@@ -8,11 +8,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SendChatHandler : RPCHandler
internal sealed class SendChatHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SendChat;
internal override byte CallId => (byte)RpcCalls.SendChat;
public override void Handle(PlayerControl? sender, MessageReader reader)
internal override void Handle(PlayerControl? sender, MessageReader reader)
{
var text = reader.ReadString();
@@ -48,7 +48,7 @@ public sealed class SendChatHandler : RPCHandler
}
}
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
if (sender.IsAlive() && GameState.IsInGamePlay && !GameState.IsMeeting && !GameState.IsExilling || DataManager.Settings.Multiplayer.ChatMode == InnerNet.QuickChatModes.QuickChatOnly)
{
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SendChatNoteHandler : RPCHandler
internal sealed class SendChatNoteHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SendChatNote;
internal override byte CallId => (byte)RpcCalls.SendChatNote;
}
@@ -6,11 +6,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SendQuickChatHandler : RPCHandler
internal sealed class SendQuickChatHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SendQuickChat;
internal override byte CallId => (byte)RpcCalls.SendQuickChat;
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
if (sender.IsAlive() && GameState.IsInGamePlay && !GameState.IsMeeting && !GameState.IsExilling || reader.BytesRemaining == 0)
{
@@ -4,10 +4,10 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetColorHandler : RPCHandler
internal sealed class SetColorHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetColor;
public override void Handle(PlayerControl? sender, MessageReader reader)
internal override byte CallId => (byte)RpcCalls.SetColor;
internal override void Handle(PlayerControl? sender, MessageReader reader)
{
Logger.InGame("TEST");
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetHatHandler : RPCHandler
internal sealed class SetHatHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetHat;
internal override byte CallId => (byte)RpcCalls.SetHat;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetHatStrHandler : RPCHandler
internal sealed class SetHatStrHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetHatStr;
internal override byte CallId => (byte)RpcCalls.SetHatStr;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetInfectedHandler : RPCHandler
internal sealed class SetInfectedHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetInfected;
internal override byte CallId => (byte)RpcCalls.SetInfected;
}
@@ -7,11 +7,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetLevelHandler : RPCHandler
internal sealed class SetLevelHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetLevel;
internal override byte CallId => (byte)RpcCalls.SetLevel;
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (sender.DataIsCollected() == true && sender.BetterData().AntiCheatInfo.HasSetLevel && !GameState.IsLocalGame && GameState.IsVanillaServer)
{
@@ -26,7 +26,7 @@ public sealed class SetLevelHandler : RPCHandler
return true;
}
public override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
internal override void HandleAntiCheat(PlayerControl? sender, MessageReader reader)
{
uint level = reader.ReadPackedUInt32();
@@ -6,16 +6,16 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetNameHandler : RPCHandler
internal sealed class SetNameHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetName;
internal override byte CallId => (byte)RpcCalls.SetName;
public override void Handle(PlayerControl? sender, MessageReader reader)
internal override void Handle(PlayerControl? sender, MessageReader reader)
{
Utils.DirtyAllNames();
}
public override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
internal override bool HandleAntiCheatCancel(PlayerControl? sender, MessageReader reader)
{
if (GameState.IsHost) return false;
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetNamePlateHandler : RPCHandler
internal sealed class SetNamePlateHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetNamePlate;
internal override byte CallId => (byte)RpcCalls.SetNamePlate;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetNamePlateStrHandler : RPCHandler
internal sealed class SetNamePlateStrHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetNamePlateStr;
internal override byte CallId => (byte)RpcCalls.SetNamePlateStr;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetPetHandler : RPCHandler
internal sealed class SetPetHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetPet;
internal override byte CallId => (byte)RpcCalls.SetPet;
}
@@ -3,7 +3,7 @@ using BetterAmongUs.Items.Attributes;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetPetStrHandler : RPCHandler
internal sealed class SetPetStrHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetPetStr;
internal override byte CallId => (byte)RpcCalls.SetPetStr;
}
@@ -5,11 +5,11 @@ using Hazel;
namespace BetterAmongUs.Modules.AntiCheat;
[RegisterRPCHandler]
public sealed class SetRoleHandler : RPCHandler
internal sealed class SetRoleHandler : RPCHandler
{
public override byte CallId => (byte)RpcCalls.SetRole;
internal override byte CallId => (byte)RpcCalls.SetRole;
public override void Handle(PlayerControl? sender, MessageReader reader)
internal override void Handle(PlayerControl? sender, MessageReader reader)
{
sender.DirtyName();
}
Loaded 100 of 155 files, more files were not shown because too many files have changed in this diff. Show more