예제 #1
0
        public static void HideSingle(
            IMeetingGuesser role,
            byte targetId,
            bool killedSelf
            )
        {
            if (
                killedSelf ||
                !role.CanKeepGuessing()
                )
            {
                HideButtons(role);
                return;
            }

            var(cycle, guess, guessText) = role.Buttons[targetId];
            if (cycle == null)
            {
                return;
            }
            cycle.SetActive(false);
            guess.SetActive(false);
            guessText.gameObject.SetActive(false);

            cycle.GetComponent <PassiveButton>().OnClick = new Button.ButtonClickedEvent();
            guess.GetComponent <PassiveButton>().OnClick = new Button.ButtonClickedEvent();
            role.Buttons[targetId] = (null, null, null);
            role.Guesses.Remove(targetId);
        }
예제 #2
0
        public static void Postfix(MeetingHud __instance)
        {
            Assassin.AssassinState.Guesses.Clear();
            Assassin.AssassinState.Buttons.Clear();

            if (
                PlayerControl.LocalPlayer.Data.IsDead ||
                !PlayerControl.LocalPlayer.Is(Faction.Impostors)
                )
            {
                return;
            }

            Assassin assassin = Assassin.AssassinState;

            if (assassin.RemainingKills <= 0)
            {
                return;
            }
            foreach (var voteArea in __instance.playerStates)
            {
                IMeetingGuesser.GenButton(
                    assassin,
                    voteArea,
                    playerControl => !IsExempt(playerControl),
                    (playerControl, role) =>
                {
                    IMeetingGuesser.KillFromMeetingGuess(assassin, playerControl, role);
                    assassin.RemainingKills--;
                });
            }
        }
예제 #3
0
        public static void HideButtons(IMeetingGuesser role)
        {
            foreach (var(_, (cycle, guess, guessText)) in role.Buttons)
            {
                if (cycle == null)
                {
                    continue;
                }
                cycle.SetActive(false);
                guess.SetActive(false);
                guessText.gameObject.SetActive(false);

                cycle.GetComponent <PassiveButton>().OnClick = new Button.ButtonClickedEvent();
                guess.GetComponent <PassiveButton>().OnClick = new Button.ButtonClickedEvent();
            }
        }