public void Tick(TimeSpan deltaTime) { if (CurrentResearch != null && CurrentResearchPoints >= CurrentResearch.ResearchPointsRequired) { ResearchedTechnologies.Add(CurrentResearch); CurrentResearch.EndAction?.Invoke(this); CurrentResearchPoints -= CurrentResearch.ResearchPointsRequired; CurrentResearch = null; } }
public bool BeginResearch(Research research) { var success = !ResearchedTechnologies.Contains(research) && (research == System.RootResearch || ResearchedTechnologies.Any(r => r.Children.Contains(research))); if (success) { CurrentResearch = research; } return(success); }
public override void Update() { base.Update(); if (CurrentResearch == null) { return; } foreach (var researcher in Researchers) { CurrentSciencePoints += researcher.SciencePointsPerSecond * Ecs.UpdateDelay.TotalSeconds; } if (CurrentSciencePoints >= CurrentResearch.RequiredSciencePoints) { ResearchedTechnologies.Add(CurrentResearch); CurrentResearch = null; CurrentSciencePoints = 0; } }