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