46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using EDPlayerJournal.Entries;
 | 
						|
 | 
						|
namespace EDPlayerJournal.BGS;
 | 
						|
 | 
						|
internal class MarketSellParser : ITransactionParserPart {
 | 
						|
    public void Parse(Entry e, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) {
 | 
						|
        long profit = 0;
 | 
						|
 | 
						|
        if (context.StationOwner == null) {
 | 
						|
            transactions.AddIncomplete(
 | 
						|
                new SellCargo(),
 | 
						|
                "Could not discern the station owner market sell.",
 | 
						|
                e);
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        // Ignore if its a fleet carrier faction.
 | 
						|
        if (string.Compare(context.StationOwner, Factions.FleetCarrier, StringComparison.OrdinalIgnoreCase) == 0 &&
 | 
						|
            options.IgnoreFleetCarrierFaction) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        MarketSellEntry? entry = e as MarketSellEntry;
 | 
						|
        if (entry == null) {
 | 
						|
            throw new NotImplementedException();
 | 
						|
        }
 | 
						|
 | 
						|
        if (entry.Type == null) {
 | 
						|
            throw new InvalidJournalEntryException("market sell contains no cargo type");
 | 
						|
        }
 | 
						|
 | 
						|
        if (context.BuyCost.ContainsKey(entry.Type)) {
 | 
						|
            long avg = context.BuyCost[entry.Type];
 | 
						|
            profit = (long)entry.TotalSale - (avg * entry.Count);
 | 
						|
        }
 | 
						|
 | 
						|
        transactions.Add(new SellCargo(entry) {
 | 
						|
            System = context.CurrentSystem,
 | 
						|
            Station = context.CurrentStation,
 | 
						|
            Faction = context.StationOwner,
 | 
						|
            Profit = profit,
 | 
						|
            IsLegacy = context.IsLegacy,
 | 
						|
        });
 | 
						|
    }
 | 
						|
}
 |