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