2022-11-24 19:38:19 +01:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using EDPlayerJournal.BGS;
|
|
|
|
|
using System.Linq;
|
2022-11-26 17:09:01 +01:00
|
|
|
|
using System.Windows;
|
2022-11-24 19:38:19 +01:00
|
|
|
|
|
|
|
|
|
namespace EliteBGS;
|
|
|
|
|
|
|
|
|
|
public class UITransaction {
|
|
|
|
|
public bool IsEnabled { get; set; } = true;
|
|
|
|
|
|
|
|
|
|
public bool IsExpanded { get; set; } = true;
|
|
|
|
|
|
2022-11-26 17:09:01 +01:00
|
|
|
|
public Visibility IsCombatZone {
|
|
|
|
|
get {
|
|
|
|
|
return (Transaction != null && Transaction.GetType() == typeof(CombatZone)) ? Visibility.Visible : Visibility.Hidden;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Visibility IsSellCargo {
|
|
|
|
|
get {
|
|
|
|
|
return (Transaction != null && Transaction.GetType() == typeof(SellCargo)) ? Visibility.Visible : Visibility.Hidden;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-28 20:06:14 +01:00
|
|
|
|
public Visibility IsShipCombatZone {
|
|
|
|
|
get {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return Visibility.Hidden;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (string.Compare(combat.Type, "Ship") == 0) {
|
|
|
|
|
return Visibility.Visible;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Visibility.Hidden;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool? HasSpecOps {
|
|
|
|
|
get {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return combat.SpecOps ?? false;
|
|
|
|
|
}
|
|
|
|
|
set {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
combat.SpecOps = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool? HasCapitalShip {
|
|
|
|
|
get {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return combat.CapitalShip ?? false;
|
|
|
|
|
}
|
|
|
|
|
set {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
combat.CapitalShip = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool? HasCaptain {
|
|
|
|
|
get {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return combat.Captain ?? false;
|
|
|
|
|
}
|
|
|
|
|
set {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
combat.Captain = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool? HasCorrespondent {
|
|
|
|
|
get {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return combat.Correspondent ?? false;
|
|
|
|
|
}
|
|
|
|
|
set {
|
|
|
|
|
CombatZone? combat = Transaction as CombatZone;
|
|
|
|
|
if (combat == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
combat.Correspondent = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-26 17:09:01 +01:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Profit from selling, used in the XAML ui for binding
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string Profit {
|
|
|
|
|
get {
|
|
|
|
|
SellCargo cargo = Transaction as SellCargo;
|
|
|
|
|
if (cargo == null) {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
return cargo.Profit.ToString();
|
|
|
|
|
}
|
|
|
|
|
set {
|
|
|
|
|
SellCargo cargo = Transaction as SellCargo;
|
|
|
|
|
if (cargo == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
long profit_as_number = Convert.ToInt64(value);
|
|
|
|
|
cargo.Profit = profit_as_number;
|
|
|
|
|
} catch (FormatException) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-24 19:38:19 +01:00
|
|
|
|
public Transaction Transaction { get; set; }
|
|
|
|
|
|
|
|
|
|
public UITransaction() { }
|
|
|
|
|
|
|
|
|
|
public UITransaction(Transaction transaction) {
|
|
|
|
|
Transaction = transaction;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Name {
|
|
|
|
|
get { return ToString(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string CompletedAt {
|
|
|
|
|
get { return Transaction.CompletedAt; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override string ToString() {
|
|
|
|
|
return Transaction.ToString();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class Objective : IComparable<Objective> {
|
|
|
|
|
public bool IsEnabled { get; set; }
|
|
|
|
|
|
|
|
|
|
public List<UITransaction> UITransactions { get; } = new List<UITransaction>();
|
|
|
|
|
|
|
|
|
|
public List<Transaction> Transactions {
|
|
|
|
|
get { return UITransactions.Select(x => x.Transaction).ToList<Transaction>(); }
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-26 17:39:31 +01:00
|
|
|
|
public Visibility HasSystem {
|
|
|
|
|
get { return string.IsNullOrEmpty(System) ? Visibility.Hidden : Visibility.Visible; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Visibility HasFaction {
|
|
|
|
|
get { return string.IsNullOrEmpty(Faction) ? Visibility.Hidden : Visibility.Visible; }
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-24 19:38:19 +01:00
|
|
|
|
public string Name {
|
|
|
|
|
get { return this.ToString(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsExpanded { get; set; }
|
|
|
|
|
|
|
|
|
|
public void Clear() {
|
|
|
|
|
if (Transactions == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Transactions.Clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool Matches(string system, string faction) {
|
|
|
|
|
return string.Compare(system, System) == 0 &&
|
|
|
|
|
string.Compare(faction, Faction) == 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int CompareTo(Objective other) {
|
|
|
|
|
return (other.System == System &&
|
|
|
|
|
other.Faction == Faction) ? 0 : -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsValid {
|
|
|
|
|
get { return !string.IsNullOrEmpty(System) && !string.IsNullOrEmpty(Faction); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string System { get; set; }
|
|
|
|
|
|
|
|
|
|
public string Faction { get; set; }
|
|
|
|
|
|
|
|
|
|
public override string ToString() {
|
|
|
|
|
StringBuilder str = new StringBuilder();
|
|
|
|
|
if (!string.IsNullOrEmpty(System)) {
|
|
|
|
|
str.AppendFormat("System: {0}", System);
|
2022-11-25 14:39:45 +01:00
|
|
|
|
} else {
|
|
|
|
|
str.AppendFormat("System: Unknown");
|
2022-11-24 19:38:19 +01:00
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(Faction)) {
|
|
|
|
|
if (str.Length > 0) {
|
|
|
|
|
str.Append(", ");
|
|
|
|
|
}
|
|
|
|
|
str.AppendFormat("Faction: {0}", Faction);
|
|
|
|
|
}
|
|
|
|
|
return str.ToString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<Type> EnabledOfType<Type>() where Type : Transaction {
|
|
|
|
|
return UITransactions
|
|
|
|
|
.Where(x => x.IsEnabled)
|
|
|
|
|
.Select(x => x.Transaction)
|
|
|
|
|
.OfType<Type>()
|
|
|
|
|
.ToList()
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
}
|