TowerGameProto/scripts/GameManager.gd

45 lines
1.5 KiB
GDScript3
Raw Normal View History

2025-04-16 22:56:14 +01:00
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