45 lines
1.5 KiB
GDScript3
45 lines
1.5 KiB
GDScript3
|
extends Node2D
|
||
|
class_name GameManager
|
||
|
|
||
|
enum MouseState { SELECT, BUILD, BUILD_CONNECTION_FIRST, BUILD_CONNECTION_SECOND }
|
||
|
|
||
|
var mouse_state: MouseState
|
||
|
var building_object: Building = null
|
||
|
|
||
|
func build_object(scene: PackedScene):
|
||
|
mouse_state = MouseState.BUILD
|
||
|
building_object = scene.instantiate()
|
||
|
$TileMap.add_child(building_object)
|
||
|
building_object.start_placement()
|
||
|
building_object.connect("selected", on_building_selected)
|
||
|
building_object.connect("task_available", $CitizenManager.add_task)
|
||
|
|
||
|
func build_two_point_object(scene: PackedScene):
|
||
|
build_object(scene)
|
||
|
mouse_state = MouseState.BUILD_CONNECTION_FIRST
|
||
|
|
||
|
func on_building_selected(building: Machine) -> void:
|
||
|
if mouse_state == MouseState.BUILD_CONNECTION_FIRST:
|
||
|
building_object.set_start(building)
|
||
|
mouse_state = MouseState.BUILD_CONNECTION_SECOND
|
||
|
elif mouse_state == MouseState.BUILD_CONNECTION_SECOND:
|
||
|
building_object.set_end(building)
|
||
|
building_object.build()
|
||
|
mouse_state = MouseState.SELECT
|
||
|
|
||
|
func _input(event: InputEvent) -> void:
|
||
|
if event is InputEventMouse:
|
||
|
if mouse_state == MouseState.BUILD:
|
||
|
building_object.position = get_global_mouse_position()
|
||
|
|
||
|
if event is InputEventMouseButton:
|
||
|
if mouse_state == MouseState.BUILD:
|
||
|
building_object.position = get_global_mouse_position()
|
||
|
building_object.place()
|
||
|
mouse_state = MouseState.SELECT
|
||
|
if mouse_state == MouseState.BUILD_CONNECTION_SECOND:
|
||
|
building_object.add_point(get_global_mouse_position())
|
||
|
#if mouse_state == MouseState.BUILD_CONNECTION_FIRST
|
||
|
|
||
|
|