internal PBEAbilityPacket(ReadOnlyCollection <byte> buffer, BinaryReader r, PBEBattle battle) { Buffer = buffer; AbilityOwner = (PBEFieldPosition)r.ReadByte(); AbilityOwnerTeam = battle.Teams[r.ReadByte()]; Pokemon2 = (PBEFieldPosition)r.ReadByte(); Pokemon2Team = battle.Teams[r.ReadByte()]; Ability = (PBEAbility)r.ReadByte(); AbilityAction = (PBEAbilityAction)r.ReadByte(); }
internal PBEAbilityPacket(byte[] data, EndianBinaryReader r, PBEBattle battle) { Data = new ReadOnlyCollection <byte>(data); AbilityOwner = r.ReadEnum <PBEFieldPosition>(); AbilityOwnerTeam = battle.Teams[r.ReadByte()]; Pokemon2 = r.ReadEnum <PBEFieldPosition>(); Pokemon2Team = battle.Teams[r.ReadByte()]; Ability = r.ReadEnum <PBEAbility>(); AbilityAction = r.ReadEnum <PBEAbilityAction>(); }
public PBEAbilityPacket(PBEPokemon abilityOwner, PBEPokemon pokemon2, PBEAbility ability, PBEAbilityAction abilityAction) { var bytes = new List <byte>(); bytes.AddRange(BitConverter.GetBytes(Code)); bytes.Add((byte)(AbilityOwner = abilityOwner.FieldPosition)); bytes.Add((AbilityOwnerTeam = abilityOwner.Team).Id); bytes.Add((byte)(Pokemon2 = pokemon2.FieldPosition)); bytes.Add((Pokemon2Team = pokemon2.Team).Id); bytes.Add((byte)(Ability = ability)); bytes.Add((byte)(AbilityAction = abilityAction)); Buffer = BitConverter.GetBytes((short)bytes.Count).Concat(bytes); }
internal PBEAbilityPacket(PBEPokemon abilityOwner, PBEPokemon pokemon2, PBEAbility ability, PBEAbilityAction abilityAction) { var bytes = new List <byte>(); bytes.AddRange(BitConverter.GetBytes(Code)); bytes.Add((byte)(AbilityOwner = abilityOwner.FieldPosition)); bytes.Add((AbilityOwnerTeam = abilityOwner.Team).Id); bytes.Add((byte)(Pokemon2 = pokemon2.FieldPosition)); bytes.Add((Pokemon2Team = pokemon2.Team).Id); bytes.Add((byte)(Ability = ability)); bytes.Add((byte)(AbilityAction = abilityAction)); bytes.InsertRange(0, BitConverter.GetBytes((short)bytes.Count)); Buffer = new ReadOnlyCollection <byte>(bytes); }
public PBEAbilityPacket(byte[] buffer, PBEBattle battle) { Buffer = buffer; using (var r = new BinaryReader(new MemoryStream(buffer))) { r.ReadInt16(); // Skip Code AbilityOwner = (PBEFieldPosition)r.ReadByte(); AbilityOwnerTeam = battle.Teams[r.ReadByte()]; Pokemon2 = (PBEFieldPosition)r.ReadByte(); Pokemon2Team = battle.Teams[r.ReadByte()]; Ability = (PBEAbility)r.ReadByte(); AbilityAction = (PBEAbilityAction)r.ReadByte(); } }
internal PBEAbilityPacket(PBEPokemon abilityOwner, PBEPokemon pokemon2, PBEAbility ability, PBEAbilityAction abilityAction) { using (var ms = new MemoryStream()) using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16)) { w.Write(Code); w.Write(AbilityOwner = abilityOwner.FieldPosition); w.Write((AbilityOwnerTeam = abilityOwner.Team).Id); w.Write(Pokemon2 = pokemon2.FieldPosition); w.Write((Pokemon2Team = pokemon2.Team).Id); w.Write(Ability = ability); w.Write(AbilityAction = abilityAction); Data = new ReadOnlyCollection <byte>(ms.ToArray()); } }
public static bool VerifyAbilityHappened(this PBEBattle battle, PBEBattlePokemon abilityOwner, PBEBattlePokemon pokemon2, PBEAbility ability, PBEAbilityAction abilityAction) { foreach (IPBEPacket packet in battle.Events) { if (packet is PBEAbilityPacket ap && ap.Ability == ability && ap.AbilityAction == abilityAction && ap.AbilityOwnerTrainer.TryGetPokemon(ap.AbilityOwner) == abilityOwner && ap.Pokemon2Trainer.TryGetPokemon(ap.Pokemon2) == pokemon2) { return(true); } } return(false); }