diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-09-08 22:35:06 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-09-08 22:35:06 +0200 |
commit | 4597189f157834c80f56b12b701fd2b2a15c2798 (patch) | |
tree | f522e9a58ec756dc27306781da99e828b195c549 /Game/States/Build/StateBuild.gd | |
parent | 7d7d845e76f78a87cf87c9464d700e52cd88ce6f (diff) |
next commit
Diffstat (limited to 'Game/States/Build/StateBuild.gd')
-rw-r--r-- | Game/States/Build/StateBuild.gd | 50 |
1 files changed, 50 insertions, 0 deletions
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") |