allow bounties to be collated together if they are the same type
This commit is contained in:
		
							parent
							
								
									dfd66c9fb6
								
							
						
					
					
						commit
						8796078b67
					
				| @ -6,7 +6,7 @@ using System.Threading.Tasks; | ||||
| using NonaBGS.Journal; | ||||
| 
 | ||||
| namespace NonaBGS.BGS { | ||||
|     public class LogEntry { | ||||
|     public class LogEntry : IComparable<LogEntry> { | ||||
|         private List<Entry> entries = new List<Entry>(); | ||||
| 
 | ||||
|         public List<Entry> Entries => entries; | ||||
| @ -20,5 +20,9 @@ namespace NonaBGS.BGS { | ||||
|         public virtual bool OnlyControllingFaction { | ||||
|             get { return false; } | ||||
|         } | ||||
| 
 | ||||
|         public virtual int CompareTo(LogEntry other) { | ||||
|             throw new NotImplementedException("not implemented"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -60,6 +60,7 @@ namespace NonaBGS.BGS { | ||||
| 
 | ||||
|             foreach (var e in relevant) { | ||||
|                 LogEntry entry = null; | ||||
|                 bool collate = false; | ||||
| 
 | ||||
|                 if (e.Is(Events.Docked)) { | ||||
|                     /* gleem the current station from this message | ||||
| @ -95,6 +96,8 @@ namespace NonaBGS.BGS { | ||||
|                     entry.System = current_system; | ||||
|                     entry.Station = current_station; | ||||
|                     entry.Faction = controlling_faction; | ||||
| 
 | ||||
|                     collate = true; | ||||
|                 } else if (e.Is(Events.SellMicroResources)) { | ||||
|                     entry = new SellMicroResources(current_system, current_station); | ||||
|                     entry.Entries.Add(e); | ||||
| @ -122,7 +125,21 @@ namespace NonaBGS.BGS { | ||||
|                     .First() | ||||
|                     ; | ||||
| 
 | ||||
|                 if (objective != null) { | ||||
|                 if (objective == null) { | ||||
|                     continue; | ||||
|                 } | ||||
| 
 | ||||
|                 LogEntry existing = null; | ||||
| 
 | ||||
|                 try { | ||||
|                     existing = objective.LogEntries.Find(x => x.CompareTo(entry) == 0); | ||||
|                 } catch (NotImplementedException) { | ||||
|                     // Equivalent to not having found anything | ||||
|                     existing = null; | ||||
|                 } | ||||
|                 if (collate && existing != null) { | ||||
|                     existing.Entries.Add(e); | ||||
|                 } else if (!collate || existing == null) { | ||||
|                     objective.LogEntries.Add(entry); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| @ -30,6 +30,19 @@ namespace NonaBGS.BGS { | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public override int CompareTo(LogEntry other) { | ||||
|             if (other.GetType() != typeof(Vouchers)) { | ||||
|                 return -1; | ||||
|             } | ||||
| 
 | ||||
|             var b = other as Vouchers; | ||||
|             if (b.Type == Type) { | ||||
|                 return 0; | ||||
|             } | ||||
| 
 | ||||
|             return -1; | ||||
|         } | ||||
| 
 | ||||
|         public override string ToString() { | ||||
|             return string.Format("{0} Vouchers: {1}", Type, Credits.FormatCredits(TotalSum)); | ||||
|         } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user