// ----------------------------------------------------------------------------- public bool OnPlayerAttackSelected(int moveId) { if (m_playerPokemon.m_ppCurrent[moveId] == 0) { return(false); } m_playerAction = new CAttackAction(moveId); GoToState(EBattleStates.eOrderOfActionSelection); return(true); }
// ----------------------------------------------------------------------------- void GoToState(EBattleStates state) { if (m_battleState != state) { m_battleState = state; switch (state) { case EBattleStates.eSelection: { // Run AI during player selection SelectNextAIAction(); } break; case EBattleStates.eOrderOfActionSelection: { SelectOrderOfActions(); GoToState(EBattleStates.eAtkPhase1); } break; case EBattleStates.eAtkPhase1: { ResolveAttackPhase(EBattleStates.eAtkPhase1); } break; case EBattleStates.eAtkPhase2: { ResolveAttackPhase(EBattleStates.eAtkPhase2); } break; case EBattleStates.eEndTurn: { m_playerAction = null; m_AiAction = null; m_isPlayerInPhase1 = false; GoToState(EBattleStates.eSelection); } break; default: break; } } }
// ----------------------------------------------------------------------------- void Reset() { m_playerAttacking = false; m_playerPokeValues.Reset(); m_oppPokeValues.Reset(); m_lastAttackInfo.Reset(); m_battleValues.Reset(); m_playerPokemon = null; m_opponentPokemon = null; m_battleState = EBattleStates.eNone; m_blockedByAnimation = false; m_isPlayerInPhase1 = false; m_playerAction = null; m_AiAction = null; }
// ----------------------------------------------------------------------------- // -------------------------- AI ------------------------------------- // ----------------------------------------------------------------------------- void SelectNextAIAction() { //TODO - for now, select attack at random // 1/ count number of attack available int numberAttack = 0; for (int i = 0; i < 4; i++) { if (m_opponentPokemon.m_moveSet[i] != -1) { numberAttack++; } } // 2/ select one at random int randAttackIndex = Random.Range(0, numberAttack); // 3/ push action m_AiAction = new CAttackAction(m_opponentPokemon.m_moveSet[randAttackIndex]); }
// ----------------------------------------------------------------------------- public void RunFromFight() { m_playerAction = new CRunAction(); GoToState(EBattleStates.eOrderOfActionSelection); }