aboutsummaryrefslogtreecommitdiff
path: root/client/menu/auto_setup/scroll_container_custom.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/menu/auto_setup/scroll_container_custom.gd')
-rw-r--r--client/menu/auto_setup/scroll_container_custom.gd45
1 files changed, 45 insertions, 0 deletions
diff --git a/client/menu/auto_setup/scroll_container_custom.gd b/client/menu/auto_setup/scroll_container_custom.gd
new file mode 100644
index 00000000..a456f644
--- /dev/null
+++ b/client/menu/auto_setup/scroll_container_custom.gd
@@ -0,0 +1,45 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2024 tpart
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+extends ScrollContainer
+class_name ScrollContainerCustom
+
+# Adds support for scrolling with joypad and touch
+
+const SCROLL_SPEED := 1000.
+var velocity := 0.
+
+@export var auto_scroll_to_bottom := false
+
+func _init():
+ follow_focus = true
+
+func _ready():
+ if auto_scroll_to_bottom:
+ call_deferred("scroll_to_bottom")
+
+func scroll_to_bottom():
+ set_deferred("scroll_vertical", get_v_scroll_bar().max_value)
+
+func _process(delta):
+ velocity = G.interpolate(velocity, 0., delta * 5.)
+ velocity = 0. if abs(velocity) < .001 else velocity
+ if Input.get_axis("scroll_up", "scroll_down") != 0.:
+ velocity = Input.get_axis("scroll_up", "scroll_down")
+ set_deferred("scroll_vertical", scroll_vertical + velocity * delta * SCROLL_SPEED)
+
+func _input(event):
+ if event is InputEventScreenDrag:
+ velocity = -(scroll_vertical - (scroll_vertical - event.relative.y)) * .1