class_name WowGuid extends RefCounted ## Opaque 64-bit WoW wire GUID stored as two lossless unsigned 32-bit words. ## Build-specific high-type decoding belongs to the protocol adapter and must be ## fixture-backed before becoming a domain contract. const MAXIMUM_UNSIGNED_32_BIT_VALUE := 0xffffffff var high_32_bits: int: get: return _high_32_bits var low_32_bits: int: get: return _low_32_bits var _high_32_bits: int var _low_32_bits: int ## Preserves both wire words without signed 64-bit conversion. func _init(high_32_bits_value: int, low_32_bits_value: int) -> void: _high_32_bits = high_32_bits_value _low_32_bits = low_32_bits_value ## Reports whether both words fit their unsigned wire ranges. func has_valid_word_ranges() -> bool: return _is_unsigned_32_bit_word(_high_32_bits) and _is_unsigned_32_bit_word(_low_32_bits) ## Reports the all-zero protocol sentinel without assigning gameplay meaning. func is_empty() -> bool: return _high_32_bits == 0 and _low_32_bits == 0 ## Compares all 64 opaque wire bits. func equals(other_wow_guid: WowGuid) -> bool: return ( other_wow_guid != null and _high_32_bits == other_wow_guid.high_32_bits and _low_32_bits == other_wow_guid.low_32_bits ) ## Returns exactly sixteen lowercase hexadecimal digits for diagnostics/replays. func to_hex_string() -> String: return "%08x%08x" % [_high_32_bits, _low_32_bits] func _is_unsigned_32_bit_word(word_value: int) -> bool: return word_value >= 0 and word_value <= MAXIMUM_UNSIGNED_32_BIT_VALUE