Пример #1
0
        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);
        }
Пример #2
0
        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;
        }