Beispiel #1
0
 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);
        }
Beispiel #3
0
 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());
                }
        }
Beispiel #5
0
 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());
         }
 }
Beispiel #6
0
 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);
 }