public static bool Prefix(SpawnInMinigame __instance, PlayerTask task) { CustomButton.stopCountdown = true; // base.Begin(task); __instance.MyTask = task; __instance.MyNormTask = (task as NormalPlayerTask); if (PlayerControl.LocalPlayer) { if (MapBehaviour.Instance) { MapBehaviour.Instance.Close(); } PlayerControl.LocalPlayer.NetTransform.Halt(); } __instance.StartCoroutine(__instance.CoAnimateOpen()); List <SpawnInMinigame.SpawnLocation> list = __instance.Locations.ToList <SpawnInMinigame.SpawnLocation>(); foreach (var spawnCandidate in SpawnCandidates) { SpawnInMinigame.SpawnLocation spawnlocation = new SpawnInMinigame.SpawnLocation(); spawnlocation.Location = spawnCandidate.SpawnLocation; spawnlocation.Image = spawnCandidate.GetSprite(); spawnlocation.Name = spawnCandidate.LocationKey; spawnlocation.Rollover = new AnimationClip(); spawnlocation.RolloverSfx = __instance.DefaultRolloverSound; list.Add(spawnlocation); } SpawnInMinigame.SpawnLocation[] array = list.ToArray <SpawnInMinigame.SpawnLocation>(); array.Shuffle(0); array = (from s in array.Take(__instance.LocationButtons.Length) orderby s.Location.x, s.Location.y descending select s).ToArray <SpawnInMinigame.SpawnLocation>(); PlayerControl.LocalPlayer.NetTransform.RpcSnapTo(new Vector2(-25f, 40f)); for (int i = 0; i < __instance.LocationButtons.Length; i++) { PassiveButton passiveButton = __instance.LocationButtons[i]; SpawnInMinigame.SpawnLocation pt = array[i]; passiveButton.OnClick.AddListener((UnityEngine.Events.UnityAction)(() => __instance.SpawnAt(pt.Location))); passiveButton.GetComponent <SpriteAnim>().Stop(); passiveButton.GetComponent <SpriteRenderer>().sprite = pt.Image; // passiveButton.GetComponentInChildren<TextMeshPro>().text = DestroyableSingleton<TranslationController>.Instance.GetString(pt.Name, Array.Empty<object>()); passiveButton.GetComponentInChildren <TextMeshPro>().text = DestroyableSingleton <TranslationController> .Instance.GetString(pt.Name, new Il2CppReferenceArray <Il2CppSystem.Object>(0)); ButtonAnimRolloverHandler component = passiveButton.GetComponent <ButtonAnimRolloverHandler>(); component.StaticOutImage = pt.Image; component.RolloverAnim = pt.Rollover; component.HoverSound = (pt.RolloverSfx ? pt.RolloverSfx : __instance.DefaultRolloverSound); } PlayerControl.LocalPlayer.gameObject.SetActive(false); PlayerControl.LocalPlayer.NetTransform.RpcSnapTo(new Vector2(-25f, 40f)); if (CustomOptionHolder.airshipRandomSpawn.getBool()) { __instance.LocationButtons.Random <PassiveButton>().ReceiveClickUp(); } else { __instance.StartCoroutine(__instance.RunTimer()); } ControllerManager.Instance.OpenOverlayMenu(__instance.name, null, __instance.DefaultButtonSelected, __instance.ControllerSelectable, false); PlayerControl.HideCursorTemporarily(); ConsoleJoystick.SetMode_Menu(); return(false); }
public static void MakeButtons(HudManager hm) { morphButton = new CustomButton( () => { if (!isMorph) { MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.mimicMorph, Hazel.SendOption.Reliable, -1); writer.Write(PlayerControl.LocalPlayer.PlayerId); writer.Write(MimicK.allPlayers.FirstOrDefault().PlayerId); AmongUsClient.Instance.FinishRpcImmediately(writer); RPCProcedure.mimicMorph(PlayerControl.LocalPlayer.PlayerId, MimicK.allPlayers.FirstOrDefault().PlayerId); } else { MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.mimicResetMorph, Hazel.SendOption.Reliable, -1); writer.Write(PlayerControl.LocalPlayer.PlayerId); AmongUsClient.Instance.FinishRpcImmediately(writer); RPCProcedure.mimicResetMorph(PlayerControl.LocalPlayer.PlayerId); } }, () => { return(PlayerControl.LocalPlayer.isRole(RoleType.MimicA) && PlayerControl.LocalPlayer.isAlive() && MimicK.isAlive()); }, () => { return(PlayerControl.LocalPlayer.CanMove); }, () => { }, getMorphButtonSprite(), new Vector3(-1.8f, -0.06f, 0), hm, hm.UseButton, KeyCode.Q, false ); morphButton.buttonText = ""; adminButton = new CustomButton( () => { PlayerControl.LocalPlayer.NetTransform.Halt(); Action <MapBehaviour> tmpAction = (MapBehaviour m) => { m.ShowCountOverlay(); }; DestroyableSingleton <HudManager> .Instance.ShowMap(tmpAction); if (PlayerControl.LocalPlayer.AmOwner) { PlayerControl.LocalPlayer.MyPhysics.inputHandler.enabled = true; ConsoleJoystick.SetMode_Task(); } }, () => { return(PlayerControl.LocalPlayer.isRole(RoleType.MimicA) && PlayerControl.LocalPlayer.isAlive() && MimicK.isAlive()); }, () => { return(PlayerControl.LocalPlayer.CanMove); }, () => {}, EvilHacker.getButtonSprite(), new Vector3(0f, 1.0f, 0), hm, hm.KillButton, KeyCode.F, false); adminButton.buttonText = DestroyableSingleton <TranslationController> .Instance.GetString(StringNames.Admin); adminButton.MaxTimer = adminButton.Timer = 0; }