Files
hank/hank-godot/scripts/haxe_EnumValueMap.gd
Nat Quayle Nelson b0a3c0b3d9
Some checks failed
/ test (push) Failing after 41s
Make hank work in GDScript
2025-10-30 21:42:19 -05:00

53 lines
1.1 KiB
GDScript

extends haxe_ds_BalancedTree
class_name haxe_ds_EnumValueMap
func _init() -> void:
pass
func compare(k1: EnumValue, k2: EnumValue) -> int:
var d: int = Type.enumIndex(k1) - Type.enumIndex(k2)
if (d != 0):
return d
var p1: Array[Variant] = Type.enumParameters(k1)
var p2: Array[Variant] = Type.enumParameters(k2)
if (p1.size() == 0 && p2.size() == 0):
return 0
return self.compareArgs(p1, p2)
func compareArgs(a1: Array[Variant], a2: Array[Variant]) -> int:
var ld: int = a1.size() - a2.size()
if (ld != 0):
return ld
var _g: int = 0
var _g1: int = a1.size()
while (_g < _g1):
var tempNumber
_g += 1
tempNumber = _g - 1
var i: int = tempNumber
var d: int = self.compareArg(a1[i], a2[i])
if (d != 0):
return d
return 0
func compareArg(v1, v2) -> int:
var tempResult
if ((v1 as Variant) is Dictionary && (v2 as Variant) is Dictionary):
tempResult = self.compare(v1, v2)
else:
if (((v1 as Variant) is Array[Variant]) && ((v2 as Variant) is Array[Variant])):
tempResult = self.compareArgs(v1, v2)
else:
tempResult = Reflect.compare(v1, v2)
return tempResult