parse out commander names from logs
This commit is contained in:
		
							parent
							
								
									9918c7d559
								
							
						
					
					
						commit
						007b391dc2
					
				
							
								
								
									
										17
									
								
								EDPlayerJournal/BGS/Parsers/CommanderParser.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								EDPlayerJournal/BGS/Parsers/CommanderParser.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | using EDPlayerJournal.BGS; | ||||||
|  | using EDPlayerJournal.Entries; | ||||||
|  | 
 | ||||||
|  | internal class CommanderParser : ITransactionParserPart { | ||||||
|  |     public void Parse(Entry entry, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) { | ||||||
|  |         CommanderEntry commanderEntry = (CommanderEntry)entry; | ||||||
|  |         if (commanderEntry != null && !string.IsNullOrEmpty(commanderEntry.FullName)) { | ||||||
|  |             if (!context.Commanders.Contains(commanderEntry.FullName)) { | ||||||
|  |                 context.Commanders.Add(commanderEntry.FullName); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         // A commander entry happens when you log out, and log back in again | ||||||
|  |         // for example when switching from Open, to Solo or PG. | ||||||
|  |         context.DiscernCombatZone(transactions, entry); | ||||||
|  |         context.ResetCombatZone(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -602,15 +602,6 @@ internal class DropshipDeployParser : ITransactionParserPart { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| internal class CommanderParser : ITransactionParserPart { |  | ||||||
|     public void Parse(Entry entry, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) { |  | ||||||
|         // A commander entry happens when you log out, and log back in again |  | ||||||
|         // for example when switching from Open, to Solo or PG. |  | ||||||
|         context.DiscernCombatZone(transactions, entry); |  | ||||||
|         context.ResetCombatZone(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| public class TransactionParser { | public class TransactionParser { | ||||||
|     private static Dictionary<string, ITransactionParserPart> ParserParts { get; } = new() |     private static Dictionary<string, ITransactionParserPart> ParserParts { get; } = new() | ||||||
|     { |     { | ||||||
| @ -669,6 +660,11 @@ public class TransactionParser { | |||||||
|         return Parse(entries, defaultOptions); |         return Parse(entries, defaultOptions); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /// <summary> | ||||||
|  |     /// List of commanders seen during parsing. | ||||||
|  |     /// </summary> | ||||||
|  |     public List<string> Commanders { get; set; } = new(); | ||||||
|  | 
 | ||||||
|     public List<Transaction>? Parse(IEnumerable<Entry> entries, TransactionParserOptions options) { |     public List<Transaction>? Parse(IEnumerable<Entry> entries, TransactionParserOptions options) { | ||||||
|         TransactionList transactions = new(); |         TransactionList transactions = new(); | ||||||
|         TransactionParserContext context = new(); |         TransactionParserContext context = new(); | ||||||
| @ -686,6 +682,9 @@ public class TransactionParser { | |||||||
|             transactionParserPart.Parse(entry, context, options, transactions); |             transactionParserPart.Parse(entry, context, options, transactions); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // Copy out list of commanders seen | ||||||
|  |         Commanders = context.Commanders; | ||||||
|  | 
 | ||||||
|         return transactions.ToList(); |         return transactions.ToList(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,6 +3,11 @@ | |||||||
| namespace EDPlayerJournal.BGS; | namespace EDPlayerJournal.BGS; | ||||||
| 
 | 
 | ||||||
| internal class TransactionParserContext { | internal class TransactionParserContext { | ||||||
|  |     /// <summary> | ||||||
|  |     /// List of commander names seen in the logs. May be empty. | ||||||
|  |     /// </summary> | ||||||
|  |     public List<string> Commanders { get; } = new(); | ||||||
|  | 
 | ||||||
|     /// <summary> |     /// <summary> | ||||||
|     /// Name of the current system the player is in. |     /// Name of the current system the player is in. | ||||||
|     /// </summary> |     /// </summary> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user