From 4597189f157834c80f56b12b701fd2b2a15c2798 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 8 Sep 2024 22:35:06 +0200 Subject: next commit --- Game/States/Build/StateBuild.gd | 50 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Game/States/Build/StateBuild.gd (limited to 'Game/States/Build/StateBuild.gd') diff --git a/Game/States/Build/StateBuild.gd b/Game/States/Build/StateBuild.gd new file mode 100644 index 0000000..b92020b --- /dev/null +++ b/Game/States/Build/StateBuild.gd @@ -0,0 +1,50 @@ +class_name StateBuild +extends State + + +static var current_builder_element: BuilderElement + + +func _state_enter(): + %BuildGrid.visible = true + var builder_element_scene = preload("res://Game/States/Build/BuilderElement.tscn") + var builder_element = builder_element_scene.instantiate() + + var tower = preload("res://Towers/Tower.tscn").instantiate() as Tower + tower.attack_range = [ + Client.stage.map.tile_set.tile_size.x * 2, + Client.stage.map.tile_set.tile_size.x * 3, + Client.stage.map.tile_set.tile_size.x * 4, + ].pick_random() + + builder_element.element = tower + get_tree().current_scene.add_child(builder_element) + current_builder_element = builder_element + + +func _state_exit(): + %BuildGrid.visible = false + + +func _state_input(event: InputEvent): + if event.is_action_pressed("builder_tower_select"): + get_viewport().set_input_as_handled() + + if current_builder_element.can_build(): + var placed_tower = current_builder_element.element.duplicate() as Tower + Client.place_tower(placed_tower, current_builder_element.global_position) + + placed_tower.selected.connect(func(): + Client.stage.hud.tower.text = "Range: %s - Power: %s - Speed: %s" % [ + placed_tower.attack_range, placed_tower.attack_power, placed_tower.attack_speed + ] + ) + + if not Input.is_action_pressed("builder_tower_place_keep"): + current_builder_element.queue_free() + set_state("StateDefault") + + if event.is_action_pressed("builder_cancel") or event.is_action_pressed("build_mode_start"): + get_viewport().set_input_as_handled() + current_builder_element.queue_free() + set_state("StateDefault") -- cgit v1.2.3