Advertisement
01lifeleft

custom exported flags

Jul 7th, 2024
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
GDScript 0.86 KB | Source Code | 0 0
  1. @tool
  2. extends Node
  3.  
  4.  
  5. enum FLAGS {WATER, FIRE, EARTH}
  6. var flags: int = 0: set = _set_flags
  7.  
  8.  
  9. func _get_property_list():
  10.     var properties = []
  11.     properties.append({
  12.         "name": "flags",
  13.         "type": TYPE_INT,
  14.         "usage": PROPERTY_USAGE_DEFAULT,
  15.         "hint": PROPERTY_HINT_FLAGS,
  16.         "hint_string": _get_hint_string()
  17.     })
  18.     return properties
  19.  
  20.  
  21. func _get_hint_string() -> String:
  22.     var hint_string := ""
  23.     var i := 0
  24.     for key in FLAGS:
  25.         if (i > 0):
  26.             hint_string += ","
  27.         var bit_flag: int = int(pow(2, FLAGS[key]))
  28.         hint_string += "%s:%s" %[key, bit_flag]
  29.         i += 1
  30.     return hint_string
  31.  
  32.  
  33. func _set_flags(value: int):
  34.     flags = value
  35.     print(_get_flags_data())
  36.  
  37.  
  38. func _get_flags_data() -> Dictionary:
  39.     var result_dict := {}
  40.     for key in FLAGS:
  41.         var bit_flag: int = int(pow(2, FLAGS[key]))
  42.         result_dict[key] = bool(flags & bit_flag)
  43.     return result_dict
  44.  
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement