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"); }
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)); }
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); } }
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); }