Despirate tweaks to make game end more gracefully.

This commit is contained in:
Dustin 2025-04-20 18:55:41 -07:00
parent 33a9848524
commit 07e98d0736
9 changed files with 41 additions and 15 deletions

View File

@ -49,20 +49,27 @@ func change_level(_level_name :String, _position_name :String):
var new_level = load("res://src/levels/" + _level_name + ".tscn" ).instance() var new_level = load("res://src/levels/" + _level_name + ".tscn" ).instance()
#print (get_tree().get_root().get_children()) #print (get_tree().get_root().get_children())
for l in get_node("/root/Main/ViewportContainer/Viewport/World").get_children(): for l in viewport.get_children():
#print (get_node("/root/Main").get_children()) #print (get_node("/root/Main").get_children())
if l is Level: if l is Level:
camera_guide.disable_tracking() camera_guide.disable_tracking()
SceneTransition.transition_dissolve("foo") ##TODO: Disabled signal based yield because I think it was taking too long
yield(SceneTransition,"done") # No more errors but I'd like to know how to do this.
#SceneTransition.transition_dissolve("foo")
#yield(SceneTransition,"done")
yield(SceneTransition.transition_dissolve("foo"), "completed")
print(l) print(l)
get_node("/root/Main/ViewportContainer/Viewport/World").remove_child(l) viewport.remove_child(l)
get_node("/root/Main/ViewportContainer/Viewport/World").add_child(new_level) viewport.add_child(new_level)
get_node("/root/Main/ViewportContainer/Viewport/World").move_child(new_level,1) ##TODO: make this right below scene transition
viewport.move_child(new_level,2)
#get_node("/root/Main/ViewportContainer/Viewport/World").remove_child(l)
#get_node("/root/Main/ViewportContainer/Viewport/World").add_child(new_level)
#get_node("/root/Main/ViewportContainer/Viewport/World").move_child(new_level,1)
##TODO: Probably set start position ##TODO: Probably set start position
if new_level.entrances.has(_position_name): if new_level.entrances.has(_position_name):
player_start_position = new_level.entrances[_position_name].transform.origin player_start_position = new_level.entrances[_position_name].transform.origin
print (get_node("/root/Main/ViewportContainer/Viewport").get_children()) #print (get_node("/root/Main/ViewportContainer/Viewport").get_children())
#get_node("/root/Main/ViewportContainer/Viewport/CameraGuide").global_position = Vector2(160,90) #get_node("/root/Main/ViewportContainer/Viewport/CameraGuide").global_position = Vector2(160,90)
SceneTransition.reset() SceneTransition.reset()
camera_guide.transform.origin = Vector2(160,90) camera_guide.transform.origin = Vector2(160,90)

View File

@ -43,7 +43,8 @@ func _player_connected(id):
# Callback from SceneTree. # Callback from SceneTree.
func _player_disconnected(id): func _player_disconnected(id):
if has_node("/root/Main"): # Game is in progress. ##TODO: Need better way to determine a game is running
if has_node("/root/Main/ViewportContainer/Viewport/1"): # Game is in progress.
if get_tree().is_network_server(): if get_tree().is_network_server():
emit_signal("game_error", "Player " + players[id] + " disconnected") emit_signal("game_error", "Player " + players[id] + " disconnected")
end_game() end_game()
@ -130,6 +131,8 @@ remote func pre_start_game(spawn_points):
get_tree().get_root().get_node("/root/Main/ViewportContainer/Viewport/Lobby").hide() get_tree().get_root().get_node("/root/Main/ViewportContainer/Viewport/Lobby").hide()
## Clear the PlayerInfo table in case this is a restart.
PlayerInfo.reset()
var player_scene = load("res://src/actors/players/playerE/PlayerE.tscn") var player_scene = load("res://src/actors/players/playerE/PlayerE.tscn")

View File

