示例#1
0
        public void Tick(TimeSpan deltaTime)
        {
            if (CurrentResearch != null && CurrentResearchPoints >= CurrentResearch.ResearchPointsRequired)
            {
                ResearchedTechnologies.Add(CurrentResearch);

                CurrentResearch.EndAction?.Invoke(this);

                CurrentResearchPoints -= CurrentResearch.ResearchPointsRequired;
                CurrentResearch        = null;
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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;
            }
        }