public void Restart() { // if (Mutations.HasFlag(VirusMutations.BreakQuarantine)) { Mutations &= ~VirusMutations.BreakQuarantine; } if (Mutations.HasFlag(VirusMutations.SpreadQuicker)) { Mutations &= ~VirusMutations.SpreadQuicker; } if (Mutations.HasFlag(VirusMutations.SpreadEasier)) { Mutations &= ~VirusMutations.SpreadEasier; } Mutations = VirusMutations.None; delayElapsed = 10f; currentInfection = null; Timer = initTimer; }
void Update() { if (Timer < 0f) { Timer = 0f; } if (GameManager.State == GameState.Playing) { if (delay > delayElapsed) //if not finished delay { delayElapsed += Time.deltaTime; return; } timeElapsed += Time.deltaTime; if (timeElapsed >= Timer) { //chance to infect other sibling file //just infect corecomponents //but //or random mutation //if thing is root folder //lose if (Mutations.HasFlag(VirusMutations.BreakQuarantine | VirusMutations.SpreadEasier | VirusMutations.SpreadQuicker)) { //just infect - add to event log Infect(); } else { int mutationChance = Helpers.RandomHelper.RandomInt(0, 100); if (mutationChance > ChanceToMutate) { //mutate if (!Mutations.HasFlag(VirusMutations.SpreadQuicker)) { Mutations |= VirusMutations.SpreadQuicker; Timer -= 1f; GameManager.UIManager.SpreadQuicker.SetActive(true); } else if (!Mutations.HasFlag(VirusMutations.SpreadEasier)) { Mutations |= VirusMutations.SpreadEasier; GameManager.UIManager.SpreadEasier.SetActive(true); } else if (!Mutations.HasFlag(VirusMutations.BreakQuarantine)) { Mutations |= VirusMutations.BreakQuarantine; GameManager.UIManager.BreakQuarantine.SetActive(true); } //update mutations display //add to event log GameManager.ComputerManager.AddToEventLog("Mutated", Color.red); } else { Infect(); //add to event log } } timeElapsed = 0f; } GameManager.UIManager.SetVirusCountdown(Timer - timeElapsed); } }