summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Manifest.cs
diff options
context:
space:
mode:
authorGormogon <Gormogon@users.noreply.github.com>2016-05-29 18:23:01 -0400
committerGormogon <Gormogon@users.noreply.github.com>2016-05-29 18:23:01 -0400
commit27dece2cf445147c5e2848f9ec26f38a101f50fc (patch)
tree2579d0979dd9f295972e5ba2a81f4177589f7395 /src/StardewModdingAPI/Manifest.cs
parent85142935b63324f7c6131a8855acea0a2d534879 (diff)
downloadSMAPI-27dece2cf445147c5e2848f9ec26f38a101f50fc.tar.gz
SMAPI-27dece2cf445147c5e2848f9ec26f38a101f50fc.tar.bz2
SMAPI-27dece2cf445147c5e2848f9ec26f38a101f50fc.zip
Attempt to migrate to new directory structure.
Diffstat (limited to 'src/StardewModdingAPI/Manifest.cs')
-rw-r--r--src/StardewModdingAPI/Manifest.cs89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/StardewModdingAPI/Manifest.cs b/src/StardewModdingAPI/Manifest.cs
new file mode 100644
index 00000000..5eabc01b
--- /dev/null
+++ b/src/StardewModdingAPI/Manifest.cs
@@ -0,0 +1,89 @@
+using System;
+using System.IO;
+using System.Linq;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace StardewModdingAPI
+{
+ public class Manifest : Config
+ {
+ /// <summary>
+ /// The name of your mod.
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// The name of the mod's authour.
+ /// </summary>
+ public virtual string Authour { get; set; }
+
+ /// <summary>
+ /// The version of the mod.
+ /// </summary>
+ public virtual Version Version { get; set; }
+
+ /// <summary>
+ /// A description of the mod.
+ /// </summary>
+ public virtual string Description { get; set; }
+
+ /// <summary>
+ /// The unique ID of the mod. It doesn't *need* to be anything.
+ /// </summary>
+ public virtual string UniqueID { get; set; }
+
+ /// <summary>
+ /// Whether or not the mod uses per-save-config files.
+ /// </summary>
+ public virtual bool PerSaveConfigs { get; set; }
+
+ /// <summary>
+ /// The name of the DLL in the directory that has the Entry() method.
+ /// </summary>
+ public virtual string EntryDll { get; set; }
+
+ public override T GenerateDefaultConfig<T>()
+ {
+ Name = "";
+ Authour = "";
+ Version = new Version(0, 0, 0, "");
+ Description = "";
+ UniqueID = Guid.NewGuid().ToString();
+ PerSaveConfigs = false;
+ EntryDll = "";
+ return this as T;
+ }
+
+ public override T LoadConfig<T>()
+ {
+ if (File.Exists(ConfigLocation))
+ {
+ try
+ {
+ Manifest m = JsonConvert.DeserializeObject<Manifest>(File.ReadAllText(ConfigLocation));
+ }
+ catch
+ {
+ //Invalid json blob. Try to remove version?
+ try
+ {
+ JObject j = JObject.Parse(File.ReadAllText(ConfigLocation));
+ if (!j.GetValue("Version").Contains("{"))
+ {
+ Log.AsyncC("INVALID JSON VERSION. TRYING TO REMOVE SO A NEW CAN BE AUTO-GENERATED");
+ j.Remove("Version");
+ File.WriteAllText(ConfigLocation, j.ToString());
+ }
+ }
+ catch (Exception)
+ {
+ // ignored
+ }
+ }
+ }
+
+ return base.LoadConfig<T>();
+ }
+ }
+} \ No newline at end of file