public PBEPkmnSwitchInPacket_Hidden(PBEPkmnSwitchInPacket other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } using (var ms = new MemoryStream()) using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16)) { w.Write(Code); w.Write((Trainer = other.Trainer).Id); var switchIns = new PBESwitchInInfo[other.SwitchIns.Count]; for (int i = 0; i < switchIns.Length; i++) { switchIns[i] = new PBESwitchInInfo(other.SwitchIns[i]); } byte count = (byte)(SwitchIns = new ReadOnlyCollection <PBESwitchInInfo>(switchIns)).Count; w.Write(count); for (int i = 0; i < count; i++) { SwitchIns[i].ToBytes(w); } w.Write(Forced = other.Forced); if (Forced) { w.Write((ForcedByPokemonTrainer = other.ForcedByPokemonTrainer).Id); w.Write(ForcedByPokemon = other.ForcedByPokemon); } Data = new ReadOnlyCollection <byte>(ms.ToArray()); } }
public PBEPkmnSwitchInPacket MakeHidden() { var hiddenSwitchIns = new PBESwitchInInfo[SwitchIns.Count]; for (int i = 0; i < hiddenSwitchIns.Length; i++) { PBESwitchInInfo s = SwitchIns[i]; hiddenSwitchIns[i] = new PBESwitchInInfo(byte.MaxValue, byte.MaxValue, s.Species, s.Nickname, s.Level, s.Shiny, s.Gender, ushort.MinValue, ushort.MinValue, s.HPPercentage, s.Status1, s.FieldPosition); } return(new PBEPkmnSwitchInPacket(Team, hiddenSwitchIns, Forced, ForcedByPokemonPosition, ForcedByPokemonTeam)); }
internal PBEPkmnSwitchInPacket(ReadOnlyCollection <byte> buffer, BinaryReader r, PBEBattle battle) { Buffer = buffer; Team = battle.Teams[r.ReadByte()]; var switches = new PBESwitchInInfo[r.ReadSByte()]; for (int i = 0; i < switches.Length; i++) { switches[i] = new PBESwitchInInfo(r); } SwitchIns = new ReadOnlyCollection <PBESwitchInInfo>(switches); Forced = r.ReadBoolean(); }
public PBEPkmnSwitchInPacket(byte[] buffer, PBEBattle battle) { using (var r = new BinaryReader(new MemoryStream(buffer))) { r.ReadInt16(); // Skip Code Team = battle.Teams[r.ReadByte()]; var switches = new PBESwitchInInfo[r.ReadByte()]; for (int i = 0; i < switches.Length; i++) { switches[i] = PBESwitchInInfo.FromBytes(r); } SwitchIns = Array.AsReadOnly(switches); Forced = r.ReadBoolean(); } }
internal PBEPkmnSwitchInPacket(byte[] data, EndianBinaryReader r, PBEBattle battle) { Data = new ReadOnlyCollection <byte>(data); Team = battle.Teams[r.ReadByte()]; var switches = new PBESwitchInInfo[r.ReadSByte()]; for (int i = 0; i < switches.Length; i++) { switches[i] = new PBESwitchInInfo(r); } SwitchIns = new ReadOnlyCollection <PBESwitchInInfo>(switches); Forced = r.ReadBoolean(); if (Forced) { ForcedByPokemonPosition = r.ReadEnum <PBEFieldPosition>(); ForcedByPokemonTeam = battle.Teams[r.ReadByte()]; } }