private void SelectedPokemonForSwitch(int partyIndex) { _menuState = BattleMenuState.Off; Battle.ActiveBattle.StartRound(new BattleAction { ActionType = BattleActionType.Switch, SwitchToIndex = partyIndex }); }
IEnumerator Start() { while (!SceneLobby.Instance) { yield return(null); } SceneLobby.Instance.OnChangedMenu += OnChangedMenu; battleMenuState = BattleMenuState.Quest; yield break; }
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); }
/// <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; } }
// sets menu to main public void ResetMenu() { _battleTextbox.Close(); _menuState = BattleMenuState.Main; }
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; } } }