void BuildStorageItems(Storage storage) { Vessel vessel = FlightGlobals.ActiveVessel; resourceSet.Clear(); resourceList.Clear(); Part rootPart = vessel.parts[0].localRoot; var manager = new RMResourceManager(vessel.parts, rootPart); GetVesselResources(manager); GetStoredResources(storage); storageItems.Clear(); storageItems.Storage = storage; storageItems.Vessel = vessel; for (int i = 0; i < resourceList.Count; i++) { var resDef = resourceList[i]; var storedResource = storage.GetResource(resDef); RMResourceInfo vesselResource; manager.masterSet.resources.TryGetValue(resDef.name, out vesselResource); storageItems.Add(new StorageItem(storage, storedResource, vesselResource)); } UIKit.UpdateListContent(storageItems); }
internal void GetVesselResources(RMResourceManager manager) { var definitions = PartResourceLibrary.Instance.resourceDefinitions; foreach (string r in manager.masterSet.resources.Keys) { if (blackListedResources.Contains(r)) { continue; } var resDef = definitions[r]; if (resDef != null) // null shouldn't happen, but... { resourceSet.Add(resDef.id); resourceList.Add(resDef); } } }
void BuildMerchantItems() { merchantItems.Clear(); var merchant = merchantItems.Merchant; Part rootPart = merchantItems.Vessel.parts[0].localRoot; var manager = new RMResourceManager(merchantItems.Vessel.parts, rootPart); var vesselResources = manager.masterSet.resources; var tradedResources = merchant.Resources; for (int i = tradedResources.Count; i-- > 0;) { var resource = tradedResources[i]; RMResourceInfo vesselResource; vesselResources.TryGetValue(resource.resource.name, out vesselResource); merchantItems.Add(new MerchantItem(merchant, resource, vesselResource)); } UIKit.UpdateListContent(merchantItems); }