public IEnumerator SetDamageResults(bool isPlayer, float attackDamage, QuestionResultCountModel answerParam, Action action)
    {
        totalDamageText.enabled   = true;
        hitComboCountText.enabled = true;


        int awesomeCounter = 0;

        for (int i = 0; i <= answerParam.correctCount; i++)
        {
            string attackAnimName = "attack" + (i % 3);
            //random animation
            ScreenBattleController.Instance.partAvatars.SetTriggerAnim(isPlayer, attackAnimName);

            ScreenBattleController.Instance.partAvatars.LoadHitEffect(false);
            //load power effect in arms for every awesome count
            if (i < PlayerManager.GetQuestionResultCount(true).speedyAwesomeCount)
            {
                ScreenBattleController.Instance.partAvatars.LoadArmPowerEffect(true);
            }
            if ((i + 1) > 1)
            {
                hitComboCountText.text = "" + (i + 1) + "Hits";
            }
            else
            {
                hitComboCountText.text = "" + (i + 1) + "Hit";
            }


            ;

            //wait for attack animation to finish
            yield return(StartCoroutine(AttackWaitAnimationCoroutine(isPlayer, attackAnimName)));
        }

        action();
        yield return(new WaitForSeconds(0.5f));

        totalDamageText.text = attackDamage + " DAMAGE";
        if (answerParam.correctCount >= 5)
        {
            yield return(new WaitForSeconds(0.5f));

            yield return(StartCoroutine(ShowAwesomeIndicatorCoroutine(true)));
        }


        yield return(new WaitForSeconds(1));

        Destroy(this.gameObject);
    }
    private void StartQuestion()
    {
        if (questionSystem == null)
        {
            questionSystem = SystemResourceController.Instance.LoadPrefab("QuestionSystem", this.gameObject);
        }
        else
        {
            questionSystem.SetActive(true);
        }
        QuestionSystemController.Instance.StartQuestionRound(
            questionType
            , delegate(List <QuestionResultModel> resultList) {
            int correctCount       = resultList.Count(p => p.isCorrect == true);
            int awesomeSpeedyCount = resultList.Count(p => p.speedyType == QuestionSystemEnums.SpeedyType.Awesome);
            int goodSpeedyCount    = resultList.Count(p => p.speedyType == QuestionSystemEnums.SpeedyType.Good);
            int rottenSpeedyCount  = resultList.Count(p => p.speedyType == QuestionSystemEnums.SpeedyType.Rotten);

            //:TO-DO count speedyawesome and speedygood and include in computation
            //bonus get from answers
            float correctGPBonus           = correctCount * MyConst.gameSettings.correctGPBonus;
            float correctDamageBonus       = correctCount * MyConst.gameSettings.correctDamageBonus;
            float speedyAwesomeGPBonus     = awesomeSpeedyCount * MyConst.gameSettings.speedyAwesomeGPBonus;
            float speedyAwesomeDamageBonus = awesomeSpeedyCount * MyConst.gameSettings.speedyAwesomeDamageBonus;
            float speedyGoodGPBonus        = correctCount * MyConst.gameSettings.speedyGoodGPBonus;
            float speedyGoodDamageBonus    = correctCount * MyConst.gameSettings.speedyGoodDamageBonus;


            PlayerManager.SetIsPlayer(true);
            PlayerManager.Player.gp += correctGPBonus + speedyAwesomeGPBonus + speedyGoodGPBonus;
            PlayerManager.Player.td  = PlayerManager.Player.bd + correctDamageBonus + speedyAwesomeDamageBonus + speedyGoodDamageBonus;
            PlayerManager.UpdateStateUI(true);


            //send answer results to firebase
            QuestionResultCountModel questionResultCount = new QuestionResultCountModel(correctCount, awesomeSpeedyCount, goodSpeedyCount, rottenSpeedyCount);
            string param = JsonUtility.ToJson(questionResultCount);
            SystemFirebaseDBController.Instance.AnswerPhase(param);
            QuestionSystemController.Instance.HideQuestionParts();
            QuestionSystemReturnCallback();

            ScreenBattleController.Instance.partCharacter.ShowCharacters(true);
        }
            );
    }
示例#3
0
    public IEnumerator StartBattleAnimation(bool isPLayer, float attackDamage, Action action)
    {
        QuestionResultCountModel playerAnswerParam = PlayerManager.GetQuestionResultCount(true);
        QuestionResultCountModel enemyAnswerParam  = PlayerManager.GetQuestionResultCount(false);

        QuestionResultCountModel answerParam = null;
        GameObject damageResults;

        if (isPLayer)
        {
            answerParam   = playerAnswerParam;
            damageResults = SystemResourceController.Instance.LoadPrefab("PlayerDamageResults", this.gameObject);
        }
        else
        {
            answerParam   = enemyAnswerParam;
            damageResults = SystemResourceController.Instance.LoadPrefab("EnemyDamageResults", this.gameObject);
        }

        yield return(damageResults.GetComponent <DamageResultsController> ().SetDamageResults(isPLayer, attackDamage, answerParam, action));
    }
示例#4
0
    //Returns which player is to act first
    public static int GetBattleOrder()
    {
        int battleOrder = 0;
        QuestionResultCountModel playerAnswerParam = PlayerManager.GetQuestionResultCount(true);
        QuestionResultCountModel enemyAnswerParam  = PlayerManager.GetQuestionResultCount(false);

        //TO-DO: REFACTOR THIS CODE IF POSSIBLE
        if (playerAnswerParam.correctCount > enemyAnswerParam.correctCount)
        {
            battleOrder = 0;
        }
        else if (playerAnswerParam.correctCount < enemyAnswerParam.correctCount)
        {
            battleOrder = 1;
        }
        else
        {
            if (playerAnswerParam.speedyAwesomeCount > enemyAnswerParam.speedyAwesomeCount)
            {
                battleOrder = 0;
            }
            else if (playerAnswerParam.speedyAwesomeCount < enemyAnswerParam.speedyAwesomeCount)
            {
                battleOrder = 1;
            }
            else
            {
                if (playerAnswerParam.speedyGoodCount > enemyAnswerParam.speedyGoodCount)
                {
                    battleOrder = 0;
                }
                else if (playerAnswerParam.speedyGoodCount < enemyAnswerParam.speedyGoodCount)
                {
                    battleOrder = 1;
                }
                else
                {
                    if (playerAnswerParam.speedyRottenCount > enemyAnswerParam.speedyRottenCount)
                    {
                        battleOrder = 0;
                    }
                    else if (playerAnswerParam.speedyRottenCount < enemyAnswerParam.speedyRottenCount)
                    {
                        battleOrder = 1;
                    }
                    else
                    {
                        //TO-DO CHANGE TO RANDOM IN FUTURE ONLY 1 WILL CALCULATE NOT TWO DEVICES
                        if (GameManager.isHost)
                        {
                            battleOrder = 0;
                        }
                        else
                        {
                            battleOrder = 1;
                        }
                    }
                }
            }
        }
        return(battleOrder);
    }