コード例 #1
0
ファイル: WubbyBot.cs プロジェクト: vinnyg/WarframeBot
 private void AddToVoidFissurePostQueue(WarframeVoidFissure fissure, bool notifyClient, bool fissureHasExpired)
 {
     if (!_voidFissureMessagePostQueue.Any(x => x.WarframeEvent.GUID == fissure.GUID))
     {
         _voidFissureMessagePostQueue.Add(new MessageQueueElement <WarframeVoidFissure>(fissure, notifyClient, fissureHasExpired));
     }
 }
コード例 #2
0
        public static string DiscordMessage(this WarframeVoidFissure fissure, bool isNotification)
        {
            MissionInfo info          = fissure.MissionDetails;
            var         rewardMessage = (!string.IsNullOrEmpty(info.Reward) ? info.Reward : string.Empty);

            var statusString = (!fissure.IsExpired()) ? (DateTime.Now < fissure.StartTime ? $"Starts {fissure.StartTime:HH:mm} ({fissure.GetMinutesRemaining(true)}m)" :
                                                         $"Expires {fissure.ExpireTime:HH:mm} ({fissure.GetMinutesRemaining(false)}m)") : $"Expired ({fissure.ExpireTime:HH:mm})";

            StringBuilder returnMessage = new StringBuilder();

            if (!isNotification)
            {
                returnMessage.AppendLine(fissure.DestinationName);
                returnMessage.AppendLine($"{info.Faction} {info.MissionType}{(info.RequiresArchwing ? $" (Archwing)" : string.Empty)}");
                returnMessage.AppendLine(rewardMessage);
                returnMessage.Append(statusString);
            }
            else
            {
                returnMessage.AppendLine("New Void Fissure");
                returnMessage.AppendLine($"{info.Faction} {info.MissionType}");
                returnMessage.AppendLine(rewardMessage);
                returnMessage.Append(statusString);
            }

            return(returnMessage.ToString());
        }
コード例 #3
0
        public IEnumerable <WarframeVoidFissure> GetVoidFissures()
        {
            JObject worldState         = _scraper.WorldState;
            var     resultVoidFissures = new List <WarframeVoidFissure>();

            //Find Alerts
            foreach (var jsonFissure in worldState["ActiveMissions"])
            {
                WarframeVoidFissure currentVoidFissure = _voidFissures.Find(x => x.GUID == jsonFissure["_id"]["$oid"].ToString());

                if (currentVoidFissure == null)
                {
                    var id  = jsonFissure["_id"]["$oid"].ToString();
                    var loc = jsonFissure["Node"].ToString();

                    var millisecondsUntilStart  = long.Parse(jsonFissure["Activation"]["$date"]["$numberLong"].ToString()) - (long.Parse(worldState["Time"].ToString()) * TIME_TO_LONG_MULTIPLIER);
                    var millisecondsUntilExpire = long.Parse(jsonFissure["Expiry"]["$date"]["$numberLong"].ToString()) - (long.Parse(worldState["Time"].ToString()) * TIME_TO_LONG_MULTIPLIER);
                    var startTime  = DateTime.Now.AddMilliseconds(millisecondsUntilStart);
                    var expireTime = DateTime.Now.AddMilliseconds(millisecondsUntilExpire);

                    var nodeName         = loc;
                    var faction          = string.Empty;
                    var missionType      = string.Empty;
                    var fissure          = string.Empty;
                    var minLevel         = 0;
                    var maxLevel         = 0;
                    var archwingRequired = false;

                    using (var unit = new UnitOfWork(new WarframeDataContext()))
                    {
                        nodeName         = unit.WFSolarNodes.GetNodeName(loc);
                        faction          = unit.WFSolarNodes.GetFaction(loc);
                        missionType      = unit.WFSolarNodes.GetMissionType(loc);
                        minLevel         = unit.WFSolarNodes.GetMinLevel(loc);
                        maxLevel         = unit.WFSolarNodes.GetMaxLevel(loc);
                        fissure          = unit.WFVoidFissures.GetFissureName(jsonFissure["Modifier"].ToString());
                        archwingRequired = unit.WFSolarNodes.ArchwingRequired(loc);
                    }

                    if (DateTime.Now < expireTime)
                    {
                        var fissureInfo = new MissionInfo(faction, missionType, 0, fissure, 0, minLevel, maxLevel, archwingRequired);

                        currentVoidFissure = new WarframeVoidFissure(fissureInfo, id, nodeName, startTime, expireTime);
                        _voidFissures.Add(currentVoidFissure);
#if DEBUG
                        Console.WriteLine("New Fissure Event");
#endif
                    }
                }

                _voidFissures.RemoveAll(x => x.ExpireTime < DateTime.Now);

                if ((currentVoidFissure != null) && (currentVoidFissure.ExpireTime > DateTime.Now))
                {
                    resultVoidFissures.Add(currentVoidFissure);
                }
            }
            return(_voidFissures);
        }