From 57b07190900c6d9c18aa86e0c04098260298b3a9 Mon Sep 17 00:00:00 2001 From: Alex <10480967+WakaToa@users.noreply.github.com> Date: Sun, 23 Jun 2019 21:38:04 +0200 Subject: [PATCH] add multiplier --- Corvus/DarkOrbit/DarkOrbitAccount.cs | 56 ++++++++++--------- Corvus/DarkOrbit/Data/GalaxyGate.cs | 38 +++++++------ Corvus/FrmMain.cs | 1 - Corvus/{packages.config => packages 2.config} | 0 4 files changed, 52 insertions(+), 43 deletions(-) rename Corvus/{packages.config => packages 2.config} (100%) diff --git a/Corvus/DarkOrbit/DarkOrbitAccount.cs b/Corvus/DarkOrbit/DarkOrbitAccount.cs index 5989e11..1763aa7 100644 --- a/Corvus/DarkOrbit/DarkOrbitAccount.cs +++ b/Corvus/DarkOrbit/DarkOrbitAccount.cs @@ -1,6 +1,8 @@ using System; using System.IO; +using System.Linq; using System.Net; +using System.Runtime.Remoting.Lifetime; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Xml.Serialization; @@ -318,11 +320,24 @@ public async Task BuildTechAsync(TechFactoryData.TechFactoryItem item, int return false; } + private bool IsMultiplierAvailable(GalaxyGate gate) + { + var gateName = gate.GetFullName().ToLower(); + + var data = GateData.MultiplierInfo.MultiplierInfo.FirstOrDefault(x => x.Mode.ToLower() == gateName); + if (data == null) + { + return false; + } + return data.Value >= 0; + } + public async Task SpinGateAsync(GalaxyGate gate, bool useMultiplier) { - if (useMultiplier) + var spinUrl = string.Empty; + if (useMultiplier && IsMultiplierAvailable(gate)) { - var spinUrl = string.Format(Urls.SpinGateMultiplier, Urls.BaseUrl, AccountData.UserId, AccountData.SessionId, + spinUrl = string.Format(Urls.SpinGateMultiplier, Urls.BaseUrl, AccountData.UserId, AccountData.SessionId, (int)gate, gate.GetFullName().ToLower()); if (GateData.Samples > 0) @@ -331,23 +346,11 @@ public async Task SpinGateAsync(GalaxyGate gate, bool useMultiplie (int)gate, gate.GetFullName().ToLower()); } - var resultString = await _httpClient.GetAsyncNoLimit(spinUrl); - - var serializer = new XmlSerializer(typeof(GateSpinData)); - - GateSpinData result; - - using (var reader = new StringReader(resultString)) - { - result = (GateSpinData)serializer.Deserialize(reader) as GateSpinData; - } - EvaluateGateSpin(result); - - return result; + } else { - var spinUrl = string.Format(Urls.SpinGate, Urls.BaseUrl, AccountData.UserId, AccountData.SessionId, + spinUrl = string.Format(Urls.SpinGate, Urls.BaseUrl, AccountData.UserId, AccountData.SessionId, (int)gate, gate.GetFullName().ToLower()); if (GateData.Samples > 0) @@ -355,21 +358,21 @@ public async Task SpinGateAsync(GalaxyGate gate, bool useMultiplie spinUrl = string.Format(Urls.SpinGateSample, Urls.BaseUrl, AccountData.UserId, AccountData.SessionId, (int)gate, gate.GetFullName().ToLower()); } + } - var resultString = await _httpClient.GetAsyncNoLimit(spinUrl); - - var serializer = new XmlSerializer(typeof(GateSpinData)); + var resultString = await _httpClient.GetAsyncNoLimit(spinUrl); - GateSpinData result; + var serializer = new XmlSerializer(typeof(GateSpinData)); - using (var reader = new StringReader(resultString)) - { - result = (GateSpinData)serializer.Deserialize(reader) as GateSpinData; - } - EvaluateGateSpin(result); + GateSpinData result; - return result; + using (var reader = new StringReader(resultString)) + { + result = (GateSpinData)serializer.Deserialize(reader) as GateSpinData; } + EvaluateGateSpin(result); + + return result; } private void EvaluateGateSpin(GateSpinData spin) @@ -379,6 +382,7 @@ private void EvaluateGateSpin(GateSpinData spin) GateData.EnergyCost.Text = spin.EnergyCost.Text; GateData.Money = spin.Money; + GateData.MultiplierInfo = spin.MultiplierInfo; foreach (var spinItem in spin.Items.GetAllItems()) { diff --git a/Corvus/DarkOrbit/Data/GalaxyGate.cs b/Corvus/DarkOrbit/Data/GalaxyGate.cs index 492aa62..274353b 100644 --- a/Corvus/DarkOrbit/Data/GalaxyGate.cs +++ b/Corvus/DarkOrbit/Data/GalaxyGate.cs @@ -31,6 +31,24 @@ public enum GalaxyGate Kuiper = 19 } + + [XmlRoot(ElementName = "multiplier")] + public class Multiplier + { + [XmlAttribute(AttributeName = "mode")] + public string Mode { get; set; } + [XmlAttribute(AttributeName = "value")] + public int Value { get; set; } + [XmlAttribute(AttributeName = "state")] + public int State { get; set; } + } + [XmlRoot(ElementName = "multipliers")] + public class Multipliers + { + [XmlElement(ElementName = "multiplier")] + public List MultiplierInfo { get; set; } + } + [XmlRoot(ElementName = "jumpgate")] public class GateData { @@ -56,22 +74,7 @@ public class EnergyCostInfo public int Text { get; set; } } - [XmlRoot(ElementName = "multiplier")] - public class Multiplier - { - [XmlAttribute(AttributeName = "mode")] - public string Mode { get; set; } - [XmlAttribute(AttributeName = "value")] - public int Value { get; set; } - [XmlAttribute(AttributeName = "state")] - public int State { get; set; } - } - [XmlRoot(ElementName = "multipliers")] - public class Multipliers - { - [XmlElement(ElementName = "multiplier")] - public List MultiplierInfo { get; set; } - } + [XmlRoot(ElementName = "gate")] public class Gate @@ -174,6 +177,9 @@ public class GateSpinData [XmlElement(ElementName = "items")] public ItemsInfo Items { get; set; } + [XmlElement(ElementName = "multipliers")] + public Multipliers MultiplierInfo { get; set; } + [XmlRoot(ElementName = "energy_cost")] public class EnergyCostInfo { diff --git a/Corvus/FrmMain.cs b/Corvus/FrmMain.cs index 7b1d8f4..8b0d7a3 100644 --- a/Corvus/FrmMain.cs +++ b/Corvus/FrmMain.cs @@ -92,7 +92,6 @@ public partial class FrmMain : Form private bool manuallyStopped = false; private bool loginAccount = false; private bool useMultiplier = false; - private int multiplier = 1; private DateTime _nextRunTechFactory = DateTime.Now; private DateTime _nextRunSkylab = DateTime.Now; diff --git a/Corvus/packages.config b/Corvus/packages 2.config similarity index 100% rename from Corvus/packages.config rename to Corvus/packages 2.config