further rework of card handling
This commit is contained in:
parent
60d7d7e7ac
commit
e8e368c362
|
|
@ -44,7 +44,6 @@ var dropzone_size: Vector2
|
||||||
@export var dropzone_padding = 100
|
@export var dropzone_padding = 100
|
||||||
@onready var sticky_note_container = $HBoxContainer/ScrollContainer/VBoxContainer
|
@onready var sticky_note_container = $HBoxContainer/ScrollContainer/VBoxContainer
|
||||||
@onready var board_of_devs = $"board of devs"
|
@onready var board_of_devs = $"board of devs"
|
||||||
var base_sticky_note_panel: Panel
|
|
||||||
@onready var current_context:int = NAVIGATE:
|
@onready var current_context:int = NAVIGATE:
|
||||||
set(context):
|
set(context):
|
||||||
if current_context == ASSIGN and !context == ASSIGN:
|
if current_context == ASSIGN and !context == ASSIGN:
|
||||||
|
|
@ -75,7 +74,7 @@ var mementos_collected: int = 0:
|
||||||
@onready var currently_active_node: Area2D = null:
|
@onready var currently_active_node: Area2D = null:
|
||||||
set(new_node):
|
set(new_node):
|
||||||
# this makes sure no accidental context switches can happen while a card is being dragged.
|
# this makes sure no accidental context switches can happen while a card is being dragged.
|
||||||
if not current_context == DRAG:
|
if not (current_context == DRAG):
|
||||||
if not currently_active_node == null:
|
if not currently_active_node == null:
|
||||||
currently_active_node.highlighted = false
|
currently_active_node.highlighted = false
|
||||||
currently_active_node = new_node
|
currently_active_node = new_node
|
||||||
|
|
@ -87,7 +86,7 @@ var mementos_collected: int = 0:
|
||||||
if new_id > dropzone.get_child_count() - 1: current_dropzone_id = 0
|
if new_id > dropzone.get_child_count() - 1: current_dropzone_id = 0
|
||||||
elif new_id < 0: current_dropzone_id = dropzone.get_child_count() - 1
|
elif new_id < 0: current_dropzone_id = dropzone.get_child_count() - 1
|
||||||
else: current_dropzone_id = new_id
|
else: current_dropzone_id = new_id
|
||||||
if current_context == ASSIGN:
|
if current_context == ASSIGN and not focus_stickies:
|
||||||
while not dropzone.get_child(current_dropzone_id) is Card: current_dropzone_id = (current_dropzone_id + 1) % dropzone.get_child_count()
|
while not dropzone.get_child(current_dropzone_id) is Card: current_dropzone_id = (current_dropzone_id + 1) % dropzone.get_child_count()
|
||||||
dropzone.get_child(current_dropzone_id).preview_sticky_note(currently_active_node)
|
dropzone.get_child(current_dropzone_id).preview_sticky_note(currently_active_node)
|
||||||
|
|
||||||
|
|
@ -104,7 +103,12 @@ var mementos_collected: int = 0:
|
||||||
_return_sticky_notes_to_panels()
|
_return_sticky_notes_to_panels()
|
||||||
currently_active_node.preview_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note)
|
currently_active_node.preview_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note)
|
||||||
else:
|
else:
|
||||||
currently_active_node = sticky_note_container.get_child(current_sticky_note_id).get_child(1)
|
if sticky_note_container.get_child(current_sticky_note_id).get_child_count() == 1:
|
||||||
|
currently_active_node = sticky_note_container.get_child(current_sticky_note_id).get_child(0)
|
||||||
|
else:
|
||||||
|
for i in range(sticky_note_container.get_child_count() - 1):
|
||||||
|
if sticky_note_container.get_child(i).get_child_count() == 1:
|
||||||
|
currently_active_node = sticky_note_container.get_child(i).get_child(0)
|
||||||
|
|
||||||
var cache: Array = []
|
var cache: Array = []
|
||||||
|
|
||||||
|
|
@ -112,17 +116,23 @@ signal board_completed
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
base_sticky_note_panel = $HBoxContainer/ScrollContainer/VBoxContainer/Panel
|
var size_reference = StickyNotePanel.new()
|
||||||
sticky_note_container.remove_child(base_sticky_note_panel)
|
|
||||||
|
|
||||||
dropzone_size = get_viewport_rect().size - Vector2(dropzone_padding + base_sticky_note_panel.custom_minimum_size.x, dropzone_padding)
|
dropzone_size = get_viewport_rect().size - Vector2(dropzone_padding + size_reference.minimum_size.x, dropzone_padding)
|
||||||
|
|
||||||
if get_parent() == get_tree().root:
|
if get_parent() == get_tree().root:
|
||||||
populate_board(["c_void", 'c_joy', "p_wet", "p_thomas"])
|
populate_board(["c_void", 'c_joy', "p_wet", "p_effort"])
|
||||||
populate_board(["c_fighting", 'c_hit', "p_girly", "p_vent"])
|
populate_board(["c_fighting", 'c_hit', "p_girly", "p_vent"])
|
||||||
mementos_collected = 2
|
mementos_collected = 2
|
||||||
|
|
||||||
has_stage = has_stage
|
has_stage = has_stage
|
||||||
|
|
||||||
|
get_viewport().gui_focus_changed.connect(reclaim_lost_focus)
|
||||||
|
|
||||||
|
|
||||||
|
func reclaim_lost_focus():
|
||||||
|
if has_stage:
|
||||||
|
grab_focus()
|
||||||
|
|
||||||
#func _process(delta):
|
#func _process(delta):
|
||||||
# # drops dragged area when Mouse is no longer pressed.
|
# # drops dragged area when Mouse is no longer pressed.
|
||||||
|
|
@ -155,10 +165,12 @@ func add_card(card: Card):
|
||||||
card.is_dragable = true
|
card.is_dragable = true
|
||||||
|
|
||||||
func add_sticky_note(sticky: StickyNote):
|
func add_sticky_note(sticky: StickyNote):
|
||||||
var new_panel = base_sticky_note_panel.duplicate()
|
var new_panel = StickyNotePanel.new()
|
||||||
sticky_note_container.add_child(new_panel)
|
sticky_note_container.add_child(new_panel, false, Node.INTERNAL_MODE_DISABLED)
|
||||||
|
#WARNING this for some reason would break the tweens
|
||||||
new_panel.set_owner(self)
|
new_panel.set_owner(self)
|
||||||
new_panel.attatch_sticky_note(sticky, false)
|
sticky.current_handle = self
|
||||||
|
new_panel.attatch_sticky_note(sticky, self, false)
|
||||||
|
|
||||||
# Checks if a Node is currently inside the dropzone
|
# Checks if a Node is currently inside the dropzone
|
||||||
func is_in_dropzone(to_check: Node) -> bool:
|
func is_in_dropzone(to_check: Node) -> bool:
|
||||||
|
|
@ -179,7 +191,7 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act
|
||||||
if not to_handle.on_board:
|
if not to_handle.on_board:
|
||||||
to_handle.reparent(dropzone)
|
to_handle.reparent(dropzone)
|
||||||
to_handle.on_board = true
|
to_handle.on_board = true
|
||||||
to_handle.owner = self
|
to_handle.attached_to = self
|
||||||
current_context = DRAG
|
current_context = DRAG
|
||||||
|
|
||||||
# when Drag stops ...
|
# when Drag stops ...
|
||||||
|
|
@ -195,6 +207,7 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act
|
||||||
to_handle = area.exchange_sticky_note_with(to_handle)
|
to_handle = area.exchange_sticky_note_with(to_handle)
|
||||||
to_handle.reparent(dropzone)
|
to_handle.reparent(dropzone)
|
||||||
to_handle.on_board = true
|
to_handle.on_board = true
|
||||||
|
# FIXME: this caused an error when all stickies were attatched ...
|
||||||
sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note = to_handle
|
sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note = to_handle
|
||||||
to_handle.attached_to = sticky_note_container.get_child(current_sticky_note_id)
|
to_handle.attached_to = sticky_note_container.get_child(current_sticky_note_id)
|
||||||
to_handle.reset_drag()
|
to_handle.reset_drag()
|
||||||
|
|
@ -202,17 +215,29 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
area.attach_sticky_note(to_handle)
|
area.attach_sticky_note(to_handle)
|
||||||
if not sticky_note_container.get_child_count() == 0:
|
sticky_note_container.get_child(current_sticky_note_id).clear_if_empty()
|
||||||
sticky_note_container.get_child(current_sticky_note_id).clear_if_empty()
|
|
||||||
current_context = NAVIGATE
|
current_context = NAVIGATE
|
||||||
if is_board_complete(): emit_signal("board_completed")
|
if is_board_complete(): emit_signal("board_completed")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
var i: int = 0
|
||||||
|
for panel: StickyNotePanel in sticky_note_container.get_children():
|
||||||
|
i += 1
|
||||||
|
if panel.is_gapped or i == sticky_note_container.get_child_count():
|
||||||
|
panel.collapse_gap()
|
||||||
|
var new_panel = StickyNotePanel.new()
|
||||||
|
sticky_note_container.add_child(new_panel)
|
||||||
|
sticky_note_container.move_child(new_panel, i)
|
||||||
|
new_panel.attatch_sticky_note(to_handle, self)
|
||||||
|
new_panel.owner = self
|
||||||
|
panel.clear_if_empty()
|
||||||
_return_sticky_notes_to_panels()
|
_return_sticky_notes_to_panels()
|
||||||
|
current_context = NAVIGATE
|
||||||
return
|
return
|
||||||
|
|
||||||
## Dropping Cards and Sticky Notes not causing a return condition above.
|
## Dropping Cards and Sticky Notes not causing a return condition above.
|
||||||
insert_area(dropzone, to_handle)
|
if not (to_handle is StickyNote and to_handle.is_sticky_note_attached()):
|
||||||
|
insert_area(dropzone, to_handle)
|
||||||
current_context = NAVIGATE
|
current_context = NAVIGATE
|
||||||
focus_stickies = false
|
focus_stickies = false
|
||||||
current_dropzone_id = dropzone.get_children().find(to_handle)
|
current_dropzone_id = dropzone.get_children().find(to_handle)
|
||||||
|
|
@ -225,7 +250,7 @@ func handle_mouse_button(input: InputEventMouseButton, to_handle = currently_act
|
||||||
|
|
||||||
|
|
||||||
func _return_sticky_notes_to_panels():
|
func _return_sticky_notes_to_panels():
|
||||||
for panel in sticky_note_container.get_children():
|
for panel:StickyNotePanel in sticky_note_container.get_children():
|
||||||
panel.reclaim_sticky_note()
|
panel.reclaim_sticky_note()
|
||||||
|
|
||||||
func is_board_complete() -> bool:
|
func is_board_complete() -> bool:
|
||||||
|
|
@ -289,8 +314,8 @@ func _input(event):
|
||||||
handle_mouse_button(event)
|
handle_mouse_button(event)
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
if current_context != DRAG:
|
if current_context != DRAG:
|
||||||
if event.is_action_pressed("ui_up"):
|
if event.is_action_pressed("ui_up"):
|
||||||
if focus_stickies:
|
if focus_stickies:
|
||||||
current_sticky_note_id -= 1
|
current_sticky_note_id -= 1
|
||||||
|
|
@ -328,7 +353,8 @@ func _input(event):
|
||||||
else:
|
else:
|
||||||
card.attach_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note)
|
card.attach_sticky_note(sticky_note_container.get_child(current_sticky_note_id).attached_sticky_note)
|
||||||
current_context = NAVIGATE
|
current_context = NAVIGATE
|
||||||
focus_stickies = false
|
current_sticky_note_id += 1
|
||||||
|
current_dropzone_id = find_first_free_card()
|
||||||
if is_board_complete(): emit_signal("board_completed")
|
if is_board_complete(): emit_signal("board_completed")
|
||||||
else:
|
else:
|
||||||
if !focus_stickies and card.has_sticky_note_attached():
|
if !focus_stickies and card.has_sticky_note_attached():
|
||||||
|
|
@ -380,7 +406,7 @@ func get_save_dict() -> Dictionary:
|
||||||
cards[child.name] = child.transform.origin
|
cards[child.name] = child.transform.origin
|
||||||
|
|
||||||
for child in sticky_note_container.get_children():
|
for child in sticky_note_container.get_children():
|
||||||
if child is PostItPanel:
|
if child is StickyNotePanel:
|
||||||
stickies[child.attached_sticky_note.name] = -1
|
stickies[child.attached_sticky_note.name] = -1
|
||||||
return {
|
return {
|
||||||
"cards": cards,
|
"cards": cards,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
extends Area2D
|
extends Area2D
|
||||||
class_name Card
|
class_name Card
|
||||||
var compatible_sticky_notes: Array[StickyNote] = []
|
var compatible_sticky_notes: Array[StickyNote] = []
|
||||||
|
@export var evil_sticky_notes: Array[StickyNote] = []
|
||||||
var own_sticky_notes: Array[StickyNote] = []
|
var own_sticky_notes: Array[StickyNote] = []
|
||||||
var current_sticky_note: StickyNote = null
|
var current_sticky_note: StickyNote = null
|
||||||
var wiggle_pos: float = 0
|
var wiggle_pos: float = 0
|
||||||
|
|
@ -64,7 +65,7 @@ var transfor_arr: Array[Transform2D] = [
|
||||||
@export var voice_line: AudioStream = null
|
@export var voice_line: AudioStream = null
|
||||||
@export var is_dragable: bool = false
|
@export var is_dragable: bool = false
|
||||||
@onready var diameter = $CollisionShape2D.shape.height
|
@onready var diameter = $CollisionShape2D.shape.height
|
||||||
@onready var sticky_note_anchor: Node2D = $"sticky note anchor"
|
@onready var sticky_note_anchor: Node2D = %StickyNoteAncor
|
||||||
|
|
||||||
var is_dragged: bool = false:
|
var is_dragged: bool = false:
|
||||||
set(dragged):
|
set(dragged):
|
||||||
|
|
@ -94,7 +95,7 @@ func _ready():
|
||||||
own_sticky_notes[0].sibling = own_sticky_notes[1]
|
own_sticky_notes[0].sibling = own_sticky_notes[1]
|
||||||
own_sticky_notes[1].sibling = own_sticky_notes[0]
|
own_sticky_notes[1].sibling = own_sticky_notes[0]
|
||||||
|
|
||||||
$BackgroundSprite.frame = text.hash() % $BackgroundSprite.sprite_frames.get_frame_count($BackgroundSprite.animation)
|
%BackgroundSprite.frame = text.hash() % %BackgroundSprite.sprite_frames.get_frame_count(%BackgroundSprite.animation)
|
||||||
$Label.text = self.text
|
$Label.text = self.text
|
||||||
|
|
||||||
$Label.theme = State.current_main_theme
|
$Label.theme = State.current_main_theme
|
||||||
|
|
@ -167,7 +168,8 @@ func _on_input_event(viewport, event, shape_idx):
|
||||||
_move_card()
|
_move_card()
|
||||||
|
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == MOUSE_BUTTON_LEFT:
|
# Mouse Button Left is being handled by card_board to prevent events being missed when mouse moves outside card
|
||||||
|
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
|
||||||
if "handle_mouse_button" in owner:
|
if "handle_mouse_button" in owner:
|
||||||
mouse_offset = (get_viewport().get_mouse_position() - position)
|
mouse_offset = (get_viewport().get_mouse_position() - position)
|
||||||
if highlighted:
|
if highlighted:
|
||||||
|
|
@ -178,25 +180,29 @@ func _move_card():
|
||||||
position += (get_viewport().get_mouse_position() - position) - mouse_offset
|
position += (get_viewport().get_mouse_position() - position) - mouse_offset
|
||||||
|
|
||||||
func has_sticky_note_attached() -> bool:
|
func has_sticky_note_attached() -> bool:
|
||||||
return get_child(-1) is StickyNote
|
return sticky_note_anchor.get_child_count() > 0
|
||||||
|
|
||||||
func get_attached_sticky_note() -> StickyNote:
|
func get_attached_sticky_note() -> StickyNote:
|
||||||
return null if not has_sticky_note_attached() else get_child(-1)
|
return null if not has_sticky_note_attached() else sticky_note_anchor.get_child(0)
|
||||||
|
|
||||||
func preview_sticky_note(sticky_note: StickyNote):
|
func preview_sticky_note(sticky_note: StickyNote):
|
||||||
sticky_note.reparent(self.get_parent())
|
sticky_note.reparent(self.get_parent())
|
||||||
sticky_note.owner = owner
|
sticky_note.attached_to = self
|
||||||
sticky_note.tween_transform_to(Transform2D(0, sticky_note_anchor.global_position + 0 * Vector2(sticky_note.diameter, sticky_note.diameter)))
|
sticky_note.tween_transform_to(Transform2D(0, sticky_note_anchor.global_position + 0 * Vector2(sticky_note.diameter, sticky_note.diameter)))
|
||||||
|
|
||||||
func attach_sticky_note(sticky_note: StickyNote) -> bool:
|
func attach_sticky_note(sticky_note: StickyNote) -> bool:
|
||||||
if has_sticky_note_attached():
|
if has_sticky_note_attached():
|
||||||
return false
|
return false
|
||||||
sticky_note.reparent(self)
|
sticky_note.reparent(sticky_note_anchor)
|
||||||
sticky_note.owner = self.owner
|
sticky_note.position = Vector2.ZERO
|
||||||
sticky_note.position = sticky_note_anchor.position
|
|
||||||
sticky_note.on_board = false
|
sticky_note.on_board = false
|
||||||
current_sticky_note = sticky_note
|
current_sticky_note = sticky_note
|
||||||
sticky_note.attached_to = self
|
sticky_note.attached_to = self
|
||||||
|
|
||||||
|
if name == "c_hit" and sticky_note.name == "p_effort":
|
||||||
|
Steam.setAchievement("FIGHT_FOR_GOOD")
|
||||||
|
Steam.storeStats()
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
func remove_sticky_note() -> StickyNote:
|
func remove_sticky_note() -> StickyNote:
|
||||||
|
|
@ -205,6 +211,7 @@ func remove_sticky_note() -> StickyNote:
|
||||||
current_sticky_note = null
|
current_sticky_note = null
|
||||||
former_child.reparent(get_parent())
|
former_child.reparent(get_parent())
|
||||||
former_child.owner = self.owner
|
former_child.owner = self.owner
|
||||||
|
former_child.current_handle = false
|
||||||
former_child.on_board = true
|
former_child.on_board = true
|
||||||
former_child.attached_to = null
|
former_child.attached_to = null
|
||||||
return former_child
|
return former_child
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ rotation = 1.5708
|
||||||
shape = SubResource("CapsuleShape2D_foovg")
|
shape = SubResource("CapsuleShape2D_foovg")
|
||||||
|
|
||||||
[node name="BackgroundSprite" type="AnimatedSprite2D" parent="."]
|
[node name="BackgroundSprite" type="AnimatedSprite2D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
clip_children = 2
|
clip_children = 2
|
||||||
scale = Vector2(0.6, 0.6)
|
scale = Vector2(0.6, 0.6)
|
||||||
sprite_frames = SubResource("SpriteFrames_ckivt")
|
sprite_frames = SubResource("SpriteFrames_ckivt")
|
||||||
|
|
@ -83,5 +84,6 @@ theme = ExtResource("3_1x4uh")
|
||||||
theme_type_variation = &"card_text"
|
theme_type_variation = &"card_text"
|
||||||
autowrap_mode = 3
|
autowrap_mode = 3
|
||||||
|
|
||||||
[node name="sticky note anchor" type="Node2D" parent="."]
|
[node name="StickyNoteAncor" type="Node2D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
position = Vector2(-66, 83)
|
position = Vector2(-66, 83)
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,72 @@
|
||||||
class_name PostItPanel
|
@tool
|
||||||
|
class_name StickyNotePanel
|
||||||
extends Panel
|
extends Panel
|
||||||
|
|
||||||
@export var minimum_size:Vector2 = Vector2(400, 100)
|
var minimum_size:Vector2 = Vector2(400, 100):
|
||||||
|
set(size):
|
||||||
|
minimum_size = size
|
||||||
|
custom_minimum_size = size
|
||||||
var attached_sticky_note: StickyNote
|
var attached_sticky_note: StickyNote
|
||||||
@onready var ancor = $"sticky-note_anchor"
|
var ancor_position: Vector2
|
||||||
|
|
||||||
|
func _init(cstm_minimum_size: Vector2 = minimum_size, note_position: Vector2 = Vector2(105, 57)) -> void:
|
||||||
|
minimum_size = cstm_minimum_size
|
||||||
|
ancor_position = note_position
|
||||||
|
mouse_filter = MOUSE_FILTER_PASS
|
||||||
|
self_modulate = Color(1, 1, 1, 0)
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
ancor.position = Vector2(ancor.position.x, 0)
|
|
||||||
custom_minimum_size = Vector2(custom_minimum_size.x, 0)
|
custom_minimum_size = Vector2(custom_minimum_size.x, 0)
|
||||||
|
|
||||||
func attatch_sticky_note(attatchment: StickyNote, tween:bool = true):
|
var is_attatching: bool = false
|
||||||
|
func attatch_sticky_note(attatchment: StickyNote, custom_owner: Node, tween:bool = true):
|
||||||
|
is_attatching = true
|
||||||
attatchment.on_board = false
|
attatchment.on_board = false
|
||||||
|
attached_sticky_note = attatchment
|
||||||
|
attatchment.attached_to = self
|
||||||
if tween:
|
if tween:
|
||||||
|
await get_tree().process_frame
|
||||||
var height_tween: Tween = create_tween()
|
var height_tween: Tween = create_tween()
|
||||||
height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.3)
|
height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1)
|
||||||
height_tween.tween_property(ancor, "position", Vector2(ancor.position.x, minimum_size.y/2), 0.3)
|
attatchment.tween_transform_to(Transform2D(0, get_screen_position() + ancor_position - Vector2(0, minimum_size.y)))
|
||||||
attatchment.tween_transform_to(ancor.global_position)
|
|
||||||
await attatchment.transform_tween_finished
|
await attatchment.transform_tween_finished
|
||||||
else:
|
else:
|
||||||
custom_minimum_size = minimum_size
|
custom_minimum_size = minimum_size
|
||||||
ancor.position = Vector2(ancor.position.x, minimum_size.y/2)
|
|
||||||
attatchment.reparent(self)
|
attatchment.reparent(self)
|
||||||
attached_sticky_note = attatchment
|
is_attatching = false
|
||||||
attatchment.owner = self.owner
|
attatchment.owner = custom_owner
|
||||||
attatchment.attached_to = self
|
attatchment.position = ancor_position
|
||||||
attatchment.transform = ancor.transform
|
|
||||||
|
var is_gapped: bool = false
|
||||||
|
func create_gap():
|
||||||
|
var self_id = get_parent().get_children().find(self)
|
||||||
|
var next_id = min(self_id + 1, get_parent().get_child_count() - 1)
|
||||||
|
var previous_id = max(self_id - 1, 0)
|
||||||
|
|
||||||
func reclaim_sticky_note():
|
if not (is_gapped or get_parent().get_child(next_id).attached_sticky_note.is_dragged or get_parent().get_child(previous_id).attached_sticky_note.is_dragged) and owner.current_context == CardBoard.DRAG:
|
||||||
if is_empty() and attached_sticky_note.on_board == true:
|
is_gapped = true
|
||||||
|
var height_tween: Tween = create_tween()
|
||||||
|
height_tween.tween_property(self, "custom_minimum_size", minimum_size*Vector2(1.0, 1.8), 0.1)
|
||||||
|
|
||||||
|
get_parent().get_child(next_id).collapse_gap()
|
||||||
|
if not get_parent().get_children().find(self) == 0: get_parent().get_child(previous_id).collapse_gap()
|
||||||
|
|
||||||
|
func collapse_gap():
|
||||||
|
if is_gapped:
|
||||||
|
is_gapped = false
|
||||||
|
var height_tween: Tween = create_tween()
|
||||||
|
height_tween.tween_property(self, "custom_minimum_size", minimum_size, 0.1)
|
||||||
|
|
||||||
|
func reclaim_sticky_note() -> bool:
|
||||||
|
if is_empty() and attached_sticky_note.attached_to != Card:
|
||||||
attached_sticky_note.on_board = false
|
attached_sticky_note.on_board = false
|
||||||
attached_sticky_note.tween_transform_to(ancor.global_transform)
|
attached_sticky_note.tween_transform_to(Transform2D(0, get_screen_position() + ancor_position))
|
||||||
await attached_sticky_note.transform_tween_finished
|
await attached_sticky_note.transform_tween_finished
|
||||||
attached_sticky_note.reparent(self)
|
attached_sticky_note.reparent(self)
|
||||||
|
attached_sticky_note.attached_to = self
|
||||||
attached_sticky_note.owner = self.owner
|
attached_sticky_note.owner = self.owner
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
|
||||||
func clear_if_empty():
|
func clear_if_empty():
|
||||||
if !is_empty(): return
|
if !is_empty(): return
|
||||||
|
|
@ -48,4 +82,4 @@ func replace_sticky_note_with(new_sticky_note: StickyNote):
|
||||||
attached_sticky_note = new_sticky_note
|
attached_sticky_note = new_sticky_note
|
||||||
|
|
||||||
func is_empty() -> bool:
|
func is_empty() -> bool:
|
||||||
return get_child_count() == 1
|
return get_child_count() == 0 and not is_attatching
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
[node name="Panel" type="Panel"]
|
[node name="Panel" type="Panel"]
|
||||||
self_modulate = Color(1, 1, 1, 0)
|
self_modulate = Color(1, 1, 1, 0)
|
||||||
custom_minimum_size = Vector2(400, 100)
|
custom_minimum_size = Vector2(400, 0)
|
||||||
offset_right = 400.0
|
offset_right = 400.0
|
||||||
offset_bottom = 120.0
|
offset_bottom = 120.0
|
||||||
mouse_filter = 1
|
mouse_filter = 1
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
[ext_resource type="Shader" path="res://logic-scenes/board/physics-board.gdshader" id="1_ggnth"]
|
[ext_resource type="Shader" path="res://logic-scenes/board/physics-board.gdshader" id="1_ggnth"]
|
||||||
[ext_resource type="Script" path="res://logic-scenes/board/card-board.gd" id="3_8v4c4"]
|
[ext_resource type="Script" path="res://logic-scenes/board/card-board.gd" id="3_8v4c4"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bvowj4l8dtceu" path="res://dev-util/board of devs.tscn" id="4_sskx2"]
|
[ext_resource type="PackedScene" uid="uid://bvowj4l8dtceu" path="res://dev-util/board of devs.tscn" id="4_sskx2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://chwf61qpn2sqw" path="res://logic-scenes/board/empty_sticky_note_panel.tscn" id="5_dr0qs"]
|
|
||||||
[ext_resource type="Script" path="res://logic-scenes/board/card collider.gd" id="6_wpxls"]
|
[ext_resource type="Script" path="res://logic-scenes/board/card collider.gd" id="6_wpxls"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ttqei"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ttqei"]
|
||||||
|
|
@ -12,6 +11,8 @@ shader = ExtResource("1_ggnth")
|
||||||
shader_parameter/magic_scale_factor = 1500.0
|
shader_parameter/magic_scale_factor = 1500.0
|
||||||
shader_parameter/tex = ExtResource("1_8brxc")
|
shader_parameter/tex = ExtResource("1_8brxc")
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m1g7s"]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_5ri3m"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_5ri3m"]
|
||||||
size = Vector2(4262, 766.5)
|
size = Vector2(4262, 766.5)
|
||||||
|
|
||||||
|
|
@ -29,6 +30,7 @@ grow_vertical = 2
|
||||||
size_flags_horizontal = 6
|
size_flags_horizontal = 6
|
||||||
size_flags_vertical = 6
|
size_flags_vertical = 6
|
||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_m1g7s")
|
||||||
script = ExtResource("3_8v4c4")
|
script = ExtResource("3_8v4c4")
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||||
|
|
@ -47,9 +49,6 @@ horizontal_scroll_mode = 0
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/ScrollContainer"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/ScrollContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Panel" parent="HBoxContainer/ScrollContainer/VBoxContainer" instance=ExtResource("5_dr0qs")]
|
|
||||||
layout_mode = 2
|
|
||||||
|
|
||||||
[node name="board of devs" parent="." instance=ExtResource("4_sskx2")]
|
[node name="board of devs" parent="." instance=ExtResource("4_sskx2")]
|
||||||
process_mode = 4
|
process_mode = 4
|
||||||
visible = false
|
visible = false
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,11 @@ var modulate_tween: Tween
|
||||||
var card_stick_tween: Tween
|
var card_stick_tween: Tween
|
||||||
var hovering_cards: Array[Card]
|
var hovering_cards: Array[Card]
|
||||||
var hover_pos_shift: float
|
var hover_pos_shift: float
|
||||||
|
var attached_to: Node = null:
|
||||||
|
set(new_attatchement):
|
||||||
|
attached_to = new_attatchement
|
||||||
|
# cannot be explicitly typed, as this can be bnoth handled by picker and physics-board
|
||||||
|
var current_handle
|
||||||
|
|
||||||
signal transform_tween_finished
|
signal transform_tween_finished
|
||||||
|
|
||||||
|
|
@ -26,14 +30,15 @@ signal transform_tween_finished
|
||||||
set(highlight):
|
set(highlight):
|
||||||
if highlight != highlighted:
|
if highlight != highlighted:
|
||||||
highlighted = highlight
|
highlighted = highlight
|
||||||
|
print("hightlight_set")
|
||||||
|
|
||||||
if is_inside_tree() and is_node_ready():
|
if is_inside_tree() and is_node_ready():
|
||||||
if modulate_tween: modulate_tween.kill()
|
if modulate_tween: modulate_tween.kill()
|
||||||
if shift_tween: shift_tween.kill()
|
if shift_tween: shift_tween.kill()
|
||||||
if highlighted:
|
if highlighted:
|
||||||
modulate_tween = get_tree().create_tween()
|
var modulate_tween = get_tree().create_tween()
|
||||||
modulate_tween.tween_property(self, "modulate", highlight_color, 0.1)
|
modulate_tween.tween_property(self, "modulate", highlight_color, 0.1)
|
||||||
shift_tween = get_tree().create_tween()
|
var shift_tween = get_tree().create_tween()
|
||||||
shift_tween.tween_property($Content, "position", shift_by, 0.2)
|
shift_tween.tween_property($Content, "position", shift_by, 0.2)
|
||||||
else:
|
else:
|
||||||
modulate_tween = get_tree().create_tween()
|
modulate_tween = get_tree().create_tween()
|
||||||
|
|
@ -62,7 +67,7 @@ var mouse_diff: Vector2
|
||||||
@onready var diameter = $CollisionShape2D.shape.height
|
@onready var diameter = $CollisionShape2D.shape.height
|
||||||
@export_range(1.0, 10.0) var bounce_speed: float = 8
|
@export_range(1.0, 10.0) var bounce_speed: float = 8
|
||||||
var on_board: bool = false
|
var on_board: bool = false
|
||||||
var attached_to: Node = null
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
||||||
|
|
@ -103,26 +108,27 @@ func _process(delta: float) -> void:
|
||||||
func _on_mouse_entered():
|
func _on_mouse_entered():
|
||||||
if not Input.is_action_pressed("mouse_left"):
|
if not Input.is_action_pressed("mouse_left"):
|
||||||
highlighted = true
|
highlighted = true
|
||||||
if "handle_hover" in owner:
|
if "handle_hover" in current_handle:
|
||||||
owner.handle_hover(self)
|
current_handle.handle_hover(self)
|
||||||
|
|
||||||
func _on_mouse_exited():
|
func _on_mouse_exited():
|
||||||
if is_sticky_note_attached() and "check_hover" in get_parent():
|
|
||||||
get_parent().check_hover()
|
|
||||||
|
|
||||||
if not is_dragged:
|
if not is_dragged:
|
||||||
highlighted = false
|
highlighted = false
|
||||||
|
|
||||||
|
if is_sticky_note_attached() and "check_hover" in attached_to:
|
||||||
|
attached_to.check_hover()
|
||||||
|
|
||||||
func _on_area_enter(card: Area2D):
|
func _on_area_enter(card: Area2D):
|
||||||
print(card)
|
|
||||||
if card is Card:
|
if card is Card:
|
||||||
if hovering_cards == []:
|
if hovering_cards == []:
|
||||||
hovering_cards = [card]
|
hovering_cards = [card]
|
||||||
card_stick_tween = get_tree().create_tween()
|
card_stick_tween = get_tree().create_tween()
|
||||||
card_stick_tween.set_ease(Tween.EASE_IN_OUT)
|
card_stick_tween.set_ease(Tween.EASE_IN_OUT)
|
||||||
card_stick_tween.tween_property(self, "hover_pos_shift", 0.3, 0.3)
|
card_stick_tween.tween_property(self, "hover_pos_shift", 0.3, 0.1)
|
||||||
else:
|
else:
|
||||||
hovering_cards.append(card)
|
hovering_cards.append(card)
|
||||||
|
elif card is StickyNote and is_sticky_note_in_panel() and not is_dragged:
|
||||||
|
attached_to.create_gap()
|
||||||
|
|
||||||
func _on_area_exit(card: Area2D):
|
func _on_area_exit(card: Area2D):
|
||||||
if hovering_cards.has(card):
|
if hovering_cards.has(card):
|
||||||
|
|
@ -131,17 +137,20 @@ func _on_area_exit(card: Area2D):
|
||||||
if hovering_cards == []:
|
if hovering_cards == []:
|
||||||
hover_pos_shift = 0
|
hover_pos_shift = 0
|
||||||
$Content.position = Vector2.ZERO
|
$Content.position = Vector2.ZERO
|
||||||
|
elif card is StickyNote and is_sticky_note_in_panel():
|
||||||
|
attached_to.collapse_gap()
|
||||||
|
|
||||||
func _on_input_event(viewport, event, shape_idx):
|
func _on_input_event(viewport, event, shape_idx):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == MOUSE_BUTTON_LEFT or event.button_index == MOUSE_BUTTON_RIGHT:
|
if (event.button_index == MOUSE_BUTTON_LEFT and event.pressed) or event.button_index == MOUSE_BUTTON_RIGHT:
|
||||||
if "handle_mouse_button" in owner:
|
if "handle_hover" in current_handle:
|
||||||
mouse_diff = get_viewport().get_mouse_position()
|
mouse_diff = get_viewport().get_mouse_position()
|
||||||
initial_drag_position = global_position
|
initial_drag_position = global_position
|
||||||
owner.handle_mouse_button(event, self)
|
current_handle.handle_mouse_button(event, self)
|
||||||
|
|
||||||
func _move_sticky_note():
|
func _move_sticky_note():
|
||||||
if is_dragged:
|
if is_dragged:
|
||||||
|
var old_position = position
|
||||||
position = initial_drag_position + get_viewport().get_mouse_position() - mouse_diff
|
position = initial_drag_position + get_viewport().get_mouse_position() - mouse_diff
|
||||||
|
|
||||||
if hovering_cards != []:
|
if hovering_cards != []:
|
||||||
|
|
@ -154,8 +163,10 @@ func _move_sticky_note():
|
||||||
$Content.position = (closest.sticky_note_anchor.global_position - global_position) * hover_pos_shift
|
$Content.position = (closest.sticky_note_anchor.global_position - global_position) * hover_pos_shift
|
||||||
|
|
||||||
func is_sticky_note_attached() -> bool:
|
func is_sticky_note_attached() -> bool:
|
||||||
# there is probably a nicer way to do this
|
return attached_to is Card
|
||||||
return self.get_parent() is Card
|
|
||||||
|
func is_sticky_note_in_panel() -> bool:
|
||||||
|
return attached_to is StickyNotePanel
|
||||||
|
|
||||||
func tween_transform_to(target: Transform2D):
|
func tween_transform_to(target: Transform2D):
|
||||||
var transform_tween: Tween = create_tween()
|
var transform_tween: Tween = create_tween()
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,33 @@
|
||||||
radius = 110.0
|
radius = 110.0
|
||||||
height = 336.0
|
height = 336.0
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_8bs16"]
|
||||||
|
script/source = "extends Node2D
|
||||||
|
|
||||||
|
@onready var particles = $BackgroundSprite/GPUParticles2D
|
||||||
|
@onready var initial_position = position
|
||||||
|
var noise_position = randf()
|
||||||
|
var noise: Noise = FastNoiseLite.new()
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
|
||||||
|
if not State.reduce_motion:
|
||||||
|
|
||||||
|
noise_position += delta * 10
|
||||||
|
|
||||||
|
var random_position = Vector2(noise.get_noise_1d(noise_position*2), noise.get_noise_1d(-noise_position))
|
||||||
|
|
||||||
|
random_position = random_position.normalized() * pow(random_position.length()*2, 3) * 5
|
||||||
|
|
||||||
|
position = initial_position - random_position
|
||||||
|
|
||||||
|
rotation = noise.get_noise_1d(noise_position*10) * random_position.length() * 0.01
|
||||||
|
|
||||||
|
particles.position = random_position
|
||||||
|
|
||||||
|
else: position = initial_position
|
||||||
|
"
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ykk13"]
|
||||||
atlas = ExtResource("2_buevv")
|
atlas = ExtResource("2_buevv")
|
||||||
region = Rect2(0, 0, 600, 440)
|
region = Rect2(0, 0, 600, 440)
|
||||||
|
|
@ -53,33 +80,6 @@ animations = [{
|
||||||
"speed": 5.0
|
"speed": 5.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_8bs16"]
|
|
||||||
script/source = "extends AnimatedSprite2D
|
|
||||||
|
|
||||||
@onready var particles = $GPUParticles2D
|
|
||||||
@onready var initial_position = position
|
|
||||||
var noise_position = randf()
|
|
||||||
var noise: Noise = FastNoiseLite.new()
|
|
||||||
|
|
||||||
func _process(delta):
|
|
||||||
|
|
||||||
if not State.reduce_motion:
|
|
||||||
|
|
||||||
noise_position += delta * 10
|
|
||||||
|
|
||||||
var random_position = Vector2(noise.get_noise_1d(noise_position*2), noise.get_noise_1d(-noise_position))
|
|
||||||
|
|
||||||
random_position = random_position.normalized() * pow(random_position.length()*2, 3) * 5
|
|
||||||
|
|
||||||
position = initial_position - random_position
|
|
||||||
|
|
||||||
rotation = noise.get_noise_1d(noise_position*10) * random_position.length() * 0.01
|
|
||||||
|
|
||||||
particles.position = random_position
|
|
||||||
|
|
||||||
else: position = initial_position
|
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="Gradient" id="Gradient_v70nd"]
|
[sub_resource type="Gradient" id="Gradient_v70nd"]
|
||||||
interpolation_mode = 2
|
interpolation_mode = 2
|
||||||
offsets = PackedFloat32Array(0, 0.0529197, 0.191606, 1)
|
offsets = PackedFloat32Array(0, 0.0529197, 0.191606, 1)
|
||||||
|
|
@ -123,14 +123,14 @@ turbulence_noise_strength = 0.1
|
||||||
script/source = "extends GPUParticles2D
|
script/source = "extends GPUParticles2D
|
||||||
|
|
||||||
func _process(_delta):
|
func _process(_delta):
|
||||||
self.visible = !State.reduce_motion
|
self.visible = !State.reduce_motion
|
||||||
"
|
"
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_tgc0b"]
|
[sub_resource type="GDScript" id="GDScript_tgc0b"]
|
||||||
script/source = "extends Sprite2D
|
script/source = "extends Sprite2D
|
||||||
|
|
||||||
func _process(_delta):
|
func _process(_delta):
|
||||||
self.visible = State.reduce_motion
|
self.visible = State.reduce_motion
|
||||||
"
|
"
|
||||||
|
|
||||||
[node name="card" type="Area2D"]
|
[node name="card" type="Area2D"]
|
||||||
|
|
@ -142,14 +142,17 @@ position = Vector2(-0.0713516, 0.997451)
|
||||||
rotation = 1.5708
|
rotation = 1.5708
|
||||||
shape = SubResource("CapsuleShape2D_foovg")
|
shape = SubResource("CapsuleShape2D_foovg")
|
||||||
|
|
||||||
[node name="BackgroundSprite" type="AnimatedSprite2D" parent="."]
|
[node name="Visual" type="Node2D" parent="."]
|
||||||
clip_children = 2
|
|
||||||
scale = Vector2(0.6, 0.6)
|
scale = Vector2(0.6, 0.6)
|
||||||
sprite_frames = SubResource("SpriteFrames_ckivt")
|
|
||||||
frame = 1
|
|
||||||
script = SubResource("GDScript_8bs16")
|
script = SubResource("GDScript_8bs16")
|
||||||
|
|
||||||
[node name="GPUParticles2D" type="GPUParticles2D" parent="BackgroundSprite"]
|
[node name="BackgroundSprite" type="AnimatedSprite2D" parent="Visual"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
clip_children = 2
|
||||||
|
sprite_frames = SubResource("SpriteFrames_ckivt")
|
||||||
|
frame = 1
|
||||||
|
|
||||||
|
[node name="GPUParticles2D" type="GPUParticles2D" parent="Visual/BackgroundSprite"]
|
||||||
amount = 500
|
amount = 500
|
||||||
process_material = SubResource("ParticleProcessMaterial_by44l")
|
process_material = SubResource("ParticleProcessMaterial_by44l")
|
||||||
texture = ExtResource("3_8wu8j")
|
texture = ExtResource("3_8wu8j")
|
||||||
|
|
@ -160,12 +163,17 @@ randomness = 0.14
|
||||||
local_coords = true
|
local_coords = true
|
||||||
script = SubResource("GDScript_vjwk7")
|
script = SubResource("GDScript_vjwk7")
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="BackgroundSprite"]
|
[node name="Sprite2D" type="Sprite2D" parent="Visual/BackgroundSprite"]
|
||||||
visible = false
|
visible = false
|
||||||
scale = Vector2(0.4, 0.4)
|
scale = Vector2(0.4, 0.4)
|
||||||
texture = ExtResource("4_jam8u")
|
texture = ExtResource("4_jam8u")
|
||||||
script = SubResource("GDScript_tgc0b")
|
script = SubResource("GDScript_tgc0b")
|
||||||
|
|
||||||
|
[node name="StickyNoteAncor" type="Node2D" parent="Visual/BackgroundSprite"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2(-109.413, 100.642)
|
||||||
|
scale = Vector2(1.66667, 1.66667)
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="."]
|
[node name="Label" type="Label" parent="."]
|
||||||
anchors_preset = 8
|
anchors_preset = 8
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
|
|
@ -181,6 +189,3 @@ grow_vertical = 2
|
||||||
theme = ExtResource("3_mi4ah")
|
theme = ExtResource("3_mi4ah")
|
||||||
theme_type_variation = &"card_text"
|
theme_type_variation = &"card_text"
|
||||||
autowrap_mode = 3
|
autowrap_mode = 3
|
||||||
|
|
||||||
[node name="sticky note anchor" type="Node2D" parent="."]
|
|
||||||
position = Vector2(-65.6478, 60.3852)
|
|
||||||
|
|
|
||||||
|
|
@ -82,9 +82,10 @@ func fill_card_slots(id: int):
|
||||||
|
|
||||||
for i in range(new_cards.size()):
|
for i in range(new_cards.size()):
|
||||||
$cards.get_child(i).remove_child($cards.get_child(i).get_child(1))
|
$cards.get_child(i).remove_child($cards.get_child(i).get_child(1))
|
||||||
var new_card = new_cards[i]
|
var new_card:Card = new_cards[i]
|
||||||
new_card.reparent($cards.get_child(i), false)
|
new_card.reparent($cards.get_child(i), false)
|
||||||
new_card.owner = self
|
new_card.owner = self
|
||||||
|
|
||||||
new_card.connect("mouse_entered", Callable(self, "get_highlight"))
|
new_card.connect("mouse_entered", Callable(self, "get_highlight"))
|
||||||
options.append(new_card)
|
options.append(new_card)
|
||||||
anim_players.append($cards.get_child(i).get_child(0))
|
anim_players.append($cards.get_child(i).get_child(0))
|
||||||
|
|
@ -95,6 +96,9 @@ func fill_post_slots():
|
||||||
for card in output:
|
for card in output:
|
||||||
sticky_notes.append_array(card.own_sticky_notes)
|
sticky_notes.append_array(card.own_sticky_notes)
|
||||||
|
|
||||||
|
for note:StickyNote in sticky_notes:
|
||||||
|
note.current_handle = self
|
||||||
|
|
||||||
sticky_notes.shuffle()
|
sticky_notes.shuffle()
|
||||||
options = []
|
options = []
|
||||||
for ancor in $sticky_notes.get_children():
|
for ancor in $sticky_notes.get_children():
|
||||||
|
|
@ -212,7 +216,7 @@ func handle_hover(new_highlight):
|
||||||
if not _input_locked:
|
if not _input_locked:
|
||||||
curr_selection_id = options.find(new_highlight)
|
curr_selection_id = options.find(new_highlight)
|
||||||
|
|
||||||
func handle_mouse_button(new_selection: Node, button_event: InputEventMouseButton):
|
func handle_mouse_button(button_event: InputEventMouseButton, new_selection: Node):
|
||||||
if not _input_locked:
|
if not _input_locked:
|
||||||
if button_event.button_index == MOUSE_BUTTON_LEFT and button_event.pressed:
|
if button_event.button_index == MOUSE_BUTTON_LEFT and button_event.pressed:
|
||||||
pick(options.find(new_selection))
|
pick(options.find(new_selection))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue