Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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 { }
            });
        }