コード例 #1
0
 internal PBEItemPacket(ReadOnlyCollection <byte> buffer, BinaryReader r, PBEBattle battle)
 {
     Buffer         = buffer;
     ItemHolder     = (PBEFieldPosition)r.ReadByte();
     ItemHolderTeam = battle.Teams[r.ReadByte()];
     Pokemon2       = (PBEFieldPosition)r.ReadByte();
     Pokemon2Team   = battle.Teams[r.ReadByte()];
     Item           = (PBEItem)r.ReadUInt16();
     ItemAction     = (PBEItemAction)r.ReadByte();
 }
コード例 #2
0
 internal PBEItemPacket(byte[] data, EndianBinaryReader r, PBEBattle battle)
 {
     Data = new ReadOnlyCollection <byte>(data);
     ItemHolderTrainer = battle.Trainers[r.ReadByte()];
     ItemHolder        = r.ReadEnum <PBEFieldPosition>();
     Pokemon2Trainer   = battle.Trainers[r.ReadByte()];
     Pokemon2          = r.ReadEnum <PBEFieldPosition>();
     Item       = r.ReadEnum <PBEItem>();
     ItemAction = r.ReadEnum <PBEItemAction>();
 }
コード例 #3
0
        public PBEItemPacket(PBEPokemon itemHolder, PBEPokemon pokemon2, PBEItem item, PBEItemAction itemAction)
        {
            var bytes = new List <byte>();

            bytes.AddRange(BitConverter.GetBytes(Code));
            bytes.Add((byte)(ItemHolder = itemHolder.FieldPosition));
            bytes.Add((ItemHolderTeam = itemHolder.Team).Id);
            bytes.Add((byte)(Pokemon2 = pokemon2.FieldPosition));
            bytes.Add((Pokemon2Team = pokemon2.Team).Id);
            bytes.AddRange(BitConverter.GetBytes((ushort)(Item = item)));
            bytes.Add((byte)(ItemAction = itemAction));
            Buffer = BitConverter.GetBytes((short)bytes.Count).Concat(bytes);
        }
コード例 #4
0
        internal PBEItemPacket(PBEPokemon itemHolder, PBEPokemon pokemon2, PBEItem item, PBEItemAction itemAction)
        {
            var bytes = new List <byte>();

            bytes.AddRange(BitConverter.GetBytes(Code));
            bytes.Add((byte)(ItemHolder = itemHolder.FieldPosition));
            bytes.Add((ItemHolderTeam = itemHolder.Team).Id);
            bytes.Add((byte)(Pokemon2 = pokemon2.FieldPosition));
            bytes.Add((Pokemon2Team = pokemon2.Team).Id);
            bytes.AddRange(BitConverter.GetBytes((ushort)(Item = item)));
            bytes.Add((byte)(ItemAction = itemAction));
            bytes.InsertRange(0, BitConverter.GetBytes((short)bytes.Count));
            Buffer = new ReadOnlyCollection <byte>(bytes);
        }
コード例 #5
0
 public PBEItemPacket(byte[] buffer, PBEBattle battle)
 {
     Buffer = buffer;
     using (var r = new BinaryReader(new MemoryStream(buffer)))
     {
         r.ReadInt16(); // Skip Code
         ItemHolder     = (PBEFieldPosition)r.ReadByte();
         ItemHolderTeam = battle.Teams[r.ReadByte()];
         Pokemon2       = (PBEFieldPosition)r.ReadByte();
         Pokemon2Team   = battle.Teams[r.ReadByte()];
         Item           = (PBEItem)r.ReadUInt16();
         ItemAction     = (PBEItemAction)r.ReadByte();
     }
 }
コード例 #6
0
 internal PBEItemPacket(PBEBattlePokemon itemHolder, PBEBattlePokemon pokemon2, PBEItem item, PBEItemAction itemAction)
 {
     using (var ms = new MemoryStream())
         using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16))
         {
             w.Write(Code);
             w.Write((ItemHolderTrainer = itemHolder.Trainer).Id);
             w.Write(ItemHolder = itemHolder.FieldPosition);
             w.Write((Pokemon2Trainer = pokemon2.Trainer).Id);
             w.Write(Pokemon2   = pokemon2.FieldPosition);
             w.Write(Item       = item);
             w.Write(ItemAction = itemAction);
             Data = new ReadOnlyCollection <byte>(ms.ToArray());
         }
 }
コード例 #7
0
 public static bool VerifyItemHappened(this PBEBattle battle, PBEBattlePokemon itemHolder, PBEBattlePokemon pokemon2, PBEItem item, PBEItemAction itemAction)
 {
     foreach (IPBEPacket packet in battle.Events)
     {
         if (packet is PBEItemPacket ip &&
             ip.Item == item &&
             ip.ItemAction == itemAction &&
             ip.ItemHolderTrainer.TryGetPokemon(ip.ItemHolder) == itemHolder &&
             ip.Pokemon2Trainer.TryGetPokemon(ip.Pokemon2) == pokemon2)
         {
             return(true);
         }
     }
     return(false);
 }