public static ISSGenericFile BuildFile(SSMod mod, SSRelativeUrl Url)
        {
            FileInfo info      = new FileInfo(Url?.ToString() ?? throw new ArgumentNullException("The Url cannot be null."));
            string   FileName  = info.Name ?? throw new ArgumentNullException("The FileName cannot be null.");
            string   Extension = info.Extension;

            switch (Extension)
            {
            case ".json":
                return(new SSJson(mod, Url));

            case ".faction":
                return(new SSFaction(mod, Url));

            case ".variant":
                return(new SSVariant(mod, Url));

            case ".ship":
                return(new SSShipHull(mod, Url));

            case ".skin":
                return(new SSShipHullSkin(mod, Url));

            case ".csv":
                return(new SSCsv(mod, Url));

            case ".jar":
            case ".java":
                return(new SSNoMerge(mod, Url));

            default:
                return(new SSBinary(mod, Url));
            }
        }
Exemplo n.º 2
0
        public JsonArray ReadUsedMod()
        {
            SSBaseLinkUrl ModFolderPath = InstallationUrl + new SSLinkUrl("mods");
            SSMod         Dummy         = new SSMod(ModFolderPath);
            SSRelativeUrl rela          = new SSRelativeUrl("enabled_mods.json");

            SSJson file = new SSJson(Dummy, rela);

            file.ExtractFile();
            JsonToken trying;

            file.Fields.TryGetValue(".enabledMods", out trying);
            if (trying == null)
            {
                return(new JsonArray());
            }
            return(trying as JsonArray);
        }
Exemplo n.º 3
0
        public void ReadMods(string targetFolder = null)
        {
            Mods.Clear();
            modFactory = new SSModFactory(InstallationUrl);
            SSBaseUrl     ModFolderPath = InstallationUrl + "mods";
            DirectoryInfo ModsDirectory = new DirectoryInfo(ModFolderPath.ToString());
            IEnumerable <DirectoryInfo> ModsEnumerable = ModsDirectory.EnumerateDirectories();


            SSMod currentMod = modFactory.CreateMod(new SSLinkUrl("starsector-core"));

            //currentMod.FindFiles();
            Mods.Add(currentMod);
            foreach (DirectoryInfo ModDirectory in ModsEnumerable)
            {
                SSLinkUrl modLink = new SSLinkUrl(Path.Combine("mods", ModDirectory.Name));
                SSMod     exist   = Mods.FirstOrDefault(M => M.ModUrl.Link.Equals(modLink.Link));
                if (exist != null)
                {
                    throw new ArgumentException("Cannot add existing mod to directory");
                }
                try
                {
                    currentMod = modFactory.CreateMod(modLink);
                    //if (ModDirectory.Name == targetFolder)
                    //currentMod.ChangeType(ModType.Skip);
                    //else
                    //currentMod.FindFiles();

                    Mods.Add(currentMod);
                }
                catch (FileNotFoundException)
                {
                    //incomplete mod, lets just not add it
                }
            }
        }
Exemplo n.º 4
0
 public SSBinary(SSMod mod, SSRelativeUrl url) : base(mod, url)
 {
 }
Exemplo n.º 5
0
 public SSCsv(SSMod ssmod, SSRelativeUrl url) : base(ssmod, url)
 {
 }
Exemplo n.º 6
0
 public SSNoMerge(SSMod mod, SSRelativeUrl url) : base(mod, url)
 {
 }