From f98397ea5ca1d4c9c30bf7643b2eb327f983245d Mon Sep 17 00:00:00 2001 From: don-tnowe <67479453+don-tnowe@users.noreply.github.com> Date: Tue, 29 Aug 2023 14:44:00 +0300 Subject: [PATCH] Fix enum views not recognizing custom enum values --- .../typed_cells/cell_editor_enum.gd | 25 ++++++++++++++++++- .../typed_cells/cell_editor_enum_array.gd | 17 ++++++++++--- .../typed_editors/dock_enum_array.gd | 11 +++++--- example/Random Upgrades/upgrade_data.gd | 3 ++- .../upgrades/mastery_magic.tres | 2 +- .../upgrades/mastery_strength.tres | 2 +- 6 files changed, 50 insertions(+), 10 deletions(-) diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum.gd index f59dde7..5f41851 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum.gd @@ -6,7 +6,30 @@ func can_edit_value(value, type, property_hint, column_index) -> bool: func set_value(node : Control, value): - node.text = hint_strings_array[node.get_index() % hint_strings_array.size()][value] + if value == null: + # Sometimes, when creating new property, becomes null + value = 0 + + var value_str : String + var key_found := -1 + var hint_arr : Array = hint_strings_array[node.get_index() % hint_strings_array.size()] + for i in hint_arr.size(): + var colon_found : int = hint_arr[i].rfind(":") + if colon_found == -1: + key_found = value + break + + if hint_arr[i].substr(colon_found + 1).to_int() == value: + key_found = i + break + + if key_found != -1: + value_str = hint_arr[key_found] + + else: + value_str = "?:%s" % value + + node.text = value_str node.self_modulate = Color(node.text.hash()) + Color(0.25, 0.25, 0.25, 1.0) node.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum_array.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum_array.gd index f0ab9f3..5bd4c8c 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum_array.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor_enum_array.gd @@ -14,13 +14,24 @@ func can_edit_value(value, type, property_hint, column_index) -> bool: func _write_value_to_child(value, key, hint_arr : PackedStringArray, child : Label, colored : bool): var value_str : String - if value == 0: + var key_found := -1 + for i in hint_arr.size(): + var colon_found := hint_arr[i].rfind(":") + if colon_found == -1: + key_found = value + break + + if hint_arr[i].substr(colon_found + 1).to_int() == value: + key_found = i + break + + if key_found == 0: # Enum array hints have "2/3:" before list. var found := hint_arr[0].find(":") + 1 value_str = hint_arr[0].substr(hint_arr[0].find(":") + 1) - elif value < hint_arr.size(): - value_str = hint_arr[value] + elif key_found != -1: + value_str = hint_arr[key_found] else: value_str = "?:%s" % value diff --git a/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd b/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd index 7a7a27f..2fc6be6 100644 --- a/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd +++ b/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd @@ -42,7 +42,12 @@ func _create_option_button(index : int): if index >= options_container.get_child_count() - _init_nodes_in_options_container: node = Button.new() options_container.add_child(node) - node.pressed.connect(_on_option_clicked.bind(index)) + var colon_found : int = value.rfind(":") + if colon_found == -1: + node.pressed.connect(_on_option_clicked.bind(index)) + + else: + node.pressed.connect(_on_option_clicked.bind(value.substr(colon_found + 1).to_int())) else: node = options_container.get_child(index + _init_nodes_in_options_container) @@ -53,7 +58,7 @@ func _create_option_button(index : int): return node -func _add_value(option_value): +func _add_value(option_value : int): _stored_value.append(option_value) var values = sheet.get_edited_cells_values() var cur_value @@ -69,7 +74,7 @@ func _add_value(option_value): sheet.set_edited_cells_values(values) -func _remove_value(option_value): +func _remove_value(option_value : int): _stored_value.append(option_value) var values = sheet.get_edited_cells_values() var cur_value diff --git a/example/Random Upgrades/upgrade_data.gd b/example/Random Upgrades/upgrade_data.gd index 115b876..915857c 100644 --- a/example/Random Upgrades/upgrade_data.gd +++ b/example/Random Upgrades/upgrade_data.gd @@ -3,11 +3,12 @@ class_name UpgradeData extends Resource enum Attributes { - Strength, + Strength = 0, Magic, Endurance, Agility, Luck, + Mastery = 128, } @export var color1 := Color.WHITE diff --git a/example/Random Upgrades/upgrades/mastery_magic.tres b/example/Random Upgrades/upgrades/mastery_magic.tres index 2df4201..534709f 100644 --- a/example/Random Upgrades/upgrades/mastery_magic.tres +++ b/example/Random Upgrades/upgrades/mastery_magic.tres @@ -13,7 +13,7 @@ color1 = Color(1, 0.847059, 0.160784, 1) max_duplicates = 9 tags = Array[String](["magic", "mastery"]) type = 2 -attributes = Array[int]([1, 1, 4]) +attributes = Array[int]([1, 1, 4, 128]) icon = ExtResource("1_ardng") prerequisites = Array[ExtResource("2")]([ExtResource("2_485ad"), ExtResource("3_xnxxn"), ExtResource("4_kn0kg")]) color2 = Color(0.407843, 0.192157, 0.827451, 1) diff --git a/example/Random Upgrades/upgrades/mastery_strength.tres b/example/Random Upgrades/upgrades/mastery_strength.tres index 07ebc4d..3b5858f 100644 --- a/example/Random Upgrades/upgrades/mastery_strength.tres +++ b/example/Random Upgrades/upgrades/mastery_strength.tres @@ -13,7 +13,7 @@ color1 = Color(1, 0.847059, 0.160784, 1) max_duplicates = 9 tags = Array[String](["strength", "mastery"]) type = 2 -attributes = Array[int]([0, 0, 4]) +attributes = Array[int]([0, 0, 4, 128]) icon = ExtResource("1_442ey") prerequisites = Array[ExtResource("2")]([ExtResource("2_kb33p"), ExtResource("3_tt25f"), ExtResource("4_kpsn8")]) color2 = Color(0.992157, 0.941176, 0.2, 1)