Item count support for the ui.

This commit is contained in:
Relintai 2019-11-29 10:18:17 +01:00
parent 824fd02d0f
commit ea654acf7f
4 changed files with 57 additions and 2 deletions

2
HEADS
View File

@ -1 +1 @@
{"engine": "7735af7e768e16efb4b3b6de1c72c3dfb50c9412", "world_generator": "290d973ea9580f748881a54502850ae5fecfb586", "entity_spell_system": "2ba11eec7742295a40146da898ebe02ac4aa5a12", "ui_extensions": "271dcf89e9afe5cb6350de2f2433c8ebf8aba785", "voxelman": "2b369f5be8efc5fe0ef13da57afa46317c413f47", "texture_packer": "604c330188e220c15d10ea5bd545a6fc5aab0132", "fastnoise": "41b7ea05a1f7aa2b8ecddaa1fd739e64d6970f7e", "entity-spell-system-addons": "8568888b3c11dec56dbf1088a84bc898d68bd6ce"} {"engine": "f82539944b609dc8327536aa92a3da3851ac1338", "world_generator": "290d973ea9580f748881a54502850ae5fecfb586", "entity_spell_system": "992d0672f9b143fc0b3996e798dcf9aa7e064a92", "ui_extensions": "271dcf89e9afe5cb6350de2f2433c8ebf8aba785", "voxelman": "2b369f5be8efc5fe0ef13da57afa46317c413f47", "texture_packer": "604c330188e220c15d10ea5bd545a6fc5aab0132", "fastnoise": "41b7ea05a1f7aa2b8ecddaa1fd739e64d6970f7e", "entity-spell-system-addons": "8568888b3c11dec56dbf1088a84bc898d68bd6ce"}

View File

@ -6,9 +6,13 @@ extends Button
export (NodePath) var button_path : NodePath export (NodePath) var button_path : NodePath
export (NodePath) var icon_path : NodePath export (NodePath) var icon_path : NodePath
export (NodePath) var cooldown_indicator_path : NodePath export (NodePath) var cooldown_indicator_path : NodePath
export (NodePath) var cooldown_text_path : NodePath export (NodePath) var cooldown_text_path : NodePath
export (NodePath) var stack_counter : NodePath
var _stack_counter : Label
var _tooltip : Popup var _tooltip : Popup
var button : Button var button : Button
@ -35,8 +39,14 @@ func _ready() -> void:
cooldown_indicator = get_node(cooldown_indicator_path) as TextureProgress cooldown_indicator = get_node(cooldown_indicator_path) as TextureProgress
cooldown_text = get_node(cooldown_text_path) as Label cooldown_text = get_node(cooldown_text_path) as Label
_stack_counter = get_node(stack_counter) as Label
button.connect("pressed", self, "_on_button_pressed") button.connect("pressed", self, "_on_button_pressed")
#func _exit_tree():
# if item != null:
# item.disconnect("stack_size_changed", self, "stack_size_changed")
func _process(delta : float) -> void: func _process(delta : float) -> void:
if cd == null and gcd < 0.001: if cd == null and gcd < 0.001:
set_process(false) set_process(false)
@ -75,10 +85,19 @@ func hide_cooldown_timer() -> void:
cooldown_text.hide() cooldown_text.hide()
func set_item_instance(pitem : ItemInstance) -> void: func set_item_instance(pitem : ItemInstance) -> void:
if item != null and item.item_template.stack_size > 1:
item.disconnect("stack_size_changed", self, "stack_size_changed")
_stack_counter.hide()
item = pitem item = pitem
setup_icon() setup_icon()
if item != null and item.item_template.stack_size > 1:
item.connect("stack_size_changed", self, "stack_size_changed")
_stack_counter.show()
stack_size_changed(item)
func setup_icon() -> void: func setup_icon() -> void:
if (item == null): if (item == null):
icon_rect.texture = null icon_rect.texture = null
@ -105,11 +124,22 @@ func _on_button_pressed() -> void:
pass pass
func set_button_entry_data(ii : ItemInstance) -> void: func set_button_entry_data(ii : ItemInstance) -> void:
if item != null and item.item_template.stack_size > 1:
item.disconnect("stack_size_changed", self, "stack_size_changed")
_stack_counter.hide()
item = ii item = ii
setup_icon() setup_icon()
if item != null and item.item_template.stack_size > 1:
item.connect("stack_size_changed", self, "stack_size_changed")
_stack_counter.show()
stack_size_changed(item)
func stack_size_changed(ii : ItemInstance) -> void:
_stack_counter.text = str(ii.stack_size)
func get_drag_data(pos: Vector2) -> Object: func get_drag_data(pos: Vector2) -> Object:
if item == null: if item == null:
return null return null

View File

@ -27,6 +27,7 @@ button_path = NodePath(".")
icon_path = NodePath("MarginContainer/TextureRect") icon_path = NodePath("MarginContainer/TextureRect")
cooldown_indicator_path = NodePath("CooldownIndicator") cooldown_indicator_path = NodePath("CooldownIndicator")
cooldown_text_path = NodePath("CooldownText") cooldown_text_path = NodePath("CooldownText")
stack_counter = NodePath("MarginContainer2/StackCounter")
[node name="MarginContainer" type="MarginContainer" parent="."] [node name="MarginContainer" type="MarginContainer" parent="."]
anchor_right = 1.0 anchor_right = 1.0
@ -78,3 +79,26 @@ clip_text = true
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="MarginContainer2" type="MarginContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
custom_constants/margin_right = 4
custom_constants/margin_top = 4
custom_constants/margin_left = 4
custom_constants/margin_bottom = 3
__meta__ = {
"_edit_use_anchors_": false
}
[node name="StackCounter" type="Label" parent="MarginContainer2"]
visible = false
margin_left = 4.0
margin_top = 4.0
margin_right = 41.0
margin_bottom = 42.0
size_flags_horizontal = 3
size_flags_vertical = 3
align = 2
valign = 2

View File

@ -73,6 +73,7 @@ func cbag_changed(entity: Entity, bag: Bag) -> void:
if _bag != null: if _bag != null:
_bag.disconnect("size_changed", self, "bag_size_changed") _bag.disconnect("size_changed", self, "bag_size_changed")
_bag.disconnect("item_added", self, "bag_item_added") _bag.disconnect("item_added", self, "bag_item_added")
_bag.disconnect("item_count_changed", self, "item_count_changed")
_bag.disconnect("item_removed", self, "item_removed") _bag.disconnect("item_removed", self, "item_removed")
_bag.disconnect("item_swapped", self, "item_swapped") _bag.disconnect("item_swapped", self, "item_swapped")