public static bool Prefix(GPOHFPAIEMA __instance, byte OPCIDHAAHLI, Hazel.MessageReader DNCHPFLHHEN) { switch (OPCIDHAAHLI) { case 22: __instance.Close(); break; case 23: { byte[] states = DNCHPFLHHEN.ReadBytesAndSize(); byte[] votes = DNCHPFLHHEN.ReadBytesAndSize(); BAGGGBBOHOH.FGMBFCIIILC playerById = BAGGGBBOHOH.Instance.GetPlayerById(DNCHPFLHHEN.ReadByte()); bool tie = DNCHPFLHHEN.ReadBoolean(); VotingComplete(__instance, states, votes, playerById, tie); break; } case 24: { byte srcPlayerId = DNCHPFLHHEN.ReadByte(); sbyte suspectPlayerId = DNCHPFLHHEN.ReadSByte(); __instance.CastVote(srcPlayerId, suspectPlayerId); break; } case 25: __instance.ClearVote(); break; } return(false); }
public static void PopulateResults(GPOHFPAIEMA __instance, byte[] states, byte[] votes) { __instance.TitleText.Text = "Voting Results"; int num = 0; for (int i = 0; i < __instance.OMJGIAMFODK.Length; i++) { LJEHDCNEKBG playerVoteArea = __instance.OMJGIAMFODK[i]; playerVoteArea.ClearForResults(); int num2 = 0; for (int j = 0; j < states.Length; j++) { if ((states[j] & 128) == 0) //!isDead { BAGGGBBOHOH.FGMBFCIIILC playerById = BAGGGBBOHOH.Instance.GetPlayerById((byte)__instance.OMJGIAMFODK[j].AGGEFFKBKLE); int votedFor = (sbyte)votes[j]; SpriteRenderer spriteRenderer = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab); if (GLHCHLEDNBA.GameOptions.IAFJLBELLDA) { GLHCHLEDNBA.SetPlayerMaterialColors(KPNJLIGHOEI.BAOLBIKEKEK, spriteRenderer); } else { GLHCHLEDNBA.SetPlayerMaterialColors((int)playerById.LMDCNHODEAN, spriteRenderer); } spriteRenderer.transform.localScale = Vector3.zero; if ((int)playerVoteArea.AGGEFFKBKLE == votedFor) { spriteRenderer.transform.SetParent(playerVoteArea.transform); spriteRenderer.transform.localPosition = __instance.GOCOEAPLJFA + new Vector3(__instance.OHFLCOGINJN.x * (float)num2, 0f, 0f); __instance.StartCoroutine(JDBGLNAEBLG.GBIKBPPNKEB((float)num2 * 0.5f, spriteRenderer.transform, 1f, 0.5f)); num2++; } else if (i == 0 && votedFor == -1) { spriteRenderer.transform.SetParent(__instance.SkippedVoting.transform); spriteRenderer.transform.localPosition = __instance.GOCOEAPLJFA + new Vector3(__instance.OHFLCOGINJN.x * (float)num, 0f, 0f); __instance.StartCoroutine(JDBGLNAEBLG.GBIKBPPNKEB((float)num * 0.5f, spriteRenderer.transform, 1f, 0.5f)); num++; } } } } }
public static bool Prefix(GPOHFPAIEMA __instance) { if (__instance.OMJGIAMFODK.All((LJEHDCNEKBG ps) => ps.isDead || ps.didVote)) { byte[] self = calculateVotes(__instance.OMJGIAMFODK); int maxIdx = indexOfMax(self, out bool tie) - 1; BAGGGBBOHOH.FGMBFCIIILC exiled = BAGGGBBOHOH.Instance.GetPlayerById((byte)maxIdx); byte[] states = __instance.OMJGIAMFODK.Select(s => s.GetState()).ToArray(); byte[] votes = __instance.OMJGIAMFODK.Select(s => (byte)s.votedFor).ToArray(); MessageWriter messageWriter = JNFEHNLGIFF.Instance.StartRpc(__instance.NetId, 23, SendOption.Reliable); messageWriter.WriteBytesAndSize(states); messageWriter.WriteBytesAndSize(votes); //Added because of the state's 4 bit vote id limit messageWriter.Write((exiled != null) ? exiled.PAGHECLPIMH : byte.MaxValue); messageWriter.Write(tie); messageWriter.EndMessage(); MeetingHudHandleRpcPatch.VotingComplete(__instance, states, votes, exiled, tie); } return(false); }
public static void VotingComplete(GPOHFPAIEMA __instance, byte[] states, byte[] votes, BAGGGBBOHOH.FGMBFCIIILC exiled, bool tie) { if (__instance.FDLEFBMLMFM == GPOHFPAIEMA.DHLNNGGOJNI.Results) { return; } __instance.FDLEFBMLMFM = GPOHFPAIEMA.DHLNNGGOJNI.Results; __instance.NFIBDGIOEIA = __instance.discussionTimer; __instance.GKGOFBGECAK = exiled; __instance.GBOFEFNNKCF = tie; __instance.SkipVoteButton.gameObject.SetActive(false); __instance.SkippedVoting.gameObject.SetActive(true); PopulateResults(__instance, states, votes); __instance.LLMHJIDIDFK(); }