diff --git a/Game/Assets/HUD/HUD.gd b/Game/Assets/HUD/HUD.gd index 11c8243..30d3f37 100644 --- a/Game/Assets/HUD/HUD.gd +++ b/Game/Assets/HUD/HUD.gd @@ -6,11 +6,33 @@ extends Control # var a = 2 # var b = "text" - # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. + +func update_score_table(): + var scores = [] + + for i in main.player_list.players.keys(): + scores.append(main.player_list.get(i).score) + scores.sort() + scores.reverse() + + for i in scores: + for j in main.player_list.players.keys(): + if main.player_list.get(j).score == i: + $ScoreTable/VBoxContainer/ScoreTab.text += str(i) + " - " + main.player_list.get(j).name + "\n" + +func score_table(show := true): + + if show: + $ScoreTable/VBoxContainer/ScoreTab.text = '' + update_score_table() + + $ScoreTable.show() + else: + $ScoreTable.hide() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): # if main.local_player == null: # player is dead ATM @@ -25,3 +47,6 @@ func _process(delta): $RespawnCountdown.visible = true else: $RespawnCountdown.visible = false + + if $ScoreTable.visible: # update the scores every frame when player is watching the score table + update_score_table() diff --git a/Game/Assets/HUD/HUD.tscn b/Game/Assets/HUD/HUD.tscn index 6914776..ce31954 100644 --- a/Game/Assets/HUD/HUD.tscn +++ b/Game/Assets/HUD/HUD.tscn @@ -255,4 +255,53 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="ScoreTable" type="Panel" parent="."] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -309.5 +offset_top = -157.5 +offset_right = 309.5 +offset_bottom = 157.5 +script = null +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ScoreTable"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = null +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Header" type="Label" parent="ScoreTable/VBoxContainer"] +offset_right = 619.0 +offset_bottom = 26.0 +size_flags_horizontal = 3 +size_flags_vertical = 5 +text = "LE SCORE TABLE" +align = 1 +structured_text_bidi_override_options = [] +script = null +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScoreTab" type="RichTextLabel" parent="ScoreTable/VBoxContainer"] +offset_top = 30.0 +offset_right = 619.0 +offset_bottom = 315.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_effects = [] +structured_text_bidi_override_options = [] +script = null +__meta__ = { +"_edit_use_anchors_": false +} + [connection signal="text_submitted" from="Chat/VBoxContainer/Typing/Editor" to="Chat" method="_on_Editor_text_submitted"] diff --git a/Game/Main.gd b/Game/Main.gd index b0aacec..d0ca450 100644 --- a/Game/Main.gd +++ b/Game/Main.gd @@ -1,13 +1,13 @@ extends Node -enum GameFocus {MENU, GAME, CHAT, AWAY} +enum GameFocus {MENU, GAME, CHAT, AWAY, SCORETAB} enum NetworkRole {NONE, CLIENT, SERVER, DEDICATED_SERVER, RELAY_SERVER} const NET_PORT = 12597 -const NET_SERVER = "liblast.unfa.xyz" -#const NET_SERVER = "localhost" +#const NET_SERVER = "liblast.unfa.xyz" +const NET_SERVER = "localhost" var peer = ENetMultiplayerPeer.new() @@ -150,7 +150,7 @@ var focus = GameFocus.MENU : 3: if local_player: local_player.input_active = true - + focus = new_focus #@remote set_info(info) -> void: @@ -169,8 +169,18 @@ func _input(_event) -> void: focus = GameFocus.MENU elif focus == GameFocus.MENU: focus = GameFocus.GAME - -#@remote func st(player_list): + + if Input.is_action_just_pressed("show_scoretab"): + if focus == GameFocus.GAME: + focus = GameFocus.SCORETAB + hud.score_table(true) + + elif Input.is_action_just_released("show_scoretab"): + if focus == GameFocus.SCORETAB: + focus = GameFocus.GAME + hud.score_table(false) + +#@remote func update_player_list(player_list): # self.player_list = player_list func game_over(): @@ -211,7 +221,7 @@ func update_hud(): else: hud.get_node("ScoreRank").text += str(rank) + "\nGAP: " + str(-lead) -@rpc(any, reliable) func player_list_update(info, pid = get_tree().get_rpc_sender_id()): +@rpc(any) func player_list_update(info, pid = get_tree().get_rpc_sender_id()): var new_info = PlayerInfo.new() new_info.deserialize(info) print("Recieved player info: ", info) @@ -240,7 +250,12 @@ func update_hud(): func push_local_player_info(): # var id = get_tree().multiplayer.get_network_unique_id() - rpc(&'player_list_update', player_list.get(id).serialize(), get_tree().multiplayer.get_network_unique_id()) + #print("PLayer info vsr2str: ", var2str(player_list.get(id)) ) + + if id != 1: + rpc_id(1, &'player_list_update', player_list.get(id).serialize(), get_tree().multiplayer.get_network_unique_id()) + else: + rpc(&'player_list_update', player_list.get(id).serialize(), 1) @rpc(sync,auth,reliable) func destroy_player(pid: int): var player_node = $Players.get_node(str(pid)) diff --git a/Game/Main.tscn b/Game/Main.tscn index 4d90607..0a6b06b 100644 --- a/Game/Main.tscn +++ b/Game/Main.tscn @@ -29,6 +29,13 @@ structured_text_bidi_override_options = [] [node name="ScoreRank" parent="HUD" index="4"] structured_text_bidi_override_options = [] +[node name="Header" parent="HUD/ScoreTable/VBoxContainer" index="0"] +structured_text_bidi_override_options = [] + +[node name="ScoreTab" parent="HUD/ScoreTable/VBoxContainer" index="1"] +custom_effects = [] +structured_text_bidi_override_options = [] + [node name="GUI" parent="." instance=ExtResource( "2" )] [node name="Players" type="Node3D" parent="."] @@ -95,21 +102,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Panel" type="Panel" parent="."] -visible = false -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -309.5 -offset_top = -157.5 -offset_right = 309.5 -offset_bottom = 157.5 -script = null -__meta__ = { -"_edit_use_anchors_": false -} - [node name="LightmapProbe" type="LightmapProbe" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 17, 0) visible = false diff --git a/Game/project.godot b/Game/project.godot index eb2bf7a..19d8b24 100644 --- a/Game/project.godot +++ b/Game/project.godot @@ -121,6 +121,11 @@ say_cancel={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null) ] } +show_scoretab={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777218,"physical_keycode":0,"unicode":0,"echo":false,"script":null) +] +} [layer_names]