コード例 #1
0
ファイル: WFFormatter.cs プロジェクト: Dionysiakos/WFBot
        public static string ToString(VoidTrader trader)
        {
            var sb = new StringBuilder();

            if (trader.active)
            {
                var time = (DateTime.Now - trader.expiry).Humanize(int.MaxValue,
                                                                   CultureInfo.GetCultureInfo("zh-CN"), TimeUnit.Day, TimeUnit.Second, " ");
                sb.AppendLine($"虚空商人已抵达: {trader.location}");
                sb.AppendLine($"携带商品:");
                foreach (var inventory in trader.inventory)
                {
                    sb.AppendLine($"         [{inventory.item}] {inventory.ducats}金币 + {inventory.credits}现金");
                }
                //sb.Append($"结束时间:{trader.expiry}({time} 后)");
                sb.Append($"结束时间: {time} 后");
            }
            else
            {
                var time = (DateTime.Now - trader.activation).Humanize(int.MaxValue,
                                                                       CultureInfo.GetCultureInfo("zh-CN"), TimeUnit.Day, TimeUnit.Second, " ");
                //sb.Append($"虚空商人将在{trader.activation}({time} 后)抵达{trader.location}");
                sb.Append($"虚空商人将在 {time} 后 抵达{trader.location}");
            }

            return(sb.ToString().Trim());
        }
コード例 #2
0
        public void TimeTillDisplay_TwoDay_ShouldReturnLessThan1H()
        {
            VoidTrader voidTrader = new VoidTrader {
                StartDateUtc = DateTime.UtcNow.AddDays(2).AddMinutes(1),
                EndDateUtc   = DateTime.UtcNow.AddDays(7)
            };

            Assert.AreEqual("2d", voidTrader.TimeTillDisplay);
        }
コード例 #3
0
        public void TimeTillDisplay_OneDayThreeHours_ShouldReturnLessThan1H()
        {
            VoidTrader voidTrader = new VoidTrader {
                StartDateUtc = DateTime.UtcNow.AddDays(1).AddHours(3).AddMinutes(1),
                EndDateUtc   = DateTime.UtcNow.AddDays(7)
            };

            Assert.AreEqual("1d 3h", voidTrader.TimeTillDisplay);
        }
コード例 #4
0
        public void IsHere_PastDates_ShouldReturnFalse()
        {
            VoidTrader voidTrader = new VoidTrader {
                StartDateUtc = DateTime.UtcNow.AddDays(-1),
                EndDateUtc   = DateTime.UtcNow.AddHours(-3)
            };

            Assert.IsFalse(voidTrader.IsHere);
        }
コード例 #5
0
        public void IsHere_ShouldReturnTrue()
        {
            VoidTrader voidTrader = new VoidTrader {
                StartDateUtc = DateTime.UtcNow.AddHours(-3),
                EndDateUtc   = DateTime.UtcNow.AddDays(1)
            };

            Assert.IsTrue(voidTrader.IsHere);
        }
コード例 #6
0
 public void TranslateVoidTrader(VoidTrader trader)
 {
     trader.location = TranslateNode(trader.location).Replace("Relay", "中继站");
     foreach (var inventory in trader.inventory)
     {
         inventory.item = dictTranslator.Translate(inventory.item);
     }
     // ohhhhhhhhhhhhhhhhhhhhhhh奸商第一百次来带的东西真他妈劲爆啊啊啊啊啊啊啊啊啊啊啊 啊啊啊啊啊啊啊啊啊啊之后还带了活动电可我没囤多少呜呜呜呜呜呜穷了 哈哈哈哈哈哈老子开出一张绝路啊啊啊啊啊啊爽死了 呜呜呜呜电男loki出库我没刷我穷死了 为啥带金首发DENMSL 爷爷退坑了D2真好玩
 }
コード例 #7
0
        public VoidTrader GetBaro(WorldState worldState)
        {
            VoidTrader trader = worldState.VoidTraders.Where(x => x.Name.StartsWith("Baro")).FirstOrDefault();

            if (trader != null)
            {
                trader.SolNode = solNodes[trader.Node];
            }
            return(trader);
        }
コード例 #8
0
        public void ItemCount_TwoItems_ShouldReturnTwo()
        {
            VoidTrader voidTrader = new VoidTrader {
                Manifest = new List <VoidTraderManifestItem>()
            };

            voidTrader.Manifest.Add(new VoidTraderManifestItem());
            voidTrader.Manifest.Add(new VoidTraderManifestItem());

            Assert.AreEqual(2, voidTrader.ItemCount);
        }
