Пример #1
0
        void RestoreStaging(List <Part> partsList, Part rootPart)
        {
            if (rootPart == null) // On initial entry into editor
            {
                InitStagingLists();
                return;
            }
            sd       = new Dictionary <int, Stages>();
            minStage = 999;
            maxStage = -1;

            Stages stages;

            foreach (var p in partsList)
            {
                if (stagingPartList.ContainsKey(p.persistentId.ToString()))
                {
                    StagingInfo si = stagingPartList[p.persistentId.ToString()];

                    if (sd.TryGetValue(si.inverseStage, out stages))
                    {
                        stages.partList.Add(p);
                    }
                    else
                    {
                        stages = new Stages(si.inverseStage, p);
                        sd.Add(si.inverseStage, stages);
                    }
                    minStage = Math.Min(minStage, si.inverseStage);
                    maxStage = Math.Max(maxStage, si.inverseStage);

                    SOS.Log.Info("RestoreStaging, part/stage: " + p.partInfo.title + ", inverseStage: " + si.inverseStage + ", originalStage: " + si.originalStage);
                }
                else
                {
                    // Should never get here
                    SOS.Log.Error("Part not found in stagingPartList");
                }
            }

            // The following code has been adapted from SmartStage

            var SortIcons = typeof(KSP.UI.Screens.StageManager).GetMethod("SortIcons",
                                                                          System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance, null,
                                                                          new Type[] { typeof(bool), typeof(Part), typeof(bool) }, null);


            //      This is ugly, but it works
            //      We call this private method for each part from the root, twice and it works.

            SetStages(rootPart, SortIcons);
            SetStages(rootPart, SortIcons);
        }
Пример #2
0
        Dictionary <string, StagingInfo> GetAllStaging(List <Part> partsList)
        {
            SOS.Log.Info("GetAllStaging");
            Dictionary <string, StagingInfo> stagingList = new Dictionary <string, StagingInfo>();

            foreach (var p in partsList)
            {
                if (!stagingList.ContainsKey(p.persistentId.ToString()))
                {
                    StagingInfo si = new StagingInfo(p);
                    stagingList.Add(p.persistentId.ToString(), si);
                    SOS.Log.Info("GetAllStaging, part/stage: " + p.partInfo.title + ", inverseStage: " + si.inverseStage + ", originalStage: " + si.originalStage);
                }
            }
            return(stagingList);
        }