public override void SetPart(TCAPart part)
 {
     base.SetPart(part);
     //remove Module from module title. Maybe drop it altogether from the TechTree?
     button = new GUIContent(part.Title.Replace("Module", "").Trim(),
                             //remove the "Updates TCA (tm)..." sentence.
                             part.Description.Substring(part.Description.IndexOf('.') + 1));
 }
 protected TCAPart(TCAPart part)
 {
     Name        = part.Name;
     Modules     = part.Modules;
     info        = part.info;
     Title       = part.Title;
     Description = part.Description;
 }
        void Awake()
        {
            //register modules
            foreach (var module in ValidModules)
            {
                var meta = new ModuleMeta(module);
                if (!meta.Valid)
                {
                    continue;
                }
                RegisteredModules.Add(module, meta);
            }
            //add inputs
            RegisteredModules.ForEach(m => m.Value.Input.ForEach(inp => add_optional(m.Key, inp)));
            //topo-sort modules
            SortModules();
            //register techtree parts
            foreach (var module in RegisteredModules.Values)
            {
                if (string.IsNullOrEmpty(module.PartName))
                {
                    continue;
                }
                TCAPart part = null;
                if (TechTreeParts.TryGetValue(module.PartName, out part))
                {
                    part.AddModule(module);
                }
                else
                {
                    part = new TCAPart(module.PartName);
                    part.AddModule(module);
                    TechTreeParts.Add(part.Name, part);
                }
            }

                        #if DEBUG
            Utils.Log("\nTCA Modules in the ModulesDatabase:\n{}",
                      RegisteredModules.Aggregate("", (s, t) => s + t.Value + "\n\n"));
            Utils.Log("Pipeline: {}", Pipeline.Aggregate("", (s, t) => s + t.Name + "->"));
            Utils.Log("AP Pipeline: {}", Pipeline.Where(m => m.IsSubclassOf(typeof(AutopilotModule))).Aggregate("", (s, t) => s + t.Name + "->"));
            File.WriteAllText("ModuleDatabase.csv",
                              RegisteredModules.Aggregate("", (s, t) => s + t.Value.ToCSV() + "\n"));
                        #endif
        }
 public virtual void SetPart(TCAPart part)
 {
     this.part = part;
 }