void GetActiveTravelBugs() { if (HighLogic.LoadedSceneIsEditor) { return; } Log.Info("GetActiveTravelBugs"); Log.Info("FlightGlobals.Vessels.Count: " + FlightGlobals.Vessels.Count + ", VesselsUnloaded.Count: " + FlightGlobals.VesselsUnloaded.Count + ", VesselsLoaded.Count: " + FlightGlobals.VesselsLoaded.Count); activeTravelBugs = new Dictionary <string, TravelBugEntry>(); usedKeoCaches = new List <string>(); for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--) { Vessel vessel = FlightGlobals.Vessels[i]; //Log.Info("TravelBug_Window, i: " + i + ", vessel: " + vessel.GetDisplayName() + ", loaded: " + vessel.loaded); // May need to use moduleHandlers here instead of partModules, needed if vessel is unloaded // // // if (moduleHandlers.ContainsKey(p.modules[i].moduleName)) { // if (vessel != null) { if (!vessel.loaded) { for (int imh = vessel.protoVessel.protoPartSnapshots.Count - 1; imh >= 0; imh--) { ProtoPartSnapshot mh = vessel.protoVessel.protoPartSnapshots[imh]; for (int mi = mh.modules.Count - 1; mi >= 0; mi--) { ProtoPartModuleSnapshot module = mh.modules[mi]; if (module.moduleName == "KeoTravelBugModule") { ConfigNode cn = module.moduleValues.GetNode(FileIO.KEOCACHE_COLLECTION); if (cn != null) { KeoCacheCollection tbKcc = KeoCacheCollection.LoadCollectionFromConfigNode(cn); if (tbKcc != null) { TravelBugEntry tbe = new TravelBugEntry(tbKcc.keocacheCollectionData.collectionId, vessel.vesselName, vessel.protoVessel.vesselID); activeTravelBugs.Add(tbe.keocachId, tbe); } FindKeoCaches(); } } } } } else { List <KeoTravelBugModule> vesselTravelBugs = vessel.FindPartModulesImplementing <KeoTravelBugModule>(); if (vesselTravelBugs != null) { Log.Info("vesselTravelBugs.count: " + vesselTravelBugs.Count); for (int i1 = vesselTravelBugs.Count - 1; i1 >= 0; i1--) { KeoTravelBugModule traveBug = vesselTravelBugs[i1]; Log.Info("creating TravelBugentry # " + i1); if (traveBug == null) { Log.Info("traveBug is null"); } if (traveBug.tbKcc != null) { if (traveBug.tbKcc == null) { Log.Info("traveBug.tbKcc is null"); } if (traveBug.tbKcc.keocacheCollectionData == null) { Log.Info("traveBug.tbKcc.keocacheCollectionData is null"); } if (traveBug.tbKcc.keocacheCollectionData.collectionId == null) { Log.Info("traveBug.tbKcc.keocacheCollectionData.collectionId is null"); } if (vessel == null) { Log.Info("vessel is null"); } if (vessel.vesselName == null) { Log.Info("vessel.vesselName is null"); } if (vessel.protoVessel == null) { Log.Info("vessel.protoVessel is null"); } TravelBugEntry tbe = new TravelBugEntry(traveBug.tbKcc.keocacheCollectionData.collectionId, vessel.vesselName, vessel.protoVessel.vesselID); activeTravelBugs.Add(tbe.keocachId, tbe); FindKeoCaches(); } } } } } } }
void TravelBug_Window(int id) { GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Width(10); GUILayout.Label("Vessel", GUILayout.Width(175)); GUILayout.Space(5); GUILayout.Label("Collection Name", GUILayout.Width(175)); GUILayout.Space(5); GUILayout.Label("Collection Title", GUILayout.Width(175)); GUILayout.EndHorizontal(); // // If this starts to be inefficient, then a new method to gather all the travelbugs will need // to be written. that method will be called when this window is opened // scrollPos = GUILayout.BeginScrollView(scrollPos, GUILayout.Height(120), GUILayout.Width(615)); for (int i = FlightGlobals.Vessels.Count - 1; i >= 0; i--) { Vessel vessel = FlightGlobals.Vessels[i]; Log.Info("TravelBug_Window, i: " + i + ", vessel: " + vessel.GetDisplayName() + ", loaded: " + vessel.loaded); // May need to use moduleHandlers here instead of partModules, needed if vessel is unloaded // // // if (moduleHandlers.ContainsKey(p.modules[i].moduleName)) { // if (!vessel.loaded) { for (int imh = vessel.protoVessel.protoPartSnapshots.Count - 1; imh >= 0; imh--) { Log.Info("imh: " + imh); ProtoPartSnapshot mh = vessel.protoVessel.protoPartSnapshots[imh]; for (int mi = mh.modules.Count - 1; mi >= 0; mi--) { Log.Info("mi: " + mi); ProtoPartModuleSnapshot module = mh.modules[mi]; if (module.moduleName == "KeoTravelBugModule") { ConfigNode cn = module.moduleValues.GetNode(FileIO.KEOCACHE_COLLECTION); if (cn != null) { KeoCacheCollection tbKcc = KeoCacheCollection.LoadCollectionFromConfigNode(cn); if (tbKcc != null) { DisplayTravelBugData( vessel.protoVessel.vesselID, vessel.vesselName, tbKcc.keocacheCollectionData.name, tbKcc.keocacheCollectionData.title); } } #if false if (KeoScenario.activeKeoCacheCollections != null) { string collectionId = module.moduleValues.GetValue("collectionID"); Log.Info("collectionID: " + collectionId); activeKeoCacheCollection = KeoScenario.activeKeoCacheCollections[collectionId]; if (activeKeoCacheCollection != null) { DisplayTravelBugData( vessel.protoVessel.vesselID, vessel.vesselName, activeKeoCacheCollection.keocacheCollectionData.name, activeKeoCacheCollection.keocacheCollectionData.title); } } #endif } } } } else { List <KeoTravelBugModule> vesselTravelBugs = vessel.FindPartModulesImplementing <KeoTravelBugModule>(); if (vesselTravelBugs != null) { for (int i1 = vesselTravelBugs.Count - 1; i1 >= 0; i1--) { KeoTravelBugModule traveBug = vesselTravelBugs[i1]; var c = traveBug.collectionID; DisplayTravelBugData(vessel.id, vessel.vesselName, traveBug.tbKcc.keocacheCollectionData.name, traveBug.tbKcc.keocacheCollectionData.title); #if false if (KeoScenario.activeKeoCacheCollections != null) { activeKeoCacheCollection = KeoScenario.activeKeoCacheCollections[c]; if (activeKeoCacheCollection != null) { DisplayTravelBugData(vessel.id, vessel.vesselName, activeKeoCacheCollection.keocacheCollectionData.name, activeKeoCacheCollection.keocacheCollectionData.title); } } #endif } } } GUILayout.FlexibleSpace(); } GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Close", GUILayout.Width(60))) { visibleTravelBug = false; visibleMenu = true; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUI.DragWindow(); }