예제 #1
0
 private static void TransferPokemon(Queue <PokemonUiData> pokemonQueue)
 {
     if (pokemonQueue == null)
     {
         return;
     }
     while (pokemonQueue.Count > 0)
     {
         var pokemon = pokemonQueue.Dequeue();
         if (pokemon == null)
         {
             continue;
         }
         if (pokemon.OwnerBot != null && pokemon.OwnerBot.Started || _debugMode)
         {
             pokemon.OwnerBot.Session.AddActionToQueue(
                 async() =>
             {
                 await TransferPokemonTask.Execute(pokemon.OwnerBot.Session, pokemon.Id);
                 return(true);
             }, $"{TranslationEngine.GetDynamicTranslationString("%TRANSFER%", "Transfer")}: {pokemon.Name}", pokemon.Id);
             pokemon.InAction = true;
         }
     }
 }
        private void btnTransferAll_Click(object sender, RoutedEventArgs e)
        {
            var data = DataContext as PokemonListModel;
            var pokemonToTransfer = data.Pokemons
                                    .Where(x => x.IsSelected && !x.IsTransfering && Session.Inventory.CanTransferPokemon(x.PokemonData))
                                    .Select(x => x.Id)
                                    .ToList();

            if (pokemonToTransfer.Count > 0)
            {
                data.Transfer(pokemonToTransfer);
                if (MessageBox.Show("Do you want to transfer all selected pokemon", "Bulk transfer", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    Task.Run(async() =>
                    {
                        await TransferPokemonTask.Execute(
                            Session, Session.CancellationTokenSource.Token, pokemonToTransfer
                            );
                    });
                }
            }
            else
            {
                // There are no transferrable pokemon selected.
            }
        }
예제 #3
0
        private async void HandleMessage(WebSocketSession session, string message)
        {
            Models.SocketMessage msgObj = null;
            var command = message;

            try
            {
                msgObj  = JsonConvert.DeserializeObject <Models.SocketMessage>(message);
                command = msgObj.Command;
            }
            catch { }

            // Action request from UI should not be broadcasted to all client
            Action <IEvent> action = (evt) => session.Send(Serialize(evt));

            switch (command)
            {
            case "PokemonList":
                await PokemonListTask.Execute(_session, action);

                break;

            case "EggsList":
                await EggsListTask.Execute(_session, action);

                break;

            case "InventoryList":
                await InventoryListTask.Execute(_session, action);

                break;

            case "PlayerStats":
                await PlayerStatsTask.Execute(_session, action);

                break;

            case "GetPokemonSettings":
                await PokemonSettingsTask.Execute(_session, action);

                break;

            case "TransferPokemon":
                if (msgObj?.Data != null)
                {
                    await TransferPokemonTask.Execute(_session, ulong.Parse(msgObj?.Data));
                }
                break;

            case "EvolvePokemon":
                if (msgObj?.Data != null)
                {
                    await EvolveSpecificPokemonTask.Execute(_session, ulong.Parse(msgObj?.Data), default(CancellationToken));
                }
                break;
            }
        }
예제 #4
0
 public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
 {
     await TransferPokemonTask.Execute(
         session,
         session.CancellationTokenSource.Token,
         new List <ulong>
     {
         (ulong)message.PokemonId
     }
         );
 }
예제 #5
0
        private async void HandleMessage(WebSocketSession session, string message)
        {
            Models.SocketMessage msgObj = null;
            var command = message;

            Console.WriteLine(message);
            try
            {
                msgObj  = JsonConvert.DeserializeObject <Models.SocketMessage>(message);
                command = msgObj.Command;
            }
            catch (Exception ex) { Logger.Write(ex.Message, LogLevel.Error); }

            // Action request from UI should not be broadcasted to all client
            Action <IEvent> action = (evt) => session.Send(Serialize(evt));

            switch (command)
            {
            case "PokemonList":
                await PokemonListTask.Execute(_session, action);

                break;

            case "EggsList":
                await EggsListTask.Execute(_session, action);

                break;

            case "InventoryList":
                await InventoryListTask.Execute(_session, action);

                break;

            case "PlayerStats":
                await PlayerStatsTask.Execute(_session, action);

                break;

            case "GetPokemonSettings":
                await PokemonSettingsTask.Execute(_session, action);

                break;

            case "TransferPokemon":
                await TransferPokemonTask.Execute(_session, msgObj?.Data);

                break;

            case "EvolvePokemon":
                await EvolveSpecificPokemonTask.Execute(_session, msgObj?.Data);

                break;
            }
        }
예제 #6
0
        /*
         * private void UpdateEvolveAllButtonState()
         * {
         *  var data = DataContext as PokemonListViewModel;
         *  var count = data.Pokemons.Count(x => x.IsSelected && Session.Inventory.CanEvolvePokemon(x.PokemonData));
         *  //TODO : Thought it will better to use binding.
         *  btnEvolveAll.Content = $"Evolve All ({count})";
         *  btnEvolveAll.IsEnabled = count > 0;
         * }
         */
        private async void BtnTransfer_Click(object sender, RoutedEventArgs e)
        {
            var model = DataContext as PokemonListViewModel;

            ulong pokemonId = (ulong)((Button)sender).CommandParameter;

            model.Transfer(pokemonId);
            var button = sender as Button;

            await TransferPokemonTask.Execute(
                Session, Session.CancellationTokenSource.Token, new List <ulong> {
                pokemonId
            }
                );
        }
예제 #7
0
 private async void TransferPokemon(Queue <PokemonUiData> pokemonQueue, ListBox pokeListBox)
 {
     if (pokemonQueue == null)
     {
         return;
     }
     pokeListBox.IsEnabled = false;
     while (pokemonQueue.Count > 0)
     {
         var pokemon = pokemonQueue.Dequeue();
         if (pokemon?.OwnerBot != null && pokemon.OwnerBot.Started)
         {
             await TransferPokemonTask.Execute(pokemon.OwnerBot.Session, pokemon.Id);
         }
     }
     pokeListBox.IsEnabled = true;
 }
        private void btnTransfer_Click(object sender, RoutedEventArgs e)
        {
            var model = this.DataContext as PokemonListModel;

            ulong pokemonId = (ulong)((Button)sender).CommandParameter;

            model.Transfer(pokemonId);
            var button = sender as Button;

            //button.Content = "Transfering...";
            //button.IsEnabled = false;

            Task.Run(async() =>
            {
                await TransferPokemonTask.Execute(
                    Session, Session.CancellationTokenSource.Token, new List <ulong> {
                    pokemonId
                }
                    );
            });
        }
예제 #9
0
        public async Task PostLoginExecute()
        {
            Logger.Write($"Client logged in", LogLevel.Info);

            while (true)
            {
                if (!_isInitialized)
                {
                    await Inventory.GetCachedInventory();

                    _playerProfile = await _client.Player.GetPlayer();

                    BotStats.UpdateConsoleTitle();

                    var stats = await Inventory.GetPlayerStats();

                    var stat = stats.FirstOrDefault();
                    if (stat != null)
                    {
                        BotStats.KmWalkedOnStart = stat.KmWalked;
                    }

                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
                    if (_clientSettings.AuthType == AuthType.Ptc)
                    {
                        Logger.Write($"PTC Account: {BotStats.GetUsername(_playerProfile)}\n", LogLevel.None, ConsoleColor.Cyan);
                    }
                    Logger.Write($"Latitude: {_clientSettings.DefaultLatitude}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Longitude: {_clientSettings.DefaultLongitude}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
                    Logger.Write("Your Account:\n");
                    Logger.Write($"Name: {BotStats.GetUsername(_playerProfile)}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Team: {_playerProfile.PlayerData.Team}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Level: {BotStats.GetCurrentInfo()}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write($"Stardust: {_playerProfile.PlayerData.Currencies.ToArray()[1].Amount}", LogLevel.None, ConsoleColor.DarkGray);
                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
                    await DisplayHighests();

                    Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);

                    var pokemonsToNotTransfer = _clientSettings.PokemonsToNotTransfer;
                    var pokemonsToNotCatch    = _clientSettings.PokemonsToNotCatch;
                    var pokemonsToEvolve      = _clientSettings.PokemonsToEvolve;

                    await RecycleItemsTask.Execute();

                    if (_client.Settings.UseLuckyEggs)
                    {
                        await UseLuckyEggTask.Execute();
                    }
                    if (_client.Settings.EvolvePokemon || _client.Settings.EvolvePokemonAboveIV)
                    {
                        await EvolvePokemonTask.Execute();
                    }
                    if (_client.Settings.TransferPokemon)
                    {
                        await TransferPokemonTask.Execute();
                    }
                    await ExportPokemonToCsv.Execute(_playerProfile.PlayerData);

                    if (_clientSettings.HatchEggs)
                    {
                        await HatchEggsTask.Execute();
                    }
                }
                _isInitialized = true;
                await Main();

                await RefreshTokens();

                /*
                 * Example calls below
                 *
                 * var profile = await _client.GetProfile();
                 * var settings = await _client.GetSettings();
                 * var mapObjects = await _client.GetMapObjects();
                 * var inventory = await _client.GetInventory();
                 * var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0);
                 */

                await Task.Delay(10000);
            }
        }
예제 #10
0
 private static async void TransferPokemon(ISession session, PokemonUiData pokemon)
 {
     await TransferPokemonTask.Execute(session, pokemon.Id);
 }
예제 #11
0
 public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
 {
     await TransferPokemonTask.Execute(session, webSocketSession, (ulong)message.PokemonId, (string)message.RequestID);
 }
예제 #12
0
        public async Task PrintPlayerInfos(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            await Inventory.GetCachedInventory();

            _playerProfile = await _client.Player.GetPlayer();

            BotStats.UpdateConsoleTitle();

            var playerStats = (await Inventory.GetPlayerStats()).FirstOrDefault();

            if (playerStats != null)
            {
                BotStats.KmWalkedOnStart = playerStats.KmWalked;
            }

            Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
            if (_clientSettings.AuthType == AuthType.Ptc)
            {
                Logger.Write($"PTC Account: {BotStats.GetUsername(_playerProfile)}\n", LogLevel.None,
                             ConsoleColor.Cyan);
            }
            Logger.Write($"Latitude: {_clientSettings.DefaultLatitude}", LogLevel.None,
                         ConsoleColor.DarkGray);
            Logger.Write($"Longitude: {_clientSettings.DefaultLongitude}", LogLevel.None,
                         ConsoleColor.DarkGray);
            Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
            Logger.Write("Your Account:\n");
            Logger.Write($"Name: {BotStats.GetUsername(_playerProfile)}", LogLevel.None,
                         ConsoleColor.DarkGray);
            Logger.Write($"Team: {_playerProfile.PlayerData.Team}", LogLevel.None, ConsoleColor.DarkGray);
            Logger.Write($"Level: {BotStats.GetCurrentInfo()}", LogLevel.None, ConsoleColor.DarkGray);
            Logger.Write($"Stardust: {_playerProfile.PlayerData.Currencies.ToArray()[1].Amount}",
                         LogLevel.None, ConsoleColor.DarkGray);
            Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);
            await DisplayHighests();

            Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow);

            var pokemonToNotTransfer = _clientSettings.PokemonToNotTransfer;
            var pokemonsToNotCatch   = _clientSettings.PokemonToNotCatch;
            var pokemonsToEvolve     = _clientSettings.PokemonToEvolve;

            await RecycleItemsTask.Execute();

            if (_client.Settings.UseLuckyEggs)
            {
                await UseLuckyEggTask.Execute();
            }
            if (_client.Settings.EvolvePokemon || _client.Settings.EvolveOnlyPokemonAboveIV)
            {
                await EvolvePokemonTask.Execute();
            }
            if (_client.Settings.TransferPokemon)
            {
                await TransferPokemonTask.Execute();
            }
            if (_client.Settings.UseCSVExport)
            {
                await ExportPokemonToCsv.Execute(_playerProfile.PlayerData);
            }
            if (_clientSettings.HatchEggs)
            {
                await HatchEggsTask.Execute();
            }
        }