diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-05-12 12:38:10 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-05-12 12:38:10 +0200 |
commit | f5593483ba906b66779cb4466a7f2c5b2ed004a8 (patch) | |
tree | 361c71e6318d1e83f9afcaa40aaddac5c190b240 /Start.gd | |
parent | 7f3caaf1a254880b86bb4706f36505514c0a24d4 (diff) |
screen drag + visible object collision shapes
Diffstat (limited to 'Start.gd')
-rw-r--r-- | Start.gd | 35 |
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) |