summaryrefslogtreecommitdiff
path: root/DiscoBot/DSA_Game
diff options
context:
space:
mode:
authorTrueDoctor <d-kobert@web.de>2018-06-19 14:25:14 +0200
committerTrueDoctor <d-kobert@web.de>2018-06-19 14:25:14 +0200
commit1ef4aa027b6c77a45e7d895f4efcd074e3afaf88 (patch)
treec396a6ff5b67ffeba3108cb0b219e9978db2e63a /DiscoBot/DSA_Game
parentde22a0719079c5ba23e6ae9a39c921940c4bebed (diff)
Implemented session saves
Diffstat (limited to 'DiscoBot/DSA_Game')
-rw-r--r--DiscoBot/DSA_Game/Dsa.cs2
-rw-r--r--DiscoBot/DSA_Game/Save/Properties.cs6
-rw-r--r--DiscoBot/DSA_Game/Save/SaveCommand.cs41
-rw-r--r--DiscoBot/DSA_Game/Save/Session.cs9
4 files changed, 47 insertions, 11 deletions
diff --git a/DiscoBot/DSA_Game/Dsa.cs b/DiscoBot/DSA_Game/Dsa.cs
index 5b4833b..f1ed069 100644
--- a/DiscoBot/DSA_Game/Dsa.cs
+++ b/DiscoBot/DSA_Game/Dsa.cs
@@ -22,7 +22,7 @@
public static List<Talent> Talente { get; set; } = new List<Talent>();
- public static Session Session { get; set; }
+ public static Session Session { get; set; } = new Session();
public static void Startup()
{
diff --git a/DiscoBot/DSA_Game/Save/Properties.cs b/DiscoBot/DSA_Game/Save/Properties.cs
index 45bad4a..67d30b0 100644
--- a/DiscoBot/DSA_Game/Save/Properties.cs
+++ b/DiscoBot/DSA_Game/Save/Properties.cs
@@ -34,7 +34,7 @@ namespace DiscoBot.DSA_Game.Save
public static List<Sound> Sounds { get => objects["Sound"] as List<Sound>; set => objects["Sound"] = value; }
- public static void Deserialize(string path = @"..\..\sessions")
+ public static void Deserialize(string path = @"..\..\Properties")
{
var files = Directory.GetFiles(path, "*.json");
@@ -65,7 +65,7 @@ namespace DiscoBot.DSA_Game.Save
}
- public static void Serialize(string path = @"..\..\sessions\")
+ public static void Serialize(string path = @"..\..\Properties\")
{
try
{
@@ -80,6 +80,8 @@ namespace DiscoBot.DSA_Game.Save
catch (Exception e)
{
// ignored
+ var log = new LogMessage(LogSeverity.Warning, "Properties", $"Speichern von Save-File fehlgeschlagen.", e);
+ Console.WriteLine(log);
}
}
}
diff --git a/DiscoBot/DSA_Game/Save/SaveCommand.cs b/DiscoBot/DSA_Game/Save/SaveCommand.cs
index 310d38a..07bcbac 100644
--- a/DiscoBot/DSA_Game/Save/SaveCommand.cs
+++ b/DiscoBot/DSA_Game/Save/SaveCommand.cs
@@ -15,27 +15,54 @@ namespace DiscoBot.DSA_Game.Save
public class SaveCommand : ModuleBase
{
- [Command("save"), Summary("Save Session")]
- public async Task ReportAsync()
+ [Command("load"), Summary("Load Session")]
+ public async Task LoadSessionAsync([Remainder, Summary("Session Name")] string name = "")
{
-
+ if (name.Equals("?") || name.Equals(string.Empty))
+ {
+ await this.ReplyAsync($"Gespeicherte Sessions:");
+ await this.ReplyAsync(this.ListSessions());
+ return;
+ }
+
+ var path = DSA_Game.Save.Session.DirectoryPath + @"\" + name;
+
+ var files = Directory.GetFiles(path);
+ var session = files.OrderByDescending(x => Convert.ToInt32(x.Split('-').Last().Split('.').First())).First();
+ Dsa.Session = Session.Load(session);
- await this.ReplyAsync($"Dein report wurde hinzugefĆ¼gt");
+ await this.ReplyAsync($"{name} wurde geladen");
}
[Command("save"), Summary("Save Session")]
- public async Task ReportAsync([Remainder, Summary("Session Name")] string name)
+ public async Task SessionSaveAsync([Remainder, Summary("Session Name")] string name = "")
{
- if (name.Equals("?"))
+ if (name.Equals("?") || name.Equals(string.Empty))
{
await this.ReplyAsync($"Gespeicherte Sessions:");
await this.ReplyAsync(this.ListSessions());
+ return;
}
+
+ var path = DSA_Game.Save.Session.DirectoryPath + @"\" + name;
+ if (Directory.Exists(path))
+ {
+ var files = Directory.GetFiles(path);
+ int current = files.Max(x => Convert.ToInt32(x.Split('-').Last().Split('.').First()));
+ Dsa.Session.Save(path + "\\" + name + $"-{++current}.json");
+ }
+ else
+ {
+ Directory.CreateDirectory(path);
+ Dsa.Session.Save(path + "\\" + name + $"-0.json");
+ }
+
+ await this.ReplyAsync($"{name} wurde gespeichert");
}
private string[] ListSessions()
{
- return Directory.GetDirectories(@"..\..\sessions");
+ return Directory.GetDirectories(Session.DirectoryPath);
}
diff --git a/DiscoBot/DSA_Game/Save/Session.cs b/DiscoBot/DSA_Game/Save/Session.cs
index ed9c18d..0358b22 100644
--- a/DiscoBot/DSA_Game/Save/Session.cs
+++ b/DiscoBot/DSA_Game/Save/Session.cs
@@ -10,12 +10,15 @@ namespace DiscoBot.DSA_Game.Save
using DiscoBot.DSA_Game.Characters;
+ using Discord;
using Discord.Commands;
using Newtonsoft.Json;
public class Session
{
+ public static string DirectoryPath { get; set; } = @"..\..\sessions";
+
public ICommandContext GeneralContext { get; set; }
public Dictionary<string, string> Relation { get; set; } = new Dictionary<string, string>(); // dictionary to match the char
@@ -23,7 +26,7 @@ namespace DiscoBot.DSA_Game.Save
public List<SaveChar> Chars { get; set; } = new List<SaveChar>(); // list of all characters
public string SessionName { get; set; }
-
+
public static Session Load(string path = @"..\..\session.json")
{
try
@@ -33,6 +36,8 @@ namespace DiscoBot.DSA_Game.Save
catch (Exception e)
{
// ignored
+ var log = new LogMessage(LogSeverity.Warning, "Properties", $"Laden von Save-File {path} fehlgeschlagen.", e);
+ Console.WriteLine(log);
return null;
}
}
@@ -45,6 +50,8 @@ namespace DiscoBot.DSA_Game.Save
}
catch (Exception e)
{
+ var log = new LogMessage(LogSeverity.Warning, "Properties", $"Speichern von Save-File {path} fehlgeschlagen.", e);
+ Console.WriteLine(log);
// ignored
}
}