Example #1
0
        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);
        }