Add pick block

This commit is contained in:
Ategon 2024-09-23 19:59:35 -04:00
parent 72b0bf1d1e
commit 974efa76cf
4 changed files with 35 additions and 4 deletions

View file

@ -230,6 +230,19 @@ func kill_citizen():
return false return false
func pick_block():
if Persister.get_value("win") or Persister.get_value("lose"):
return
var tile = local_to_map(get_global_mouse_position())
if building_data.has(tile):
var data = Data.data.buildings[building_data[tile].key]
if (not data.cost.has("wood") or int(data.cost.wood) <= Persister.get_value("wood")) and (not data.cost.has("stone") or int(data.cost.stone) <= Persister.get_value("stone")):
Persister.persist_data("building_mode", true)
Persister.persist_data("building_key", building_data[tile].key)
func place_building(): func place_building():
if Persister.get_value("win") or Persister.get_value("lose"): if Persister.get_value("win") or Persister.get_value("lose"):
return return

View file

@ -8,6 +8,14 @@ var zoom_speed = 0.1
# Variables for panning # Variables for panning
var is_panning = false var is_panning = false
var last_mouse_position = Vector2() var last_mouse_position = Vector2()
var pan_speed = 1000
@onready var camera_target = position
func _process(delta: float) -> void:
position = position.move_toward(camera_target, delta * pan_speed)
func _input(event): func _input(event):
if event is InputEventMouseButton: if event is InputEventMouseButton:
@ -26,12 +34,13 @@ func _input(event):
if event.button_index == MOUSE_BUTTON_RIGHT: if event.button_index == MOUSE_BUTTON_RIGHT:
if event.pressed: if event.pressed:
is_panning = true is_panning = true
last_mouse_position = get_global_mouse_position() last_mouse_position = Cursor.mouse_control.position
else: else:
is_panning = false is_panning = false
# Handle panning movement # Handle panning movement
if is_panning and event is InputEventMouseMotion: if is_panning and event is InputEventMouseMotion:
var mouse_movement = last_mouse_position - get_global_mouse_position() var mouse_movement = last_mouse_position - Cursor.mouse_control.position
global_position += mouse_movement * zoom.x # Adjust movement based on zoom level camera_target += mouse_movement / zoom.x
last_mouse_position = get_global_mouse_position() #global_position += mouse_movement * zoom.x # Adjust movement based on zoom level
last_mouse_position = Cursor.mouse_control.position

View file

@ -34,6 +34,10 @@ func _process(delta: float) -> void:
if Persister.get_value("population") <= 0: if Persister.get_value("population") <= 0:
Persister.persist_data("lose", true) Persister.persist_data("lose", true)
if Input.is_action_just_pressed("mclick"):
for build_level in building_levels:
build_level.pick_block()
if Input.is_action_just_released("lclick"): if Input.is_action_just_released("lclick"):
if Persister.get_value("drag_mode") and Persister.get_value("building_mode"): if Persister.get_value("drag_mode") and Persister.get_value("building_mode"):
for build_level in building_levels: for build_level in building_levels:

View file

@ -51,6 +51,11 @@ restart={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
] ]
} }
mclick={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(179, 8),"global_position":Vector2(188, 54),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
[rendering] [rendering]