using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TMPro;
using Teleport.patches;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("officerballs.Teleport")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.2.0")]
[assembly: AssemblyInformationalVersion("1.0.2")]
[assembly: AssemblyProduct("officerballs.Teleport")]
[assembly: AssemblyTitle("officerballs.Teleport")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.2.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace Teleport
{
[BepInPlugin("officerballs.Teleport", "Teleport", "1.0.2.0")]
public class Plugin : BaseUnityPlugin
{
public const string modGUID = "officerballs.Teleport";
public const string modName = "Teleport";
public const string modVersion = "1.0.2.0";
private Harmony harmony = new Harmony("officerballs.Teleport");
public ManualLogSource mls = Logger.CreateLogSource("officerballs.Teleport");
private void Awake()
{
mls.LogInfo((object)"Teleportation system loaded.");
harmony.PatchAll(typeof(TeleportPatch));
}
}
}
namespace Teleport.patches
{
[HarmonyPatch(typeof(PlayerPanelController))]
public static class TeleportPatch
{
public static bool setup = false;
public static int index = 1;
public static PlayerController target = null;
[HarmonyPatch("Update")]
[HarmonyPrefix]
public static void TelePatch()
{
//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
FieldRef<CustomizationUIController, GameObject> val = AccessTools.FieldRefAccess<CustomizationUIController, GameObject>("_customizationPanel");
CustomizationUIController i = MonoSingleton<CustomizationUIController>.I;
if (val.Invoke(i).activeSelf)
{
return;
}
FieldRef<PlayerPanelController, GameObject> val2 = AccessTools.FieldRefAccess<PlayerPanelController, GameObject>("_reportPanel");
PlayerPanelController i2 = NetworkSingleton<PlayerPanelController>.I;
if (val2.Invoke(i2).activeSelf)
{
return;
}
int num = 0;
FieldRef<UIManager, TMP_InputField> val3 = AccessTools.FieldRefAccess<UIManager, TMP_InputField>("_messageInputField");
UIManager i3 = MonoSingleton<UIManager>.I;
if (val3.Invoke(i3).isFocused)
{
return;
}
if (Input.GetKeyDown((KeyCode)101) && Input.GetKey((KeyCode)304))
{
if (NetworkSingleton<PlayerPanelController>.I.PlayerIDs.Count == 1)
{
return;
}
index++;
num = 1;
}
else
{
if (!Input.GetKeyDown((KeyCode)113) || !Input.GetKey((KeyCode)304))
{
if (Input.GetKeyDown((KeyCode)120) && Input.GetKey((KeyCode)304) && NetworkSingleton<PlayerPanelController>.I.PlayerIDs.Count != 1 && Object.op_Implicit((Object)(object)target))
{
PlayerMovementController componentInChildren = ((Component)((Component)target).transform).GetComponentInChildren<PlayerMovementController>();
NetworkSingleton<TextChannelManager>.I.MainPlayer.position = ((Component)componentInChildren).transform.position;
}
return;
}
if (NetworkSingleton<PlayerPanelController>.I.PlayerIDs.Count == 1)
{
return;
}
index--;
num = -1;
}
for (int j = 0; j < 2; j++)
{
if (index < 0)
{
index = NetworkSingleton<PlayerPanelController>.I.PlayerIDs.Count - 1;
}
else if (index >= NetworkSingleton<PlayerPanelController>.I.PlayerIDs.Count)
{
index = 0;
}
target = ((Component)NetworkSingleton<PlayerPanelController>.I.PlayerTransforms[index]).GetComponent<PlayerController>();
string text = ((TMP_Text)target.PlayerNameText).text;
string name = MonoSingleton<DataManager>.I.PlayerData.Name;
if (text != name)
{
break;
}
switch (num)
{
case 1:
index++;
break;
case -1:
index--;
break;
}
}
FieldRef<UIManager, TextMeshProUGUI> val4 = AccessTools.FieldRefAccess<UIManager, TextMeshProUGUI>("_playerText");
UIManager i4 = MonoSingleton<UIManager>.I;
string name2 = MonoSingleton<DataManager>.I.PlayerData.Name;
target = ((Component)NetworkSingleton<PlayerPanelController>.I.PlayerTransforms[index]).GetComponent<PlayerController>();
string text2 = ((TMP_Text)target.PlayerNameText).text;
((TMP_Text)val4.Invoke(i4)).text = name2 + " - " + text2 + " selected";
}
[HarmonyPatch("DespawnHandle")]
[HarmonyPostfix]
public static void DespawnHandlePatch(PlayerPanelController __instance)
{
if (index >= __instance.PlayerSteamIDs.Count)
{
index = __instance.PlayerSteamIDs.Count - 1;
}
target = ((Component)NetworkSingleton<PlayerPanelController>.I.PlayerTransforms[index]).GetComponent<PlayerController>();
FieldRef<UIManager, TextMeshProUGUI> val = AccessTools.FieldRefAccess<UIManager, TextMeshProUGUI>("_playerText");
UIManager i = MonoSingleton<UIManager>.I;
string name = MonoSingleton<DataManager>.I.PlayerData.Name;
string text = ((TMP_Text)target.PlayerNameText).text;
((TMP_Text)val.Invoke(i)).text = name + " - " + text + " selected";
}
}
}