This repository has been archived on 2020-09-30. You can view files and clone it, but cannot push or open issues or pull requests.
odyssey-old/Scenes/MapEditor.gd

59 lines
1.4 KiB
GDScript

extends Control
onready var map_menu = $menu/menubar/MapMenu.get_popup()
onready var map_node = $map
const MAP_SCALE_MAX = 8
const MAP_SCALE_MIN = 0.25
func _ready():
pass
# Prevent input handler from running when other dialogs/actions are focused
var input_lock = false
# Drag variables
var dragging = false
var view_origin = Vector2.ZERO
var mouse_origin = Vector2.ZERO
func _input(ev: InputEvent):
if input_lock:
return
if ev is InputEventMouseMotion:
if dragging:
map_node.position = view_origin - (mouse_origin - ev.global_position)
else:
# Map cursor location to grid
var mouseOffset = ev.global_position - map_node.global_position
if ev is InputEventMouseButton:
var mouse = ev as InputEventMouseButton
if mouse.pressed:
match ev.button_index:
BUTTON_WHEEL_UP:
# Zoom in
if map_node.scale.x < MAP_SCALE_MAX:
if map_node.scale.x < 1:
map_node.scale *= 2
else:
map_node.scale += Vector2.ONE
BUTTON_WHEEL_DOWN:
# Zoom out
if map_node.scale.x > MAP_SCALE_MIN:
if map_node.scale.x <= 1:
map_node.scale /= 2
else:
map_node.scale -= Vector2.ONE
BUTTON_MIDDLE:
view_origin = map_node.position
mouse_origin = ev.global_position
dragging = true
else:
match ev.button_index:
BUTTON_MIDDLE:
dragging = false
map_node.position = view_origin - (mouse_origin - ev.global_position)