public TechnologyViewModel(int level, ITechnology res) { this.Level = level; this.Name = res.Name; this.Description = res.Description; this.MaxLevel = res.MaxLevel; this.Prerequisite = res.Prerequisite; this.RequiredResearchTime = this.Level < this.MaxLevel ? res.ResearchTime[this.Level + 1].TotalMinutes : 0; this.Modifiers = res.Modifier; var requiredResources = res.GetRequiredResources(this.Level + 1); this.RequiredEnergy = requiredResources[0]; this.RequiredCrystals = requiredResources[1]; this.RequiredMetal = requiredResources[2]; }
private bool CanResearch(PlayerObject pO, int toLevel, ITechnology techLogic) { if (pO.Technologies.CurrentlyResearching != CurrentlyResearching.None) { return false; } if (toLevel > techLogic.MaxLevel) { return false; } if (pO.Buildings.ResearchCentreLevel < techLogic.Prerequisite) { return false; } var requiredResources = techLogic.GetRequiredResources(toLevel); return pO.Resources.Energy > requiredResources[0] && pO.Resources.Crystal > requiredResources[1] && pO.Resources.Metal > requiredResources[2]; }