internal void ManifestMain(int id, ScenarioNodeDatabase Sc) { Scenario = Sc; style = RRSettingsController.get_label_default(); style_10px_row = RRSettingsController.get_label_10px(); style_20px_row = RRSettingsController.get_label_20px(); style_40px_row = RRSettingsController.get_label_40px(); style_60px_row = RRSettingsController.get_label_60px(); style_80px_row = RRSettingsController.get_label_80px(); style_100px_row = RRSettingsController.get_label_100px(); style_120px_row = RRSettingsController.get_label_120px(); style_stretchWidth_row = RRSettingsController.get_label_stretchWidth(); buttonStyle = RRSettingsController.get_button_100px(); buttonStyle_active = RRSettingsController.get_button_100px_active(); splitter = RRSettingsController.get_splitter(); RootNode = Scenario.get_RootNode(); Scenario.update_StorageTotals(); GUILayout.Label("Manifest: ToDo", style); string currentPlanet = Utilities.get_current_planet(); ConfigNode PlanetNode = Scenario.get_PlanetNode(currentPlanet); //Debug.Log("ResourceRecovery: ManifestMain: got planet "); /* name = Kerbin total_locations = 1 total_number_recource_tanks = 35 total_capacity = 0 (ToDo) total_capacity_used = 55.55 (May need a fix) */ GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.Label(String.Format("Planet Name: {0}", PlanetNode.GetValue("name")), style); GUILayout.Label(String.Format("Storage Locations: {0}", PlanetNode.GetValue("total_locations")), style); GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label(String.Format("Resource Tanks: {0}", PlanetNode.GetValue("total_number_recource_tanks")), style); string total_capacity_string = (RRSettingsController.get_KSCPlanet() != Utilities.get_current_planet()) ? PlanetNode.GetValue("total_capacity") : RRSettingsController.get_KSCStorage_capacity(); GUILayout.Label(String.Format("Stored Total: {0}", PlanetNode.GetValue("total_capacity_used") + "/" + total_capacity_string), style); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(splitter); GUILayout.EndHorizontal(); ResourceRowHeader(); GUILayout.BeginHorizontal(splitter); GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition); GUILayout.BeginVertical(); ConfigNode RNode_tmp = Scenario.get_ResourcesNode(); ConfigNode[] RNodes = RNode_tmp.GetNodes("RESOURCE"); int counter = 0; List<bool> _expanded = new List<bool>(); int TotalNumbr = RNode_tmp.CountNodes; //Debug.Log("ResourceRecovery: ManifestMain: start foreach"); List<ResourceNodeType> RNodesList = new List<ResourceNodeType>(); foreach (ConfigNode node in RNodes) { int string_number = 0; Int32.TryParse(node.GetValue("resourceID"), out string_number); RNodesList.Add(new ResourceNodeType() { name = node.GetValue("name"), resourceID = string_number, storagecapacity = node.GetValue("storagecapacity"), storedamount = node.GetValue("storedamount"), supply_mode = node.GetValue("supply_mode"), value_factor = node.GetValue("value_factor"), display_order = node.GetValue("display_order"), hide = node.GetValue("hide"), group = node.GetValue("group") }); } var sortedRNodes = RNodesList.OrderBy(x => x.display_order).ToList(); foreach (ResourceNodeType node in sortedRNodes) { _expanded.Add(false); //GUILayout.Label(String.Format("{0}:{1}", node.GetValue("name"), node.GetValue("storedamount"))); ResourceRow(node,_expanded,counter,TotalNumbr); counter++; } //Debug.Log("ResourceRecovery: ManifestMain: end foreach"); GUILayout.EndVertical(); GUILayout.EndScrollView(); //Debug.Log("ResourceRecovery: ManifestMain: done"); }
/* public static ConfigNode getKSPIResourcesNuclearFile(string path_WarpPlugin_ResourcesNuclear_cfg) { string p = Utilities.getCustomPluginSettingsFilePath(path_WarpPlugin_ResourcesNuclear_cfg); ConfigNode config = null; config = ConfigNode.Load(p); //ConfigNode[] Resources = config.GetNodes("RESOURCE_DEFINITION"); return config; } public static ConfigNode getORSResourcesAthmosphericFile(string path_OpenResourceSystem_atmosphericresourcedefinitions_cfg) { string p = Utilities.getCustomPluginSettingsFilePath(path_OpenResourceSystem_atmosphericresourcedefinitions_cfg); ConfigNode config = null; config = ConfigNode.Load(p); //ConfigNode[] Resources = config.GetNodes("ATMOSPHERIC_RESOURCE_DEFINITION"); return config; } public static ConfigNode getORSResourcesOceanicFile(string path_OpenResourceSystem_oceanicresourcedefinitions_cfg) { string p = Utilities.getCustomPluginSettingsFilePath(path_OpenResourceSystem_oceanicresourcedefinitions_cfg); ConfigNode config = null; config = ConfigNode.Load(p); //ConfigNode[] Resources = config.GetNodes("OCEANIC_RESOURCE_DEFINITION"); return config; } public static ConfigNode getSquadResourcesResourcesGenericFile(string path_Squad_resourcedefinitions_cfg) { string p = Utilities.getCustomPluginSettingsFilePath(path_Squad_resourcedefinitions_cfg); ConfigNode config = null; config = ConfigNode.Load(p); //ConfigNode[] Resources = config.GetNodes("RESOURCE_DEFINITION"); return config; } public static ConfigNode getKethaneResourcesFile(string path_WarpPlugin_ResourcesNuclear_cfg) { string p = Utilities.getCustomPluginSettingsFilePath(path_WarpPlugin_ResourcesNuclear_cfg); ConfigNode config = null; config = ConfigNode.Load(p); //ConfigNode[] Resources = config.GetNodes("RESOURCE_DEFINITION"); return config; } */ /* internal static bool openPersistenFile() { ConfigNode config = null; string persistentfile = null; try { Debug.Log("ResourceRecovery Utilities.openPersistenFile running"); persistentfile = KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/persistent.sfs"; config = ConfigNode.Load(persistentfile); return config; } catch (Exception ex) { Debug.Log("ResourceRecovery Utilities.openPersistenFile failed " + persistentfile); Debug.Log(ex); return config; } return false; } */ /* internal static bool SavePersistenFile(ConfigNode config) { string persistentfile = null; try { Debug.Log("ResourceRecovery Utilities.SavePersistenFile running"); persistentfile = KSPUtil.ApplicationRootPath + "saves/" + HighLogic.SaveFolder + "/persistent.sfs"; config.Save(persistentfile); Debug.Log("ResourceRecovery Utilities.SavePersistenFile done"); return true; } catch (Exception ex) { Debug.Log("ResourceRecovery Utilities.SavePersistenFile failed " + persistentfile); Debug.Log(ex); return false; } return false; } //*/ internal static bool perform_resource_transfer(string buttonID, Part part, PartResource resource, string resourceSelected, ScenarioNodeDatabase Sc) { Vessel vessel = FlightGlobals.fetch.activeVessel; Scenario = new ScenarioNodeDatabase(); Scenario = Sc; // get part resource data double part_amount = resource.amount; double part_maxamount = resource.maxAmount; double part_empty_space = part_maxamount - part_amount; double part_percentFull = part_amount / part_maxamount * 100.0; double part_1_step_value = part_maxamount / 8; Debug.Log("ResourceRecovery perform_resource_transfer: part_1_step_value = " + part_1_step_value); Debug.Log("ResourceRecovery perform_resource_transfer: part_amount = " + part_amount); Debug.Log("ResourceRecovery perform_resource_transfer: part_maxamount = " + part_maxamount); // get scenario resource data ConfigNode res = Scenario.get_ResourceNode(resourceSelected); double storage_amount = 0; string storage_amount_string = res.GetValue("storedamount"); storage_amount_string = (res.GetValue("supply_mode")!="0") ? storage_amount_string : RRSettingsController.get_KSCStorage_capacity(); double string_number1 = 0; if (Double.TryParse(storage_amount_string, out string_number1)) { storage_amount = string_number1; } else { storage_amount = 0.00; } double storage_maxamount = 0; string storage_maxamount_string = res.GetValue("storagecapacity"); double string_number2 = 0; if (Double.TryParse(storage_maxamount_string, out string_number2)) { storage_maxamount = string_number2; } else { storage_maxamount = 0.00; } double percentFull = storage_amount / storage_maxamount * 100.0; double storage_percentFull = percentFull; Debug.Log("ResourceRecovery perform_resource_transfer: storage_amount = " + storage_amount); // get requested action data double change_new_value=0; double change_new_percentFull=0; double change_difference; switch (buttonID) { case "Empty": change_new_value = part_1_step_value * 0; break; case "1/8": change_new_value = part_1_step_value * 1; break; case "1/4": change_new_value = part_1_step_value * 2; break; case "3/8": change_new_value = part_1_step_value * 3; break; case "Half": change_new_value = part_1_step_value * 4; break; case "5/8": change_new_value = part_1_step_value * 5; break; case "3/4": change_new_value = part_1_step_value * 6; break; case "7/8": change_new_value = part_1_step_value * 7; break; case "Full": change_new_value = part_1_step_value * 8; break; } change_new_percentFull = change_new_value / part_maxamount * 100.0; change_difference = change_new_value - part_amount; Debug.Log("ResourceRecovery perform_resource_transfer: change_new_value - part_amount = change_difference : change_difference=" + change_difference); // validate actions storage_amount = (res.GetValue("supply_mode") != "0") ? storage_amount : change_difference; if (storage_amount - change_difference < 0) { change_difference = storage_amount; } if (storage_amount - change_difference < 0) { change_difference = storage_amount; } Debug.Log("ResourceRecovery perform_resource_transfer: change_difference = " + change_difference); if (part_empty_space - change_difference < 0) { change_difference = part_empty_space; } Debug.Log("ResourceRecovery perform_resource_transfer: change_difference = " + change_difference); // perform actions ConfigNode RootNode; RootNode = Scenario.get_RootNode(); Debug.Log("ResourceRecovery perform_resource_transfer: resource.amount = " + resource.amount); double new_part_amount = resource.amount + change_difference; new_part_amount = (part_maxamount > new_part_amount) ? new_part_amount : part_maxamount; new_part_amount = (new_part_amount > 0) ? new_part_amount : 0; resource.amount = new_part_amount; Debug.Log("ResourceRecovery perform_resource_transfer: resource.amount = " + resource.amount); Debug.Log("ResourceRecovery perform_resource_transfer: storage_amount = " + storage_amount); double new_storage_amaount = storage_amount - change_difference; new_storage_amaount = (new_storage_amaount > 0) ? new_storage_amaount : 0; Debug.Log("ResourceRecovery perform_resource_transfer: new_storage_amaount = " + new_storage_amaount); if (Scenario.modify_ResourceNode_by_ResourceName(resourceSelected, "storedamount", new_storage_amaount.ToString())) { GamePersistence.SaveGame("persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); if (Scenario.save()) { Debug.Log("ResourceRecovery perform_resource_transfer Utilities.SavePluginSaveFile(RootNode) worked"); return true; } else { Debug.Log("ResourceRecovery EXCEPTION: perform_resource_transfer SavePluginSaveFile failed"); return false; } } Debug.Log("perform_resource_transfer Clicked buttonID=" + buttonID + " part.partInfo.title=" + part.partInfo.title + " resource.resourceName=" + resource.resourceName + " resourceSelected=" + resourceSelected); return false; //return true; }