public void ChangeEvoProgress(Player player, float amount) { // if the player enters a new era if (playerEvoProgressDick[player] + amount / eraTimeStatsDick[player.Era][0] >= eraTimeStatsDick[player.Era][1]) { float excessRes = (playerEvoProgressDick[player] + amount / eraTimeStatsDick[player.Era][0] - eraTimeStatsDick[player.Era][1]) * eraTimeStatsDick[player.Era][0]; float newAmount = amount - excessRes; playerEvoProgressDick [player] += newAmount / eraTimeStatsDick[player.Era][0]; Eras nextEra = GameManager.orderEraDick[GameManager.eraOrderDick[player.Era] + 1]; playerEvoProgressDick [player] += excessRes / eraTimeStatsDick[nextEra][0]; } else { playerEvoProgressDick [player] += amount / eraTimeStatsDick[player.Era][0]; } if (player == GameManager.HumanPlayer && playerEvoProgressDick[player] < player.GetMaxTotalUnique()) { evoProgressBar.rectTransform.anchorMax = new Vector2(playerEvoProgressDick[player], evoProgressBar.rectTransform.anchorMax.y); for (int i = nextUnlockableEPB; i < evoPanButts.Length; i++) { SpecializationButton sp = evoPanButts[i] as SpecializationButton; if (evoPanButts[i].position <= playerEvoProgressDick[player] && (sp == null || !sp.disabled && (sp.Era == Eras.StoneAge || sp.initiated))) { evoPanButts[i].button.interactable = true; } else if (evoPanButts[i].position > playerEvoProgressDick[player]) { nextUnlockableEPB = i; break; } } } // if New Era if (playerEvoProgressDick[player] >= eraTimeStatsDick[player.Era][1] && player.Era != Eras.Information) { player.NewEra(); if (player == GameManager.HumanPlayer) { GameManager.Hud.EraText.text = player.Era.ToString(); BuildMenu.NextEra(player.Era); LocalUpgradesMenu.NewEra(); if (gameObject.activeSelf) { StartCoroutine(newEraAnnouncement.NewEraBitches(player.Era)); } else { openNewEraOnNextEnable = true; GameManager.Hud.StartFlashButton(evolutionButton.image, new BoolMethod(delegate { return(openNewEraOnNextEnable); })); } } } }