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); } ); }
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)); }
//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); }