private void RequireInput(InputRequest request)
 {
     _time   = 180 - request.Time;
     Request = request;
     request.Init(Controller.Game);
     request.InputFinished += (i) =>
     {
         SelectedPanel = INACTIVE;
         Controller.Input(i);
         Timer.Stop();
     };
     if (request.IsSendOut)
     {
         _selectedPanel = POKEMONS;
     }
     else
     {
         _selectedPanel = MAIN;
         _mega          = false;
         var op = new SimPokemon[Controller.Game.OnboardPokemons.Length];
         for (int i = 0; i < op.Length; ++i)
         {
             if (Controller.Game.OnboardPokemons[i] != null)
             {
                 op[i] = Controller.Game.OnboardPokemons[i].Pokemon;
             }
         }
         OnboardPokemons = op;
         if (_targetPanel != null)
         {
             _targetPanel.PO1.Pokemon = Game.Board[1 - Controller.Player.Team, 1];
             _targetPanel.PO0.Pokemon = Game.Board[1 - Controller.Player.Team, 0];
             _targetPanel.P0.Pokemon  = op[0];
             _targetPanel.P1.Pokemon  = op[1];
         }
     }
     {
         var step = Game.Settings.Mode.PlayersPerTeam();
         var i    = 0;
         foreach (var pm in Controller.Game.Team[0].Pokemons)
         {
             _pokemons[i] = pm;
             i           += step;
         }
         if (step == 2)
         {
             i = 1;
             foreach (var pm in Controller.Game.Team[1].Pokemons)
             {
                 _pokemons[i] = pm;
                 i           += step;
             }
         }
     }
     Timer.Start();
     OnPropertyChanged();
 }