More extensions

This commit is contained in:
js6pak committed 2021-01-28 13:47:04 +01:00
1 parent dcc6fed660
commit 0cd79f9162
9 files changed
+129 -39

No files matched your search

+15 -1
View File
@@ -11,7 +11,7 @@ namespace Reactor.Debugger
{
[BepInPlugin(Id)]
[BepInProcess("Among Us.exe")]
[BepInDependency(ReactorPlugin.Id, "^0.2.0")]
[BepInDependency(ReactorPlugin.Id)]
[ReactorPluginSide(PluginSide.ClientOnly)]
public class DebuggerPlugin : BasePlugin
{
@@ -57,6 +57,20 @@ namespace Reactor.Debugger
ShipStatus.RpcEndGame(GameOverReason.ImpostorDisconnect, false);
}
if (TutorialManager.InstanceExists && GUILayout.Button("Spawn a dummy", new Il2CppReferenceArray<GUILayoutOption>(0)))
{
var playerControl = Instantiate(TutorialManager.Instance.PlayerPrefab);
var i = playerControl.PlayerId = (byte) GameData.Instance.GetAvailableId();
GameData.Instance.AddPlayer(playerControl);
AmongUsClient.Instance.Spawn(playerControl, -2, SpawnFlags.None);
playerControl.transform.position = PlayerControl.LocalPlayer.transform.position;
playerControl.GetComponent<DummyBehaviour>().enabled = true;
playerControl.NetTransform.enabled = false;
playerControl.SetName("Dummy " + (i + 1));
playerControl.SetColor((byte) (i % Palette.PlayerColors.Length));
GameData.Instance.RpcSetTasks(playerControl.PlayerId, new byte[0]);
}
if (PlayerControl.LocalPlayer)
{
var position = PlayerControl.LocalPlayer.transform.position;
Binary file not shown.
+6 -14
View File
@@ -18,24 +18,16 @@ namespace Reactor.Extensions
/// </summary>
public static class Extensions
{
/// <summary>
/// Stops <paramref name="obj"/> from being destroyed
/// </summary>
/// <param name="obj">Object to stop from being destroyed</param>
/// <returns>Passed <paramref name="obj"/></returns>
public static T DontDestroy<T>(this T obj) where T : Object
[Obsolete]
public static T DontDestroy<T>(T obj) where T : Object
{
obj.hideFlags |= HideFlags.HideAndDontSave;
Object.DontDestroyOnLoad(obj);
return obj;
return UnityObjectExtensions.DontDestroy(obj);
}
public static T DontUnload<T>(this T obj) where T : Object
[Obsolete]
public static T DontUnload<T>(T obj) where T : Object
{
obj.hideFlags |= HideFlags.DontUnloadUnusedAsset;
return obj;
return UnityObjectExtensions.DontUnload(obj);
}
/// <summary>
@@ -0,0 +1,41 @@
using System;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Reactor.Extensions
{
public static class TextRendererExtensions
{
public static TextRendererPrefab Prefab { get; internal set; }
public static TextRenderer AddTextRenderer(this GameObject gameObject)
{
if (Prefab == null)
{
throw new ArgumentException("TextRenderer prefab hasn't been initialized yet");
}
var renderer = gameObject.AddComponent<MeshRenderer>();
renderer.material = Prefab.Material;
gameObject.AddComponent<MeshFilter>();
var textRenderer = gameObject.AddComponent<TextRenderer>();
textRenderer.FontData = Prefab.FontData;
return textRenderer;
}
}
public class TextRendererPrefab
{
public Material Material { get; }
public TextAsset FontData { get; }
internal TextRendererPrefab(TextRenderer textRenderer)
{
Material = Object.Instantiate(textRenderer.GetComponent<MeshRenderer>().material).DontDestroy();
FontData = Object.Instantiate(textRenderer.FontData).DontDestroy();
}
}
}
@@ -0,0 +1,43 @@
using UnityEngine;
namespace Reactor.Extensions
{
public static class UnityObjectExtensions
{
/// <summary>
/// Stops <paramref name="obj"/> from being destroyed
/// </summary>
/// <param name="obj">Object to stop from being destroyed</param>
/// <returns>Passed <paramref name="obj"/></returns>
public static T DontDestroy<T>(this T obj) where T : Object
{
obj.hideFlags |= HideFlags.HideAndDontSave;
return obj.DontDestroyOnLoad();
}
public static T DontUnload<T>(this T obj) where T : Object
{
obj.hideFlags |= HideFlags.DontUnloadUnusedAsset;
return obj;
}
public static T DontDestroyOnLoad<T>(this T obj) where T : Object
{
Object.DontDestroyOnLoad(obj);
return obj;
}
public static void Destroy(this Object obj)
{
Object.Destroy(obj);
}
public static void DestroyImmediate(this Object obj)
{
Object.DestroyImmediate(obj);
}
}
}
@@ -77,6 +77,9 @@ namespace Reactor.Patches
ackCallback = (Action) (() =>
{
if (__instance.State == ConnectionState.Connected)
return;
PluginSingleton<ReactorPlugin>.Instance.Log.LogDebug("Hello was acked, waiting for modded handshake response");
Coroutines.Start(Coroutine());
+13 -11
View File
@@ -2,6 +2,8 @@ using System;
using System.Reflection;
using BepInEx;
using BepInEx.IL2CPP;
using Reactor.Extensions;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Reactor.Patches
@@ -16,30 +18,30 @@ namespace Reactor.Patches
internal static void Initialize()
{
SceneManager.add_sceneLoaded((Action<Scene, LoadSceneMode>) ((scene, loadMode) =>
SceneManager.add_sceneLoaded((Action<Scene, LoadSceneMode>) ((_, _) =>
{
var original = UnityEngine.Object.FindObjectOfType<VersionShower>();
if (!original)
return;
var gameObject = UnityEngine.Object.Instantiate(original.gameObject);
gameObject.name = "ReactorVersion";
TextRendererExtensions.Prefab ??= new TextRendererPrefab(original.gameObject.GetComponentInChildren<TextRenderer>());
var versionShower = gameObject.GetComponent<VersionShower>();
if (versionShower)
{
versionShower.enabled = false;
}
var gameObject = new GameObject("ReactorVersion");
gameObject.transform.parent = original.transform.parent;
var aspectPosition = gameObject.GetComponent<AspectPosition>();
var aspectPosition = gameObject.AddComponent<AspectPosition>();
var position = aspectPosition.DistanceFromEdge;
aspectPosition.Alignment = AspectPosition.EdgeAlignments.LeftTop;
var position = original.GetComponent<AspectPosition>().DistanceFromEdge;
position.y += 0.2f;
aspectPosition.DistanceFromEdge = position;
aspectPosition.AdjustPosition();
Text = gameObject.GetComponentInChildren<TextRenderer>();
Text = gameObject.AddTextRenderer();
Text.scale = 0.65f;
UpdateText();
}));
}
+1
View File
@@ -4,6 +4,7 @@
<LangVersion>latest</LangVersion>
<VersionPrefix>0.3.0</VersionPrefix>
<VersionSuffix>dev</VersionSuffix>
<Description>Core mod and API for Among Us</Description>
<Authors>NuclearPowered</Authors>
</PropertyGroup>
+7 -13
View File
@@ -1,4 +1,3 @@
using System;
using Reactor.Extensions;
using UnityEngine;
using UnityEngine.UI;
@@ -18,20 +17,15 @@ namespace Reactor.Unstrip
Graphic.defaultGraphicMaterial.shader = backupShader;
}
var tex = new Texture2D(1, 1, TextureFormat.RGBA32, Texture.GenerateAllMips, false, IntPtr.Zero);
tex.SetPixel(0, 0, Color.red);
var sprite = tex.CreateSprite();
GUIExtensions.StandardResources = new DefaultControls.Resources
{
background = sprite,
checkmark = sprite,
dropdown = sprite,
knob = sprite,
mask = sprite,
standard = sprite,
inputField = sprite
background = bundle.LoadAsset<Sprite>("Background").DontUnload(),
checkmark = bundle.LoadAsset<Sprite>("Checkmark").DontUnload(),
dropdown = bundle.LoadAsset<Sprite>("DropdownArrow").DontUnload(),
knob = bundle.LoadAsset<Sprite>("Knob").DontUnload(),
mask = bundle.LoadAsset<Sprite>("UIMask").DontUnload(),
standard = bundle.LoadAsset<Sprite>("UISprite").DontUnload(),
inputField = bundle.LoadAsset<Sprite>("InputFieldBackground").DontUnload()
};
}
}