public PBEPkmnSwitchOutPacket_Hidden(PBEPkmnSwitchOutPacket other)
 {
     using (var ms = new MemoryStream())
         using (var w = new EndianBinaryWriter(ms, encoding: EncodingType.UTF16))
         {
             w.Write(Code);
             w.Write((PokemonTrainer = other.PokemonTrainer).Id);
             w.Write(OldPosition = other.OldPosition);
             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 PBEPkmnSwitchOutPacket_Hidden(PBEPkmnSwitchOutPacket 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((PokemonTrainer = other.PokemonTrainer).Id);
             w.Write(OldPosition = other.OldPosition);
             w.Write(Forced      = other.Forced);
             if (Forced)
             {
                 w.Write((ForcedByPokemonTrainer = other.ForcedByPokemonTrainer).Id);
                 w.Write(ForcedByPokemon = other.ForcedByPokemon);
             }
             Data = new ReadOnlyCollection <byte>(ms.GetBuffer());
         }
 }
Example #3
0
        /// <inheritdoc />
        public INetPacket CreatePacket(byte[] bytes)
        {
            INetPacket packet;

            using (var r = new BinaryReader(new MemoryStream(bytes)))
            {
                var list = new List <byte>(bytes);
                list.InsertRange(0, BitConverter.GetBytes((short)bytes.Length));
                var   buffer = new ReadOnlyCollection <byte>(list);
                short code   = r.ReadInt16();
                switch (code)
                {
                case PBEResponsePacket.Code: packet = new PBEResponsePacket(buffer, r, _battle); break;

                case PBEPlayerJoinedPacket.Code: packet = new PBEPlayerJoinedPacket(buffer, r, _battle); break;

                case PBEMatchCancelledPacket.Code: packet = new PBEMatchCancelledPacket(buffer, r, _battle); break;

                case PBEPartyRequestPacket.Code: packet = new PBEPartyRequestPacket(buffer, r, _battle); break;

                case PBEPartyResponsePacket.Code: packet = new PBEPartyResponsePacket(buffer, r, _battle); break;

                case PBETeamPacket.Code: packet = new PBETeamPacket(buffer, r, _battle); break;

                case PBEPkmnSwitchInPacket.Code: packet = new PBEPkmnSwitchInPacket(buffer, r, _battle); break;

                case PBEActionsRequestPacket.Code: packet = new PBEActionsRequestPacket(buffer, r, _battle); break;

                case PBEActionsResponsePacket.Code: packet = new PBEActionsResponsePacket(buffer, r, _battle); break;

                case PBEMoveUsedPacket.Code: packet = new PBEMoveUsedPacket(buffer, r, _battle); break;

                case PBEPkmnHPChangedPacket.Code: packet = new PBEPkmnHPChangedPacket(buffer, r, _battle); break;

                case PBEMoveEffectivenessPacket.Code: packet = new PBEMoveEffectivenessPacket(buffer, r, _battle); break;

                case PBEPkmnSwitchOutPacket.Code: packet = new PBEPkmnSwitchOutPacket(buffer, r, _battle); break;

                case PBEMoveMissedPacket.Code: packet = new PBEMoveMissedPacket(buffer, r, _battle); break;

                case PBEPkmnFaintedPacket.Code: packet = new PBEPkmnFaintedPacket(buffer, r, _battle); break;

                case PBEMoveCritPacket.Code: packet = new PBEMoveCritPacket(buffer, r, _battle); break;

                case PBEPkmnStatChangedPacket.Code: packet = new PBEPkmnStatChangedPacket(buffer, r, _battle); break;

                case PBEStatus1Packet.Code: packet = new PBEStatus1Packet(buffer, r, _battle); break;

                case PBEStatus2Packet.Code: packet = new PBEStatus2Packet(buffer, r, _battle); break;

                case PBETeamStatusPacket.Code: packet = new PBETeamStatusPacket(buffer, r, _battle); break;

                case PBEWeatherPacket.Code: packet = new PBEWeatherPacket(buffer, r, _battle); break;

                case PBEMoveFailedPacket.Code: packet = new PBEMoveFailedPacket(buffer, r, _battle); break;

                case PBEItemPacket.Code: packet = new PBEItemPacket(buffer, r, _battle); break;

                case PBEMovePPChangedPacket.Code: packet = new PBEMovePPChangedPacket(buffer, r, _battle); break;

                case PBETransformPacket.Code: packet = new PBETransformPacket(buffer, r, _battle); break;

                case PBEAbilityPacket.Code: packet = new PBEAbilityPacket(buffer, r, _battle); break;

                case PBESpecialMessagePacket.Code: packet = new PBESpecialMessagePacket(buffer, r, _battle); break;

                case PBEBattleStatusPacket.Code: packet = new PBEBattleStatusPacket(buffer, r, _battle); break;

                case PBEPsychUpPacket.Code: packet = new PBEPsychUpPacket(buffer, r, _battle); break;

                case PBESwitchInRequestPacket.Code: packet = new PBESwitchInRequestPacket(buffer, r, _battle); break;

                case PBESwitchInResponsePacket.Code: packet = new PBESwitchInResponsePacket(buffer, r, _battle); break;

                case PBEIllusionPacket.Code: packet = new PBEIllusionPacket(buffer, r, _battle); break;

                case PBEWinnerPacket.Code: packet = new PBEWinnerPacket(buffer, r, _battle); break;

                case PBETurnBeganPacket.Code: packet = new PBETurnBeganPacket(buffer, r, _battle); break;

                case PBEMoveLockPacket.Code: packet = new PBEMoveLockPacket(buffer, r, _battle); break;

                case PBEPkmnFormChangedPacket.Code: packet = new PBEPkmnFormChangedPacket(buffer, r, _battle); break;

                case PBEAutoCenterPacket.Code: packet = new PBEAutoCenterPacket(buffer, r, _battle); break;

                default: throw new ArgumentOutOfRangeException(nameof(code));
                }
            }
            return(packet);
        }
        /// <inheritdoc />
        public INetPacket CreatePacket(byte[] buffer)
        {
            INetPacket packet;
            short      code = BitConverter.ToInt16(buffer, 0);

            switch (code)
            {
            case PBEResponsePacket.Code: packet = new PBEResponsePacket(buffer, battle); break;

            case PBEPlayerJoinedPacket.Code: packet = new PBEPlayerJoinedPacket(buffer, battle); break;

            case PBEMatchCancelledPacket.Code: packet = new PBEMatchCancelledPacket(buffer, battle); break;

            case PBEPartyRequestPacket.Code: packet = new PBEPartyRequestPacket(buffer, battle); break;

            case PBEPartyResponsePacket.Code: packet = new PBEPartyResponsePacket(buffer, battle); break;

            case PBESetPartyPacket.Code: packet = new PBESetPartyPacket(buffer, battle); break;

            case PBEPkmnSwitchInPacket.Code: packet = new PBEPkmnSwitchInPacket(buffer, battle); break;

            case PBEActionsRequestPacket.Code: packet = new PBEActionsRequestPacket(buffer, battle); break;

            case PBEActionsResponsePacket.Code: packet = new PBEActionsResponsePacket(buffer, battle); break;

            case PBEMoveUsedPacket.Code: packet = new PBEMoveUsedPacket(buffer, battle); break;

            case PBEPkmnHPChangedPacket.Code: packet = new PBEPkmnHPChangedPacket(buffer, battle); break;

            case PBEMoveEffectivenessPacket.Code: packet = new PBEMoveEffectivenessPacket(buffer, battle); break;

            case PBEPkmnSwitchOutPacket.Code: packet = new PBEPkmnSwitchOutPacket(buffer, battle); break;

            case PBEMoveMissedPacket.Code: packet = new PBEMoveMissedPacket(buffer, battle); break;

            case PBEPkmnFaintedPacket.Code: packet = new PBEPkmnFaintedPacket(buffer, battle); break;

            case PBEMoveCritPacket.Code: packet = new PBEMoveCritPacket(buffer, battle); break;

            case PBEPkmnStatChangedPacket.Code: packet = new PBEPkmnStatChangedPacket(buffer, battle); break;

            case PBEStatus1Packet.Code: packet = new PBEStatus1Packet(buffer, battle); break;

            case PBEStatus2Packet.Code: packet = new PBEStatus2Packet(buffer, battle); break;

            case PBETeamStatusPacket.Code: packet = new PBETeamStatusPacket(buffer, battle); break;

            case PBEWeatherPacket.Code: packet = new PBEWeatherPacket(buffer, battle); break;

            case PBEMoveFailedPacket.Code: packet = new PBEMoveFailedPacket(buffer, battle); break;

            case PBEItemPacket.Code: packet = new PBEItemPacket(buffer, battle); break;

            case PBEMovePPChangedPacket.Code: packet = new PBEMovePPChangedPacket(buffer, battle); break;

            case PBETransformPacket.Code: packet = new PBETransformPacket(buffer, battle); break;

            case PBEAbilityPacket.Code: packet = new PBEAbilityPacket(buffer, battle); break;

            case PBESpecialMessagePacket.Code: packet = new PBESpecialMessagePacket(buffer, battle); break;

            case PBEBattleStatusPacket.Code: packet = new PBEBattleStatusPacket(buffer, battle); break;

            case PBEPsychUpPacket.Code: packet = new PBEPsychUpPacket(buffer, battle); break;

            case PBESwitchInRequestPacket.Code: packet = new PBESwitchInRequestPacket(buffer, battle); break;

            case PBESwitchInResponsePacket.Code: packet = new PBESwitchInResponsePacket(buffer, battle); break;

            case PBEIllusionPacket.Code: packet = new PBEIllusionPacket(buffer, battle); break;

            case PBEWinnerPacket.Code: packet = new PBEWinnerPacket(buffer, battle); break;

            case PBETurnBeganPacket.Code: packet = new PBETurnBeganPacket(buffer, battle); break;

            case PBEMoveLockPacket.Code: packet = new PBEMoveLockPacket(buffer, battle); break;

            case PBEPkmnFormChangedPacket.Code: packet = new PBEPkmnFormChangedPacket(buffer, battle); break;

            case PBEAutoCenterPacket.Code: packet = new PBEAutoCenterPacket(buffer, battle); break;

            default: throw new ArgumentOutOfRangeException(nameof(code));
            }
            return(packet);
        }