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)); } }
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); }
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 } } }
public SSBinary(SSMod mod, SSRelativeUrl url) : base(mod, url) { }
public SSCsv(SSMod ssmod, SSRelativeUrl url) : base(ssmod, url) { }
public SSNoMerge(SSMod mod, SSRelativeUrl url) : base(mod, url) { }