using System; using System.Linq; using System.Collections.Generic; using System.Text; using EliteBGS.BGS.LogGenerator; namespace EliteBGS.BGS { public class DiscordLogGenerator { protected List formatters = new List() { new MissionFormat(), new FailedMissionFormat(), new MurderFormat(), new VoucherFormat(), new CombatZoneFormat(), new KillBondsFormat(), new CartographicsFormat(), new MicroResourcesFormat(), new MarketBuyFormat(), new CargoSoldFormatter(), new VistaGenomicsFormat(), new SearchAndRescueFormat(), }; protected virtual string GenerateHeader() { return ""; } protected virtual string GenerateFooter() { return "\n"; } protected virtual string GenerateObjectiveHeader(Objective objective) { StringBuilder log = new StringBuilder(); log.AppendFormat("**Date:** {0}\n", DateTime.Now.ToString("dd/MM/yyyy")); log.AppendFormat("**Location:** {0}\n", objective.ToShortString()); log.AppendFormat("**Faction:** {0}\n", objective.Faction); log.AppendLine(""); log.AppendLine("```"); return log.ToString(); } protected virtual string GenerateObjectiveFooter(Objective objective) { return "```\n"; } public virtual string GenerateDiscordLog(Report report) { StringBuilder log = new StringBuilder(); var objectives = report.Objectives .Where(x => x.IsEnabled && x.LogEntries.Count() > 0) .ToArray() ; if (objectives.Count() <= 0) { return ""; } log.AppendFormat("{0}\n", GenerateHeader()); foreach (Objective objective in objectives) { StringBuilder objlog = new StringBuilder(); log.AppendFormat("{0}\n", GenerateObjectiveHeader(objective)); foreach (LogFormatter formatter in formatters) { string text = formatter.GenerateLog(objective); text = text.Trim(); if (!string.IsNullOrEmpty(text)) { objlog.AppendFormat("{0}\n\n", text); } } log.AppendFormat("{0}\n", objlog.ToString().Trim()); log.AppendFormat("{0}\n", GenerateObjectiveFooter(objective)); } log.AppendFormat("{0}\n", GenerateFooter()); return log.ToString().Trim(); } } }