Ejemplo n.º 1
0
        private PopupDialog DrawResearchUi()
        {
            padding = 0;
            float scienceCount = 0;
            List <DialogGUIBase> dialogElements = new List <DialogGUIBase>();
            List <DialogGUIBase> innerElements  = new List <DialogGUIBase>();

            innerElements.Add(new DialogGUIContentSizer(ContentSizeFitter.FitMode.Unconstrained, ContentSizeFitter.FitMode.PreferredSize, true));
            innerElements.Add(new DialogGUISpace(10));
            if (ResearchManager.Instance.ProcessingScience.Count == 0)
            {
                innerElements.Add(new DialogGUIHorizontalLayout(PaddedLabel("No research in progress", false)));
            }
            for (int i = 0; i < ResearchManager.Instance.ProcessingScience.Count; i++)
            {
                ScienceEvent se = ResearchManager.Instance.ProcessingScience.ElementAt(i).Value;
                if (se.IsComplete)
                {
                    continue;
                }
                scienceCount += se.RemainingScience;
                innerElements.Add(new DialogGUIHorizontalLayout(PaddedLabel(se.UiName + ": " + Math.Round(se.OriginalScience - se.RemainingScience, 1) + "/" + Math.Round(se.OriginalScience, 1), false)));
            }

            dialogElements.Add(new DialogGUIScrollList(new Vector2(300, 300), false, true, new DialogGUIVerticalLayout(10, 100, 4, new RectOffset(6, 24, 10, 10), TextAnchor.UpperLeft, innerElements.ToArray())));
            DialogGUIBase[] horizontal = new DialogGUIBase[3];
            horizontal[0] = new DialogGUILabel("Processing Science: " + Math.Round(scienceCount, 1));
            horizontal[1] = new DialogGUILabel("|");
            double scienceOutput = ResearchManager.Instance.ThisMonthsBudget / SettingsClass.Instance.ScienceMultiplier * ResearchManager.Instance.ScienceMultiplier;

            horizontal[2] = new DialogGUILabel("Research Output: " + Math.Round(scienceOutput, 1));
            dialogElements.Add(new DialogGUIHorizontalLayout(horizontal));
            dialogElements.Add(GetBoxes("research"));
            return(PopupDialog.SpawnPopupDialog(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new MultiOptionDialog("ResearchDialog", "", "Bureaucracy: Research", UISkinManager.GetSkin("MainMenuSkin"), GetRect(dialogElements), dialogElements.ToArray()), false, UISkinManager.GetSkin("MainMenuSkin")));
        }
Ejemplo n.º 2
0
 private void RemoveCompletedEvents()
 {
     for (int i = 0; i < CompletedEvents.Count; i++)
     {
         ScienceEvent se = CompletedEvents.ElementAt(i);
         ProcessingScience.Remove(se.ScienceSubject);
     }
 }
Ejemplo n.º 3
0
        public void OnSave(ConfigNode node)
        {
            Debug.Log("[Bureaucracy]: Research Manager OnSave");
            ConfigNode researchNode = new ConfigNode("RESEARCH");

            researchNode.SetValue("FundingAllocation", FundingAllocation, true);
            researchNode.SetValue("ScienceMultiplier", ScienceMultiplier, true);
            researchNode.SetValue("thisMonth", ThisMonthsBudget, true);
            for (int i = 0; i < ProcessingScience.Count; i++)
            {
                ScienceEvent se = ProcessingScience.ElementAt(i).Value;
                se.OnSave(researchNode);
            }

            node.AddNode(researchNode);
            Debug.Log("[Bureaucracy]: Research Manager OnSaveComplete");
        }
Ejemplo n.º 4
0
 public override string ReportBody()
 {
     ReportBuilder.Clear();
     for (int i = 0; i < ResearchManager.Instance.CompletedEvents.Count; i++)
     {
         ScienceEvent se = ResearchManager.Instance.CompletedEvents.ElementAt(i);
         float        processedScience = se.OriginalScience;
         ReportBuilder.AppendLine(se.UiName + ": " + Math.Round(processedScience, 1) + "/" + se.OriginalScience);
     }
     for (int i = 0; i < ResearchManager.Instance.ProcessingScience.Count; i++)
     {
         ScienceEvent se = ResearchManager.Instance.ProcessingScience.ElementAt(i).Value;
         float        processedScience = se.OriginalScience - se.RemainingScience;
         ReportBuilder.AppendLine(se.UiName + ": " + Math.Round(processedScience, 1) + "/" + Math.Round(se.OriginalScience, 1));
     }
     ResearchManager.Instance.CompletedEvents.Clear();
     return(ReportBuilder.ToString());
 }
Ejemplo n.º 5
0
        public void OnLoad(ConfigNode node)
        {
            Debug.Log("[Bureaucracy]: Research Manager OnLoad");
            ConfigNode researchNode = node.GetNode("RESEARCH");

            if (researchNode == null)
            {
                return;
            }
            float.TryParse(researchNode.GetValue("ScienceMultiplier"), out ScienceMultiplier);
            float.TryParse(researchNode.GetValue("FundingAllocation"), out float funding);
            if (double.TryParse(researchNode.GetValue("thisMonth"), out double d))
            {
                ThisMonthsBudget = d;
            }
            else
            {
                ThisMonthsBudget = Utilities.Instance.GetNetBudget(Name);
            }
            FundingAllocation = funding;
            ConfigNode[] scienceNodes = researchNode.GetNodes("SCIENCE_DATA");
            if (scienceNodes.Length == 0)
            {
                return;
            }
            for (int i = 0; i < scienceNodes.Length; i++)
            {
                ConfigNode cn = scienceNodes.ElementAt(i);
                bool.TryParse(cn.GetValue("isComplete"), out bool isComplete);
                ScienceEvent se = new ScienceEvent(cn, this);
                if (isComplete)
                {
                    CompletedEvents.Add(se);
                }
                else
                {
                    ProcessingScience.Add(se.ScienceSubject, se);
                }
            }
            Debug.Log("[Bureaucracy]: Research Manager OnLoad Complete");
        }
Ejemplo n.º 6
0
        public override void ProgressTask()
        {
            double researchBudget = Utilities.Instance.ConvertMonthlyBudgetToDaily(ThisMonthsBudget) * ProgressTime() * ScienceMultiplier;

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (researchBudget == 0.0f)
            {
                return;
            }
            List <ScienceEvent> scienceCache = ProcessingScience.Values.ToList();

            for (int i = 0; i < scienceCache.Count; i++)
            {
                ScienceEvent se = scienceCache.ElementAt(i);
                researchBudget = se.ProgressResearch(researchBudget);
                if (researchBudget <= 0.0f)
                {
                    break;
                }
            }
            RemoveCompletedEvents();
        }