Decompiled source of CanisRufus v1.0.3

Mods/CanisBase.dll

Decompiled a day ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using CanisBase;
using CanisRufus;
using GorillaNetworking;
using MelonLoader;
using Photon.Pun;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(CanisBaseMain), "CanisBase", "1.0.3", "xvfraudd", null)]
[assembly: MelonGame("Another Axiom", "Gorilla Tag")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("CanisBase")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("CanisBase")]
[assembly: AssemblyTitle("CanisBase")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace CanisBase;

public class CBConst
{
	public static readonly string room_text = "PRESS ENTER TO JOIN OR CREATE A CUSTOM ROOM WITH THE ENTERED CODE. PRESS OPTION 1 TO DISCONNECT FROM THE CURRENT ROOM.\n\nCURRENT ROOM: [$$]\n\n[$$$]: [$$$$]\n\nROOM TO JOIN: [$]";

	public static readonly string name_text = "PRESS ENTER TO CHANGE YOUR NAME TO THE ENTERED NEW NAME.\n\nCURRENT NAME: [$$]\n\n    NEW NAME: [$]";

	public static readonly string canis_text = "THANK YOU FOR USING CANISRUFUS!\n\nCANISRUFUS: [$]\n CANISBASE: [$$]\n\nMADE BY XVFRAUDD";

	public static readonly string return_text = "<color=red>IF YOU CONTINUE, YOU WILL EXIT CANISRUFUS AND RETURN TO GORILLA OS!</color>\nYOU CAN RETURN TO CANISRUFUS AT ANY TIME BY PRESSING <color=yellow>OPTION 3</color> IN THE <color=yellow>ROOM</color> TAB.\n\nTO EXIT CANISRUFUS, TYPE \"RETURN\" AND PRESS ENTER.\n\nINPUT: [$]";
}
public class CanisBaseMain : MelonMod
{
	public static string version;

	public override void OnInitializeMelon()
	{
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Expected O, but got Unknown
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Expected O, but got Unknown
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0091: Expected O, but got Unknown
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00be: Expected O, but got Unknown
		version = "1.0.3 - MELON";
		CanisRufusPC.instance.AddFuncItem(new FuncItem("ROOM", (Func<string>)RoomCB.TextAction, (Action<string>)RoomCB.KeyAction, (Action)null));
		CanisRufusPC.instance.AddFuncItem(new FuncItem("NAME", (Func<string>)NameCB.TextAction, (Action<string>)NameCB.KeyAction, (Action)NameCB.InitAction));
		CanisRufusPC.instance.AddFuncItem(new FuncItem("CANIS", (Func<string>)CanisCB.TextAction, (Action<string>)null, (Action)null));
		CanisRufusPC.instance.AddFuncItem(new FuncItem("RETURN", (Func<string>)ReturnCB.TextAction, (Action<string>)ReturnCB.KeyAction, (Action)null));
	}

	public static string CapStr(string str, int max)
	{
		if (str.Length > max)
		{
			return str[..max];
		}
		return str;
	}

	public static string ReplaceText(string text, List<string> reps)
	{
		if (reps == null)
		{
			return text;
		}
		int num = 1;
		foreach (string rep in reps)
		{
			text = ((!(rep == "[$]")) ? text.Replace("[" + new string('$', num) + "]", rep) : text.Replace("[" + new string('$', num) + "]", CanisRufusPC.instance.full_input));
			num++;
		}
		return text;
	}
}
public class RoomCB
{
	public static string TextAction()
	{
		List<string> reps = new List<string>
		{
			"[$]",
			(PhotonNetwork.CurrentRoom != null) ? PhotonNetwork.CurrentRoom.Name : "-NOT IN ROOM-",
			(PhotonNetwork.CurrentRoom != null) ? "PLAYERS IN ROOM" : "PLAYERS ONLINE",
			(PhotonNetwork.CurrentRoom != null) ? PhotonNetwork.CurrentRoom.PlayerCount.ToString() : HowManyMonke.ThisMany.ToString()
		};
		return CanisBaseMain.ReplaceText(CBConst.room_text, reps);
	}

	public static void KeyAction(string key)
	{
		if (key == "option1")
		{
			PhotonNetwork.Disconnect();
		}
		else if (key == "enter" && !string.IsNullOrEmpty(CanisRufusPC.instance.full_input))
		{
			((GorillaComputer)GorillaComputer.instance).networkController.AttemptToJoinSpecificRoom(CanisRufusPC.instance.full_input, (JoinType)0);
		}
		CanisRufusPC.instance.full_input = CanisBaseMain.CapStr(CanisRufusPC.instance.full_input, 10);
	}
}
public class NameCB
{
	public static string TextAction()
	{
		List<string> reps = new List<string>
		{
			"[$]",
			((GorillaComputer)GorillaComputer.instance).savedName
		};
		return CanisBaseMain.ReplaceText(CBConst.name_text, reps);
	}

	public static void InitAction()
	{
		CanisRufusPC.instance.full_input = ((GorillaComputer)GorillaComputer.instance).savedName;
	}

	public static void KeyAction(string key)
	{
		if (key == "enter" && !string.IsNullOrEmpty(CanisRufusPC.instance.full_input))
		{
			ChangeName(CanisRufusPC.instance.full_input);
		}
		CanisRufusPC.instance.full_input = CanisBaseMain.CapStr(CanisRufusPC.instance.full_input, 12);
	}

	private static void ChangeName(string currentName)
	{
		NetworkSystem.Instance.SetMyNickName(currentName);
		CustomMapsTerminal.RequestDriverNickNameRefresh();
		((GorillaComputer)GorillaComputer.instance).SetLocalNameTagText(currentName);
		((GorillaComputer)GorillaComputer.instance).savedName = currentName;
		PlayerPrefs.SetString("playerName", currentName);
		PlayerPrefs.Save();
		if (NetworkSystem.Instance.InRoom)
		{
			float @float = PlayerPrefs.GetFloat("redValue", 0f);
			float float2 = PlayerPrefs.GetFloat("greenValue", 0f);
			float float3 = PlayerPrefs.GetFloat("blueValue", 0f);
			GorillaTagger.Instance.myVRRig.SendRPC("RPC_InitializeNoobMaterial", (RpcTarget)0, new object[3] { @float, float2, float3 });
		}
	}
}
public class CanisCB
{
	public static string TextAction()
	{
		List<string> reps = new List<string>
		{
			CanisRufusPC.version,
			CanisBaseMain.version
		};
		return CanisBaseMain.ReplaceText(CBConst.canis_text, reps);
	}
}
public class ReturnCB
{
	public static void KeyAction(string key)
	{
		if (key == "enter" && CanisRufusPC.instance.full_input == "RETURN")
		{
			CanisRufusPC.instance.ReturnControlToGorillaOS();
		}
	}

	public static string TextAction()
	{
		List<string> reps = new List<string> { "[$]" };
		return CanisBaseMain.ReplaceText(CBConst.return_text, reps);
	}
}
internal class PluginInfo
{
	public const string GUID = "loan.fraudulent.CanisBaseBIE";

	public const string Author = "xvfraudd";

	public const string Name = "CanisBase";

	public const string Version = "1.0.3";
}

Mods/CanisRufus.dll

Decompiled a day ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using CanisRufus;
using GorillaNetworking;
using HarmonyLib;
using MelonLoader;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(CanisRufusPC), "CanisRufus", "1.0.3", "xvfraudd", null)]
[assembly: MelonGame("Another Axiom", "Gorilla Tag")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("CanisRufus")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("CanisRufus")]
[assembly: AssemblyTitle("CanisRufus")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace CanisRufus;

public class CanisRufusPC : MelonMod
{
	public static CanisRufusPC instance;

	public static string version;

	public bool new_input;

	public bool isEnabled = true;

	public string last_input = "";

	public string full_input = "";

	private List<FuncItem> funcs = new List<FuncItem>();

	public int current_func = -1;

	public override void OnInitializeMelon()
	{
		instance = this;
		version = "1.0.3 - MELON";
	}

	public override void OnUpdate()
	{
		if (!isEnabled)
		{
			return;
		}
		if (funcs.Count == 0)
		{
			SetFuncText("...");
			SetMainText("YOU DON'T HAVE ANY CANISRUFUS MODS INSTALLED! NOTHING WILL APPEAR ON THE COMPUTER UNLESS YOU INSTALL SOMETHING THAT USES CANISRUFUS.");
			return;
		}
		if (current_func == -1)
		{
			current_func = 0;
		}
		if (current_func < 0 || current_func >= funcs.Count)
		{
			if (current_func >= funcs.Count)
			{
				current_func = 0;
			}
			else if (current_func < 0)
			{
				current_func = funcs.Count - 1;
			}
		}
		string text = "";
		int num = 0;
		foreach (FuncItem func in funcs)
		{
			text += func.display_name;
			if (num == current_func)
			{
				text = text + new string(' ', 7 - func.display_name.Length) + "<-";
			}
			text += "\n";
			num++;
		}
		SetFuncText(text);
		if (new_input)
		{
			if (last_input == "up" || last_input == "down")
			{
				if (last_input == "up")
				{
					current_func--;
				}
				if (last_input == "down")
				{
					current_func++;
				}
				if (current_func < 0 || current_func >= funcs.Count)
				{
					if (current_func >= funcs.Count)
					{
						current_func = 0;
					}
					else if (current_func < 0)
					{
						current_func = funcs.Count - 1;
					}
				}
				ClearKeys();
				funcs[current_func].just_opened_action?.Invoke();
				new_input = false;
				return;
			}
			funcs[current_func].key_action?.Invoke(last_input);
			new_input = false;
		}
		string mainText = funcs[current_func].text_action?.Invoke();
		SetMainText(mainText);
	}

	public void ReturnControlToGorillaOS()
	{
		if (isEnabled)
		{
			isEnabled = false;
			ClearKeys();
			typeof(GorillaComputer).GetMethod("SwitchState", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(GorillaComputer.instance, new object[2]
			{
				(object)(ComputerState)5,
				true
			});
			((GorillaComputer)GorillaComputer.instance).PressButton((GorillaKeyboardBindings)12);
		}
	}

	public void DoKeyPress(string key)
	{
		GetKeyPress(key);
	}

	public void InputFromString(string input)
	{
		for (int i = 0; i < input.Length; i++)
		{
			DoKeyPress(input[i].ToString());
		}
	}

	public string BetterKeyString(string key)
	{
		return key switch
		{
			"zero" => "0", 
			"one" => "1", 
			"two" => "2", 
			"three" => "3", 
			"four" => "4", 
			"five" => "5", 
			"six" => "6", 
			"seven" => "7", 
			"eight" => "8", 
			"nine" => "9", 
			_ => key, 
		};
	}

	public void GetKeyPress(string key)
	{
		key = BetterKeyString(key);
		last_input = key;
		if (key == "delete")
		{
			full_input = full_input[..^1];
		}
		else if (key.Length == 1)
		{
			full_input += key;
		}
		new_input = true;
	}

	public void ClearKeys()
	{
		last_input = "";
		full_input = "";
	}

	public void SetMainText(string text)
	{
		if (isEnabled && ((GorillaComputer)GorillaComputer.instance).screenText.currentText != text)
		{
			((GorillaComputer)GorillaComputer.instance).screenText.Set(text);
		}
	}

	public void SetFuncText(string text)
	{
		if (isEnabled && ((GorillaComputer)GorillaComputer.instance).functionSelectText.currentText != text)
		{
			((GorillaComputer)GorillaComputer.instance).functionSelectText.Set(text);
		}
	}

	public void AddFuncItem(FuncItem func)
	{
		funcs.Add(func);
	}
}
public class FuncItem
{
	public string name;

	public string display_name;

	public Func<string> text_action;

	public Action<string> key_action;

	public Action just_opened_action;

	public FuncItem(string _name, Func<string> _text_action, Action<string> _key_action = null, Action _just_opened_action = null)
	{
		name = _name;
		display_name = name;
		if (display_name.Length > 7)
		{
			display_name = display_name[..7];
		}
		text_action = _text_action;
		key_action = _key_action;
		just_opened_action = _just_opened_action;
	}
}
[HarmonyPatch(typeof(GorillaKeyboardButton), "OnButtonPressedEvent")]
public class KeyPatches
{
	public static bool Prefix(GorillaKeyboardButton __instance)
	{
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Invalid comparison between Unknown and I4
		string text = ((object)(GorillaKeyboardBindings)(ref ((GorillaKeyButton<GorillaKeyboardBindings>)(object)__instance).Binding)).ToString();
		if (!CanisRufusPC.instance.isEnabled)
		{
			if ((int)((Stack<ComputerState>)typeof(GorillaComputer).GetField("stateStack", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(GorillaComputer.instance)).Peek() == 5 && text == "option3")
			{
				CanisRufusPC.instance.isEnabled = true;
				CanisRufusPC.instance.current_func = 0;
				return false;
			}
			return true;
		}
		CanisRufusPC.instance.GetKeyPress(text);
		return false;
	}
}
internal class PluginInfo
{
	public const string GUID = "loan.fraudulent.CanisRufusBIE";

	public const string Author = "xvfraudd";

	public const string Name = "CanisRufus";

	public const string Version = "1.0.3";
}