From ff80592d541c79653ef0a7c04e0938d7249069ef Mon Sep 17 00:00:00 2001 From: Kobert-P Date: Mon, 11 Jun 2018 16:49:40 +0200 Subject: Neu: !list held + !list waffe Verbesserung --- DiscoBot/Auxiliary/Extensions.cs | 15 ++++++++ DiscoBot/Commands/List.cs | 76 ++++++++++++++++++++++++++++++++++------ 2 files changed, 81 insertions(+), 10 deletions(-) diff --git a/DiscoBot/Auxiliary/Extensions.cs b/DiscoBot/Auxiliary/Extensions.cs index 2176129..a1d58fa 100644 --- a/DiscoBot/Auxiliary/Extensions.cs +++ b/DiscoBot/Auxiliary/Extensions.cs @@ -13,5 +13,20 @@ } return temp; } + + + + //This mehod extends string. + //It adds spaces at the HEAD of a string until a fixed length is reached. + //If the original string is already longer, it is returner unmodified. + public static string AddSpacesAtHead(this string str, int length) + { + string temp = ""; + for (int i = str.Length; i < length; i++) + { + temp += " "; + } + return temp + str; + } } } diff --git a/DiscoBot/Commands/List.cs b/DiscoBot/Commands/List.cs index 5b7b8b4..be7441b 100644 --- a/DiscoBot/Commands/List.cs +++ b/DiscoBot/Commands/List.cs @@ -24,8 +24,50 @@ int first_column_width = 18; + int persist = 0; + switch (prop.ToLower()) { + case "all": + case "held": + case "char": + case "brief": + case "zettel": + persist = 1; + + res.Add(character.Name + ":\n"); + //Eigenschaften + res.AddRange( + character.Eigenschaften.Take(9).Select(s => s.Key + ":\t " + s.Value)); + res.Add(""); + //LE/AE + res.Add("LE:\t " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis); + if (character.Astralpunkte_Basis > 0) + { + res.Add("AE:\t " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis); + } + res.Add(""); + //Kampfwerte + res.Add("".AddSpaces(first_column_width) + " AT/PA"); + res.AddRange( + character.Kampftalente.Select(s => s.Name.AddSpaces(first_column_width) + " " + s.At.ToString().AddSpacesAtHead(2) + "/" + s.Pa.ToString().AddSpacesAtHead(2))); + res.Add(""); + //Vorteile + res.AddRange( + character.Vorteile + .Select(s => s.Name + "\t " + s.Value)); + res.Add(""); + //Talente + res.AddRange( + character.Talente.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe)); + res.Add(""); + //evtl Zauber + if (character.Zauber.Count > 0) + { + res.AddRange( + character.Zauber.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe)); + } + break; case "chars": case "Chars": res.AddRange(Dsa.Chars.Select(x => x.Name)); @@ -37,13 +79,13 @@ case "eig": case "eigenschaft": case "eigenschaften": - res.Add(character.Name + ":"); + res.Add(character.Name + ":\n"); res.AddRange( character.Eigenschaften.Take(8).Select(s => s.Key + ":\t " + s.Value)); break; case "stat": case "stats": - res.Add(character.Name + ":"); + res.Add(character.Name + ":\n"); res.AddRange( //character.Eigenschaften.Select(s => s.Key + ":\t " + s.Value)); character.Eigenschaften.Take(9).Select(s => s.Key + ":\t " + s.Value)); @@ -56,13 +98,13 @@ case "t": case "ta": case "talent": - res.Add(character.Name + ":"); + res.Add(character.Name + ":\n"); res.AddRange( character.Talente.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe)); break; case "zauber": case "z": - res.Add(character.Name + ":"); + res.Add(character.Name + ":\n"); res.AddRange( character.Zauber.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe)); break; @@ -70,11 +112,12 @@ case "waffe": case "waffen": res.Add(character.Name + ":"); + res.Add("".AddSpaces(first_column_width) + " AT/PA"); res.AddRange( - character.Kampftalente.Select(s => s.Name)); + character.Kampftalente.Select(s => s.Name.AddSpaces(first_column_width) + " " + s.At.ToString().AddSpacesAtHead(2) + "/" + s.Pa.ToString().AddSpacesAtHead(2))); break; case "fern": - res.Add(character.Name + ":"); + res.Add(character.Name + ":\n"); res.AddRange( character.Talente.Select(s => s.Name)); break; @@ -87,7 +130,7 @@ case "vt": case "vor": case "vorteil": - res.Add(character.Name + ":"); + res.Add(character.Name + ":\n"); res.AddRange( character.Vorteile .Select(s => s.Name + "\t " + s.Value));// (s.Value == 0 ? string.Empty : s.Value.ToString()))); @@ -103,14 +146,27 @@ { if (sb.Length + re.Length > 1798) { - await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90)); + if (persist == 1) + { + await this.ReplyAsync("```xl\n" + sb.ToString() + "\n```"); + } + else + { + await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90)); + } sb.Clear(); } sb.AppendLine(re); } - - await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90)); + if (persist == 1) + { + await this.ReplyAsync("```xl\n" + sb.ToString() + "\n```"); + } + else + { + await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90)); + } } } } -- cgit v1.2.3-54-g00ecf