Пример #1
0
    public static float Get_Damage(Card card, UI_Parent player, CARD_TYPE enemyType)
    {
        float         damage = 0f;
        CARD_TYPE     myType = card._cardType;
        BATTLE_RESULT result = Get_BattleResult(myType, enemyType);

        // Character
        float AD = player._ad;
        float TC = ParserManager.TC[(int)myType][(int)result];
        float TE = (card._bEnhanced) ? ParserManager.TE[(int)myType] : 1f;

        // Item
        float AP = 0f;

        // Stage
        float FC = (Singleton.inGameManager._attribute == myType) ? ParserManager.FC : 1f;
        float QC = ParserManager.QC[Singleton.inGameManager._quarter];

        damage = (AD + AP) * TC * TE * FC * QC;
        damage = Mathf.Round(damage);

        // Log

        LogManager.Log("Type Counter : " + TC + " Type Enhanced : " + TE + " Field Control : " + FC + " Quarter Control : " + QC + " Total Damage : " + damage);

        return(damage);
    }
Пример #2
0
    public static BATTLE_RESULT Get_BattleResult(CARD_TYPE myType, CARD_TYPE enemyType)
    {
        BATTLE_RESULT result = BATTLE_RESULT.END;

        if (myType == CARD_TYPE.ATTACK)
        {
            if (enemyType == CARD_TYPE.ATTACK)
            {
                result = BATTLE_RESULT.DRAW;
            }
            else if (enemyType == CARD_TYPE.DEFEND)
            {
                result = BATTLE_RESULT.LOSE;
            }
            else if (enemyType == CARD_TYPE.HEAL)
            {
                result = BATTLE_RESULT.WIN;
            }
        }
        else if (myType == CARD_TYPE.DEFEND)
        {
            if (enemyType == CARD_TYPE.ATTACK)
            {
                result = BATTLE_RESULT.WIN;
            }
            else if (enemyType == CARD_TYPE.DEFEND)
            {
                result = BATTLE_RESULT.DRAW;
            }
            else if (enemyType == CARD_TYPE.HEAL)
            {
                result = BATTLE_RESULT.LOSE;
            }
        }
        else if (myType == CARD_TYPE.HEAL)
        {
            if (enemyType == CARD_TYPE.ATTACK)
            {
                result = BATTLE_RESULT.LOSE;
            }
            else if (enemyType == CARD_TYPE.DEFEND)
            {
                result = BATTLE_RESULT.WIN;
            }
            else if (enemyType == CARD_TYPE.HEAL)
            {
                result = BATTLE_RESULT.DRAW;
            }
        }

        return(result);
    }
Пример #3
0
    IEnumerator Play_Anim(BATTLE_RESULT result)
    {
        // 달려가기
        StartCoroutine(_myPlayer.PlayAnim("At_Dr_Ready"));
        yield return(StartCoroutine(_enemyPlayer.PlayAnim("At_Dr_Ready")));

        // 이펙트
        yield return(StartCoroutine(_effectAttack.Play_Anim("Ef_Attack_01")));

        // 카드 오픈
        StartCoroutine(_uiPlayer._SelectCardView.PlayAnim("Open"));
        yield return(StartCoroutine(_uiEnemy._SelectCardView.PlayAnim("Open")));

        // 캐릭터 뒤로가기
        if (result == BATTLE_RESULT.WIN)
        {
            StartCoroutine(_myPlayer.PlayAnim("At_Result_Win_1"));
            StartCoroutine(_enemyPlayer.PlayAnim("At_Result_Lose"));
        }
        else if (result == BATTLE_RESULT.DRAW)
        {
            StartCoroutine(_myPlayer.PlayAnim("At_Dr_Back"));
            StartCoroutine(_enemyPlayer.PlayAnim("At_Dr_Back"));
        }
        else if (result == BATTLE_RESULT.LOSE)
        {
            StartCoroutine(_myPlayer.PlayAnim("At_Result_Lose"));
            StartCoroutine(_enemyPlayer.PlayAnim("At_Result_Win_1"));
        }

        // 깎일 데미지
        StartCoroutine(_uiPlayer.PlayDamagedAnim("Damaged_Count"));
        yield return(StartCoroutine(_uiEnemy.PlayDamagedAnim("Damaged_Count")));

        // 체력 감소
        StartCoroutine(_uiPlayer.PlayHpAnim());
        StartCoroutine(_uiEnemy.PlayHpAnim());

        yield return(new WaitUntil(() => (_uiPlayer._hpDamaged == 0) && (_uiEnemy._hpDamaged == 0)));

        if ((_uiPlayer._hp <= 0f && _uiEnemy._hp <= 0f)) // 듀스
        {
            if (!_bDuece)
            {
                (Singleton.popUpManager.Get_PopUp("SystemMessage") as SystemMessage).ShowMessage("듀스", 0.5f, false);
            }

            StartCoroutine(PlayDeuce());
        }
        else if (_uiPlayer._hp <= 0f)
        {
            (Singleton.popUpManager.Get_PopUp("SystemMessage") as SystemMessage).ShowMessage("LOSE", 1f, true);
            Singleton.popUpManager.Get_PopUp("SystemMessage").SetCallBackFunc(gameObject, "GoToMain");
        }
        else if (_uiEnemy._hp <= 0f)
        {
            (Singleton.popUpManager.Get_PopUp("SystemMessage") as SystemMessage).ShowMessage("WIN", 1f, true);
            Singleton.popUpManager.Get_PopUp("SystemMessage").SetCallBackFunc(gameObject, "GoToMain");
        }
        else
        {
            if (_bDuece)
            {
                StartCoroutine(PlayDeuce());
            }
            else
            {
                AnimFinish();
            }
        }

        yield return(null);
    }