public static List <ORSOceanicResource> getOceanicCompositionForBody(int refBody)
        {
            List <ORSOceanicResource> bodyOceanicComposition = new List <ORSOceanicResource>();

            try {
                if (body_oceanic_resource_list.ContainsKey(refBody))
                {
                    return(body_oceanic_resource_list[refBody]);
                }
                else
                {
                    ConfigNode[] bodyOceanicResourceList = GameDatabase.Instance.GetConfigNodes("OCEANIC_RESOURCE_DEFINITION").Where(res => res.GetValue("celestialBodyName") == FlightGlobals.Bodies[refBody].name).ToArray();
                    foreach (ConfigNode bodyOceanicConfig in bodyOceanicResourceList)
                    {
                        string resourcename = null;
                        if (bodyOceanicConfig.HasValue("resourceName"))
                        {
                            resourcename = bodyOceanicConfig.GetValue("resourceName");
                        }
                        double             resourceabundance   = double.Parse(bodyOceanicConfig.GetValue("abundance"));
                        string             displayname         = bodyOceanicConfig.GetValue("guiName");
                        ORSOceanicResource bodyOceanicResource = new ORSOceanicResource(resourcename, resourceabundance, displayname);
                        bodyOceanicComposition.Add(bodyOceanicResource);
                    }
                    if (bodyOceanicComposition.Count > 1)
                    {
                        bodyOceanicComposition = bodyOceanicComposition.OrderByDescending(bacd => bacd.getResourceAbundance()).ToList();
                    }
                }
            } catch (Exception ex) {
            }
            return(bodyOceanicComposition);
        }
        public static double getOceanicResourceContent(int refBody, string resourcename)
        {
            List <ORSOceanicResource> bodyOceanicComposition = getOceanicCompositionForBody(refBody);
            ORSOceanicResource        resource = bodyOceanicComposition.FirstOrDefault(oor => oor.getResourceName() == resourcename);

            return(resource != null?resource.getResourceAbundance() : 0);
        }
        public static List<ORSOceanicResource> getOceanicCompositionForBody(int refBody) {
            List<ORSOceanicResource> bodyOceanicComposition = new List<ORSOceanicResource>();
            try {
                if (body_oceanic_resource_list.ContainsKey(refBody)) {
                    return body_oceanic_resource_list[refBody];
                } else {
                    ConfigNode[] bodyOceanicResourceList = GameDatabase.Instance.GetConfigNodes("OCEANIC_RESOURCE_DEFINITION").Where(res => res.GetValue("celestialBodyName") == FlightGlobals.Bodies[refBody].name).ToArray();
                    foreach (ConfigNode bodyOceanicConfig in bodyOceanicResourceList) {
                        string resourcename = null;
                        if (bodyOceanicConfig.HasValue("resourceName")) {
                            resourcename = bodyOceanicConfig.GetValue("resourceName");
                        }
                        double resourceabundance = double.Parse(bodyOceanicConfig.GetValue("abundance"));
                        string displayname = bodyOceanicConfig.GetValue("guiName");
                        ORSOceanicResource bodyOceanicResource = new ORSOceanicResource(resourcename, resourceabundance, displayname);
                        bodyOceanicComposition.Add(bodyOceanicResource);
                    }
                    if (bodyOceanicComposition.Count > 1) {
                        bodyOceanicComposition = bodyOceanicComposition.OrderByDescending(bacd => bacd.getResourceAbundance()).ToList();
                    }
                }
            } catch (Exception ex) {

            }
            return bodyOceanicComposition;
        }