コード例 #9
0
        public VoidTradeViewModel(VoidTrader trader, FiltersEvent filtersEvent)
        {
            Id            = trader.Id;
            Activation    = Tools.Time.ToDateTime(trader.Activation.Date.NumberLong);
            PreActivation = Activation.AddDays(-12);
            Expiry        = Tools.Time.ToDateTime(trader.Expiry.Date.NumberLong);
            Character     = trader.Character == "Baro'Ki Teel" ? "Баро Ки'Тиир" : trader.Character; //TODO: Перевод
            Location      = Model.Filters.ExpandSector(trader.Node)?.Location ?? trader.Node;
            Planet        = Model.Filters.ExpandSector(trader.Node)?.Planet ?? trader.Node;

            this.trader = trader;

            PlanetsUpdatedWeakEventManager.AddHandler(filtersEvent, OnPlanetsFilterUpdated);
        }
コード例 #10
0
        /// <summary>
        /// Converts VoidTrader in a human readable format
        /// </summary>
        public static string VoidTrader(VoidTrader voidTrader)
        {
            string repr;

            if (voidTrader.Active)
            {
                repr = $"{voidTrader.TraderName} is currently at {voidTrader.Location}!";
            }
            else
            {
                repr = $"{voidTrader.TraderName} is due in {voidTrader.TimeRemaining} at {voidTrader.Location}";
            }
            return(repr);
        }
コード例 #11
0
        public void ItemCount_NullList_ShouldReturnZero()
        {
            VoidTrader voidTrader = new VoidTrader();

            Assert.AreEqual(0, voidTrader.ItemCount);
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: Elfahor/WarframeStats
        private static async Task MessageReceived(SocketMessage message)
        {
            string[] words = message.Content.Split(" ");

            if (message.Content.StartsWith("what at location "))
            {
                try
                {
                    try
                    {
                        EndlessMission missionInfo = (EndlessMission)await warframeClient.GetMissionLootAsync(words[3], words[4]);

                        await message.Channel.SendMessageAsync(missionInfo.ToString());
                    }
                    catch (InvalidCastException)
                    {
                        FiniteMission missionInfo = (FiniteMission)await warframeClient.GetMissionLootAsync(words[3], words[4]);

                        await message.Channel.SendMessageAsync(missionInfo.ToString());
                    }
                }
                catch (ArgumentException e)
                {
                    await message.Channel.SendMessageAsync(e.Message);
                }
            }

            else if (message.Content.StartsWith("what in relic "))
            {
                try
                {
                    Relic relicInfo = await warframeClient.GetRelicLootAsync(words[3], words[4]);

                    await message.Channel.SendMessageAsync(WFDataAsString.Relic(relicInfo));
                }
                catch (ArgumentException e)
                {
                    await message.Channel.SendMessageAsync(e.Message);
                }
            }

            else if (message.Content.StartsWith("what in sorties"))
            {
                SortieRewards sortieRewards = warframeClient.SortieRewards;
                await message.Channel.SendMessageAsync(WFDataAsString.SortieRewards(sortieRewards));
            }

            else if (message.Content.StartsWith("are there events"))
            {
                Event[] events = warframeClient.WorldStatePC.events;
                await message.Channel.SendMessageAsync(WFDataAsString.Events(events));
            }

            else if (message.Content.StartsWith("give me the news"))
            {
                News[] news = warframeClient.WorldStatePC.news;
                await message.Channel.SendMessageAsync(WFDataAsString.News(news));
            }

            else if (message.Content.StartsWith("what is the sortie"))
            {
                Sortie sortie = warframeClient.WorldStatePC.sortie;
                await message.Channel.SendMessageAsync(WFDataAsString.Sortie(sortie));
            }

            else if (message.Content.StartsWith("what are the void fissures"))
            {
                Fissure[] fissures = warframeClient.WorldStatePC.fissures;
                await message.Channel.SendMessageAsync(WFDataAsString.Fissures(fissures, words[5]));
            }

            else if (message.Content.StartsWith("when baro"))
            {
                VoidTrader voidTrader = warframeClient.WorldStatePC.voidTrader;
                await message.Channel.SendMessageAsync(WFDataAsString.VoidTrader(voidTrader));
            }

            else if (message.Content.StartsWith("where "))
            {
                string itemName = "";
                for (int i = 1; i < words.Length; i++)
                {
                    itemName += words[i] + " ";
                }
                itemName = itemName.Trim();
                DropLocation[] locations = await warframeClient.dropClient.SearchForItemAsync(itemName, strictMatch : true);

                await message.Channel.SendMessageAsync(WFDataAsString.DropLocationsItems(locations, itemName));
            }

            else if (message.Content.StartsWith("what "))
            {
                string placeName = "";
                for (int i = 1; i < words.Length; i++)
                {
                    placeName += words[i] + " ";
                }
                placeName = placeName.Trim();
                DropLocation[] locations = await warframeClient.dropClient.SearchForLocationAsync(placeName);

                await message.Channel.SendMessageAsync(WFDataAsString.DropLocationsLocations(locations));
            }
        }