public PBEPkmnSwitchInPacket_Hidden(PBEPkmnSwitchInPacket other)
 {
     if (other == null)
     {
         throw new ArgumentNullException(nameof(other));
     }
     using (var ms = new MemoryStream())
         using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16))
         {
             w.Write(Code);
             w.Write((Trainer = other.Trainer).Id);
             var switchIns = new PBESwitchInInfo[other.SwitchIns.Count];
             for (int i = 0; i < switchIns.Length; i++)
             {
                 switchIns[i] = new PBESwitchInInfo(other.SwitchIns[i]);
             }
             byte count = (byte)(SwitchIns = new ReadOnlyCollection <PBESwitchInInfo>(switchIns)).Count;
             w.Write(count);
             for (int i = 0; i < count; i++)
             {
                 SwitchIns[i].ToBytes(w);
             }
             w.Write(Forced = other.Forced);
             if (Forced)
             {
                 w.Write((ForcedByPokemonTrainer = other.ForcedByPokemonTrainer).Id);
                 w.Write(ForcedByPokemon = other.ForcedByPokemon);
             }
             Data = new ReadOnlyCollection <byte>(ms.ToArray());
         }
 }
        public PBEPkmnSwitchInPacket MakeHidden()
        {
            var hiddenSwitchIns = new PBESwitchInInfo[SwitchIns.Count];

            for (int i = 0; i < hiddenSwitchIns.Length; i++)
            {
                PBESwitchInInfo s = SwitchIns[i];
                hiddenSwitchIns[i] = new PBESwitchInInfo(byte.MaxValue, byte.MaxValue, s.Species, s.Nickname, s.Level, s.Shiny, s.Gender, ushort.MinValue, ushort.MinValue, s.HPPercentage, s.Status1, s.FieldPosition);
            }
            return(new PBEPkmnSwitchInPacket(Team, hiddenSwitchIns, Forced, ForcedByPokemonPosition, ForcedByPokemonTeam));
        }
Exemplo n.º 3
0
        internal PBEPkmnSwitchInPacket(ReadOnlyCollection <byte> buffer, BinaryReader r, PBEBattle battle)
        {
            Buffer = buffer;
            Team   = battle.Teams[r.ReadByte()];
            var switches = new PBESwitchInInfo[r.ReadSByte()];

            for (int i = 0; i < switches.Length; i++)
            {
                switches[i] = new PBESwitchInInfo(r);
            }
            SwitchIns = new ReadOnlyCollection <PBESwitchInInfo>(switches);
            Forced    = r.ReadBoolean();
        }
 public PBEPkmnSwitchInPacket(byte[] buffer, PBEBattle battle)
 {
     using (var r = new BinaryReader(new MemoryStream(buffer)))
     {
         r.ReadInt16(); // Skip Code
         Team = battle.Teams[r.ReadByte()];
         var switches = new PBESwitchInInfo[r.ReadByte()];
         for (int i = 0; i < switches.Length; i++)
         {
             switches[i] = PBESwitchInInfo.FromBytes(r);
         }
         SwitchIns = Array.AsReadOnly(switches);
         Forced    = r.ReadBoolean();
     }
 }
        internal PBEPkmnSwitchInPacket(byte[] data, EndianBinaryReader r, PBEBattle battle)
        {
            Data = new ReadOnlyCollection <byte>(data);
            Team = battle.Teams[r.ReadByte()];
            var switches = new PBESwitchInInfo[r.ReadSByte()];

            for (int i = 0; i < switches.Length; i++)
            {
                switches[i] = new PBESwitchInInfo(r);
            }
            SwitchIns = new ReadOnlyCollection <PBESwitchInInfo>(switches);
            Forced    = r.ReadBoolean();
            if (Forced)
            {
                ForcedByPokemonPosition = r.ReadEnum <PBEFieldPosition>();
                ForcedByPokemonTeam     = battle.Teams[r.ReadByte()];
            }
        }