예제 #1
0
 private void SelectedPokemonForSwitch(int partyIndex)
 {
     _menuState = BattleMenuState.Off;
     Battle.ActiveBattle.StartRound(new BattleAction
     {
         ActionType    = BattleActionType.Switch,
         SwitchToIndex = partyIndex
     });
 }
예제 #2
0
파일: UIBattle.cs 프로젝트: TimonYoon/Dev
    IEnumerator Start()
    {
        while (!SceneLobby.Instance)
        {
            yield return(null);
        }

        SceneLobby.Instance.OnChangedMenu += OnChangedMenu;

        battleMenuState = BattleMenuState.Quest;

        yield break;
    }
예제 #3
0
        private bool StartMultiTurnMove()
        {
            // checks if any multi turn move (fly, rollout, etc.) is active and runs it
            // returns whether such a move was initiated

            if (Battle.ActiveBattle.PlayerPokemon.IsFlying)
            {
                _menuState = BattleMenuState.Off;
                Battle.ActiveBattle.StartRound(new BattleAction
                {
                    ActionType = BattleActionType.Move,
                    MoveName   = "FLY",
                });
                return(true);
            }
            return(false);
        }
예제 #4
0
파일: UIBattle.cs 프로젝트: TimonYoon/Dev
 /// <summary> 영웅, 유물, 정보 등 토글버튼에 의해 전투 화면 메뉴가 변경될 때 </summary>
 /// <param name="value">토글버튼에 설정되어 있음</param>
 public void OnValueChangedMenu(string value)
 {
     if (value == "Hero")
     {
         battleMenuState = BattleMenuState.Hero;
     }
     else if (value == "Quest")
     {
         battleMenuState = BattleMenuState.Quest;
     }
     else if (value == "Artifact")
     {
         battleMenuState = BattleMenuState.Artifact;
     }
     else if (value == "Info")
     {
         battleMenuState = BattleMenuState.Info;
     }
 }
예제 #5
0
 // sets menu to main
 public void ResetMenu()
 {
     _battleTextbox.Close();
     _menuState = BattleMenuState.Main;
 }
예제 #6
0
        internal override void Update(GameTime gameTime)
        {
            if (_menuState == BattleMenuState.Main)
            {
                if (StartMultiTurnMove())
                {
                    return;
                }

                if (GameboyInputs.RightPressed() && _mainMenuIndex % 2 == 0)
                {
                    _mainMenuIndex++;
                }
                else if (GameboyInputs.LeftPressed() && _mainMenuIndex % 2 == 1)
                {
                    _mainMenuIndex--;
                }
                else if (GameboyInputs.DownPressed() && _mainMenuIndex < 2)
                {
                    _mainMenuIndex += 2;
                }
                else if (GameboyInputs.UpPressed() && _mainMenuIndex > 1)
                {
                    _mainMenuIndex -= 2;
                }

                if (GameboyInputs.APressed())
                {
                    switch (_mainMenuIndex)
                    {
                    case 0:     // FIGHT
                        // TODO: struggle
                        _menuState = BattleMenuState.Fight;
                        // after switching pokemon, the cursor for move selection might be in an invalid position
                        if (_moveMenuIndex >= Battle.ActiveBattle.PlayerPokemon.Pokemon.Moves.Length)
                        {
                            _moveMenuIndex = 0;
                        }
                        break;

                    case 1:     // PKMN
                    {
                        var partyScreen = new PartyScreen(this, Battle.ActiveBattle.PlayerPokemon.Pokemon, false);
                        partyScreen.LoadContent();
                        partyScreen.SelectedPokemon += SelectedPokemonForSwitch;
                        GetComponent <ScreenManager>().SetScreen(partyScreen);
                    }
                    break;

                    // TODO: inventory
                    case 3:     // RUN
                        // TODO: trainer battles
                        // TODO: trapping moves like BIND
                        _menuState = BattleMenuState.Off;
                        Battle.ActiveBattle.StartRound(new BattleAction
                        {
                            ActionType = BattleActionType.Run
                        });
                        break;
                    }
                }
            }
            else if (_menuState == BattleMenuState.Fight)
            {
                if (GameboyInputs.DownPressed())
                {
                    _moveMenuIndex++;
                    if (_moveMenuIndex == Battle.ActiveBattle.PlayerPokemon.Pokemon.Moves.Length)
                    {
                        _moveMenuIndex = 0;
                    }
                }
                else if (GameboyInputs.UpPressed())
                {
                    _moveMenuIndex--;
                    if (_moveMenuIndex == -1)
                    {
                        _moveMenuIndex = Battle.ActiveBattle.PlayerPokemon.Pokemon.Moves.Length - 1;
                    }
                }

                if (GameboyInputs.APressed())
                {
                    _menuState = BattleMenuState.Off;
                    Battle.ActiveBattle.StartRound(new BattleAction
                    {
                        ActionType = BattleActionType.Move,
                        MoveName   = Battle.ActiveBattle.PlayerPokemon.Pokemon.Moves[_moveMenuIndex].name
                    });
                }
                else if (GameboyInputs.BPressed())
                {
                    _menuState = BattleMenuState.Main;
                }
            }
            else
            {
                if (!_keepTextboxOpen)
                {
                    _battleTextbox.Update();
                }
                else
                {
                    if (_framesBeforeContinuing > 0)
                    {
                        _framesBeforeContinuing--;
                    }
                }

                _enemyPokemonStatus.Update();
                _playerPokemonStatus.Update();
                _pokemonStats.Update();

                lock (_animations)
                {
                    foreach (var animation in _animations)
                    {
                        if (!animation.IsFinished)
                        {
                            if (animation.WaitDelay > 0)
                            {
                                animation.WaitDelay--;
                            }
                            else
                            {
                                animation.Update();
                            }
                        }
                    }
                }
            }

            if (_fadeOut)
            {
                _fadeOutProgress += FADE_OUT_SPEED;
                if (_fadeOutProgress >= 1f)
                {
                    _fadeOutProgress = 1f;
                }
            }
        }