Leaderboard attiva di default, senza configurazione
La classifica globale non dipende più da un argomento: sui build desktop il client usa il servizio pubblico DEFAULT_API_BASE (https://enne2.net/api/zombie-fps). - scripts/leaderboard.gd: resolve_base() statica con priorità --api=<url> (test) → --offline/--no-api (opt-out esplicito per le partite di prova) → origine della pagina sul Web → servizio pubblico. Rimosso l'avviso "Classifica disattivata". - Le suite di test (--script) restano spente a meno di un --api= esplicito, così nessun test può scrivere nella classifica pubblica. - tools/test_start_screen.gd: verifica default attivo, opt-out e override; tools/test_rebalance_branding.gd: suite di test senza invii. - docs/HIGHSCORES.md: nuova regola della base URL e diagnostica aggiornata. Verifiche: test_start_screen 18/18 PASS con display; test_rebalance_branding 14/14 PASS; test_leaderboard.sh invariato (12 PASS, 2 FAIL preesistenti su questa macchina anche prima della modifica).
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
extends SceneTree
|
||||
## Exact damage regression + visible game identity, no public score submissions.
|
||||
## Exact damage regression + visible game identity. La classifica e' attiva di default
|
||||
## nelle build di gioco; qui, girando come --script, resta spenta.
|
||||
const Player = preload("res://scripts/player.gd")
|
||||
const Grenade = preload("res://scripts/grenade.gd")
|
||||
const Boss = preload("res://scripts/alien_grunt.gd")
|
||||
@@ -41,7 +42,8 @@ func run_test() -> void:
|
||||
if label.text == "Work-Death Balance":
|
||||
title_found = true
|
||||
check(title_found, "menu mostra Work-Death Balance")
|
||||
check(world.leaderboard.disabled, "build di prova non invia punteggi pubblici")
|
||||
check(world.leaderboard.disabled and world.leaderboard.base_url == "",
|
||||
"suite di test: nessun invio alla classifica pubblica")
|
||||
var zombie = load("res://scripts/zombie.gd").new()
|
||||
zombie.player = world.player
|
||||
zombie.position = Vector3(0, 0.05, -3)
|
||||
|
||||
@@ -8,6 +8,7 @@ extends SceneTree
|
||||
## (con display, per gli eventi di puntamento: --rendering-method gl_compatibility)
|
||||
const Profile = preload("res://scripts/player_profile.gd")
|
||||
const StartScreen = preload("res://scripts/start_screen.gd")
|
||||
const Leaderboard = preload("res://scripts/leaderboard.gd")
|
||||
|
||||
var world: Node3D
|
||||
var screen: CanvasLayer
|
||||
@@ -101,10 +102,21 @@ func test_world_menu() -> void:
|
||||
or Input.mouse_mode == Input.MOUSE_MODE_CAPTURED),
|
||||
"playing=%s mode=%s display=%s" % [str(world.player.playing), str(Input.mouse_mode),
|
||||
DisplayServer.get_name()])
|
||||
# Regressione: senza --api= questa e' una build desktop di prova e non deve poter
|
||||
# inviare punteggi alla classifica pubblica (ci sono finite righe "Test").
|
||||
check("senza --api= la build di prova non invia punteggi alla classifica pubblica",
|
||||
world.leaderboard.disabled == true and world.leaderboard.base_url == "",
|
||||
# La classifica e' attiva di default (nessuna configurazione). Il nodo qui e' spento
|
||||
# perche' questa suite gira come --script: le regole si verificano su resolve_base().
|
||||
check("senza argomenti la classifica e' attiva sul servizio pubblico",
|
||||
Leaderboard.resolve_base(PackedStringArray(), false) == Leaderboard.DEFAULT_API_BASE
|
||||
and Leaderboard.DEFAULT_API_BASE == "https://enne2.net/api/zombie-fps",
|
||||
"base=%s" % str(Leaderboard.resolve_base(PackedStringArray(), false)))
|
||||
check("--offline (e --no-api) spengono la classifica per le partite di prova",
|
||||
Leaderboard.resolve_base(PackedStringArray(["--offline"]), false) == ""
|
||||
and Leaderboard.resolve_base(PackedStringArray(["--no-api"]), false) == "")
|
||||
check("--api= vince su --offline e normalizza la barra finale",
|
||||
Leaderboard.resolve_base(PackedStringArray(["--offline", "--api=http://127.0.0.1:8799/"]), false)
|
||||
== "http://127.0.0.1:8799")
|
||||
check("in una suite di test la classifica resta spenta",
|
||||
world.leaderboard.disabled == true and world.leaderboard.base_url == ""
|
||||
and Leaderboard.resolve_base(PackedStringArray(), true) == "",
|
||||
"base=%s disattivata=%s" % [str(world.leaderboard.base_url), str(world.leaderboard.disabled)])
|
||||
world.queue_free()
|
||||
await process_frame
|
||||
|
||||
Reference in New Issue
Block a user