Пример #1
0
    private IEnumerator PlayerSkillThreeAttack()
    {
        state = FightState.ENEMYTURN;

        bool isDead = BattleLogicManager.AttackWithSkill(playerUnit, enemyUnit, playerUnit.equippedSkills[2]);

        enemyHUD.SetHP(enemyUnit.currentHP);
        playerHUD.SetMP(playerUnit.CurrentMP);

        yield return(new WaitForSeconds(2f));

        if (isDead)
        {
            state = FightState.WON;
            playerUnit.GainExperience(enemyUnit.rewardExp);
            playerUnit.GainGold(enemyUnit.rewardGold);
            EndFight(playerUnit, enemyUnit, 1);
        }
        else
        {
            enemyHUD.SetHP(enemyUnit.currentHP);
            enemyHUD.SetMP(enemyUnit.CurrentMP);
            playerHUD.SetHP(playerUnit.currentHP);
            playerHUD.SetMP(playerUnit.CurrentMP);

            StartCoroutine(EnemyTurn());
        }
    }
Пример #2
0
        public void Init(BattleData _battleData)
        {
            m_BattleData     = _battleData;
            m_BattleLogicMgr = new BattleLogicManager(m_BattleData, m_BattleData.mSeed);

            m_BattleScene = new BattleScene(m_BattleLogicMgr);

            m_TimeObj = TimerHelper.AddFrame(m_BattleData.mBattleKey, OnUpdate);
        }
Пример #3
0
 /// <summary>
 /// 初始化使用Udp网络的游戏数据
 /// </summary>
 public void InitUdpGame()
 {
     LoadJsonData();
     m_PlayerMoveManager  = new PlayerMoveManager();
     m_BattleLogicManager = new BattleLogicManager();
     m_BulletManager      = new BulletManager();
     m_SpawnManager       = new SpawnManager();
     m_GridManager        = new GridManager();
     m_GridManager.InitGrid();
 }
Пример #4
0
    private IEnumerator EnemyTurn()
    {
        //enemy ai goes here
        enemyTurnIndicator.SetActive(true);
        playerTurnIndicator.SetActive(false);
        currentRound += 0.5f;

        yield return(new WaitForSeconds(1f));

        bool isDead    = false;
        bool skillUsed = false;

        foreach (var skill in enemyUnit.equippedSkills)
        {
            if (enemyUnit.CurrentMP >= skill.EnergyCost && skillUsed == false)
            {
                int attackChoice = Random.Range(0, 2);

                if (attackChoice == 1)
                {
                    skillUsed = true;
                    isDead    = BattleLogicManager.AttackWithSkill(enemyUnit, playerUnit, skill);
                }
            }
        }

        if (skillUsed == false)
        {
            isDead = BattleLogicManager.PerformNormalAttack(enemyUnit, playerUnit);
        }

        playerHUD.SetHP(playerUnit.currentHP);
        enemyHUD.SetMP(enemyUnit.CurrentMP);

        yield return(new WaitForSeconds(1f));

        if (isDead)
        {
            state = FightState.LOST;
            EndFight(enemyUnit, playerUnit, 0);
        }
        else
        {
            enemyHUD.SetHP(enemyUnit.currentHP);
            enemyHUD.SetMP(enemyUnit.CurrentMP);
            playerHUD.SetHP(playerUnit.currentHP);
            playerHUD.SetMP(playerUnit.CurrentMP);

            state = FightState.PLAYERTURN;
            StartCoroutine(PlayerTurn());

            roundDisplayText.text = $"Round: {(int)currentRound}";
        }
    }
Пример #5
0
 public BattleScene(BattleLogicManager battleLogicMgr)
 {
     m_BattleLogicMgr = battleLogicMgr;
 }