Beispiel #1
0
        /// <summary>
        /// Parses the notification text.
        /// </summary>
        /// <param name="notification">The notification.</param>
        /// <param name="pair">The pair.</param>
        /// <param name="parsedDict">The parsed dictionary.</param>
        public override void Parse(EveNotification notification, KeyValuePair <YamlNode,
                                                                               YamlNode> pair, IDictionary <string, string> parsedDict)
        {
            string           key = pair.Key.ToString(), value = pair.Value.ToString();
            long             valueAsLong;
            decimal          amount;
            double           valueAsDouble;
            int              typeID    = notification.TypeID;
            DateTime         timestamp = notification.SentDate;
            YamlSequenceNode typeIDs;

            // The value is often used as an int64 in the list below, simplify calculation
            if (!value.TryParseInv(out valueAsLong))
            {
                valueAsLong = 0L;
            }
            switch (key.ToUpperInvariant())
            {
            case "CHARID":
            case "SENDERCHARID":
            case "RECEIVERCHARID":
            case "OWNERID":
            case "LOCATIONOWNERID":
            case "DESTROYERID":
            case "INVOKINGCHARID":
            case "PODKILLERID":
            case "NEWCEOID":
            case "OLDCEOID":
            case "CORPID":
            case "VICTIMID":
            case "DECLAREDBYID":
            case "AGAINSTID":
            case "CREDITORID":
            case "FACTIONID":
            case "DEFENDERID":
            case "ENEMYID":
            case "AGGRESSORID":
            case "ALLYID":
            case "MERCID":
            case "AGGRESSORCORPID":
            case "AGGRESSORALLIANCEID":
                parsedDict[key] = EveIDToName.GetIDToName(valueAsLong);
                break;

            case "CLONESTATIONID":
            case "CORPSTATIONID":
            case "LOCATIONID":
            case "STRUCTUREID":
            case "EXTERNALID2":
                parsedDict[key] = EveIDToStation.GetIDToStation(valueAsLong)?.Name ??
                                  EveMonConstants.UnknownText;
                break;

            case "SOLARSYSTEMID":
                // If it overflows the result will be invalid anyways
                parsedDict[key] = StaticGeography.GetSolarSystemName((int)valueAsLong);
                break;

            case "SHIPTYPEID":
            case "TYPEID":
            case "STRUCTURETYPEID":
            case "VICTIMSHIPTYPEID":
                // If it overflows the result will be invalid anyways
                parsedDict[key] = StaticItems.GetItemName((int)valueAsLong);
                break;

            case "MEDALID":
                var medal = notification.CCPCharacter.CharacterMedals.FirstOrDefault(x =>
                                                                                     (x.ID.ToString() == value));
                parsedDict[key] = medal?.Title ?? EveMonConstants.UnknownText;
                parsedDict.Add("medalDescription", medal?.Description ??
                               EveMonConstants.UnknownText);
                break;

            case "AMOUNT":
            case "ISKVALUE":
                // Format as ISK amount
                if (value.TryParseInv(out amount))
                {
                    parsedDict[key] = amount.ToString("N2");
                }
                break;

            case "ENDDATE":
            case "STARTDATE":
            case "DECLOAKTIME":
            case "DESTRUCTTIME":
            case "TIMEFINISHED":
                parsedDict[key] = string.Format(CultureConstants.InvariantCulture,
                                                "{0:dddd, MMMM d, yyyy HH:mm} (EVE Time)", valueAsLong.
                                                WinTimeStampToDateTime());
                break;

            case "NOTIFICATION_CREATED":
                parsedDict[key] = string.Format(CultureConstants.InvariantCulture,
                                                "{0:dddd, MMMM d, yyyy HH:mm} (EVE Time)", timestamp);
                break;

            case "DUEDATE":
            case "ISSUEDATE":
                parsedDict[key] = string.Format(CultureConstants.InvariantCulture,
                                                "{0:dddd, MMMM d, yyyy} (EVE Time)", valueAsLong.WinTimeStampToDateTime());
                break;

            case "CAMPAIGNEVENTTYPE":
                switch (value)
                {
                case "1":
                    parsedDict[key] = "Territorial Claim Unit";
                    break;

                case "2":
                    parsedDict[key] = "Infrastructure Hub";
                    break;

                case "3":
                    parsedDict[key] = "Station";
                    break;

                default:
                    parsedDict[key] = EveMonConstants.UnknownText;
                    break;
                }
                break;

            case "TYPEIDS":
                typeIDs = pair.Value as YamlSequenceNode;
                if (typeIDs != null && (typeID == 56 || typeID == 57))
                {
                    parsedDict[key] = BuildImplantList(typeIDs);
                }
                break;

            case "LISTOFTYPESANDQTY":
                typeIDs = pair.Value as YamlSequenceNode;
                if (typeIDs != null)
                {
                    parsedDict[key] = BuildItemList(typeIDs);
                }
                break;

            case "ISHOUSEWARMINGGIFT":
                // Tritanium
                parsedDict[key] = StaticItems.GetItemName(typeID);
                break;

            case "LEVEL":
                if (value.TryParseInv(out valueAsDouble))
                {
                    parsedDict[key] = Standing.Status(valueAsDouble) + " Standing";
                }
                break;

            case "SHIELDVALUE":
            case "ARMORVALUE":
            case "HULLVALUE":
                if (value.TryParseInv(out valueAsDouble))
                {
                    parsedDict[key] = (valueAsDouble * 100.0).ToString("N0");
                }
                break;
            }
        }
 /// <summary>
 /// Parses the notification text.
 /// </summary>
 /// <param name="notification">The notification.</param>
 /// <param name="pair">The pair.</param>
 /// <param name="parsedDict">The parsed dictionary.</param>
 public abstract void Parse(EveNotification notification, KeyValuePair <YamlNode, YamlNode> pair,
                            IDictionary <string, string> parsedDict);
        public override void Parse(EveNotification notification, KeyValuePair <YamlNode, YamlNode> pair,
                                   IDictionary <string, string> parsedDict)
        {
            switch (pair.Key.ToString().ToUpperInvariant())
            {
            case "CHARID":
            case "SENDERCHARID":
            case "RECEIVERCHARID":
            case "OWNERID":
            case "LOCATIONOWNERID":
            case "DESTROYERID":
            case "INVOKINGCHARID":
            case "CORPID":
            case "PODKILLERID":
            case "NEWCEOID":
            case "OLDCEOID":
            {
                parsedDict[pair.Key.ToString()] = EveIDToName.GetIDToName(pair.Value.ToString());
                break;
            }

            case "CLONESTATIONID":
            case "CORPSTATIONID":
            case "LOCATIONID":
            {
                parsedDict[pair.Key.ToString()] = Station.GetByID(int.Parse(pair.Value.ToString())).Name;
                break;
            }

            case "SHIPTYPEID":
            case "TYPEID":
            {
                parsedDict[pair.Key.ToString()] = StaticItems.GetItemByID(int.Parse(pair.Value.ToString())).Name;
                break;
            }

            case "MEDALID":
            {
                var medal = notification.CCPCharacter.CharacterMedals
                            .FirstOrDefault(x => x.ID.ToString() == pair.Value.ToString());

                parsedDict[pair.Key.ToString()] = medal == null
                        ? EveMonConstants.UnknownText
                        : medal.Title ?? EveMonConstants.UnknownText;

                parsedDict.Add("medalDescription", medal == null
                        ? EveMonConstants.UnknownText
                        : medal.Description ?? EveMonConstants.UnknownText);
                break;
            }

            case "ENDDATE":
            case "STARTDATE":
            {
                parsedDict[pair.Key.ToString()] = string.Format(CultureConstants.InvariantCulture,
                                                                "{0:dddd, MMMM d, yyyy HH:mm} (EVE Time)", long.Parse(pair.Value.ToString())
                                                                .WinTimeStampToDateTime());
                break;
            }

            case "NOTIFICATION_CREATED":
            {
                parsedDict[pair.Key.ToString()] = string.Format(CultureConstants.InvariantCulture,
                                                                "{0:dddd, MMMM d, yyyy} (EVE Time)", long.Parse(pair.Value.ToString())
                                                                .WinTimeStampToDateTime());
                break;
            }

            case "TYPEIDS":
            {
                YamlSequenceNode typeIDs = pair.Value as YamlSequenceNode;

                if (typeIDs == null)
                {
                    break;
                }

                switch (notification.TypeID)
                {
                case 56:
                case 57:
                {
                    if (!typeIDs.Any())
                    {
                        parsedDict[pair.Key.ToString()] = "None were in the clone";
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (var typeID in typeIDs)
                        {
                            sb
                            .AppendLine()
                            .AppendLine($"Type: {StaticItems.GetItemByID(int.Parse(typeID.ToString())).Name}");
                        }
                        parsedDict[pair.Key.ToString()] = sb.ToString();
                    }
                }
                break;
                }
                break;
            }

            case "ISHOUSEWARMINGGIFT":
            {
                if (!Convert.ToBoolean(pair.Value))
                {
                    break;
                }

                switch (notification.TypeID)
                {
                case 34:
                    // Tritanium
                    parsedDict[pair.Key.ToString()] = StaticItems.GetItemByID(34).Name;
                    break;
                }
                break;
            }

            case "LEVEL":
            {
                parsedDict[pair.Key.ToString()] = $"{Standing.Status(double.Parse(pair.Value.ToString()))} Standing";
                break;
            }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Parses the notification text.
        /// </summary>
        /// <param name="notification">The notification.</param>
        /// <param name="pair">The pair.</param>
        /// <param name="parsedDict">The parsed dictionary.</param>
        public override void Parse(EveNotification notification, KeyValuePair<YamlNode, YamlNode> pair,
            IDictionary<string, string> parsedDict)
        {
            switch (pair.Key.ToString().ToUpperInvariant())
            {
                case "CHARID":
                case "SENDERCHARID":
                case "RECEIVERCHARID":
                case "OWNERID":
                case "LOCATIONOWNERID":
                case "DESTROYERID":
                case "INVOKINGCHARID":
                case "CORPID":
                case "PODKILLERID":
                case "NEWCEOID":
                case "OLDCEOID":
                {
                    parsedDict[pair.Key.ToString()] = EveIDToName.GetIDToName(pair.Value.ToString());
                    break;
                }
                case "CLONESTATIONID":
                case "CORPSTATIONID":
                case "LOCATIONID":
                {
                    parsedDict[pair.Key.ToString()] = Station.GetByID(int.Parse(pair.Value.ToString())).Name;
                    break;
                }
                case "SHIPTYPEID":
                case "TYPEID":
                {
                    parsedDict[pair.Key.ToString()] = StaticItems.GetItemByID(int.Parse(pair.Value.ToString())).Name;
                    break;
                }
                case "MEDALID":
                {
                    var medal = notification.CCPCharacter.CharacterMedals
                        .FirstOrDefault(x => x.ID.ToString() == pair.Value.ToString());

                    parsedDict[pair.Key.ToString()] = medal == null
                        ? EveMonConstants.UnknownText
                        : medal.Title ?? EveMonConstants.UnknownText;
                    parsedDict.Add("medalDescription", medal == null
                        ? EveMonConstants.UnknownText
                        : medal.Description ?? EveMonConstants.UnknownText);
                    break;
                }
                case "ENDDATE":
                case "STARTDATE":
                {
                    parsedDict[pair.Key.ToString()] = string.Format(CultureConstants.InvariantCulture,
                        "{0:dddd, MMMM d, yyyy HH:mm} (EVE Time)", long.Parse(pair.Value.ToString())
                            .WinTimeStampToDateTime());
                    break;
                }
                case "NOTIFICATION_CREATED":
                {
                    parsedDict[pair.Key.ToString()] = string.Format(CultureConstants.InvariantCulture,
                        "{0:dddd, MMMM d, yyyy} (EVE Time)", long.Parse(pair.Value.ToString())
                            .WinTimeStampToDateTime());
                    break;
                }
                case "TYPEIDS":
                {
                    YamlSequenceNode typeIDs = pair.Value as YamlSequenceNode;

                    if (typeIDs == null)
                        break;

                    switch (notification.TypeID)
                    {
                        case 56:
                        case 57:
                        {
                            if (!typeIDs.Any())
                                parsedDict[pair.Key.ToString()] = "None were in the clone";
                            else
                            {
                                StringBuilder sb = new StringBuilder();
                                foreach (var typeID in typeIDs)
                                {
                                    sb
                                        .AppendLine()
                                        .AppendLine($"Type: {StaticItems.GetItemByID(int.Parse(typeID.ToString())).Name}");
                                }
                                parsedDict[pair.Key.ToString()] = sb.ToString();
                            }
                        }
                            break;
                    }
                    break;
                }
                case "ISHOUSEWARMINGGIFT":
                {
                    if (!Convert.ToBoolean(pair.Value))
                        break;

                    switch (notification.TypeID)
                    {
                        case 34:
                            // Tritanium
                            parsedDict[pair.Key.ToString()] = StaticItems.GetItemByID(34).Name;
                            break;
                    }
                    break;
                }
                case "LEVEL":
                {
                    parsedDict[pair.Key.ToString()] = $"{Standing.Status(double.Parse(pair.Value.ToString()))} Standing";
                    break;
                }
            }
        }
Beispiel #5
0
        /// <summary>
        /// Parses the notification text.
        /// </summary>
        /// <param name="notification">The notification.</param>
        /// <param name="pair">The pair.</param>
        /// <param name="parsedDict">The parsed dictionary.</param>
        public override void Parse(EveNotification notification, KeyValuePair <YamlNode, YamlNode> pair,
                                   IDictionary <string, string> parsedDict)
        {
            string key = pair.Key.ToString(), value = pair.Value.ToString();

            switch (key.ToUpperInvariant())
            {
            case "CHARID":
            case "SENDERCHARID":
            case "RECEIVERCHARID":
            case "OWNERID":
            case "LOCATIONOWNERID":
            case "DESTROYERID":
            case "INVOKINGCHARID":
            case "PODKILLERID":
            case "NEWCEOID":
            case "OLDCEOID":
            case "CORPID":
            case "VICTIMID":
                parsedDict[key] = EveIDToName.GetIDToName(long.Parse(value));
                break;

            case "CLONESTATIONID":
            case "CORPSTATIONID":
            case "LOCATIONID":
                parsedDict[key] = EveIDToStation.GetIDToStation(long.Parse(value))?.Name ??
                                  EveMonConstants.UnknownText;
                break;

            case "SOLARSYSTEMID":
                parsedDict[key] = StaticGeography.GetSolarSystemName(int.Parse(value));
                break;

            case "SHIPTYPEID":
            case "TYPEID":
            case "STRUCTURETYPEID":
            case "VICTIMSHIPTYPEID":
                parsedDict[key] = StaticItems.GetItemName(int.Parse(value));
                break;

            case "MEDALID":
                var medal = notification.CCPCharacter.CharacterMedals.FirstOrDefault(x =>
                                                                                     (x.ID.ToString() == value));

                parsedDict[key] = medal?.Title ?? EveMonConstants.UnknownText;
                parsedDict.Add("medalDescription", medal?.Description ??
                               EveMonConstants.UnknownText);
                break;

            case "ENDDATE":
            case "STARTDATE":
            case "DECLOAKTIME":
                parsedDict[key] = string.Format(CultureConstants.InvariantCulture,
                                                "{0:dddd, MMMM d, yyyy HH:mm} (EVE Time)", long.Parse(value).
                                                WinTimeStampToDateTime());
                break;

            case "NOTIFICATION_CREATED":
                parsedDict[key] = string.Format(CultureConstants.InvariantCulture,
                                                "{0:dddd, MMMM d, yyyy} (EVE Time)", long.Parse(value).
                                                WinTimeStampToDateTime());
                break;

            case "CAMPAIGNEVENTTYPE":
                switch (value)
                {
                case "1":
                    parsedDict[key] = "Territorial Claim Unit";
                    break;

                case "2":
                    parsedDict[key] = "Infrastructure Hub";
                    break;

                case "3":
                    parsedDict[key] = "Station";
                    break;

                default:
                    parsedDict[key] = EveMonConstants.UnknownText;
                    break;
                }
                break;

            case "TYPEIDS":
                YamlSequenceNode typeIDs = pair.Value as YamlSequenceNode;
                if (typeIDs == null)
                {
                    break;
                }
                switch (notification.TypeID)
                {
                case 56:
                case 57:
                {
                    if (!typeIDs.Any())
                    {
                        parsedDict[key] = "None were in the clone";
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (var typeID in typeIDs)
                        {
                            int type = 0;
                            int.TryParse(typeID.ToString(), out type);
                            sb.AppendLine().AppendLine($"Type: {StaticItems.GetItemName(type)}");
                        }
                        parsedDict[key] = sb.ToString();
                    }
                }
                break;
                }
                break;

            case "ISHOUSEWARMINGGIFT":
                if (Convert.ToBoolean(pair.Value) && notification.TypeID == 34)
                {
                    // Tritanium
                    parsedDict[key] = StaticItems.GetItemName(notification.TypeID);
                }
                break;

            case "LEVEL":
                parsedDict[key] = $"{Standing.Status(double.Parse(value))} Standing";
                break;
            }
        }
Beispiel #6
0
 /// <summary>
 /// Parses the notification text.
 /// </summary>
 /// <param name="notification">The notification.</param>
 /// <param name="pair">The pair.</param>
 /// <param name="parsedDict">The parsed dictionary.</param>
 public abstract void Parse(EveNotification notification, KeyValuePair<YamlNode, YamlNode> pair,
     IDictionary<string, string> parsedDict);