implement failed missions which give negative INF
This commit is contained in:
		
							parent
							
								
									ee9f7ea4cd
								
							
						
					
					
						commit
						6dda7cfde4
					
				| @ -103,6 +103,24 @@ namespace EliteBGS.BGS { | ||||
|             return builder.ToString(); | ||||
|         } | ||||
| 
 | ||||
|         private string BuildFailedMissions(Objective objective) { | ||||
|             MissionFailed[] missions = objective.LogEntries.OfType<MissionFailed>().ToArray(); | ||||
|             StringBuilder builder = new StringBuilder(); | ||||
| 
 | ||||
|             if (missions.Length <= 0) { | ||||
|                 return ""; | ||||
|             } | ||||
| 
 | ||||
|             foreach (MissionFailed failed in missions) { | ||||
|                 MissionFailedEntry f = failed.Failed; | ||||
|                 builder.AppendFormat("Failed mission \"{0}\"\n", | ||||
|                     f.HumanReadableName == null ? f.Name : f.HumanReadableName | ||||
|                     ); | ||||
|             } | ||||
| 
 | ||||
|             return builder.ToString(); | ||||
|         } | ||||
| 
 | ||||
|         private string BuildMissionList(Objective objective) { | ||||
|             Dictionary<string, Dictionary<string, int>> collated = new Dictionary<string, Dictionary<string, int>>(); | ||||
|             StringBuilder output = new StringBuilder(); | ||||
| @ -190,6 +208,9 @@ namespace EliteBGS.BGS { | ||||
|                 var missions = BuildMissionList(objective); | ||||
|                 entries.Append(missions); | ||||
| 
 | ||||
|                 var failed = BuildFailedMissions(objective); | ||||
|                 entries.Append(failed); | ||||
| 
 | ||||
|                 var vouchers = BuildVouchers(objective); | ||||
|                 entries.Append(vouchers); | ||||
| 
 | ||||
|  | ||||
| @ -3,11 +3,9 @@ using EDJournal; | ||||
| 
 | ||||
| namespace EliteBGS.BGS { | ||||
|     public class MissionCompleted : LogEntry { | ||||
|         public MissionCompleted(MissionCompletedEntry e, string system, string station) { | ||||
|             this.Entries.Add(e); | ||||
|             this.Faction = e.JSON.GetValue("Faction").ToString(); | ||||
|             this.System = system; | ||||
|             this.Station = station; | ||||
|         public MissionCompleted(MissionCompletedEntry e) { | ||||
|             Entries.Add(e); | ||||
|             Faction = e.JSON.GetValue("Faction").ToString(); | ||||
|         } | ||||
| 
 | ||||
|         public string MissionName { | ||||
|  | ||||
							
								
								
									
										28
									
								
								BGS/MissionFailed.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								BGS/MissionFailed.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| using System.Text; | ||||
| using EDJournal; | ||||
| 
 | ||||
| namespace EliteBGS.BGS { | ||||
|     public class MissionFailed : LogEntry { | ||||
|         public MissionFailedEntry Failed { get; set; } | ||||
|         public MissionAcceptedEntry Accepted { get; set; } | ||||
| 
 | ||||
|         public MissionFailed(MissionAcceptedEntry accepted) { | ||||
|             Accepted = accepted; | ||||
|             Faction = accepted.Faction; | ||||
|         } | ||||
| 
 | ||||
|         public override string ToString() { | ||||
|             StringBuilder builder = new StringBuilder(); | ||||
| 
 | ||||
|             if (Failed == null || Accepted == null) { | ||||
|                 return ""; | ||||
|             } | ||||
| 
 | ||||
|             builder.AppendFormat("Mission failed: \"{0}\"", | ||||
|                 Failed.HumanReadableName != null ? Failed.HumanReadableName : Failed.Name | ||||
|                 ); | ||||
| 
 | ||||
|             return builder.ToString(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -30,6 +30,8 @@ namespace EliteBGS.BGS { | ||||
| 
 | ||||
|         private bool IsRelevant(Entry e) { | ||||
|             return e.Is(Events.MissionCompleted) || | ||||
|                 e.Is(Events.MissionFailed) || | ||||
|                 e.Is(Events.MissionAccepted) || | ||||
|                 e.Is(Events.Docked) || | ||||
|                 e.Is(Events.FSDJump) || | ||||
|                 e.Is(Events.MultiSellExplorationData) || | ||||
| @ -50,6 +52,8 @@ namespace EliteBGS.BGS { | ||||
|                            select log | ||||
|                            ; | ||||
| 
 | ||||
|             Dictionary<int, MissionAcceptedEntry> acceptedMissions = new Dictionary<int, MissionAcceptedEntry>(); | ||||
| 
 | ||||
|             string current_system = null; | ||||
|             string current_station = null; | ||||
|             string controlling_faction = null; | ||||
| @ -71,7 +75,7 @@ namespace EliteBGS.BGS { | ||||
|                     controlling_faction = (e as FSDJumpEntry).SystemFaction; | ||||
|                 } else if (e.Is(Events.MissionCompleted)) { | ||||
|                     var completed = e as MissionCompletedEntry; | ||||
|                     entry = new MissionCompleted(completed, current_system, current_station); | ||||
|                     entry = new MissionCompleted(completed) { System = current_system, Station = current_station }; | ||||
|                     if (completed.HumanReadableNameWasGenerated) { | ||||
|                         /* If the human readable name was generated, we send a log message. Because the | ||||
|                          * generated names all sort of suck, we should have more human readable names in | ||||
| @ -81,6 +85,22 @@ namespace EliteBGS.BGS { | ||||
|                             completed.Name + | ||||
|                             "\" was generated, please report this."); | ||||
|                     } | ||||
|                 } else if (e.Is(Events.MissionAccepted)) { | ||||
|                     MissionAcceptedEntry accepted = e as MissionAcceptedEntry; | ||||
|                     acceptedMissions[accepted.MissionID] = accepted; | ||||
|                 } else if (e.Is(Events.MissionFailed)) { | ||||
|                     var failed = e as MissionFailedEntry; | ||||
|                     var accepted = acceptedMissions[failed.MissionID]; | ||||
|                     if (accepted == null) { | ||||
|                         OnLog?.Invoke("Mission failed that wasn't accepted, please adjust time frame."); | ||||
|                         continue; | ||||
|                     } | ||||
|                     entry = new MissionFailed(accepted) { Failed = failed, System = current_system }; | ||||
|                     if (failed.HumanReadableName == null) { | ||||
|                         OnLog?.Invoke("Human readable name for mission \"" + | ||||
|                             failed.Name + | ||||
|                             "\" was not recognised"); | ||||
|                     } | ||||
|                 } else if (e.Is(Events.MultiSellExplorationData)) { | ||||
|                     /* For multi-sell-exploraton-data only the controlling faction of the station sold to matters. | ||||
|                      */ | ||||
|  | ||||
| @ -79,6 +79,7 @@ | ||||
|     </ApplicationDefinition> | ||||
|     <Compile Include="BGS\DiscordLogGenerator.cs" /> | ||||
|     <Compile Include="BGS\GenericDiscordLog.cs" /> | ||||
|     <Compile Include="BGS\MissionFailed.cs" /> | ||||
|     <Compile Include="BGS\NonaDiscordLog.cs" /> | ||||
|     <Compile Include="BGS\SellCargo.cs" /> | ||||
|     <Compile Include="BGS\SellMicroResources.cs" /> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user