EDBGS/EliteBGS/Objective.cs

268 lines
6.7 KiB
C#
Raw Normal View History

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;
using System.Windows;
2022-12-03 14:47:31 +01:00
using EDPlayerJournal;
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;
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-12-03 14:47:31 +01:00
public Visibility IsGroundCombatZone {
get {
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return Visibility.Hidden;
}
if (string.Compare(combat.Type, CombatZones.GroundCombatZone) == 0) {
return Visibility.Visible;
}
return Visibility.Hidden;
}
}
public Visibility IsShipCombatZone {
get {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return Visibility.Hidden;
}
2022-12-03 14:47:31 +01:00
if (string.Compare(combat.Type, CombatZones.ShipCombatZone) == 0) {
return Visibility.Visible;
}
return Visibility.Hidden;
}
}
public Visibility IsThargoidCombatZone {
get {
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return Visibility.Hidden;
}
if (string.Compare(combat.Type, CombatZones.ThargoidCombatZone) == 0) {
return Visibility.Visible;
}
return Visibility.Hidden;
}
}
2022-11-29 16:39:20 +01:00
public bool HasSpecOps {
get {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return false;
}
return combat.SpecOps ?? false;
}
set {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return;
}
combat.SpecOps = value;
}
}
2022-11-29 16:39:20 +01:00
public bool HasCapitalShip {
get {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return false;
}
return combat.CapitalShip ?? false;
}
set {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return;
}
combat.CapitalShip = value;
}
}
2022-11-29 16:39:20 +01:00
public bool HasCaptain {
get {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return false;
}
return combat.Captain ?? false;
}
set {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return;
}
combat.Captain = value;
}
}
2022-11-29 16:39:20 +01:00
public bool HasCorrespondent {
get {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return false;
}
return combat.Correspondent ?? false;
}
set {
2022-11-29 16:39:20 +01:00
CombatZone combat = Transaction as CombatZone;
if (combat == null) {
return;
}
combat.Correspondent = value;
}
}
/// <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);
} 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()
;
}
}