Пример #1
0
 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();
 }
Пример #2
0
 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>();
 }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
 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();
     }
 }
Пример #6
0
 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());
         }
 }
Пример #7
0
 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);
 }