add thargoid kills to transaction parser

This commit is contained in:
2022-11-25 13:45:02 +01:00
parent 85848a7381
commit a49859b079
9 changed files with 137 additions and 33 deletions

View File

@@ -2,11 +2,11 @@
namespace EDPlayerJournal.BGS;
public class FactionKillBonds : Transaction {
public int TotalSum {
public ulong TotalSum {
get {
return Entries
return (ulong)Entries
.OfType<FactionKillBondEntry>()
.Sum(x => x.Reward)
.Sum(x => (decimal)x.Reward)
;
}
}

View File

@@ -0,0 +1,44 @@
using EDPlayerJournal.Entries;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EDPlayerJournal.BGS;
public class ThargoidKill : Transaction {
/// <summary>
/// Thargoid vessel that was killed
/// </summary>
public ThargoidVessel ThargoidType { get; set; } = ThargoidVessel.Unknown;
/// <summary>
/// Name of the thargoid type killed
/// </summary>
public string? ThargoidName { get; set; }
/// <summary>
/// Total reward received
/// </summary>
public ulong TotalReward {
get { return (ulong)Entries.OfType<FactionKillBondEntry>().Sum(x => (decimal)x.Reward); }
}
public ThargoidKill() { }
public ThargoidKill(FactionKillBondEntry entry) {
if (string.Compare(entry.VictimFaction, Thargoid.ThargoidFaction) != 0) {
throw new Exception("Not a valid thargoid kill");
}
Entries.Add(entry);
ThargoidType = Thargoid.GetVesselByPayout(entry.Reward);
ThargoidName = Thargoid.GetVesselName(ThargoidType);
}
public override string ToString() {
return string.Format("{0}x {1} killed", Entries.Count, ThargoidName);
}
}

View File

@@ -580,11 +580,26 @@ internal class MarketSellParser : TransactionParserPart {
}
}
internal class FactionKillBondParser : TransactionParserPart {
public void Parse(Entry e, TransactionParserContext context, TransactionList transactions) {
FactionKillBondEntry? entry = e as FactionKillBondEntry;
if (entry == null) {
throw new NotImplementedException();
}
if (string.Compare(entry.VictimFaction, Thargoid.ThargoidFaction) == 0) {
// Thargoid bonk
transactions.Add(new ThargoidKill(entry));
}
}
}
public class TransactionParser {
private static Dictionary<string, TransactionParserPart> ParserParts { get; } = new()
{
{ Events.CommitCrime, new CommitCrimeParser() },
{ Events.Docked, new DockedParser() },
{ Events.FactionKillBond, new FactionKillBondParser() },
{ Events.FSDJump, new FSDJumpParser() },
{ Events.Location, new LocationParser() },
{ Events.MarketBuy, new MarketBuyParser() },