mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-07-14 16:04:50 +00:00
✨ Add flag grabbing/carrying scoring logic
This commit is contained in:
parent
232eb960ab
commit
61b8845a40
8 changed files with 65 additions and 30 deletions
|
|
@ -28,10 +28,17 @@ class_name Multiplayer extends Node
|
|||
@onready var scoreboard_ui : Node = $ScoreboardUI
|
||||
|
||||
var _map_manager : Map
|
||||
var _flag : Flag
|
||||
var _flag_carrier_scoring_timer : Timer = Timer.new()
|
||||
|
||||
signal connected_to_server
|
||||
signal connection_failed
|
||||
|
||||
func _ready() -> void:
|
||||
_flag_carrier_scoring_timer.wait_time = 10.0
|
||||
_flag_carrier_scoring_timer.timeout.connect(_on_flag_carrier_scoring_timer_timeout)
|
||||
add_child(_flag_carrier_scoring_timer)
|
||||
|
||||
func start_server(port : int, nickname : String) -> void:
|
||||
var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new()
|
||||
peer.create_server(port, MAX_CLIENTS)
|
||||
|
|
@ -101,9 +108,11 @@ func _load_map(scene : PackedScene, nickname : String) -> void:
|
|||
map.add_child(map_scene)
|
||||
|
||||
func _add_flag() -> void:
|
||||
var flag : Flag = FLAG.instantiate()
|
||||
flag.global_position = _map_manager.get_flagstand().global_position
|
||||
objectives.add_child(flag)
|
||||
_flag = FLAG.instantiate()
|
||||
_flag.grabbed.connect(_on_flag_grabbed)
|
||||
_flag.dropped.connect(_on_flag_dropped)
|
||||
_flag.global_position = _map_manager.get_flagstand().global_position
|
||||
objectives.add_child(_flag)
|
||||
|
||||
func _unhandled_input(event : InputEvent) -> void:
|
||||
if event.is_action_pressed("scoreboard"):
|
||||
|
|
@ -123,6 +132,18 @@ func _join_match(nickname : String) -> void:
|
|||
if is_multiplayer_authority():
|
||||
add_player(multiplayer.get_remote_sender_id(), nickname)
|
||||
|
||||
func _on_flag_grabbed(grabber : Player) -> void:
|
||||
scoreboard.add_score_to_player(grabber, 10)
|
||||
scoreboard.broadcast_player_score_update(grabber)
|
||||
_flag_carrier_scoring_timer.start()
|
||||
|
||||
func _on_flag_dropped() -> void:
|
||||
_flag_carrier_scoring_timer.stop()
|
||||
|
||||
func _on_flag_carrier_scoring_timer_timeout() -> void:
|
||||
scoreboard.add_score_to_player(_flag.last_carrier, 10)
|
||||
scoreboard.broadcast_player_score_update(_flag.last_carrier)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
if is_multiplayer_authority():
|
||||
multiplayer.peer_disconnected.disconnect(remove_player)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://bvwxfgygm2xb8"]
|
||||
|
||||
[ext_resource type="Script" path="res://modes/multiplayer.gd" id="1_4t1ad"]
|
||||
[ext_resource type="PackedScene" uid="uid://chbno00ugl6te" path="res://maps/genesis/genesis.tscn" id="1_nulvv"]
|
||||
[ext_resource type="Script" path="res://modes/multiplayer.gd" id="1_r1kd6"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbhx1xme0sb7k" path="res://entities/player/player.tscn" id="2_og1vb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c88l3h0ph00c7" path="res://entities/flag/flag.tscn" id="3_h0rie"]
|
||||
[ext_resource type="Script" path="res://modes/scoreboard.gd" id="4_n0mhp"]
|
||||
|
||||
[node name="Multiplayer" type="Node"]
|
||||
script = ExtResource("1_4t1ad")
|
||||
script = ExtResource("1_r1kd6")
|
||||
MAP = ExtResource("1_nulvv")
|
||||
PLAYER = ExtResource("2_og1vb")
|
||||
FLAG = ExtResource("3_h0rie")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue