update
This commit is contained in:
@@ -31,6 +31,7 @@ func _process(d):
|
||||
if role == "host":
|
||||
main._start_host(7788)
|
||||
elif role == "client" and step == 0:
|
||||
main.menu._name.text = "Tester"
|
||||
main._start_join("127.0.0.1", 7788)
|
||||
step = 1
|
||||
return
|
||||
@@ -42,14 +43,24 @@ func _process(d):
|
||||
else:
|
||||
_client_step()
|
||||
|
||||
func _key(c: int, d: bool) -> void:
|
||||
var e := InputEventKey.new(); e.physical_keycode = c; e.keycode = c; e.pressed = d
|
||||
Input.parse_input_event(e)
|
||||
|
||||
func _host_step() -> void:
|
||||
match step:
|
||||
0:
|
||||
print("[host] Sitzung gestartet")
|
||||
for i in 4:
|
||||
main.spawn_passenger(0, 2)
|
||||
wait = 30.0
|
||||
wait = 16.0
|
||||
1:
|
||||
# Host faehrt los, der Client soll das weich sehen
|
||||
main._srv_toggle_drive(1)
|
||||
_key(KEY_W, true)
|
||||
wait = 20.0
|
||||
2:
|
||||
_key(KEY_W, false)
|
||||
print("[host] Ende. money=%d driver=%d" % [main.money, main.driver_id])
|
||||
get_tree().quit()
|
||||
step += 1
|
||||
@@ -59,7 +70,7 @@ func _client_step() -> void:
|
||||
1:
|
||||
wait = 6.0
|
||||
2:
|
||||
chk("Welt gebaut", main.stations.size() == 5)
|
||||
chk("Welt gebaut", main.stations.size() == 6)
|
||||
chk("Zug übernommen", main.train.cars.size() == 3, "cars=%d" % main.train.cars.size())
|
||||
chk("Eigene Peer-ID", main.my_id > 1)
|
||||
chk("Fahrgäste sichtbar", main.passengers.size() >= 4, "n=%d" % main.passengers.size())
|
||||
@@ -69,6 +80,11 @@ func _client_step() -> void:
|
||||
seated += 1
|
||||
chk("Gäste sitzen", seated >= 4, "seated=%d" % seated)
|
||||
chk("Geld synchron", main.money == 1500)
|
||||
chk("Eigener Name beim Host angekommen",
|
||||
String(main.players[main.my_id]["name"]) == "Tester",
|
||||
"%s" % main.players[main.my_id]["name"])
|
||||
var host_av = main.players.get(1, {}).get("avatar")
|
||||
chk("Avatar des Hosts sichtbar", host_av != null)
|
||||
main.request("drive")
|
||||
wait = 1.5
|
||||
3:
|
||||
@@ -96,6 +112,36 @@ func _client_step() -> void:
|
||||
wait = 2.0
|
||||
6:
|
||||
chk("Kein Selbstlauf ohne Gas", main.train.speed < 0.01)
|
||||
main.request("drive") # Steuerung abgeben, der Host faehrt gleich
|
||||
_measuring = true
|
||||
wait = 12.0
|
||||
7:
|
||||
_measuring = false
|
||||
chk("Zug beim Client in Fahrt", _top_speed > 3.0, "v=%.1f" % _top_speed)
|
||||
chk("Zug beim Client ruckelfrei", _frames > 100 and _jumps * 20 < _frames,
|
||||
"%d Sprünge in %d Frames, größter %.2f m" % [_jumps, _frames, _worst])
|
||||
print("[client] == %d ok, %d fail ==" % [ok, fail])
|
||||
get_tree().quit(1 if fail > 0 else 0)
|
||||
step += 1
|
||||
|
||||
var _measuring := false
|
||||
var _last := Vector3.ZERO
|
||||
var _frames := 0
|
||||
var _jumps := 0
|
||||
var _worst := 0.0
|
||||
var _top_speed := 0.0
|
||||
|
||||
func _physics_process(d: float) -> void:
|
||||
if not _measuring or main == null or not main.started:
|
||||
return
|
||||
var t = main.train
|
||||
var p: Vector3 = t.cars[0].global_position
|
||||
if _last != Vector3.ZERO and t.speed > 1.0:
|
||||
_frames += 1
|
||||
var moved := p.distance_to(_last)
|
||||
var expected: float = t.speed * d
|
||||
_worst = maxf(_worst, absf(moved - expected))
|
||||
if absf(moved - expected) > 0.6:
|
||||
_jumps += 1
|
||||
_top_speed = maxf(_top_speed, t.speed)
|
||||
_last = p
|
||||
|
||||
Reference in New Issue
Block a user