internal PBETeamStatusPacket(byte[] data, EndianBinaryReader r, PBEBattle battle) { Data = new ReadOnlyCollection <byte>(data); Team = battle.Teams[r.ReadByte()]; TeamStatus = r.ReadEnum <PBETeamStatus>(); TeamStatusAction = r.ReadEnum <PBETeamStatusAction>(); }
} // PBEFieldPosition.None means no victim public PBETeamStatusPacket(PBETeam team, PBETeamStatus teamStatus, PBETeamStatusAction teamStatusAction, PBEPokemon damageVictim) { var bytes = new List <byte>(); bytes.AddRange(BitConverter.GetBytes(Code)); bytes.Add((Team = team).Id); bytes.Add((byte)(TeamStatus = teamStatus)); bytes.Add((byte)(TeamStatusAction = teamStatusAction)); bytes.Add((byte)(DamageVictim = damageVictim == null ? PBEFieldPosition.None : damageVictim.FieldPosition)); Buffer = BitConverter.GetBytes((short)bytes.Count).Concat(bytes); }
internal PBETeamStatusPacket(PBETeam team, PBETeamStatus teamStatus, PBETeamStatusAction teamStatusAction) { using (var ms = new MemoryStream()) using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16)) { w.Write(Code); w.Write((Team = team).Id); w.Write(TeamStatus = teamStatus); w.Write(TeamStatusAction = teamStatusAction); Data = new ReadOnlyCollection <byte>(ms.ToArray()); } }
} // PBEFieldPosition.None means no victim internal PBETeamStatusPacket(PBETeam team, PBETeamStatus teamStatus, PBETeamStatusAction teamStatusAction, PBEPokemon damageVictim) { using (var ms = new MemoryStream()) using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16)) { w.Write(Code); w.Write((Team = team).Id); w.Write(TeamStatus = teamStatus); w.Write(TeamStatusAction = teamStatusAction); w.Write(DamageVictim = damageVictim == null ? PBEFieldPosition.None : damageVictim.FieldPosition); Data = new ReadOnlyCollection <byte>(ms.ToArray()); } }
internal PBETeamStatusPacket(PBETeam team, PBETeamStatus teamStatus, PBETeamStatusAction teamStatusAction, PBEBattlePokemon damageVictim = null) { using (var ms = new MemoryStream()) using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16)) { w.Write(Code); w.Write((Team = team).Id); w.Write(TeamStatus = teamStatus); w.Write(TeamStatusAction = teamStatusAction); w.Write(damageVictim != null); if (damageVictim != null) { w.Write((DamageVictimTrainer = damageVictim.Trainer).Id); w.Write(DamageVictim = damageVictim.FieldPosition); } Data = new ReadOnlyCollection <byte>(ms.GetBuffer()); } }
public static bool VerifyTeamStatusHappened(this PBEBattle battle, PBETeam team, PBETeamStatus teamStatus, PBETeamStatusAction teamStatusAction, PBEBattlePokemon damageVictim = null) { foreach (IPBEPacket packet in battle.Events) { if (packet is PBETeamStatusPacket tsp && tsp.Team == team && tsp.TeamStatus == teamStatus && tsp.TeamStatusAction == teamStatusAction && tsp.DamageVictimTrainer?.TryGetPokemon(tsp.DamageVictim) == damageVictim) { return(true); } } return(false); }