37 lines
1.3 KiB
GDScript
37 lines
1.3 KiB
GDScript
extends SceneTree
|
|||
|
|
|
||
|
|
func _initialize() -> void:
|
||
|
|
call_deferred("run")
|
||
|
|
|
||
|
|
func run() -> void:
|
||
|
|
create_timer(40).timeout.connect(func(): quit(2))
|
||
|
|
var server := "--server" in OS.get_cmdline_user_args()
|
||
|
|
var game := (load("res://scenes/main.tscn") as PackedScene).instantiate() as Node3D
|
||
|
|
root.add_child(game)
|
||
|
|
game.port = 27992
|
||
|
|
if server:
|
||
|
|
var settings: Dictionary = game.config.duplicate()
|
||
|
|
settings["map"] = "dust2"
|
||
|
|
if not game.host(settings):
|
||
|
|
quit(1)
|
||
|
|
return
|
||
|
|
var ready := FileAccess.open("res://logs/map-lan-ready.flag", FileAccess.WRITE)
|
||
|
|
ready.store_string("ready")
|
||
|
|
ready.close()
|
||
|
|
else:
|
||
|
|
game.join("127.0.0.1:27992")
|
||
|
|
var passed := false
|
||
|
|
for tick in (220 if server else 100):
|
||
|
|
await create_timer(0.1).timeout
|
||
|
|
if tick % 20 == 0: print("NET ", server, " peers=", game.multiplayer.get_peers(), " status=", game.multiplayer.multiplayer_peer.get_connection_status(), " connecting=", game.connecting)
|
||
|
|
var humans := 0
|
||
|
|
for p: Fighter in game.players.values():
|
||
|
|
if not p.bot: humans += 1
|
||
|
|
if game.active and humans == 2 and game.players.size() == 8 and game.arena.map_id == "dust2" and game.config.get("map") == "dust2":
|
||
|
|
passed = true
|
||
|
|
print("MAP LAN ", "server" if server else "client", " passed=", passed, " map=", game.arena.map_id, " roster=", game.players.size())
|
||
|
|
game.leave()
|
||
|
|
await process_frame
|
||
|
|
game.free()
|
||
|
|
quit(0 if passed else 1)
|