summaryrefslogtreecommitdiff
path: root/Start.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-05-12 12:38:10 +0200
committerDaniel Weipert <git@mail.dweipert.de>2024-05-12 12:38:10 +0200
commitf5593483ba906b66779cb4466a7f2c5b2ed004a8 (patch)
tree361c71e6318d1e83f9afcaa40aaddac5c190b240 /Start.gd
parent7f3caaf1a254880b86bb4706f36505514c0a24d4 (diff)
screen drag + visible object collision shapes
Diffstat (limited to 'Start.gd')
-rw-r--r--Start.gd35
1 files changed, 35 insertions, 0 deletions
diff --git a/Start.gd b/Start.gd
new file mode 100644
index 0000000..e7b0896
--- /dev/null
+++ b/Start.gd
@@ -0,0 +1,35 @@
+extends Node2D
+
+
+var drag_anchor = Vector2(0,0)
+
+# todo: set camera base limit and adjust based on zoom
+
+
+func _input(event):
+ if event.is_action_pressed("ui_cancel"):
+ if %Tray.is_open:
+ %Tray.close()
+ else:
+ %Tray.open()
+
+ if event.is_action_pressed("drag_screen"):
+ drag_anchor = get_global_mouse_position()
+
+ if event is InputEventMouseButton:
+ if event.is_pressed():
+ if event.button_index == MOUSE_BUTTON_WHEEL_UP:
+ var zoom = min(%Viewport/Camera2D.zoom.x + 0.1, 2)
+ %Viewport/Camera2D.zoom = Vector2(zoom, zoom)
+ if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
+ var zoom = max(%Viewport/Camera2D.zoom.x - 0.1, 1)
+ %Viewport/Camera2D.zoom = Vector2(zoom, zoom)
+
+
+func _process(_delta):
+ if Input.is_action_pressed("drag_screen"):
+ %Viewport.position += drag_anchor - get_global_mouse_position()
+ %Viewport.position.x = min(%Viewport.position.x, %Viewport/Camera2D.limit_right - get_viewport_rect().size.x/2)
+ %Viewport.position.x = max(%Viewport.position.x, %Viewport/Camera2D.limit_left + get_viewport_rect().size.x/2)
+ %Viewport.position.y = min(%Viewport.position.y, %Viewport/Camera2D.limit_bottom - get_viewport_rect().size.y/2)
+ %Viewport.position.y = max(%Viewport.position.y, %Viewport/Camera2D.limit_top + get_viewport_rect().size.y/2)