Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 20c44d41ca | |||
| 4f339944c6 | |||
| ae4e181e7f | |||
| be59588351 | |||
| 1b2a162ac5 | |||
| f490d4ba4d | |||
| 6b09ec4db3 | |||
| d7a1ac5ef2 | |||
| 3643dda39e | |||
| c7be0ef3f5 | |||
| 6a36458026 |
@@ -19,14 +19,24 @@ public class CombatZone : Transaction {
|
|||||||
public bool? SpecOps { get; set; }
|
public bool? SpecOps { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether captain was won
|
/// Whether allied captain objective was won
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? Captain { get; set; }
|
public bool? AlliedCaptain { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether correspondent objective was won
|
/// Whether enemy captain objective was won
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? Correspondent { get; set; }
|
public bool? EnemyCaptain { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the allied correspondent objective was won
|
||||||
|
/// </summary>
|
||||||
|
public bool? AlliedCorrespondent { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the enemy correspondent objective was won
|
||||||
|
/// </summary>
|
||||||
|
public bool? EnemyCorrespondent { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether cap ship objective was won
|
/// Whether cap ship objective was won
|
||||||
@@ -41,7 +51,14 @@ public class CombatZone : Transaction {
|
|||||||
if (IsGround) {
|
if (IsGround) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return new List<bool?>() { SpecOps, Captain, Correspondent, CapitalShip }
|
return new List<bool?>() {
|
||||||
|
SpecOps,
|
||||||
|
AlliedCaptain,
|
||||||
|
EnemyCaptain,
|
||||||
|
AlliedCorrespondent,
|
||||||
|
EnemyCorrespondent,
|
||||||
|
CapitalShip
|
||||||
|
}
|
||||||
.Where(x => x != null && x == true)
|
.Where(x => x != null && x == true)
|
||||||
.Count()
|
.Count()
|
||||||
;
|
;
|
||||||
|
|||||||
65
EDPlayerJournal/BGS/Parsers/ShipTargetedParser.cs
Normal file
65
EDPlayerJournal/BGS/Parsers/ShipTargetedParser.cs
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
using EDPlayerJournal.Entries;
|
||||||
|
|
||||||
|
namespace EDPlayerJournal.BGS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// With ship targeted we might find out to which faction a given NPC belonged. This is
|
||||||
|
/// useful later when said NPC gets killed or murdered.
|
||||||
|
/// </summary>
|
||||||
|
internal class ShipTargetedParser : ITransactionParserPart {
|
||||||
|
public void Parse(Entry e, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) {
|
||||||
|
ShipTargetedEntry? entry = e as ShipTargetedEntry;
|
||||||
|
if (entry == null) {
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scan happens in stages, and sometimes this information is not known
|
||||||
|
// yet. Do now throw an error, this is expected behaviour.
|
||||||
|
if (!string.IsNullOrEmpty(entry.PilotNameLocalised) &&
|
||||||
|
!string.IsNullOrEmpty(entry.Faction)) {
|
||||||
|
context.NPCFaction.TryAdd(entry.PilotNameLocalised, entry.Faction);
|
||||||
|
}
|
||||||
|
|
||||||
|
string? faction = context.LastRecordedAwardingFaction;
|
||||||
|
|
||||||
|
// We have seen a captain?
|
||||||
|
if (NPCs.IsWarzoneCaptain(entry.PilotName)) {
|
||||||
|
// if we have faction information, we can compare it to figure out
|
||||||
|
// whether it is the enemy or allied faction. but this is not always
|
||||||
|
// possible. In such a case we assume we have seen the enemy captain.
|
||||||
|
if (!string.IsNullOrEmpty(entry.Faction) &&
|
||||||
|
!string.IsNullOrEmpty(faction)) {
|
||||||
|
if (string.Compare(faction, entry.Faction) != 0) {
|
||||||
|
context.HaveSeenEnemyCaptain = true;
|
||||||
|
} else {
|
||||||
|
context.HaveSeenAlliedCaptain = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
context.HaveSeenEnemyCaptain = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spec ops?
|
||||||
|
if (NPCs.IsSpecOps(entry.PilotName)) {
|
||||||
|
context.HaveSeenSpecOps = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Correspondent?
|
||||||
|
if (NPCs.IsWarzoneCorrespondent(entry.PilotName)) {
|
||||||
|
// if we have faction information, we can compare it to figure out
|
||||||
|
// whether it is the enemy or allied faction. but this is not always
|
||||||
|
// possible. In such a case we assume we have seen the enemy
|
||||||
|
// correspondent.
|
||||||
|
if (!string.IsNullOrEmpty(entry.Faction) &&
|
||||||
|
!string.IsNullOrEmpty(faction)) {
|
||||||
|
if (string.Compare(faction, entry.Faction) != 0) {
|
||||||
|
context.HaveSeenEnemyCorrespondent = true;
|
||||||
|
} else {
|
||||||
|
context.HaveSeenAlliedCorrespondent = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
context.HaveSeenEnemyCorrespondent = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -137,41 +137,6 @@ internal class DockedParser : ITransactionParserPart {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// With ship targeted we might find out to which faction a given NPC belonged. This is
|
|
||||||
/// useful later when said NPC gets killed or murdered.
|
|
||||||
/// </summary>
|
|
||||||
internal class ShipTargetedParser : ITransactionParserPart {
|
|
||||||
public void Parse(Entry e, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) {
|
|
||||||
ShipTargetedEntry? entry = e as ShipTargetedEntry;
|
|
||||||
if (entry == null) {
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scan happens in stages, and sometimes this information is not known
|
|
||||||
// yet. Do now throw an error, this is expected behaviour.
|
|
||||||
if (!string.IsNullOrEmpty(entry.PilotNameLocalised) &&
|
|
||||||
!string.IsNullOrEmpty(entry.Faction)) {
|
|
||||||
context.NPCFaction.TryAdd(entry.PilotNameLocalised, entry.Faction);
|
|
||||||
}
|
|
||||||
|
|
||||||
// We have seen a captain?
|
|
||||||
if (NPCs.IsWarzoneCaptain(entry.PilotName)) {
|
|
||||||
context.HaveSeenCaptain = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spec ops?
|
|
||||||
if (NPCs.IsSpecOps(entry.PilotName)) {
|
|
||||||
context.HaveSeenSpecOps = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Correspondent?
|
|
||||||
if (NPCs.IsWarzoneCorrespondent(entry.PilotName)) {
|
|
||||||
context.HaveSeenCorrespondent = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Commit crime can result in a transaction, especially if the crime committed is
|
/// Commit crime can result in a transaction, especially if the crime committed is
|
||||||
/// murder.
|
/// murder.
|
||||||
@@ -667,6 +632,10 @@ internal class ReceiveTextParser : ITransactionParserPart {
|
|||||||
|
|
||||||
internal class DiedParser : ITransactionParserPart {
|
internal class DiedParser : ITransactionParserPart {
|
||||||
public void Parse(Entry entry, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) {
|
public void Parse(Entry entry, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions) {
|
||||||
|
// Death only matters in ship. On foot you can just redeploy with the dropship.
|
||||||
|
if (context.IsOnFoot) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// You can't complete a combat zone if you die in it. Others might keep it open
|
// You can't complete a combat zone if you die in it. Others might keep it open
|
||||||
// for you, but still you will not have completed it unless you jump back in.
|
// for you, but still you will not have completed it unless you jump back in.
|
||||||
context.ResetCombatZone();
|
context.ResetCombatZone();
|
||||||
|
|||||||
@@ -51,9 +51,11 @@ internal class TransactionParserContext {
|
|||||||
public ulong? HighestCombatBond { get; set; }
|
public ulong? HighestCombatBond { get; set; }
|
||||||
|
|
||||||
public bool HaveSeenCapShip { get; set; } = false;
|
public bool HaveSeenCapShip { get; set; } = false;
|
||||||
public bool HaveSeenCaptain { get; set; } = false;
|
public bool HaveSeenAlliedCaptain { get; set; } = false;
|
||||||
|
public bool HaveSeenEnemyCaptain { get; set; } = false;
|
||||||
public bool HaveSeenSpecOps { get; set; } = false;
|
public bool HaveSeenSpecOps { get; set; } = false;
|
||||||
public bool HaveSeenCorrespondent { get; set; } = false;
|
public bool HaveSeenAlliedCorrespondent { get; set; } = false;
|
||||||
|
public bool HaveSeenEnemyCorrespondent { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns true if the current session is legacy
|
/// Returns true if the current session is legacy
|
||||||
@@ -192,10 +194,14 @@ internal class TransactionParserContext {
|
|||||||
if (HaveSeenCapShip) {
|
if (HaveSeenCapShip) {
|
||||||
grade = CombatZones.DifficultyHigh;
|
grade = CombatZones.DifficultyHigh;
|
||||||
} else {
|
} else {
|
||||||
int warzoneNpcs = new List<bool>() { HaveSeenCaptain, HaveSeenCorrespondent, HaveSeenSpecOps }
|
int warzoneNpcs = new List<bool>() {
|
||||||
.Where(x => x == true)
|
HaveSeenEnemyCaptain,
|
||||||
.Count()
|
HaveSeenEnemyCorrespondent,
|
||||||
;
|
HaveSeenSpecOps
|
||||||
|
}
|
||||||
|
.Where(x => x == true)
|
||||||
|
.Count()
|
||||||
|
;
|
||||||
|
|
||||||
if (warzoneNpcs >= 1 && grade == CombatZones.DifficultyLow) {
|
if (warzoneNpcs >= 1 && grade == CombatZones.DifficultyLow) {
|
||||||
grade = CombatZones.DifficultyMedium;
|
grade = CombatZones.DifficultyMedium;
|
||||||
@@ -222,8 +228,10 @@ internal class TransactionParserContext {
|
|||||||
// Sad truth is, if HaveSeenXXX is false, we just don't know for certain
|
// Sad truth is, if HaveSeenXXX is false, we just don't know for certain
|
||||||
CapitalShip = HaveSeenCapShip ? true : null,
|
CapitalShip = HaveSeenCapShip ? true : null,
|
||||||
SpecOps = HaveSeenSpecOps ? true : null,
|
SpecOps = HaveSeenSpecOps ? true : null,
|
||||||
Correspondent = HaveSeenCorrespondent ? true : null,
|
EnemyCorrespondent = HaveSeenEnemyCorrespondent ? true : null,
|
||||||
Captain = HaveSeenCaptain ? true : null,
|
AlliedCorrespondent = HaveSeenAlliedCorrespondent ? true : null,
|
||||||
|
EnemyCaptain = HaveSeenEnemyCaptain ? true : null,
|
||||||
|
AlliedCaptain = HaveSeenAlliedCaptain ? true : null,
|
||||||
};
|
};
|
||||||
zone.Entries.Add(e);
|
zone.Entries.Add(e);
|
||||||
transactions.Add(zone);
|
transactions.Add(zone);
|
||||||
@@ -246,8 +254,10 @@ internal class TransactionParserContext {
|
|||||||
public void ResetCombatZone() {
|
public void ResetCombatZone() {
|
||||||
HighestCombatBond = null;
|
HighestCombatBond = null;
|
||||||
HaveSeenCapShip = false;
|
HaveSeenCapShip = false;
|
||||||
HaveSeenCaptain = false;
|
HaveSeenAlliedCaptain = false;
|
||||||
HaveSeenCorrespondent = false;
|
HaveSeenEnemyCaptain = false;
|
||||||
|
HaveSeenAlliedCorrespondent = false;
|
||||||
|
HaveSeenEnemyCorrespondent = false;
|
||||||
HaveSeenSpecOps = false;
|
HaveSeenSpecOps = false;
|
||||||
LastRecordedAwardingFaction = null;
|
LastRecordedAwardingFaction = null;
|
||||||
OnFootKills = 0;
|
OnFootKills = 0;
|
||||||
|
|||||||
@@ -13,16 +13,6 @@ public class Vouchers : Transaction {
|
|||||||
Entries.Add(e);
|
Entries.Add(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool SystemContribution {
|
|
||||||
get {
|
|
||||||
if (Faction == Factions.PilotsFederation && Type == "Combat Bond") {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public long TotalSum {
|
public long TotalSum {
|
||||||
get {
|
get {
|
||||||
if (Faction == null) {
|
if (Faction == null) {
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ public class EnglishMissionNames {
|
|||||||
{"Mission_Rescue_Elections_name", "Liberate Hostages (Election)" },
|
{"Mission_Rescue_Elections_name", "Liberate Hostages (Election)" },
|
||||||
{"Mission_Rescue_name", "Liberate Hostages" },
|
{"Mission_Rescue_name", "Liberate Hostages" },
|
||||||
{"Mission_Rescue_Planet_Expansion_name", "Planet Rescue (Expansion)" },
|
{"Mission_Rescue_Planet_Expansion_name", "Planet Rescue (Expansion)" },
|
||||||
|
{"Mission_Rescue_Planet_Retreat_name", "Planet Rescue (Retreat)" },
|
||||||
{"Mission_Rescue_Planet_name", "Planet Rescue"},
|
{"Mission_Rescue_Planet_name", "Planet Rescue"},
|
||||||
{"MISSION_Salvage_CivilUnrest_name", "Salvage (Civil Unrest)"},
|
{"MISSION_Salvage_CivilUnrest_name", "Salvage (Civil Unrest)"},
|
||||||
{"MISSION_Salvage_Expansion_name", "Salvage (Expansion)"},
|
{"MISSION_Salvage_Expansion_name", "Salvage (Expansion)"},
|
||||||
@@ -129,6 +130,8 @@ public class EnglishMissionNames {
|
|||||||
{"Mission_TW_Massacre_Medusa_Singular_name", "Kill Medusa" },
|
{"Mission_TW_Massacre_Medusa_Singular_name", "Kill Medusa" },
|
||||||
{"Mission_TW_Massacre_Scout_Plural_name", "Kill Scouts" },
|
{"Mission_TW_Massacre_Scout_Plural_name", "Kill Scouts" },
|
||||||
{"Mission_TW_OnFoot_Reboot_Occupied_MB_name", "Reboot Settlement (Thargoid)" },
|
{"Mission_TW_OnFoot_Reboot_Occupied_MB_name", "Reboot Settlement (Thargoid)" },
|
||||||
|
{"Mission_TW_OnFoot_Reboot_NR_name", "Reboot Settlement (Thargoid)" },
|
||||||
|
{"Mission_TW_OnFoot_Reboot_MB_name", "Reboot Settlement (Thargoid)" },
|
||||||
{"Mission_TW_PassengerEvacuation_Burning_name", "Passenger Evacuation (Significant Damage)" },
|
{"Mission_TW_PassengerEvacuation_Burning_name", "Passenger Evacuation (Significant Damage)" },
|
||||||
{"Mission_TW_PassengerEvacuation_UnderAttack_name", "Passenger Evacuation (Thargoid Invasion)" },
|
{"Mission_TW_PassengerEvacuation_UnderAttack_name", "Passenger Evacuation (Thargoid Invasion)" },
|
||||||
{"Mission_TW_Rescue_UnderAttack_name", "Rescue (Thargoid Attack)" },
|
{"Mission_TW_Rescue_UnderAttack_name", "Rescue (Thargoid Attack)" },
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ using System.Linq;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using EliteBGS.LogGenerator;
|
using EliteBGS.LogGenerator;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace EliteBGS;
|
namespace EliteBGS;
|
||||||
|
|
||||||
@@ -23,6 +25,41 @@ public class DiscordLogGenerator {
|
|||||||
new SearchAndRescueFormat(),
|
new SearchAndRescueFormat(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
protected virtual string GetToolVersion() {
|
||||||
|
Version v = Assembly.GetCallingAssembly().GetName().Version;
|
||||||
|
string ver;
|
||||||
|
if (v == null) {
|
||||||
|
ver = "v?.?.?";
|
||||||
|
} else {
|
||||||
|
ver = "v" + v.ToString(3);
|
||||||
|
}
|
||||||
|
return string.Format("EliteBGS {0}", ver);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual DateTime? GetDateOfEarliestEntry(Objective objective) {
|
||||||
|
var it = objective
|
||||||
|
.Transactions
|
||||||
|
.OrderBy(x => x.CompletedAtDateTime)
|
||||||
|
.FirstOrDefault()
|
||||||
|
;
|
||||||
|
if (it != null) {
|
||||||
|
return it.CompletedAtDateTime;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual DateTime? GetDateOfLatestEntry(Objective objective) {
|
||||||
|
var it = objective
|
||||||
|
.Transactions
|
||||||
|
.OrderByDescending(x => x.CompletedAtDateTime)
|
||||||
|
.FirstOrDefault()
|
||||||
|
;
|
||||||
|
if (it != null) {
|
||||||
|
return it.CompletedAtDateTime;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual string GenerateSummary(Objective objective) {
|
protected virtual string GenerateSummary(Objective objective) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
@@ -76,7 +113,18 @@ public class DiscordLogGenerator {
|
|||||||
|
|
||||||
string summary = GenerateSummary(objective);
|
string summary = GenerateSummary(objective);
|
||||||
|
|
||||||
log.AppendFormat("**Date:** {0}\n", DateTime.Now.ToString("dd/MM/yyyy"));
|
log.AppendFormat("**Log Generated:** {0} by {1}\n",
|
||||||
|
DateTime.Now.ToString("dd/MM/yyyy"),
|
||||||
|
GetToolVersion()
|
||||||
|
);
|
||||||
|
var earliest = GetDateOfEarliestEntry(objective);
|
||||||
|
var latest = GetDateOfLatestEntry(objective);
|
||||||
|
if (earliest != null && latest != null) {
|
||||||
|
log.AppendFormat("**Date:** {0} - {1}\n",
|
||||||
|
GetDateOfEarliestEntry(objective),
|
||||||
|
GetDateOfLatestEntry(objective)
|
||||||
|
);
|
||||||
|
}
|
||||||
log.AppendFormat("**Target:** {0}\n", location);
|
log.AppendFormat("**Target:** {0}\n", location);
|
||||||
if (!string.IsNullOrEmpty(summary)) {
|
if (!string.IsNullOrEmpty(summary)) {
|
||||||
log.AppendFormat("**Summary**: {0}\n", summary);
|
log.AppendFormat("**Summary**: {0}\n", summary);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0-windows</TargetFramework>
|
<TargetFramework>net7.0-windows</TargetFramework>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<Version>0.3.3</Version>
|
<Version>0.3.4</Version>
|
||||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||||
<UseWindowsForms>true</UseWindowsForms>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<UseWPF>true</UseWPF>
|
<UseWPF>true</UseWPF>
|
||||||
|
|||||||
@@ -120,8 +120,10 @@
|
|||||||
<Expander Header="Optional Objectives" Visibility="{Binding IsShipCombatZone}">
|
<Expander Header="Optional Objectives" Visibility="{Binding IsShipCombatZone}">
|
||||||
<StackPanel Orientation="Vertical">
|
<StackPanel Orientation="Vertical">
|
||||||
<ToggleButton x:Name="CapitalShip" Margin="2,0,2,0" Content="Capital Ship" IsChecked="{Binding HasCapitalShip, Mode=TwoWay}" IsThreeState="False"/>
|
<ToggleButton x:Name="CapitalShip" Margin="2,0,2,0" Content="Capital Ship" IsChecked="{Binding HasCapitalShip, Mode=TwoWay}" IsThreeState="False"/>
|
||||||
<ToggleButton x:Name="Captain" Margin="2,0,2,0" Content="Captain" IsChecked="{Binding HasCaptain, Mode=TwoWay}" IsThreeState="False"/>
|
<ToggleButton x:Name="AlliedCaptain" Margin="2,0,2,0" Content="Allied Captain" IsChecked="{Binding HasAlliedCaptain, Mode=TwoWay}" IsThreeState="False"/>
|
||||||
<ToggleButton x:Name="Correspondent" Margin="2,0,2,0" Content="Correspondent" IsChecked="{Binding HasCorrespondent, Mode=TwoWay}" IsThreeState="False"/>
|
<ToggleButton x:Name="EnemyCaptain" Margin="2,0,2,0" Content="Enemy Captain" IsChecked="{Binding HasEnemyCaptain, Mode=TwoWay}" IsThreeState="False"/>
|
||||||
|
<ToggleButton x:Name="AlliedCorrespondent" Margin="2,0,2,0" Content="Allied Correspondent" IsChecked="{Binding HasAlliedCorrespondent, Mode=TwoWay}" IsThreeState="False"/>
|
||||||
|
<ToggleButton x:Name="EnemyCorrespondent" Margin="2,0,2,0" Content="Enemy Correspondent" IsChecked="{Binding HasEnemyCorrespondent, Mode=TwoWay}" IsThreeState="False"/>
|
||||||
<ToggleButton x:Name="SpecOps" Margin="2,0,2,0" Content="Spec Ops" IsChecked="{Binding HasSpecOps, Mode=TwoWay}" IsThreeState="False"/>
|
<ToggleButton x:Name="SpecOps" Margin="2,0,2,0" Content="Spec Ops" IsChecked="{Binding HasSpecOps, Mode=TwoWay}" IsThreeState="False"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Expander>
|
</Expander>
|
||||||
|
|||||||
@@ -120,14 +120,14 @@ public class UITransaction : INotifyPropertyChanged {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasCaptain {
|
public bool HasEnemyCaptain {
|
||||||
get {
|
get {
|
||||||
CombatZone combat = Transaction as CombatZone;
|
CombatZone combat = Transaction as CombatZone;
|
||||||
if (combat == null) {
|
if (combat == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return combat.Captain ?? false;
|
return combat.EnemyCaptain ?? false;
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
CombatZone combat = Transaction as CombatZone;
|
CombatZone combat = Transaction as CombatZone;
|
||||||
@@ -135,18 +135,18 @@ public class UITransaction : INotifyPropertyChanged {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
combat.Captain = value;
|
combat.EnemyCaptain = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasCorrespondent {
|
public bool HasAlliedCaptain {
|
||||||
get {
|
get {
|
||||||
CombatZone combat = Transaction as CombatZone;
|
CombatZone combat = Transaction as CombatZone;
|
||||||
if (combat == null) {
|
if (combat == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return combat.Correspondent ?? false;
|
return combat.AlliedCaptain ?? false;
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
CombatZone combat = Transaction as CombatZone;
|
CombatZone combat = Transaction as CombatZone;
|
||||||
@@ -154,7 +154,45 @@ public class UITransaction : INotifyPropertyChanged {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
combat.Correspondent = value;
|
combat.AlliedCaptain = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasEnemyCorrespondent {
|
||||||
|
get {
|
||||||
|
CombatZone combat = Transaction as CombatZone;
|
||||||
|
if (combat == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return combat.EnemyCorrespondent ?? false;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
CombatZone combat = Transaction as CombatZone;
|
||||||
|
if (combat == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
combat.EnemyCorrespondent = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool HasAlliedCorrespondent {
|
||||||
|
get {
|
||||||
|
CombatZone combat = Transaction as CombatZone;
|
||||||
|
if (combat == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return combat.AlliedCorrespondent ?? false;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
CombatZone combat = Transaction as CombatZone;
|
||||||
|
if (combat == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
combat.AlliedCorrespondent = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,5 +51,5 @@ using System.Windows;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.3.3.0")]
|
[assembly: AssemblyVersion("0.3.4.0")]
|
||||||
[assembly: AssemblyFileVersion("0.3.3.0")]
|
[assembly: AssemblyFileVersion("0.3.4.0")]
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# EliteBGS changelog
|
# EliteBGS changelog
|
||||||
|
|
||||||
|
## 0.3.4 on 18.06.2023
|
||||||
|
|
||||||
|
* Added possibility to specify allied, as well as enemy captain and correspondent.
|
||||||
|
* Added date range, and tool version to standard log format.
|
||||||
|
* Added new English mission names.
|
||||||
|
|
||||||
## 0.3.3 on 15.05.2023
|
## 0.3.3 on 15.05.2023
|
||||||
|
|
||||||
* Added payout for the Thargoid Glaive.
|
* Added payout for the Thargoid Glaive.
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ command line:
|
|||||||
winget install Microsoft.DotNet.DesktopRuntime.7
|
winget install Microsoft.DotNet.DesktopRuntime.7
|
||||||
```
|
```
|
||||||
|
|
||||||
You can download the **latest** version **0.3.3** at CodeBerg:
|
You can download the **latest** version **0.3.4** at CodeBerg:
|
||||||
|
|
||||||
* [https://codeberg.org/nola/EDBGS/releases](https://codeberg.org/nola/EDBGS/releases)
|
* [https://codeberg.org/nola/EDBGS/releases](https://codeberg.org/nola/EDBGS/releases)
|
||||||
|
|
||||||
Or alternatively from my server:
|
Or alternatively from my server:
|
||||||
|
|
||||||
* [https://bgs.n0la.org/elitebgs-0.3.3.zip](https://bgs.n0la.org/elitebgs-0.3.3.zip)
|
* [https://bgs.n0la.org/elitebgs-0.3.4.zip](https://bgs.n0la.org/elitebgs-0.3.4.zip)
|
||||||
|
|
||||||
## Old Versions
|
## Old Versions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user