Compare commits
No commits in common. "2f132d74bf9c850ec04f346618aba2785c492aa9" and "bbff19c6cee0b703684eeeaf78db4e611ae4e77b" have entirely different histories.
2f132d74bf
...
bbff19c6ce
7 changed files with 169 additions and 191 deletions
|
|
@ -3,7 +3,7 @@ extends Node
|
||||||
|
|
||||||
#Emitter : TowerButton.gd
|
#Emitter : TowerButton.gd
|
||||||
#Subscriber : World.gd
|
#Subscriber : World.gd
|
||||||
signal tower_selected(tower : PackedScene)
|
signal tower_selected(tower : PackedScene, tower_button : TowerButton)
|
||||||
|
|
||||||
|
|
||||||
#Emitter : World.gd
|
#Emitter : World.gd
|
||||||
|
|
@ -53,11 +53,3 @@ signal money_spent(_value : int)
|
||||||
#Emitter : spawner.gd
|
#Emitter : spawner.gd
|
||||||
#Subscriber : cube.gd
|
#Subscriber : cube.gd
|
||||||
signal player_has_won()
|
signal player_has_won()
|
||||||
|
|
||||||
#Emitter : PlayerManager.gd
|
|
||||||
#Subscriber : game_menu.gd
|
|
||||||
signal open_shop()
|
|
||||||
|
|
||||||
#Emitter : PlayerManager.gd
|
|
||||||
#Subscriber : game_menu.gd
|
|
||||||
signal close_shop()
|
|
||||||
|
|
|
||||||
156
Levels/world.gd
156
Levels/world.gd
|
|
@ -1,6 +1,162 @@
|
||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
|
#TODO Get rid of tower_blueprint, remake player controler
|
||||||
|
@onready var tower_blueprint = preload("res://Towers/tower.tscn")
|
||||||
|
|
||||||
|
|
||||||
|
@onready var selected_tower : Tower
|
||||||
|
@onready var selected_tower_button : TowerButton = $CanvasLayer/GameMenu/VBoxContainer/PierreButton
|
||||||
|
|
||||||
|
@onready var cam : Camera3D = $Camera3D
|
||||||
|
@onready var selector : Node3D = $Selector
|
||||||
|
@onready var the_cube : TheCube = %TheCube
|
||||||
|
|
||||||
|
var tower_count : int = 0:
|
||||||
|
set(value):
|
||||||
|
tower_count = value
|
||||||
|
EventBus.tower_count_changed.emit(tower_count)
|
||||||
|
|
||||||
|
|
||||||
|
var team_in_action : Array[Tower]:
|
||||||
|
set(value):
|
||||||
|
team_in_action = value
|
||||||
|
EventBus.team_in_action_changed.emit(team_in_action)
|
||||||
|
|
||||||
|
|
||||||
|
var team_in_rest : Array[Tower]
|
||||||
|
var target_tower : Tower
|
||||||
|
var in_build_menu : bool = false
|
||||||
|
|
||||||
var selected_collider : CollisionObject3D
|
var selected_collider : CollisionObject3D
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
$Spawner.spawn_next_wave()
|
$Spawner.spawn_next_wave()
|
||||||
|
$CanvasLayer/GameMenu.visible = in_build_menu
|
||||||
|
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
handle_player_controls()
|
||||||
|
if Input.is_action_just_pressed("build"):
|
||||||
|
if not selected_collider:
|
||||||
|
return
|
||||||
|
|
||||||
|
if selected_collider.collision_layer == 1:
|
||||||
|
build_tower(tower_blueprint)
|
||||||
|
if selected_collider is TheCube:
|
||||||
|
open_shop()
|
||||||
|
else:
|
||||||
|
close_shop()
|
||||||
|
|
||||||
|
if Input.is_action_just_pressed("rest"):
|
||||||
|
close_shop()
|
||||||
|
if target_tower:
|
||||||
|
send_to_rest(target_tower)
|
||||||
|
|
||||||
|
|
||||||
|
func handle_player_controls() -> void:
|
||||||
|
var space_state : PhysicsDirectSpaceState3D = get_world_3d().direct_space_state
|
||||||
|
var mouse_pos : Vector2 = get_viewport().get_mouse_position()
|
||||||
|
|
||||||
|
var origin : Vector3 = cam.project_ray_origin(mouse_pos)
|
||||||
|
var end : Vector3 = origin + cam.project_ray_normal(mouse_pos) * 100
|
||||||
|
var ray : PhysicsRayQueryParameters3D = PhysicsRayQueryParameters3D.create(origin, end)
|
||||||
|
ray.collide_with_bodies = true
|
||||||
|
|
||||||
|
var ray_result : Dictionary = space_state.intersect_ray(ray)
|
||||||
|
|
||||||
|
if ray_result.is_empty():
|
||||||
|
selector.visible = false
|
||||||
|
selected_collider = null
|
||||||
|
return
|
||||||
|
|
||||||
|
var collider : CollisionObject3D = ray_result.get("collider")
|
||||||
|
selected_collider = collider
|
||||||
|
|
||||||
|
selector.visible = true
|
||||||
|
selector.global_position = collider.global_position
|
||||||
|
selector.global_position += Vector3(0.0,0.2,0.0)
|
||||||
|
|
||||||
|
if selected_collider is Tower:
|
||||||
|
target_tower = collider
|
||||||
|
else:
|
||||||
|
target_tower = null
|
||||||
|
|
||||||
|
# Refactoriser ce code
|
||||||
|
func build_tower(scene : PackedScene) -> void:
|
||||||
|
if !selector.visible:
|
||||||
|
return
|
||||||
|
|
||||||
|
var temp_tower : Tower = scene.instantiate()
|
||||||
|
|
||||||
|
|
||||||
|
#Move existing tower
|
||||||
|
for tower : Tower in team_in_action:
|
||||||
|
if tower.tower_name == temp_tower.tower_name:
|
||||||
|
move_tower(tower)
|
||||||
|
return
|
||||||
|
|
||||||
|
#Send to action a resting tower
|
||||||
|
for tower : Tower in team_in_rest:
|
||||||
|
if tower.tower_name == temp_tower.tower_name:
|
||||||
|
move_tower(tower)
|
||||||
|
send_to_action(tower)
|
||||||
|
return
|
||||||
|
|
||||||
|
#Build Tower
|
||||||
|
if temp_tower.price < the_cube.money:
|
||||||
|
#Can't build
|
||||||
|
print("Too costly")
|
||||||
|
return
|
||||||
|
else :
|
||||||
|
#Can build
|
||||||
|
EventBus.money_spent.emit(temp_tower.price)
|
||||||
|
temp_tower.tower_button = selected_tower_button
|
||||||
|
tower_count += 1
|
||||||
|
$Towers.add_child(temp_tower)
|
||||||
|
EventBus.tower_builded.emit(temp_tower)
|
||||||
|
selected_tower_button.tower_in_game = temp_tower
|
||||||
|
send_to_action(temp_tower)
|
||||||
|
move_tower(temp_tower)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func move_tower(tower : Tower):
|
||||||
|
tower.global_position = selector.global_position
|
||||||
|
|
||||||
|
|
||||||
|
func send_to_rest(tower : Tower):
|
||||||
|
team_in_action.erase(tower)
|
||||||
|
team_in_rest.append(tower)
|
||||||
|
tower.is_rest = true
|
||||||
|
EventBus.team_in_action_changed.emit(team_in_action)
|
||||||
|
|
||||||
|
|
||||||
|
func send_to_action(tower : Tower):
|
||||||
|
team_in_rest.erase(tower)
|
||||||
|
team_in_action.append(tower)
|
||||||
|
tower.is_rest = false
|
||||||
|
EventBus.team_in_action_changed.emit(team_in_action)
|
||||||
|
|
||||||
|
func open_shop():
|
||||||
|
if in_build_menu:
|
||||||
|
close_shop()
|
||||||
|
return
|
||||||
|
|
||||||
|
in_build_menu = true
|
||||||
|
$CanvasLayer/GameMenu.visible = in_build_menu
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func close_shop():
|
||||||
|
in_build_menu = false
|
||||||
|
$CanvasLayer/GameMenu.visible = in_build_menu
|
||||||
|
|
||||||
|
|
||||||
|
func _on_EventBus_tower_selected(tower : PackedScene, tower_button : TowerButton):
|
||||||
|
tower_blueprint = tower
|
||||||
|
selected_tower_button = tower_button
|
||||||
|
|
||||||
|
|
||||||
|
func _on_cube_icon_pressed() -> void:
|
||||||
|
open_shop()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
[gd_scene load_steps=20 format=3 uid="uid://ky0uewndeuwv"]
|
[gd_scene load_steps=18 format=3 uid="uid://ky0uewndeuwv"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://Levels/world.gd" id="1_fj7yv"]
|
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://Levels/world.gd" id="1_fj7yv"]
|
||||||
[ext_resource type="PackedScene" uid="uid://d1f6m15niwgt" path="res://Tiles/tile.tscn" id="3_aqk2v"]
|
[ext_resource type="PackedScene" uid="uid://d1f6m15niwgt" path="res://Tiles/tile.tscn" id="3_aqk2v"]
|
||||||
[ext_resource type="Script" uid="uid://caf3yamufmhd4" path="res://Scripts/PlayerManager.gd" id="3_ju8gl"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://d17sleiqkdoo2" path="res://Assets/GLB format/selection-a.glb" id="3_tlwt5"]
|
[ext_resource type="PackedScene" uid="uid://d17sleiqkdoo2" path="res://Assets/GLB format/selection-a.glb" id="3_tlwt5"]
|
||||||
[ext_resource type="PackedScene" uid="uid://do7gm1gjhu1t5" path="res://Tiles/road.tscn" id="4_036b0"]
|
[ext_resource type="PackedScene" uid="uid://do7gm1gjhu1t5" path="res://Tiles/road.tscn" id="4_036b0"]
|
||||||
[ext_resource type="Script" uid="uid://tpon511km4al" path="res://spawner.gd" id="5_036b0"]
|
[ext_resource type="Script" uid="uid://tpon511km4al" path="res://spawner.gd" id="5_036b0"]
|
||||||
|
|
@ -36,31 +35,14 @@ adjustment_enabled = true
|
||||||
adjustment_contrast = 1.3
|
adjustment_contrast = 1.3
|
||||||
adjustment_saturation = 1.2
|
adjustment_saturation = 1.2
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_ju8gl"]
|
|
||||||
script/source = "extends Node3D
|
|
||||||
|
|
||||||
class_name TowerList
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
child_entered_tree.connect(_on_child_entered_tree)
|
|
||||||
child_exiting_tree.connect(_on_child_exiting_tree)
|
|
||||||
|
|
||||||
func _on_child_entered_tree(child):
|
|
||||||
EventBus.tower_count_changed.emit(get_children().count())
|
|
||||||
|
|
||||||
func _on_child_exiting_tree(child):
|
|
||||||
EventBus.team_in_action_changed.emit(get_children().count())
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="World" type="Node3D"]
|
[node name="World" type="Node3D"]
|
||||||
script = ExtResource("1_fj7yv")
|
script = ExtResource("1_fj7yv")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(-0.992981, -0.0586822, 0.10269, -0.00234758, 0.877843, 0.478943, -0.118251, 0.47534, -0.871819, 5.87173, 2.81458, -3.88415)
|
transform = Transform3D(-0.992981, -0.0586822, 0.10269, -0.00234758, 0.877843, 0.478943, -0.118251, 0.47534, -0.871819, 5.87173, 2.81458, -3.88415)
|
||||||
|
|
||||||
[node name="PlayerManager" parent="." instance=ExtResource("3_tlwt5")]
|
[node name="Selector" parent="." instance=ExtResource("3_tlwt5")]
|
||||||
visible = false
|
visible = false
|
||||||
script = ExtResource("3_ju8gl")
|
|
||||||
|
|
||||||
[node name="Map" type="Node3D" parent="."]
|
[node name="Map" type="Node3D" parent="."]
|
||||||
|
|
||||||
|
|
@ -216,6 +198,5 @@ transform = Transform3D(-0.0471892, 0, 1.99944, 0, 2, 0, -1.99944, 0, -0.0471892
|
||||||
transform = Transform3D(1.08365, 0, 1.68098, 0, 2, 0, -1.68098, 0, 1.08365, 1.44235, 0, 4.63481)
|
transform = Transform3D(1.08365, 0, 1.68098, 0, 2, 0, -1.68098, 0, 1.08365, 1.44235, 0, 4.63481)
|
||||||
|
|
||||||
[node name="Towers" type="Node3D" parent="."]
|
[node name="Towers" type="Node3D" parent="."]
|
||||||
script = SubResource("GDScript_ju8gl")
|
|
||||||
|
|
||||||
[connection signal="timeout" from="Spawner/SpawnTimer" to="Spawner" method="_on_spawn_timer_timeout"]
|
[connection signal="timeout" from="Spawner/SpawnTimer" to="Spawner" method="_on_spawn_timer_timeout"]
|
||||||
|
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
||||||
extends Node3D
|
|
||||||
|
|
||||||
class_name PlayerManager
|
|
||||||
|
|
||||||
|
|
||||||
#TODO Get rid of tower_blueprint
|
|
||||||
@onready var tower_blueprint = preload("res://Towers/tower.tscn")
|
|
||||||
|
|
||||||
@onready var selected_tower : Tower = null
|
|
||||||
|
|
||||||
@onready var cam : Camera3D = $"../Camera3D"
|
|
||||||
@onready var the_cube : TheCube = %TheCube
|
|
||||||
|
|
||||||
var tower_count : int = 0:
|
|
||||||
set(value):
|
|
||||||
tower_count = value
|
|
||||||
EventBus.tower_count_changed.emit(tower_count)
|
|
||||||
|
|
||||||
|
|
||||||
var team_in_action : Array[Tower]:
|
|
||||||
set(value):
|
|
||||||
team_in_action = value
|
|
||||||
EventBus.team_in_action_changed.emit(team_in_action)
|
|
||||||
|
|
||||||
|
|
||||||
var team_in_rest : Array[Tower]
|
|
||||||
var target_tower : Tower
|
|
||||||
|
|
||||||
var selected_collider : CollisionObject3D
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
|
||||||
handle_player_controls()
|
|
||||||
if Input.is_action_just_pressed("build"):
|
|
||||||
if not selected_collider:
|
|
||||||
return
|
|
||||||
|
|
||||||
if selected_collider.collision_layer == 1:
|
|
||||||
build_tower()
|
|
||||||
if selected_collider is TheCube:
|
|
||||||
EventBus.open_shop.emit()
|
|
||||||
else:
|
|
||||||
EventBus.close_shop.emit()
|
|
||||||
|
|
||||||
if Input.is_action_just_pressed("rest"):
|
|
||||||
EventBus.close_shop.emit()
|
|
||||||
if target_tower:
|
|
||||||
send_to_rest()
|
|
||||||
|
|
||||||
func handle_player_controls() -> void:
|
|
||||||
var space_state : PhysicsDirectSpaceState3D = get_world_3d().direct_space_state
|
|
||||||
var mouse_pos : Vector2 = get_viewport().get_mouse_position()
|
|
||||||
|
|
||||||
var origin : Vector3 = cam.project_ray_origin(mouse_pos)
|
|
||||||
var end : Vector3 = origin + cam.project_ray_normal(mouse_pos) * 100
|
|
||||||
var ray : PhysicsRayQueryParameters3D = PhysicsRayQueryParameters3D.create(origin, end)
|
|
||||||
ray.collide_with_bodies = true
|
|
||||||
|
|
||||||
var ray_result : Dictionary = space_state.intersect_ray(ray)
|
|
||||||
|
|
||||||
if ray_result.is_empty():
|
|
||||||
visible = false
|
|
||||||
selected_collider = null
|
|
||||||
return
|
|
||||||
|
|
||||||
var collider : CollisionObject3D = ray_result.get("collider")
|
|
||||||
selected_collider = collider
|
|
||||||
|
|
||||||
visible = true
|
|
||||||
global_position = collider.global_position
|
|
||||||
global_position += Vector3(0.0,0.2,0.0)
|
|
||||||
|
|
||||||
if selected_collider is Tower:
|
|
||||||
target_tower = collider
|
|
||||||
else:
|
|
||||||
target_tower = null
|
|
||||||
|
|
||||||
# Refactoriser ce code
|
|
||||||
func build_tower() -> void:
|
|
||||||
if !visible:
|
|
||||||
return
|
|
||||||
|
|
||||||
var temp_tower : Tower = tower_blueprint.instantiate()
|
|
||||||
|
|
||||||
|
|
||||||
#Move existing tower
|
|
||||||
for tower : Tower in team_in_action:
|
|
||||||
if tower.tower_name == temp_tower.tower_name:
|
|
||||||
move_tower()
|
|
||||||
return
|
|
||||||
|
|
||||||
#Send to action a resting tower
|
|
||||||
for tower : Tower in team_in_rest:
|
|
||||||
if tower.tower_name == temp_tower.tower_name:
|
|
||||||
move_tower()
|
|
||||||
send_to_action()
|
|
||||||
return
|
|
||||||
|
|
||||||
#Build Tower
|
|
||||||
if temp_tower.price < the_cube.money:
|
|
||||||
#Can't build
|
|
||||||
print("Too costly")
|
|
||||||
return
|
|
||||||
else :
|
|
||||||
#Can build
|
|
||||||
EventBus.money_spent.emit(temp_tower.price)
|
|
||||||
tower_count += 1
|
|
||||||
$"../Towers".add_child(temp_tower)
|
|
||||||
EventBus.tower_builded.emit(temp_tower)
|
|
||||||
selected_tower = temp_tower
|
|
||||||
send_to_action()
|
|
||||||
move_tower()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func move_tower():
|
|
||||||
selected_tower.global_position = global_position
|
|
||||||
|
|
||||||
|
|
||||||
func send_to_rest():
|
|
||||||
team_in_action.erase(selected_tower)
|
|
||||||
team_in_rest.append(selected_tower)
|
|
||||||
selected_tower.is_rest = true
|
|
||||||
EventBus.team_in_action_changed.emit(team_in_action)
|
|
||||||
|
|
||||||
|
|
||||||
func send_to_action():
|
|
||||||
team_in_rest.erase(selected_tower)
|
|
||||||
team_in_action.append(selected_tower)
|
|
||||||
selected_tower.is_rest = false
|
|
||||||
EventBus.team_in_action_changed.emit(team_in_action)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_EventBus_tower_selected(tower : PackedScene):
|
|
||||||
# TODO: Remove tower_blueprint
|
|
||||||
print("pouette")
|
|
||||||
# tower_blueprint = tower
|
|
||||||
|
|
||||||
# TODO: Utile ?
|
|
||||||
func _on_cube_icon_pressed() -> void:
|
|
||||||
pass
|
|
||||||
#open_shop()
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://caf3yamufmhd4
|
|
||||||
|
|
@ -24,6 +24,8 @@ var bullet : PackedScene = preload("res://Bullets/bullet.tscn")
|
||||||
@export var energy_cost : float = 50.0
|
@export var energy_cost : float = 50.0
|
||||||
@onready var energy_bar : EnergyBar3D = $EnergyBar3D
|
@onready var energy_bar : EnergyBar3D = $EnergyBar3D
|
||||||
|
|
||||||
|
var tower_button : TowerButton = null
|
||||||
|
|
||||||
var energy : float = max_energy:
|
var energy : float = max_energy:
|
||||||
set(value):
|
set(value):
|
||||||
energy = clampf(value, 0.0, max_energy)
|
energy = clampf(value, 0.0, max_energy)
|
||||||
|
|
@ -61,7 +63,7 @@ func get_available_upgrades() -> Array[TowerUpgrade]:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
# If they have a condition, check for the previously bought upgrades
|
# If they have a condition, check for the previously bought upgrades
|
||||||
for owned_upgrade in tower_upgrades: #Check
|
for owned_upgrade in tower_upgrades: #Check
|
||||||
if shop_upgrade.condition == owned_upgrade:
|
if shop_upgrade.condition == owned_upgrade:
|
||||||
available_upgrades.append(shop_upgrade)
|
available_upgrades.append(shop_upgrade)
|
||||||
return available_upgrades
|
return available_upgrades
|
||||||
|
|
@ -82,7 +84,7 @@ func _ready() -> void:
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if is_rest:
|
if is_rest:
|
||||||
return
|
return
|
||||||
|
|
||||||
if is_instance_valid(current):
|
if is_instance_valid(current):
|
||||||
if can_shoot && not is_exhausted:
|
if can_shoot && not is_exhausted:
|
||||||
shoot()
|
shoot()
|
||||||
|
|
@ -95,7 +97,7 @@ func _process(delta: float) -> void:
|
||||||
|
|
||||||
func shoot() -> void:
|
func shoot() -> void:
|
||||||
energy -= energy_cost
|
energy -= energy_cost
|
||||||
|
|
||||||
var temp_bullet : Bullet = bullet.instantiate()
|
var temp_bullet : Bullet = bullet.instantiate()
|
||||||
temp_bullet.target = current
|
temp_bullet.target = current
|
||||||
temp_bullet.bullet_damage = bullet_damage
|
temp_bullet.bullet_damage = bullet_damage
|
||||||
|
|
@ -127,7 +129,7 @@ func choose_target(_current_targets : Array) -> void:
|
||||||
else:
|
else:
|
||||||
if i.get_parent().get_progress() > current_target.get_parent().get_progress():
|
if i.get_parent().get_progress() > current_target.get_parent().get_progress():
|
||||||
current_target = i
|
current_target = i
|
||||||
|
|
||||||
current = current_target
|
current = current_target
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
16
game_menu.gd
16
game_menu.gd
|
|
@ -4,27 +4,19 @@ var selected_tower
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
EventBus.tower_selected.connect(_on_EventBus_tower_selected)
|
||||||
EventBus.open_shop.connect(open_shop)
|
|
||||||
EventBus.close_shop.connect(close_shop)
|
|
||||||
|
|
||||||
func open_shop():
|
|
||||||
if visible:
|
|
||||||
close_shop()
|
|
||||||
return
|
|
||||||
|
|
||||||
visible = true
|
func _on_EventBus_tower_selected(tower : PackedScene, tower_button : TowerButton):
|
||||||
|
|
||||||
func close_shop():
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
func _on_EventBus_tower_selected(tower : PackedScene):
|
|
||||||
selected_tower = tower
|
selected_tower = tower
|
||||||
|
|
||||||
|
|
||||||
func _on_button_return_desktop_pressed() -> void:
|
func _on_button_return_desktop_pressed() -> void:
|
||||||
get_tree().quit()
|
get_tree().quit()
|
||||||
|
|
||||||
|
|
||||||
func _on_button_back_to_start_screen_pressed() -> void:
|
func _on_button_back_to_start_screen_pressed() -> void:
|
||||||
Transition.goto("res://UI/start_menu.tscn")
|
Transition.goto("res://UI/start_menu.tscn")
|
||||||
|
|
||||||
|
|
||||||
func _on_button_continue_pressed() -> void:
|
func _on_button_continue_pressed() -> void:
|
||||||
visible = false
|
visible = false
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue