Created
June 3, 2017 11:51
-
-
Save Jadd/3f019ae9998928f3ccf23da1f54aab38 to your computer and use it in GitHub Desktop.
Revisions
-
Jadd created this gist
Jun 3, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,59 @@ [DataContract] public sealed class WoWRealm { #region Properties [IgnoreDataMember] public IntPtr Pointer { get; } [DataMember] public uint VirtualAddress { get; private set; } [DataMember] public string Name { get; private set; } #endregion internal WoWRealm(IntPtr pointer) { var entry = pointer.Read<WoWRealmEntry>(); Pointer = pointer; VirtualAddress = entry.VirtualAddress; Name = Encoding.UTF8.GetString(entry.Name).Terminate(); } public void Connect() { RealmList.ConnectToRealm(this); } #region Equality operators public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; return GetHashCode() == obj.GetHashCode(); } public override int GetHashCode() { return VirtualAddress.GetHashCode(); } public static bool operator ==(WoWRealm left, WoWRealm right) { return !ReferenceEquals(left, null) && left.Equals(right); } public static bool operator !=(WoWRealm left, WoWRealm right) { return !(left == right); } #endregion #region ToString implementation public override string ToString() { return $"Realm: {Name}"; } #endregion } [StructLayout(LayoutKind.Explicit)] internal struct WoWRealmEntry { [FieldOffset(0x00)] public readonly uint VirtualAddress; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] [FieldOffset(0x08)] public readonly byte[] Name; }