mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-07-12 15:04:46 +00:00
✅ Refactoring and added unit testing framework
This commit is contained in:
parent
06346b2d98
commit
080ce479da
145 changed files with 16250 additions and 470 deletions
37
modes/demo.tscn
Normal file
37
modes/demo.tscn
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://boviiugcnfyrj"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbhx1xme0sb7k" path="res://entities/player/player.tscn" id="2_6wbjq"]
|
||||
[ext_resource type="PackedScene" uid="uid://chbno00ugl6te" path="res://maps/genesis/genesis.tscn" id="2_lsep7"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpnu1lvfncx6q" path="res://entities/target_dummy/target_dummy.tscn" id="3_fkq5v"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_iv0l6"]
|
||||
script/source = "extends Node
|
||||
|
||||
@onready var player_node : Player = $Player
|
||||
@onready var target_dummy = $TargetDummy
|
||||
|
||||
@onready var player_respawn_location = player_node.position
|
||||
|
||||
func _ready():
|
||||
player_node.died.connect(respawn_player)
|
||||
|
||||
func respawn_player(player):
|
||||
player.respawn(player_respawn_location)
|
||||
"
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_c5jqv"]
|
||||
resource_local_to_scene = true
|
||||
bounce = 1.0
|
||||
absorbent = true
|
||||
|
||||
[node name="Demo" type="Node"]
|
||||
script = SubResource("GDScript_iv0l6")
|
||||
|
||||
[node name="Map" parent="." instance=ExtResource("2_lsep7")]
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_6wbjq")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 92.7007, 0)
|
||||
physics_material_override = SubResource("PhysicsMaterial_c5jqv")
|
||||
|
||||
[node name="TargetDummy" parent="." instance=ExtResource("3_fkq5v")]
|
||||
transform = Transform3D(-0.995746, 0, -0.0921446, 0, 1, 0, 0.0921446, 0, -0.995746, 15.757, 95.1745, 0)
|
||||
93
modes/multiplayer.tscn
Normal file
93
modes/multiplayer.tscn
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://c7ae4jw5d8mue"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cbhx1xme0sb7k" path="res://entities/player/player.tscn" id="1_7bj5d"]
|
||||
[ext_resource type="PackedScene" uid="uid://chbno00ugl6te" path="res://maps/genesis/genesis.tscn" id="2_nnx26"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_pj58d"]
|
||||
script/source = "class_name Multiplayer extends Node
|
||||
|
||||
@export_category(\"Parameters\")
|
||||
@export var MAP : PackedScene
|
||||
@export var PLAYER : PackedScene
|
||||
@export var MAX_CLIENTS : int = 24
|
||||
|
||||
@onready var map = $Map
|
||||
@onready var players = $Players
|
||||
|
||||
signal connected_to_server
|
||||
signal connection_failed
|
||||
|
||||
func load_map(scene : PackedScene):
|
||||
map.add_child(scene.instantiate())
|
||||
|
||||
func start_server(port):
|
||||
var peer = ENetMultiplayerPeer.new()
|
||||
peer.create_server(port, MAX_CLIENTS)
|
||||
|
||||
multiplayer.multiplayer_peer = peer
|
||||
|
||||
load_map.call_deferred(MAP)
|
||||
|
||||
multiplayer.peer_connected.connect(add_player)
|
||||
multiplayer.peer_disconnected.connect(remove_player)
|
||||
|
||||
for id in multiplayer.get_peers():
|
||||
add_player(id)
|
||||
|
||||
if DisplayServer.get_name() != \"headless\":
|
||||
add_player(1)
|
||||
|
||||
func join_server(host, port):
|
||||
var peer = ENetMultiplayerPeer.new()
|
||||
peer.create_client(host, port)
|
||||
multiplayer.connected_to_server.connect(_on_connected_to_server)
|
||||
multiplayer.connection_failed.connect(_on_connection_failed)
|
||||
multiplayer.multiplayer_peer = peer
|
||||
|
||||
func _on_connected_to_server():
|
||||
connected_to_server.emit()
|
||||
|
||||
func _on_connection_failed():
|
||||
connection_failed.emit()
|
||||
|
||||
func respawn_player(player):
|
||||
player.respawn(Vector3(0.0, 150.0, 0.0))
|
||||
|
||||
func add_player(peer_id : int):
|
||||
var player : Player = PLAYER.instantiate()
|
||||
player.name = str(peer_id)
|
||||
player.player_id = peer_id
|
||||
player.position = Vector3(0.0, 150.0, 0.0)
|
||||
players.add_child(player)
|
||||
player.died.connect(respawn_player)
|
||||
print(\"Peer `%s` connected\" % player.name)
|
||||
|
||||
func remove_player(peer_id : int):
|
||||
var node_name = str(peer_id)
|
||||
if players.has_node(node_name):
|
||||
players.get_node(node_name).queue_free()
|
||||
print(\"Peer `%s` disconnected\" % node_name)
|
||||
|
||||
func _exit_tree():
|
||||
if multiplayer.is_server():
|
||||
multiplayer.peer_connected.disconnect(add_player)
|
||||
multiplayer.peer_disconnected.disconnect(remove_player)
|
||||
"
|
||||
|
||||
[node name="Multiplayer" type="Node"]
|
||||
script = SubResource("GDScript_pj58d")
|
||||
MAP = ExtResource("2_nnx26")
|
||||
PLAYER = ExtResource("1_7bj5d")
|
||||
|
||||
[node name="Map" type="Node" parent="."]
|
||||
|
||||
[node name="MapSpawner" type="MultiplayerSpawner" parent="."]
|
||||
_spawnable_scenes = PackedStringArray("res://maps/genesis/genesis.tscn")
|
||||
spawn_path = NodePath("../Map")
|
||||
spawn_limit = 1
|
||||
|
||||
[node name="Players" type="Node" parent="."]
|
||||
|
||||
[node name="PlayersSpawner" type="MultiplayerSpawner" parent="."]
|
||||
_spawnable_scenes = PackedStringArray("res://entities/player/player.tscn")
|
||||
spawn_path = NodePath("../Players")
|
||||
Loading…
Add table
Add a link
Reference in a new issue