public void ExtractHullIdUsedFromVariant() { Directory.GroupedFiles.TryGetValue("data\\world\\factions\\default_ship_roles.json", out ISSGroup roleGroup); SSJsonGroup jsonRoleGroup = (SSJsonGroup)roleGroup; if (jsonRoleGroup == null) { return; } if (jsonRoleGroup.MonitoredContent == null) { jsonRoleGroup.ExtractMonitoredContent(); } List <string> referencedShipVariant = new List <string>(); foreach (string role in ShipRoles) { jsonRoleGroup.MonitoredContent.MonitoredProperties.TryGetValue(new JsonValue(role), out MonitoredField FieldVariantList); if (FieldVariantList is MonitoredObject shipList) { referencedShipVariant.AddRange(shipList.MonitoredProperties.Where(x => x.Value is MonitoredValue).Select(x => x.Key.ToString())); } else { throw new Exception("Default ship role contains non object field with expected name"); } } ReferencedShipHullIdFromVariant = referencedShipVariant.Distinct().Select(x => VariantsRessources.GetHullIdFromVariantName(x)).Distinct().ToList(); }
public ISSGroup CreateGroupFromFile(ISSGenericFile file) { switch (file) { case SSFaction f: SSFactionGroup newFGroup = new SSFactionGroup(); newFGroup.Add(f); return(newFGroup); case SSVariant v: SSVariantGroup newVGroup = new SSVariantGroup(); newVGroup.Add(v); return(newVGroup); case SSShipHull sh: SSShipHullGroup newSHGroup = new SSShipHullGroup(); newSHGroup.Add(sh); return(newSHGroup); case SSShipHullSkin shs: SSShipHullSkinGroup newSHSGroup = new SSShipHullSkinGroup(); newSHSGroup.Add(shs); return(newSHSGroup); case SSJson gf: SSJsonGroup newgfGroup = new SSJsonGroup(); newgfGroup.Add(gf); return(newgfGroup); case SSCsv fc: return(new SSCsvGroup(fc)); case SSBinary b: return(new SSBinaryGroup(b)); } return(null); }