public static uint GetLow(this UniversalGuid guid)
        {
            if (guid.KindCase == UniversalGuid.KindOneofCase.Guid128)
            {
                return((uint)(guid.Guid128.Low & 0xFFFFFFFFFF));
            }
            else if (guid.KindCase == UniversalGuid.KindOneofCase.Guid64)
            {
                switch (guid.Type)
                {
                case UniversalHighGuid.Player:
                case UniversalHighGuid.DynamicObject:
                case UniversalHighGuid.RaidGroup:
                case UniversalHighGuid.Item:
                    return((uint)(guid.Guid64.Low & 0x000FFFFFFFFFFFFF));

                case UniversalHighGuid.GameObject:
                case UniversalHighGuid.Transport:
                //case HighGuidType.MOTransport: ??
                case UniversalHighGuid.Vehicle:
                case UniversalHighGuid.Creature:
                case UniversalHighGuid.Pet:
                    return((uint)(guid.Guid64.Low & 0x00000000FFFFFFFFul));
                }

                return((uint)(guid.Guid64.Low & 0x00000000FFFFFFFFul));
            }

            return(0);
        }
 public static ushort GetMapId(this UniversalGuid guid)
 {
     if (guid.Guid128 != null)
     {
         return(guid.Guid128.GetMapId());
     }
     throw new Exception("Can't get Map from guid " + guid.ToWowParserString() + " because it's not a 128bit guid");
 }
Example #3
0
        public DatabaseExpressionEvaluator(string expression, UniversalGuid playerGuid)
        {
            lexer  = new SyntaxLexer(new AntlrInputStream(expression));
            tokens = new CommonTokenStream(lexer);
            parser = new SyntaxParser(tokens);
            parser.BuildParseTree = true;
            parser.RemoveErrorListeners();

            visitor = new ExpressionVisitor(new IsPacketSpecificPlayerProcessor(playerGuid));
        }
Example #4
0
    public static bool TryGetGuid(this UpdateValues update, string field, out UniversalGuid value)
    {
        if (update.ValuesCase == UpdateValues.ValuesOneofCase.Legacy)
        {
            return(update.Legacy.Guids.TryGetValue(field, out value));
        }

        var val = GetGuid(update.Fields, field);

        value = val ?? null !;
        return(val != null);
    }
        public static bool TryParseGuid(this string str, uint entry, UniversalHighGuid type, out UniversalGuid?guid)
        {
            guid = null;
            if (!str.StartsWith("0x"))
            {
                return(false);
            }

            if (str.Length == 34)
            {
                var high = str.Substring(2, 16);
                var low  = str.Substring(18, 16);

                if (ulong.TryParse(low, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var lowNum) &&
                    ulong.TryParse(high, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var highNum))
                {
                    guid = new UniversalGuid()
                    {
                        Entry   = entry,
                        Type    = type,
                        Guid128 = new UniversalGuid128()
                        {
                            Low = lowNum, High = highNum
                        }
                    };
                    return(true);
                }
            }
            else if (str.Length == 18)
            {
                var high = str.Substring(2, 8);
                var low  = str.Substring(10, 8);

                if (ulong.TryParse(low, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var lowNum) &&
                    ulong.TryParse(high, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var highNum))
                {
                    guid = new UniversalGuid()
                    {
                        Entry  = entry,
                        Type   = type,
                        Guid64 = new UniversalGuid64()
                        {
                            Low = lowNum, High = highNum
                        }
                    };
                    return(true);
                }
            }

            return(false);
        }
        public static string ToHexString(this UniversalGuid guid)
        {
            if (guid.KindCase == UniversalGuid.KindOneofCase.Guid64)
            {
                return($"0x" + guid.Guid64.High.ToString("X8") + guid.Guid64.Low.ToString("X8"));
            }

            if (guid.KindCase == UniversalGuid.KindOneofCase.Guid128)
            {
                return($"0x" + guid.Guid128.High.ToString("X16") + guid.Guid128.Low.ToString("X16"));
            }

            return("0x0");
        }
        public static bool HasEntry(this UniversalGuid guid)
        {
            switch (guid.Type)
            {
            case UniversalHighGuid.Creature:
            case UniversalHighGuid.GameObject:
            case UniversalHighGuid.Pet:
            case UniversalHighGuid.Vehicle:
            case UniversalHighGuid.AreaTrigger:
                return(true);

            default:
                return(false);
            }
        }
Example #8
0
 public IsPacketSpecificPlayerProcessor(UniversalGuid playerGuid)
 {
     this.playerGuid = playerGuid;
 }
 public static string ToHexWithTypeString(this UniversalGuid guid)
 {
     return($"{guid.ToHexString()}/{guid.Entry}/{guid.Type}");
 }
 public void IncludeGuid(UniversalGuid guid)
 {
     excludedGuids?.Remove(guid);
     includedGuids ??= new HashSet <UniversalGuid>();
     includedGuids.Add(guid);
 }