@ -27,6 +27,9 @@ func get_player_data(index :int) -> PlayerData:
else: else:
return null return null
func reset():
_player_data.clear()
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta): #func _process(delta):
# pass # pass

View File

@ -22,7 +22,7 @@ func _ready():
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta): #func _process(delta):
debug_text = '' # debug_text = ''
for _player_id in NetworkManager.get_player_ids(): # for _player_id in NetworkManager.get_player_ids():
debug_text += str(_player_id) + '\n' # debug_text += str(_player_id) + '\n'

View File

@ -16,6 +16,7 @@ var entrances:Dictionary
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
add_to_group("world")
LevelInfo.player_start_position = player_start.transform.origin LevelInfo.player_start_position = player_start.transform.origin
if music_track: if music_track:
LevelInfo.change_music_track(music_track) LevelInfo.change_music_track(music_track)

View File

@ -10,7 +10,7 @@ radius = 5.09902
[sub_resource type="RectangleShape2D" id=2] [sub_resource type="RectangleShape2D" id=2]
[node name="CloneBox" instance=ExtResource( 1 )] [node name="CloneBox" groups=["world"] instance=ExtResource( 1 )]
[node name="TileMap Collision" parent="." index="1"] [node name="TileMap Collision" parent="." index="1"]
tile_set = ExtResource( 2 ) tile_set = ExtResource( 2 )

View File

@ -47,7 +47,7 @@ points = PoolVector2Array( 20, 20, 0.326027, 20, 0.326027, 0.605103, 20, 0.60510
[sub_resource type="CircleShape2D" id=6] [sub_resource type="CircleShape2D" id=6]
[node name="TestBox" instance=ExtResource( 1 )] [node name="TestBox" groups=["world"] instance=ExtResource( 1 )]
music_track = ExtResource( 5 ) music_track = ExtResource( 5 )
[node name="TileMap Collision" parent="." index="1"] [node name="TileMap Collision" parent="." index="1"]
@ -64,7 +64,7 @@ tile_data = PoolIntArray( 524288, 0, 2, 524307, 0, 3 )
position = Vector2( 80, 131 ) position = Vector2( 80, 131 )
[node name="Hitbox_Component" parent="." index="4" instance=ExtResource( 3 )] [node name="Hitbox_Component" parent="." index="4" instance=ExtResource( 3 )]
damage_amount = 10 damage_amount = 90
[node name="ColorRect" type="ColorRect" parent="Hitbox_Component" index="0"] [node name="ColorRect" type="ColorRect" parent="Hitbox_Component" index="0"]
margin_left = 266.0 margin_left = 266.0

View File

@ -96,3 +96,13 @@ func _on_start_pressed():
func _on_find_public_ip_pressed(): func _on_find_public_ip_pressed():
OS.shell_open("https://icanhazip.com/") OS.shell_open("https://icanhazip.com/")
func _on_Lobby_focus_entered():
if visible:
$Connect/Join.grab_focus()
func _on_Lobby_visibility_changed():
if visible:
$Connect/Join.grab_focus()

View File

@ -169,6 +169,8 @@ margin_bottom = 58.0
size_flags_horizontal = 2 size_flags_horizontal = 2
size_flags_vertical = 2 size_flags_vertical = 2
[connection signal="focus_entered" from="." to="." method="_on_Lobby_focus_entered"]
[connection signal="visibility_changed" from="." to="." method="_on_Lobby_visibility_changed"]
[connection signal="pressed" from="Players/Start" to="." method="_on_start_pressed"] [connection signal="pressed" from="Players/Start" to="." method="_on_start_pressed"]
[connection signal="pressed" from="Players/FindPublicIP" to="." method="_on_find_public_ip_pressed"] [connection signal="pressed" from="Players/FindPublicIP" to="." method="_on_find_public_ip_pressed"]
[connection signal="pressed" from="Connect/Host" to="." method="_on_host_pressed"] [connection signal="pressed" from="Connect/Host" to="." method="_on_host_pressed"]