コード例 #1
0
 internal PBEStatus2Packet(byte[] data, EndianBinaryReader r, PBEBattle battle)
 {
     Data                = new ReadOnlyCollection <byte>(data);
     Status2Receiver     = r.ReadEnum <PBEFieldPosition>();
     Status2ReceiverTeam = battle.Teams[r.ReadByte()];
     Pokemon2            = r.ReadEnum <PBEFieldPosition>();
     Pokemon2Team        = battle.Teams[r.ReadByte()];
     Status2             = r.ReadEnum <PBEStatus2>();
     StatusAction        = r.ReadEnum <PBEStatusAction>();
 }
コード例 #2
0
 internal PBEStatus1Packet(ReadOnlyCollection <byte> buffer, BinaryReader r, PBEBattle battle)
 {
     Buffer              = buffer;
     Status1Receiver     = (PBEFieldPosition)r.ReadByte();
     Status1ReceiverTeam = battle.Teams[r.ReadByte()];
     Pokemon2            = (PBEFieldPosition)r.ReadByte();
     Pokemon2Team        = battle.Teams[r.ReadByte()];
     Status1             = (PBEStatus1)r.ReadByte();
     StatusAction        = (PBEStatusAction)r.ReadByte();
 }
コード例 #3
0
        public PBEStatus1Packet(PBEPokemon status1Receiver, PBEPokemon pokemon2, PBEStatus1 status1, PBEStatusAction statusAction)
        {
            var bytes = new List <byte>();

            bytes.AddRange(BitConverter.GetBytes(Code));
            bytes.Add((byte)(Status1Receiver = status1Receiver.FieldPosition));
            bytes.Add((Status1ReceiverTeam = status1Receiver.Team).Id);
            bytes.Add((byte)(Pokemon2 = pokemon2.FieldPosition));
            bytes.Add((Pokemon2Team = pokemon2.Team).Id);
            bytes.Add((byte)(Status1 = status1));
            bytes.Add((byte)(StatusAction = statusAction));
            Buffer = BitConverter.GetBytes((short)bytes.Count).Concat(bytes);
        }
コード例 #4
0
 public PBEStatus1Packet(byte[] buffer, PBEBattle battle)
 {
     Buffer = buffer;
     using (var r = new BinaryReader(new MemoryStream(buffer)))
     {
         r.ReadInt16(); // Skip Code
         Status1Receiver     = (PBEFieldPosition)r.ReadByte();
         Status1ReceiverTeam = battle.Teams[r.ReadByte()];
         Pokemon2            = (PBEFieldPosition)r.ReadByte();
         Pokemon2Team        = battle.Teams[r.ReadByte()];
         Status1             = (PBEStatus1)r.ReadByte();
         StatusAction        = (PBEStatusAction)r.ReadByte();
     }
 }
コード例 #5
0
        internal PBEStatus1Packet(PBEPokemon status1Receiver, PBEPokemon pokemon2, PBEStatus1 status1, PBEStatusAction statusAction)
        {
            var bytes = new List <byte>();

            bytes.AddRange(BitConverter.GetBytes(Code));
            bytes.Add((byte)(Status1Receiver = status1Receiver.FieldPosition));
            bytes.Add((Status1ReceiverTeam = status1Receiver.Team).Id);
            bytes.Add((byte)(Pokemon2 = pokemon2.FieldPosition));
            bytes.Add((Pokemon2Team = pokemon2.Team).Id);
            bytes.Add((byte)(Status1 = status1));
            bytes.Add((byte)(StatusAction = statusAction));
            bytes.InsertRange(0, BitConverter.GetBytes((short)bytes.Count));
            Buffer = new ReadOnlyCollection <byte>(bytes);
        }
コード例 #6
0
 internal PBEStatus2Packet(PBEPokemon status2Receiver, PBEPokemon pokemon2, PBEStatus2 status2, PBEStatusAction statusAction)
 {
     using (var ms = new MemoryStream())
         using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16))
         {
             w.Write(Code);
             w.Write(Status2Receiver = status2Receiver.FieldPosition);
             w.Write((Status2ReceiverTeam = status2Receiver.Team).Id);
             w.Write(Pokemon2 = pokemon2.FieldPosition);
             w.Write((Pokemon2Team = pokemon2.Team).Id);
             w.Write(Status2      = status2);
             w.Write(StatusAction = statusAction);
             Data = new ReadOnlyCollection <byte>(ms.ToArray());
         }
 }
コード例 #7
0
 internal PBEStatus1Packet(PBEBattlePokemon status1Receiver, PBEBattlePokemon pokemon2, PBEStatus1 status1, PBEStatusAction statusAction)
 {
     using (var ms = new MemoryStream())
         using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16))
         {
             w.Write(Code);
             w.Write((Status1ReceiverTrainer = status1Receiver.Trainer).Id);
             w.Write(Status1Receiver = status1Receiver.FieldPosition);
             w.Write((Pokemon2Trainer = pokemon2.Trainer).Id);
             w.Write(Pokemon2     = pokemon2.FieldPosition);
             w.Write(Status1      = status1);
             w.Write(StatusAction = statusAction);
             Data = new ReadOnlyCollection <byte>(ms.GetBuffer());
         }
 }
コード例 #8
0
 public static bool VerifyStatus2Happened(this PBEBattle battle, PBEBattlePokemon status2Receiver, PBEBattlePokemon pokemon2, PBEStatus2 status2, PBEStatusAction statusAction)
 {
     foreach (IPBEPacket packet in battle.Events)
     {
         if (packet is PBEStatus2Packet s2p &&
             s2p.Status2 == status2 &&
             s2p.StatusAction == statusAction &&
             s2p.Status2ReceiverTrainer.TryGetPokemon(s2p.Status2Receiver) == status2Receiver &&
             s2p.Pokemon2Trainer.TryGetPokemon(s2p.Pokemon2) == pokemon2)
         {
             return(true);
         }
     }
     return(false);
 }