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(); }
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>(); }
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); }
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); }
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(); } }
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()); } }
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); }