diff options
| author | dam <dam@gudinoff> | 2022-01-09 01:25:55 +0000 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2022-01-09 01:25:55 +0000 |
| commit | 5ba40857cdc770841d216a27e2a9e8bb3ebf3186 (patch) | |
| tree | 2212f9685067270285265c81208fd5122a760d5d /logic/database.gd | |
| parent | 431f042390ad36297a5ec986772c77da23b7fb67 (diff) | |
| download | surgery-log-5ba40857cdc770841d216a27e2a9e8bb3ebf3186.tar.zst surgery-log-5ba40857cdc770841d216a27e2a9e8bb3ebf3186.zip | |
Split touch logic from database. Prototype of popup with list of options.
Diffstat (limited to 'logic/database.gd')
| -rw-r--r-- | logic/database.gd | 67 |
1 files changed, 4 insertions, 63 deletions
diff --git a/logic/database.gd b/logic/database.gd index 044681f..de978b7 100644 --- a/logic/database.gd +++ b/logic/database.gd @@ -1,21 +1,16 @@ -extends ItemList +extends TouchItemList class_name Database const DATABASE_FILE_PATH: String = "user://database.csv" -const POINTER_VELOCITY_DECAYING_FACTOR: float = 2.5 var db: Array var selected_idx: int var staged_idx: int -var is_pointer_dragging := false -var pointer_drag_velocity := 0.0 onready var stage := get_node("/root/main/stage") as Stage onready var delete_button := get_node("actions/delete") as Button onready var edit_button := get_node("actions/edit") as Button onready var add_button := get_node("actions/add") as Button -onready var v_scroll_bar := get_v_scroll() as ScrollBar -onready var drag_sensor := get_node("drag_sensor") as PointerInputSensor func _init(): @@ -36,24 +31,13 @@ func _ready(): stage.connect("save", self, "save_stage") stage.connect("discard", self, "discard_stage") - drag_sensor.connect("on_press", self, "pointer_input_handler") - drag_sensor.connect("on_drag", self, "pointer_input_handler") - drag_sensor.connect("on_end_drag", self, "pointer_input_handler") - drag_sensor.connect("on_click", self, "pointer_input_handler") - for it in db: self.add_item(get_entry_view(it)) -func _process(delta: float): - # Apply drag movement inertia. - if is_pointer_dragging == false && abs(pointer_drag_velocity) > 0.5: - pointer_drag_velocity *= clamp((1.0 - POINTER_VELOCITY_DECAYING_FACTOR * delta), 0.0, 1.0) - v_scroll_bar.value -= pointer_drag_velocity * delta - - func _notification(what: int): - # @DAM Yet to be polished. + # @DAM This code should be moved into the main.gd which should check which node was currently + # active and above, and send the signal there. if visible == false || has_focus() == false: return @@ -77,10 +61,6 @@ func clear_selection(): unselect_all() -func scroll_to_selected(): - v_scroll_bar.value = float(selected_idx)/float(db.size()) * v_scroll_bar.max_value - (v_scroll_bar.page * 0.5) - - func delete_action(): if selected_idx < 0: return @@ -125,7 +105,7 @@ func save_stage(entry: Dictionary): select(next_selected_idx) emit_signal("item_selected", next_selected_idx) # Calling "select" does not trigger the "item_selected" signal. set_item_text(selected_idx, get_entry_view(db[selected_idx])) - call_deferred("scroll_to_selected") + ensure_current_is_visible() store_database() @@ -203,42 +183,3 @@ func fake_database(save_changes: bool = false): store_database() -func pointer_input_handler(pointer: PointerInputSensor.PointerInputData): - match pointer.action: - PointerInputSensor.PointerInputAction.ON_PRESS: - is_pointer_dragging = true - - PointerInputSensor.PointerInputAction.ON_DRAG: - is_pointer_dragging = true - pointer_drag_velocity = pointer.velocity.y - v_scroll_bar.value -= pointer.relative_position.y - - PointerInputSensor.PointerInputAction.ON_END_DRAG: - is_pointer_dragging = false - - PointerInputSensor.PointerInputAction.ON_CLICK: - var target := self - var position := target.get_global_mouse_position() - target.rect_global_position - - var event_touch := InputEventScreenTouch.new() - event_touch.index = 0 - event_touch.position = position - - var event_mouse := InputEventMouseButton.new() - event_mouse.button_index = BUTTON_LEFT - event_mouse.button_mask = BUTTON_MASK_LEFT - event_mouse.position = position - - event_mouse.pressed = true - event_touch.pressed = true - target._gui_input(event_mouse) - target._gui_input(event_touch) - - target.grab_focus() - - event_mouse.pressed = false - event_touch.pressed = false - target._gui_input(event_mouse) - target._gui_input(event_touch) - - |
