Spectator, gui 👍

This commit is contained in:
Rendo 2025-12-07 17:07:51 +05:00
commit 775763a128
9 changed files with 55 additions and 31 deletions

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=21 format=3 uid="uid://cqrh2cc7m2i7f"]
[gd_scene load_steps=23 format=3 uid="uid://cqrh2cc7m2i7f"]
[ext_resource type="Environment" uid="uid://d0cfgtx2yxw13" path="res://environments/prototype_environment.tres" id="1_i6jab"]
[ext_resource type="Material" uid="uid://bx3f5vx71ynh5" path="res://materials/Graymat.tres" id="4_y6i55"]
@ -16,6 +16,8 @@
[ext_resource type="Material" uid="uid://c6xa4phihtya2" path="res://materials/Redmat.tres" id="9_ysk2e"]
[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://scripts/multiplayer/spawn_system/team_spawner.gd" id="10_02ic3"]
[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://scripts/object_container.gd" id="11_02ic3"]
[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://scripts/gui/hud/player_round_display.gd" id="17_wsuwo"]
[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://scripts/gui/hud/player_round_time.gd" id="18_0hcup"]
[sub_resource type="BoxShape3D" id="BoxShape3D_ysk2e"]
size = Vector3(15.324341, 0.96273804, 21.381592)
@ -312,3 +314,28 @@ shape = SubResource("BoxShape3D_5uqia")
[node name="DefaultCamera" type="Camera3D" parent="."]
transform = Transform3D(0.6629243, -0.44385082, 0.60293275, 0.022305315, 0.81667197, 0.57667094, -0.7483541, -0.36884052, 0.5512919, 17.194904, 16.47376, -9.509804)
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="RoundData" type="HBoxContainer" parent="CanvasLayer"]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -20.0
offset_right = 20.0
offset_bottom = 40.0
grow_horizontal = 2
mouse_filter = 2
[node name="RoundDisplayOur" type="Label" parent="CanvasLayer/RoundData"]
layout_mode = 2
script = ExtResource("17_wsuwo")
our_side = true
[node name="RoundTime" type="Label" parent="CanvasLayer/RoundData"]
layout_mode = 2
script = ExtResource("18_0hcup")
[node name="RoundDisplayTheir" type="Label" parent="CanvasLayer/RoundData"]
layout_mode = 2
script = ExtResource("17_wsuwo")

View file

@ -3,6 +3,7 @@
[ext_resource type="Script" uid="uid://ddi1alk8oyi1b" path="res://scripts/gui/client_settings_menu.gd" id="1_xqyus"]
[node name="ClientSettingsMenu" type="CanvasLayer"]
layer = 3
[node name="CenterContainer" type="CenterContainer" parent="."]
anchors_preset = 15

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=84 format=4 uid="uid://dpsr6ug3pkb40"]
[gd_scene load_steps=82 format=4 uid="uid://dpsr6ug3pkb40"]
[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://scripts/player/player.gd" id="1_g2els"]
[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://scripts/player/crosshair.gd" id="3_dqkch"]
@ -21,8 +21,6 @@
[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://scripts/player/states/walk.gd" id="11_qfm1y"]
[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://scripts/player/states/falling.gd" id="12_fulsm"]
[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://scripts/gui/hud/player_ammo_display.gd" id="12_iortg"]
[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://scripts/gui/hud/player_round_display.gd" id="13_x73hv"]
[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://scripts/gui/hud/player_round_time.gd" id="13_xar7t"]
[ext_resource type="AudioStream" uid="uid://bd4iofirvmiu6" path="res://audio/step_wood.ogg" id="16_fbysy"]
[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"]
[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://scripts/player/player_pickup.gd" id="17_fjvrb"]
@ -8595,9 +8593,10 @@ libraries = {
&"": SubResource("AnimationLibrary_kyf2b")
}
[node name="VisibilityToggler" type="Node" parent="Camera3D/molikman_hands" node_paths=PackedStringArray("reference_player")]
[node name="PlayerBasedVisibility" type="Node" parent="Camera3D/molikman_hands" node_paths=PackedStringArray("reference_player")]
script = ExtResource("4_smehm")
reference_player = NodePath("../../..")
metadata/_custom_type_script = "uid://dd5mp72dq43v6"
[node name="DeadSpectator" type="Camera3D" parent="Camera3D"]
fov = 90.0
@ -8622,6 +8621,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="PanelContainer" type="PanelContainer" parent="HUD"]
visible = false
@ -8657,6 +8657,7 @@ offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("3_dqkch")
crosses_width = 2.0
crosses_length = 6.0
@ -8675,6 +8676,7 @@ anchor_bottom = 1.0
offset_top = -0.2800293
offset_right = -0.32000732
grow_vertical = 0
mouse_filter = 2
step = 1.0
value = 100.0
fill_mode = 3
@ -8694,29 +8696,6 @@ grow_vertical = 0
label_settings = SubResource("LabelSettings_x73hv")
script = ExtResource("12_iortg")
[node name="RoundData" type="HBoxContainer" parent="HUD"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -20.0
offset_right = 20.0
offset_bottom = 40.0
grow_horizontal = 2
[node name="RoundDisplayOur" type="Label" parent="HUD/RoundData"]
layout_mode = 2
script = ExtResource("13_x73hv")
our_side = true
[node name="RoundTime" type="Label" parent="HUD/RoundData"]
layout_mode = 2
script = ExtResource("13_xar7t")
[node name="RoundDisplayTheir" type="Label" parent="HUD/RoundData"]
layout_mode = 2
script = ExtResource("13_x73hv")
[node name="PlayerPropertiesSync" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_qhqgy")
@ -8878,11 +8857,14 @@ script = ExtResource("37_5amik")
replication_config = SubResource("SceneReplicationConfig_5amik")
script = ExtResource("37_b2eak")
[connection signal="died" from="." to="molikman_ingame/PlayerBasedVisibility" method="reverse_if_own"]
[connection signal="died" from="." to="Camera3D" method="disable"]
[connection signal="died" from="." to="Camera3D/DeadSpectator" method="set_active"]
[connection signal="died" from="." to="BodyStateMachine/Death" method="on_death"]
[connection signal="died" from="." to="PlayerMovement" method="disable"]
[connection signal="died" from="." to="WeaponSystem" method="disable"]
[connection signal="died" from="." to="Camera3D/molikman_hands/PlayerBasedVisibility" method="reverse_if_own"]
[connection signal="health_changed" from="." to="HUD/Healthbar" method="on_hp_changed"]
[connection signal="ammo_updated" from="WeaponSystem" to="HUD/AmmoDisplay" method="on_ammo_updated"]
[connection signal="interact_begin" from="PlayerInput" to="Interaction" method="on_player_start_interacting"]
[connection signal="interact_end" from="PlayerInput" to="Interaction" method="on_player_end_interacting"]

View file

@ -4,6 +4,9 @@ extends Label
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
Session.round_started.connect(update)
func update():
if our_side:
match Lobby.get_team():
Session.TEAMS.DEFENCE:

View file

@ -10,3 +10,7 @@ func _ready() -> void:
func reverse() -> void:
get_parent().visible = not get_parent().visible
func reverse_if_own():
if multiplayer.get_unique_id() == reference_player.player_id:
reverse()

View file

@ -32,7 +32,7 @@ func _process(_delta: float) -> void:
if not is_multiplayer_authority(): return
direction = Input.get_vector("plr_strafe_r","plr_strafe_l", "plr_back","plr_forward")
func _input(event: InputEvent) -> void:
func _unhandled_input(event: InputEvent) -> void:
if not is_multiplayer_authority(): return
if event.is_action_pressed("plr_ult"):
switch_on_server.rpc_id(1,"ultimate")

View file

@ -288,4 +288,4 @@ func kill_site(site: StringName) -> void:
for body in plant_deadzones[site].get_overlapping_bodies():
if body is Player:
body.kill_request.rpc()
body.die()

View file

@ -54,6 +54,6 @@ func spawn_spectator(id: int) -> void:
var distance = randf_range(0,spawn_radius)
var angle = randf_range(0,TAU)
var new_position = global_position + Vector3.RIGHT.rotated(Vector3.UP,angle) * distance
inst.team = team
#inst.team = team
get_parent().add_child(inst)
inst.global_position = new_position

View file

@ -41,8 +41,15 @@ func die() -> void:
return
Session.add_dead(team)
died.emit()
die_on_peers.rpc()
passived = true
@rpc("authority","call_remote","reliable")
func die_on_peers():
if multiplayer.get_remote_sender_id() != 1:
return
died.emit()
func passive() -> void:
passived = true