42 lines
1.2 KiB
GDScript
42 lines
1.2 KiB
GDScript
@icon('CursorDual.svg')
|
|
class_name CursorDual
|
|
extends Sprite2D
|
|
|
|
# TODO: instead of setting the target tilemap manually,
|
|
# just add the CursorDual as a child of the target tilemap
|
|
@export var tilemap_dual: TileMapDual = null
|
|
|
|
var cell: Vector2i
|
|
var tile_size: Vector2
|
|
var sprite_size: Vector2
|
|
var terrain := 1
|
|
|
|
|
|
func _ready() -> void:
|
|
if tilemap_dual != null:
|
|
tile_size = tilemap_dual.tile_set.tile_size
|
|
sprite_size = self.texture.get_size()
|
|
scale = Vector2(tile_size.y, tile_size.y) / sprite_size
|
|
self.set_scale(scale)
|
|
|
|
|
|
func _process(_delta: float) -> void:
|
|
if tilemap_dual == null:
|
|
return
|
|
cell = tilemap_dual.local_to_map(tilemap_dual.get_local_mouse_position())
|
|
global_position = tilemap_dual.to_global(tilemap_dual.map_to_local(cell))
|
|
# Clicking the 1 key activates the first terrain
|
|
if Input.is_action_pressed("quick_action_1"):
|
|
terrain = 1
|
|
# Clicking the 2 key activates the second terrain
|
|
if Input.is_action_pressed("quick_action_2"):
|
|
terrain = 2
|
|
# Clicking the 0 key activates the background terrain
|
|
if Input.is_action_pressed("quick_action_0"):
|
|
terrain = 0
|
|
|
|
if Input.is_action_pressed("left_click"):
|
|
tilemap_dual.draw_cell(cell, terrain)
|
|
elif Input.is_action_pressed("right_click"):
|
|
tilemap_dual.draw_cell(cell, 0)
|