protected override void UpdateAnchorTime(WorldState state) { SyndicateMission bounty = null; foreach (SyndicateMission mission in state.WS_SyndicateMissions) { if (mission.Syndicate != "Ostrons") { continue; } bounty = mission; break; } if (bounty != null) { anchorTime = bounty.EndTime; ConfigurationManager.Instance.Settings.CetusCyclicAnchor = anchorTime.Ticks; } else { anchorTime = new DateTime(ConfigurationManager.Instance.Settings.CetusCyclicAnchor); } }
public static string ToString(SyndicateMission mission, int index) { var sb = new StringBuilder(); sb.AppendLine($"集团: {mission.syndicate}"); sb.AppendLine(); var count = 0; if (index >= 1 && index <= 5) { mission.jobs = new[] { mission.jobs[index - 1] }; } foreach (var job in mission.jobs) { count++; if (index >= 1 && index <= 5) { sb.AppendLine($"> 赏金{index}等级: {job.enemyLevels[0]} - {job.enemyLevels[1]}"); } else { sb.AppendLine($"> 赏金{count}等级: {job.enemyLevels[0]} - {job.enemyLevels[1]}"); } sb.AppendLine("- 奖励:"); foreach (var reward in job.rewardPool) { sb.Append($"[{reward}]"); } sb.AppendLine(); } return(sb.ToString().Trim()); }
void UpdateGUI() { lock (TimerUpdates) { TimerUpdates.Clear(); } this.InvokeIfRequired(() => { try { var views = Controls.OfType <MaterialListView>(); foreach (MaterialListView view in views) { view.Items.Clear(); } Alert[] alerts = WarframeHandler.worldState.WS_Alerts.OrderBy(x => (x.EndTime.ToLocalTime() - DateTime.Now)).ToArray(); foreach (Alert a in alerts) { AlertData.Items.Add(new ListViewItem(new string[] { a.Mission.Type, a.ToTitle(), a.Mission.Faction, (a.EndTime.ToLocalTime() - DateTime.Now).ToReadable() + " ▾" })); TimerUpdates.Add(new Tuple <int, Updater>(AlertData.Items.Count - 1, new Updater(i => AlertData.Items[i].SubItems[3].Text = (a.EndTime.ToLocalTime() - DateTime.Now).ToReadable() + " ▾"))); } Invasion[] invasions = WarframeHandler.worldState.WS_Invasions.OrderBy(x => - Math.Abs(x.Completion - 50)).Where(x => !x.IsCompleted).ToArray(); foreach (Invasion inv in invasions) { InvasionData.Items.Add(new ListViewItem(new string[] { "", inv.ToTitle(), Math.Round(inv.Completion, 2) + "%", (DateTime.Now - inv.StartTime.ToLocalTime()).ToReadable() + " ▴" })); TimerUpdates.Add(new Tuple <int, Updater>(InvasionData.Items.Count - 1, new Updater(j => InvasionData.Items[j].SubItems[3].Text = (DateTime.Now - inv.StartTime.ToLocalTime()).ToReadable() + " ▴"))); } IOrderedEnumerable <Fissure> fissures = WarframeHandler.worldState.WS_Fissures.OrderBy(x => x.TierNumber); foreach (Fissure f in fissures) { FissureData.Items.Add(new ListViewItem(new string[] { f.Tier + " - " + f.MissionType + " - " + (f.EndTime.ToLocalTime() - DateTime.Now).ToReadable() + " ▾" })); TimerUpdates.Add(new Tuple <int, Updater>(FissureData.Items.Count - 1, new Updater(i => FissureData.Items[i].SubItems[0].Text = f.Tier + " - " + f.MissionType + " - " + (f.EndTime.ToLocalTime() - DateTime.Now).ToReadable() + " ▾"))); } // Void Trader if (!config.Data.VoidTraderArrived) { Tabs[1].Items.Add("Baro will be back at " + WarframeHandler.worldState.WS_VoidTrader.StartTime.ToLocalTime()); } else { Tabs[1].Items.Add("Baro is here until " + WarframeHandler.worldState.WS_VoidTrader.EndTime.ToLocalTime()); } foreach (VoidTraderItem i in WarframeHandler.worldState.WS_VoidTrader.Inventory) { Tabs[1].Items.Add(new ListViewItem(new string[] { i.Item + "\t" + i.Credits + "c\t" + i.Ducats + "D" })); } // Cetus SyndicateMission ostrons = WarframeHandler.worldState.WS_SyndicateMissions.Find(x => x.Syndicate == "Ostrons"); Tabs[2].Items.Add(new ListViewItem(new string[] { "" })); TimerUpdates.Add(new Tuple <int, Updater>(0, new Updater(i => Tabs[2].Items[i].SubItems[0].Text = "Changes at " + ostrons.EndTime.ToLocalTime().ToLongTimeString() + " - " + WarframeHandler.worldState.WS_CetusCycle.TimeOfDay() + " " + (WarframeHandler.worldState.WS_CetusCycle.Expiry.ToLocalTime() - DateTime.Now).ToReadable()))); for (int j = 0; j < ostrons.jobs.Count; j++) { SyndicateJob job = ostrons.jobs[j]; Tabs[2].Items.Add(new ListViewItem(new string[] { (j + 1) + ". Bounty: (" + job.standingStages.Sum() + " Standing)" })); for (int i = 0; i < job.rewardPool.Count; i += 2) { Tabs[2].Items.Add(new ListViewItem(new string[] { job.rewardPool[i] + (job.rewardPool.Count > i + 1 ? ", " + job.rewardPool[i + 1] : "") })); } Tabs[2].Items.Add(new ListViewItem(new string[] { })); } Tabs[2].Items.RemoveAt(Tabs[2].Items.Count - 1); // 4tuna SyndicateMission tuna = WarframeHandler.worldState.WS_SyndicateMissions.Find(x => x.Syndicate == "Solaris United"); Tabs[3].Items.Add(new ListViewItem(new string[] { "" })); TimerUpdates.Add(new Tuple <int, Updater>(0, new Updater(i => Tabs[3].Items[i].SubItems[0].Text = "Changes at " + tuna.EndTime.ToLocalTime().ToLongTimeString() + " - " + WarframeHandler.worldState.WS_FortunaCycle.Temerature() + " " + (WarframeHandler.worldState.WS_FortunaCycle.Expiry.ToLocalTime() - DateTime.Now).ToReadable()))); for (int j = 0; j < tuna.jobs.Count; j++) { SyndicateJob job = tuna.jobs[j]; Tabs[3].Items.Add(new ListViewItem(new string[] { (j + 1) + ". Bounty: (" + job.standingStages.Sum() + " Standing)" })); for (int i = 0; i < job.rewardPool.Count; i += 2) { Tabs[3].Items.Add(new ListViewItem(new string[] { job.rewardPool[i] + (job.rewardPool.Count > i + 1 ? ", " + job.rewardPool[i + 1] : "") })); } Tabs[3].Items.Add(new ListViewItem(new string[] { })); } Tabs[3].Items.RemoveAt(Tabs[3].Items.Count - 1); foreach (MaterialListView view in views) { view.Fix(); } } catch { } }); }