Refactoring and added unit testing framework

This commit is contained in:
anyreso 2024-04-12 22:23:39 +00:00
parent 06346b2d98
commit 080ce479da
145 changed files with 16250 additions and 470 deletions

37
modes/demo.tscn Normal file
View 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
View 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")