Example #1
0
        static void VoteControllerDeserialize(On.RoR2.VoteController.orig_OnDeserialize orig, VoteController self, NetworkReader reader, bool initialState)
        {
            orig(self, reader, initialState);
            if (reader.Position < reader.Length && !Run.instance)
            {
                if (TargetedRuleBook != null && TargetedRuleChoiceMask != null)
                {
                    byte[] ruleBookBytes       = TargetedRuleBook.GetFieldValue <byte[]>("ruleValues");
                    byte[] ruleChoiceMaskBytes = (byte[])TargetedRuleChoiceMask.GetType().BaseType.GetField("bytes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(TargetedRuleChoiceMask);

                    for (int i = ruleBookBytes.Length - RegisteredVoteSelections.Count; i < ruleBookBytes.Length; i++)
                    {
                        ruleBookBytes[i] = reader.ReadByte();
                    }

                    int difference = ruleChoiceMaskBytes.Length - ((RuleCatalog.choiceCount - RegisteredVoteChoices.Count) + 7 >> 3);
                    for (int i = ruleChoiceMaskBytes.Length - difference; i < ruleChoiceMaskBytes.Length; i++)
                    {
                        ruleChoiceMaskBytes[i] = reader.ReadByte();
                    }

                    TargetedRuleBook       = null;
                    TargetedRuleChoiceMask = null;
                }
            }
        }
Example #2
0
        static void RuleChoiceMaskDeserialize(On.RoR2.RuleChoiceMask.orig_Deserialize orig, RuleChoiceMask self, NetworkReader reader)
        {
            byte[] bytes      = (byte[])self.GetType().BaseType.GetField("bytes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(self);
            int    difference = bytes.Length - ((RuleCatalog.choiceCount - RegisteredVoteChoices.Count) + 7 >> 3);

            for (int i = 0; i < bytes.Length - difference; i++)
            {
                bytes[i] = reader.ReadByte();
            }
            TargetedRuleChoiceMask = self;
        }
Example #3
0
        static void RuleChoiceMaskSerialize(On.RoR2.RuleChoiceMask.orig_Serialize orig, RuleChoiceMask self, NetworkWriter writer)
        {
            byte[] bytes      = (byte[])self.GetType().BaseType.GetField("bytes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(self);
            int    difference = bytes.Length - ((RuleCatalog.choiceCount - RegisteredVoteChoices.Count) + 7 >> 3);

            for (int i = 0; i < bytes.Length - difference; i++)
            {
                writer.Write(bytes[i]);
            }
            for (int i = bytes.Length - difference; i < bytes.Length; i++)
            {
                RuleChoiceMaskExtraBytes.Add(bytes[i]);
            }
        }