static bool Prefix(MeetingHud __instance, [HarmonyArgument(0)] Il2CppStructArray <byte> states) { // Swapper swap votes PlayerVoteArea swapped1 = null; PlayerVoteArea swapped2 = null; foreach (PlayerVoteArea playerVoteArea in __instance.playerStates) { if (playerVoteArea.TargetPlayerId == Swapper.playerId1) { swapped1 = playerVoteArea; } if (playerVoteArea.TargetPlayerId == Swapper.playerId2) { swapped2 = playerVoteArea; } } bool doSwap = swapped1 != null && swapped2 != null; float delay = 0f; if (doSwap) { delay = 2f; __instance.StartCoroutine(Effects.Slide3D(swapped1.transform, swapped1.transform.localPosition, swapped2.transform.localPosition, 2f)); __instance.StartCoroutine(Effects.Slide3D(swapped2.transform, swapped2.transform.localPosition, swapped1.transform.localPosition, 2f)); } float votesXOffset = 0f; float votesFinalSize = 1f; if (__instance.playerStates.Length > 10) { votesXOffset = 0.1f; votesFinalSize = scale; } // Mayor display vote twice __instance.TitleText.text = DestroyableSingleton <TranslationController> .Instance.GetString(StringNames.MeetingVotingResults, new Il2CppReferenceArray <Il2CppSystem.Object>(0)); int num = 0; for (int i = 0; i < __instance.playerStates.Length; i++) { PlayerVoteArea playerVoteArea = __instance.playerStates[i]; playerVoteArea.ClearForResults(); int num2 = 0; bool mayorFirstVoteDisplayed = false; for (int j = 0; j < __instance.playerStates.Length; j++) { PlayerVoteArea playerVoteArea2 = __instance.playerStates[j]; byte self = states[(int)playerVoteArea2.TargetPlayerId]; if (!((self & 128) > 0)) { GameData.PlayerInfo playerById = GameData.Instance.GetPlayerById((byte)playerVoteArea2.TargetPlayerId); int votedFor = (int)PlayerVoteArea.GetVotedFor(self); if (votedFor == (int)playerVoteArea.TargetPlayerId) { SpriteRenderer spriteRenderer = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (PlayerControl.GameOptions.AnonymousVotes) { PlayerControl.SetPlayerMaterialColors(Palette.DisabledGrey, spriteRenderer); } else { PlayerControl.SetPlayerMaterialColors((int)playerById.ColorId, spriteRenderer); } spriteRenderer.transform.SetParent(playerVoteArea.transform); spriteRenderer.transform.localPosition = __instance.CounterOrigin + new Vector3(votesXOffset + __instance.CounterOffsets.x * (float)(num2), 0f, 0f); spriteRenderer.transform.localScale = Vector3.zero; spriteRenderer.transform.SetParent(playerVoteArea.transform.parent); // Reparent votes so they don't move with their playerVoteArea __instance.StartCoroutine(Effects.Bloop((float)(num2) * 0.5f + delay, spriteRenderer.transform, votesFinalSize, 0.5f)); num2++; } else if (i == 0 && votedFor == -1) { SpriteRenderer spriteRenderer2 = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (PlayerControl.GameOptions.AnonymousVotes) { PlayerControl.SetPlayerMaterialColors(Palette.DisabledGrey, spriteRenderer2); } else { PlayerControl.SetPlayerMaterialColors((int)playerById.ColorId, spriteRenderer2); } spriteRenderer2.transform.SetParent(__instance.SkippedVoting.transform); spriteRenderer2.transform.localPosition = __instance.CounterOrigin + new Vector3(votesXOffset + __instance.CounterOffsets.x * (float)(num), 0f, 0f); spriteRenderer2.transform.localScale = Vector3.zero; spriteRenderer2.transform.SetParent(playerVoteArea.transform.parent); // Reparent votes so they don't move with their playerVoteArea __instance.StartCoroutine(Effects.Bloop((float)num * 0.5f + delay, spriteRenderer2.transform, votesFinalSize, 0.5f)); num++; } // Major vote, redo this iteration to place a second vote if (Mayor.mayor != null && playerVoteArea2.TargetPlayerId == (sbyte)Mayor.mayor.PlayerId && !mayorFirstVoteDisplayed) { mayorFirstVoteDisplayed = true; j--; } } } } return(false); }
public static bool Prefix(MeetingHud __instance, [HarmonyArgument(0)] byte[] statess) { var joined = string.Join(",", statess); var arr = joined.Split(','); var states = arr.Select(byte.Parse).ToArray(); var allnums = new int[__instance.playerStates.Length]; __instance.TitleText.Text = UnityEngine.Object.FindObjectOfType <TranslationController>() .GetString(StringNames.MeetingVotingResults, Array.Empty <Il2CppSystem.Object>()); var num = 0; for (var i = 0; i < __instance.playerStates.Length; i++) { var area = __instance.playerStates[i]; area.ClearForResults(); var num2 = 0; for (var j = 0; j < __instance.playerStates.Length; j++) { var area2 = __instance.playerStates[j]; var self = states[(int)area2.TargetPlayerId]; if ((self & 128) > 0) { continue; } var votedFor = (int)PlayerVoteArea.GetVotedFor(self); if (votedFor == area.TargetPlayerId) { Vote(__instance, area2, num2, area); num2++; } else if (i == 0 && votedFor == -1) { Vote(__instance, area2, num, __instance.SkippedVoting); num++; } } allnums[i] = num2; } foreach (var role in Role.GetRoles(RoleEnum.Mayor)) { var mayor = (Mayor)role; foreach (var extraVote in mayor.ExtraVotes) { var area2 = __instance.playerStates.First(pv => pv.TargetPlayerId == role.Player.PlayerId); var votedFor = (int)extraVote - 1; if (votedFor == -1) { Vote(__instance, area2, num, __instance.SkippedVoting, true); num++; } else { for (var i = 0; i < __instance.playerStates.Length; i++) { var area = __instance.playerStates[i]; if (votedFor != area.TargetPlayerId) { continue; } Vote(__instance, area2, allnums[i], area, true); allnums[i]++; } } } } return(false); }
public static bool Prefix([HarmonyArgument(0)] Il2CppStructArray <byte> states) { AbilityBlackmail[] blackmailAbilities = Ability.GetAllAbilities <AbilityBlackmail>(); MeetingHud.Instance.TitleText.text = DestroyableSingleton <TranslationController> .Instance.GetString(StringNames.MeetingVotingResults, new Il2CppReferenceArray <Il2CppSystem.Object>(0)); var num = 0; for (var i = 0; i < MeetingHud.Instance.playerStates.Length; i++) { PlayerVoteArea playerVoteArea = MeetingHud.Instance.playerStates[i]; playerVoteArea.ClearForResults(); var num2 = 0; var hasShownMayorVote = false; for (var j = 0; j < MeetingHud.Instance.playerStates.Count; j++) { PlayerVoteArea playerVoteArea2 = MeetingHud.Instance.playerStates[j]; // Blackmailer Skip Vote if (blackmailAbilities.Any(blackmail => blackmail.BlackmailedPlayer?.PlayerId == playerVoteArea2.TargetPlayerId)) { continue; } byte self = states[playerVoteArea2.TargetPlayerId]; if (global::Extensions.HasAnyBit(self, (byte)128)) { continue; } GameData.PlayerInfo playerById = GameData.Instance.GetPlayerById((byte)playerVoteArea2.TargetPlayerId); int votedFor = PlayerVoteArea.GetVotedFor(self); if (votedFor == playerVoteArea.TargetPlayerId) { SpriteRenderer spriteRenderer = Object.Instantiate(MeetingHud.Instance.PlayerVotePrefab, playerVoteArea.transform, true); if (PlayerControl.GameOptions.AnonymousVotes) { PlayerControl.SetPlayerMaterialColors(Palette.DisabledGrey, spriteRenderer); } else { PlayerControl.SetPlayerMaterialColors(playerById.ColorId, spriteRenderer); } Transform transform = spriteRenderer.transform; transform.localPosition = MeetingHud.Instance.CounterOrigin + new Vector3(MeetingHud.Instance.CounterOffsets.x * num2, 0f, 0f); transform.localScale = Vector3.zero; MeetingHud.Instance.StartCoroutine(Effects.Bloop(num2 * 0.5f, transform, 1f, 0.5f)); num2++; } else if (i == 0 && votedFor == -1) { SpriteRenderer spriteRenderer2 = Object.Instantiate(MeetingHud.Instance.PlayerVotePrefab, MeetingHud.Instance.SkippedVoting.transform, true); if (PlayerControl.GameOptions.AnonymousVotes) { PlayerControl.SetPlayerMaterialColors(Palette.DisabledGrey, spriteRenderer2); } else { PlayerControl.SetPlayerMaterialColors(playerById.ColorId, spriteRenderer2); } Transform transform = spriteRenderer2.transform; transform.localPosition = MeetingHud.Instance.CounterOrigin + new Vector3(MeetingHud.Instance.CounterOffsets.x * num, 0f, 0f); transform.localScale = Vector3.zero; MeetingHud.Instance.StartCoroutine(Effects.Bloop(num * 0.5f, transform, 1f, 0.5f)); num++; } // Mayor Add Extra Vote if (!TryGetSpecialRole(out Mayor mayor) || !mayor.hasRevealed || playerVoteArea2.TargetPlayerId != (sbyte)mayor.Owner.PlayerId || hasShownMayorVote) { continue; } hasShownMayorVote = true; j--; } } return(false); }
static bool Prefix(MeetingHud __instance, Il2CppStructArray <byte> HIDHPMAKEKH) { // Swapper swap votes PlayerVoteArea swapped1 = null; PlayerVoteArea swapped2 = null; foreach (PlayerVoteArea playerVoteArea in __instance.DHCOPOOJCLN) { if (playerVoteArea.HMPHKKGPLAG == Swapper.playerId1) { swapped1 = playerVoteArea; } if (playerVoteArea.HMPHKKGPLAG == Swapper.playerId2) { swapped2 = playerVoteArea; } } bool doSwap = swapped1 != null && swapped2 != null; if (doSwap) { __instance.StartCoroutine(Effects.NFAIFCPOFJK(swapped1.transform, swapped1.transform.localPosition, swapped2.transform.localPosition, 2f)); __instance.StartCoroutine(Effects.NFAIFCPOFJK(swapped2.transform, swapped2.transform.localPosition, swapped1.transform.localPosition, 2f)); } // Mayor display vote twice __instance.TitleText.Text = DestroyableSingleton <TranslationController> .CMJOLNCMAPD.GetString(StringNames.MeetingVotingResults, new Il2CppReferenceArray <Il2CppSystem.Object>(0)); int num = doSwap ? 4 : 0; // Delay animaton if swapping for (int i = 0; i < __instance.DHCOPOOJCLN.Length; i++) { PlayerVoteArea playerVoteArea = __instance.DHCOPOOJCLN[i]; playerVoteArea.ClearForResults(); int num2 = doSwap ? 4 : 0; // Delay animaton if swapping bool mayorFirstVoteDisplayed = false; for (int j = 0; j < __instance.DHCOPOOJCLN.Length; j++) { PlayerVoteArea playerVoteArea2 = __instance.DHCOPOOJCLN[j]; byte self = HIDHPMAKEKH[(int)playerVoteArea2.HMPHKKGPLAG]; if (!((self & 128) > 0)) { GameData.OFKOJOKOOAK playerById = GameData.Instance.GetPlayerById((byte)playerVoteArea2.HMPHKKGPLAG); int votedFor = (int)PlayerVoteArea.GetVotedFor(self); if (votedFor == (int)playerVoteArea.HMPHKKGPLAG) { SpriteRenderer spriteRenderer = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (PlayerControl.GameOptions.LNMFPEMGKOB) { PlayerControl.SetPlayerMaterialColors(Palette.JMELLHINKGM, spriteRenderer); } else { PlayerControl.SetPlayerMaterialColors((int)playerById.JFHFMIKFHGG, spriteRenderer); } spriteRenderer.transform.SetParent(playerVoteArea.transform); spriteRenderer.transform.localPosition = __instance.ALGONDAMLHA + new Vector3(__instance.LKIOFMMBOBJ.x * (float)num2, 0f, 0f); spriteRenderer.transform.localScale = Vector3.zero; spriteRenderer.transform.SetParent(playerVoteArea.transform.parent); // Reparent votes so they don't move with their playerVoteArea __instance.StartCoroutine(Effects.POFLJMGFBEJ((float)num2 * 0.5f, spriteRenderer.transform, 1f, 0.5f)); num2++; } else if (i == 0 && votedFor == -1) { SpriteRenderer spriteRenderer2 = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (PlayerControl.GameOptions.LNMFPEMGKOB) { PlayerControl.SetPlayerMaterialColors(Palette.JMELLHINKGM, spriteRenderer2); } else { PlayerControl.SetPlayerMaterialColors((int)playerById.JFHFMIKFHGG, spriteRenderer2); } spriteRenderer2.transform.SetParent(__instance.SkippedVoting.transform); spriteRenderer2.transform.localPosition = __instance.ALGONDAMLHA + new Vector3(__instance.LKIOFMMBOBJ.x * (float)num, 0f, 0f); spriteRenderer2.transform.localScale = Vector3.zero; spriteRenderer2.transform.SetParent(playerVoteArea.transform.parent); // Reparent votes so they don't move with their playerVoteArea __instance.StartCoroutine(Effects.POFLJMGFBEJ((float)num * 0.5f, spriteRenderer2.transform, 1f, 0.5f)); num++; } // Major vote, redo this iteration to place a second vote if (Mayor.mayor != null && playerVoteArea2.HMPHKKGPLAG == (sbyte)Mayor.mayor.PlayerId && !mayorFirstVoteDisplayed) { mayorFirstVoteDisplayed = true; j--; } } } } return(false); }
static bool Prefix(MeetingHud __instance, Il2CppStructArray <byte> COMOIMMLKHF) { // Swapper swap votes PlayerVoteArea swapped1 = null; PlayerVoteArea swapped2 = null; foreach (PlayerVoteArea playerVoteArea in __instance.GBKFCOAKLAH) { if (playerVoteArea.GEIOMAPOPKA == Swapper.playerId1) { swapped1 = playerVoteArea; } if (playerVoteArea.GEIOMAPOPKA == Swapper.playerId2) { swapped2 = playerVoteArea; } } bool doSwap = swapped1 != null && swapped2 != null; if (doSwap) { __instance.StartCoroutine(Effects.KLAIEICHCNO(swapped1.transform, swapped1.transform.localPosition, swapped2.transform.localPosition, 2f)); __instance.StartCoroutine(Effects.KLAIEICHCNO(swapped2.transform, swapped2.transform.localPosition, swapped1.transform.localPosition, 2f)); } // Mayor display vote twice __instance.TitleText.text = DestroyableSingleton <TranslationController> .CHNDKKBEIDG.GetString(StringNames.MeetingVotingResults, new Il2CppReferenceArray <Il2CppSystem.Object>(0)); int num = doSwap ? 4 : 0; // Delay animaton if swapping for (int i = 0; i < __instance.GBKFCOAKLAH.Length; i++) { PlayerVoteArea playerVoteArea = __instance.GBKFCOAKLAH[i]; playerVoteArea.ClearForResults(); int num2 = doSwap ? 4 : 0; // Delay animaton if swapping bool mayorFirstVoteDisplayed = false; for (int j = 0; j < __instance.GBKFCOAKLAH.Length; j++) { PlayerVoteArea playerVoteArea2 = __instance.GBKFCOAKLAH[j]; byte self = COMOIMMLKHF[(int)playerVoteArea2.GEIOMAPOPKA]; if (!((self & 128) > 0)) { GameData.LGBOMGHJELL playerById = GameData.Instance.GetPlayerById((byte)playerVoteArea2.GEIOMAPOPKA); int votedFor = (int)PlayerVoteArea.GetVotedFor(self); if (votedFor == (int)playerVoteArea.GEIOMAPOPKA) { SpriteRenderer spriteRenderer = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (PlayerControl.GameOptions.BBPDJOCPEEJ) { PlayerControl.SetPlayerMaterialColors(Palette.EGHCBLDNCGP, spriteRenderer); } else { PlayerControl.SetPlayerMaterialColors((int)playerById.IMMNCAGJJJC, spriteRenderer); } spriteRenderer.transform.SetParent(playerVoteArea.transform); spriteRenderer.transform.localPosition = __instance.FAJKDFHIHDN + new Vector3(__instance.GGHFHCMCJAL.x * (float)num2, 0f, 0f); spriteRenderer.transform.localScale = Vector3.zero; spriteRenderer.transform.SetParent(playerVoteArea.transform.parent); // Reparent votes so they don't move with their playerVoteArea __instance.StartCoroutine(Effects.JCDLOIMPBFJ((float)num2 * 0.5f, spriteRenderer.transform, 1f, 0.5f)); num2++; } else if (i == 0 && votedFor == -1) { SpriteRenderer spriteRenderer2 = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (PlayerControl.GameOptions.BBPDJOCPEEJ) { PlayerControl.SetPlayerMaterialColors(Palette.EGHCBLDNCGP, spriteRenderer2); } else { PlayerControl.SetPlayerMaterialColors((int)playerById.IMMNCAGJJJC, spriteRenderer2); } spriteRenderer2.transform.SetParent(__instance.SkippedVoting.transform); spriteRenderer2.transform.localPosition = __instance.FAJKDFHIHDN + new Vector3(__instance.GGHFHCMCJAL.x * (float)num, 0f, 0f); spriteRenderer2.transform.localScale = Vector3.zero; spriteRenderer2.transform.SetParent(playerVoteArea.transform.parent); // Reparent votes so they don't move with their playerVoteArea __instance.StartCoroutine(Effects.JCDLOIMPBFJ((float)num * 0.5f, spriteRenderer2.transform, 1f, 0.5f)); num++; } // Major vote, redo this iteration to place a second vote if (Mayor.mayor != null && playerVoteArea2.GEIOMAPOPKA == (sbyte)Mayor.mayor.PlayerId && !mayorFirstVoteDisplayed) { mayorFirstVoteDisplayed = true; j--; } } } } return(false); }