public void DisplayResults(InvasionSolution solution, long numSearchStates, long numSolutionsFound, float difficultyRating) { DisplaySolution(solution); OptimalResultsParent.SetActive(true); NumSearchStates.text = numSearchStates.ToString(); NumSolutionsFound.text = numSolutionsFound.ToString(); DifficultyRating.text = difficultyRating.ToString("0.00"); }
private void DisplaySolution(InvasionSolution solution) { SuccessResult.text = solution.IsCompleteSolution.ToString(); NumWavesResult.text = solution.NumTurnsToSolve.ToString(); InitialCities.text = solution.InitialNation.Fortifications.Count.ToString(); FinalCities.text = solution.FinalNation.NumCitiesRemaining.ToString(); InitialArmyHealth.text = solution.InitialArmy.Health.ToString(); FinalArmyHealth.text = solution.FinalArmy.Health.ToString(); }
IEnumerator AnimateInvasion(InvasionSolution solution) { yield return(new WaitForFixedUpdate()); AnimationNavigationParent.SetActive(false); SimulationButtonParent.gameObject.SetActive(true); ToggleAutoContinue(true); ContinueButton.interactable = false; mIsWaitingOnContinue = false; float subArmyAnimationDuration = mAnimationDuration * AnimationSpeed; float assaultHealthDuration = mAnimationDuration * AnimationSpeed; float reformAnimationDuration = mAnimationDuration * AnimationSpeed; List <InvasionWave> bestSolution = solution.InvasionOrder; for (int i = 0; i < bestSolution.Count; ++i) { WaveText.text = "WAVE " + (i + 1); List <AssaultTemplate> attackWave = bestSolution[i].Wave; Debug.Assert(DefaultArmyNumber >= attackWave.Count); List <ArmyBlueprint> subArmies = new List <ArmyBlueprint>(); foreach (var wave in attackWave) { subArmies.Add(wave.Attackers); } FormSubArmies(subArmies, subArmyAnimationDuration); yield return(_WaitForInputAfterAnimation(subArmyAnimationDuration * 1.5f)); // display "Attack wave #" int subArmyIdx = 0; foreach (AssaultTemplate attack in attackWave) { ArmyBlueprint afterAttack = attack.AssaultFortification(false); mArmyControllers[subArmyIdx].UpdateHealth(afterAttack, assaultHealthDuration); if (!attack.ToAssault.IsPlaceHolderFort) { NationController.DestroyFort(attack.ToAssault, assaultHealthDuration); yield return(_WaitForInputAfterAnimation(assaultHealthDuration * 1.5f)); } afterAttack.Heal(); mArmyControllers[subArmyIdx].UpdateHealth(afterAttack, assaultHealthDuration); yield return(_WaitForInputAfterAnimation(assaultHealthDuration * 1.5f)); subArmyIdx++; } MergeSubArmies(reformAnimationDuration); NationController.UpgradeForts(reformAnimationDuration); yield return(_WaitForInputAfterAnimation(reformAnimationDuration * 1.5f)); } WaveText.text = "Invasion Complete!"; yield return(new WaitForSeconds(reformAnimationDuration * 1.5f)); }
private IEnumerator _BeginAnimation(InvasionSolution defaultSolution, InvasionSolution optimizedSolution) { AnimationText.text = "Sequential Invasion"; mMainArmy.gameObject.SetActive(true); mMainArmy.ResetArmy(); NationController.ResetNation(); mMainArmy.Initialize(defaultSolution.InitialArmy); NationController.InitializeNation(defaultSolution.InitialNation); yield return(AnimateInvasion(defaultSolution)); AnimationText.text = "Parallel Invasion"; mMainArmy.ResetArmy(); mMainArmy.Initialize(optimizedSolution.InitialArmy); NationController.ResetNation(); NationController.InitializeNation(optimizedSolution.InitialNation); yield return(AnimateInvasion(optimizedSolution)); SimulationButtonParent.SetActive(false); AnimationNavigationParent.SetActive(true); }
public void BeginAnimation(InvasionSolution defaultSolution, InvasionSolution optimizedSolution) { mMainArmy.BoundingArea = mMainArmyZoneSize = ArmyZone.GetComponent <RectTransform>().rect.size; StartCoroutine(_BeginAnimation(defaultSolution, optimizedSolution)); }
public void DisplayResults(InvasionSolution solution) { DisplaySolution(solution); OptimalResultsParent.SetActive(false); }