update
This commit is contained in:
@@ -25,6 +25,8 @@ var dice_start := START_DICE
|
||||
## Nur für `make sim`; fünfzig Partien in Sekunden statt Minuten.
|
||||
var simulation := false
|
||||
var runde := 0 ## laufende Rundennummer, für Anzeige und Messung
|
||||
var ausgeschieden: Array = [] ## Plätze in der Reihenfolge ihres Ausscheidens
|
||||
var cfg_start: Dictionary = {} ## Startaufstellung, fürs Nochmal
|
||||
|
||||
var rng := RandomNumberGenerator.new()
|
||||
var seats: Array = [] ## [{peer, name, ai, count, alive}]
|
||||
@@ -67,6 +69,7 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func setup(cfg: Dictionary) -> void:
|
||||
cfg_start = cfg.duplicate(true)
|
||||
DiceAI.stufe = int(cfg.get("stufe", 1))
|
||||
seats.clear()
|
||||
if cfg.has("seats"):
|
||||
@@ -83,8 +86,11 @@ func setup(cfg: Dictionary) -> void:
|
||||
for p in peers:
|
||||
seats.append({"peer": int(p), "name": String(cfg.names[p]), "ai": false,
|
||||
"count": dice, "alive": true, "verwaist": false})
|
||||
var bots: Array = cfg.get("bots", [])
|
||||
for i in int(cfg.ai):
|
||||
seats.append({"peer": 0, "name": "Bot %d" % (i + 1), "ai": true,
|
||||
var b: Dictionary = bots[i] if i < bots.size() else {}
|
||||
seats.append({"peer": 0, "name": String(b.get("name", "Bot %d" % (i + 1))), "ai": true,
|
||||
"stufe": int(b.get("stufe", DiceAI.stufe)),
|
||||
"count": dice, "alive": true, "verwaist": false})
|
||||
|
||||
# Der Spielserver spielt nicht mit und bekommt deshalb keinen Platz.
|
||||
@@ -108,6 +114,7 @@ func setup(cfg: Dictionary) -> void:
|
||||
hud.challenge_pressed.connect(_on_challenge_pressed)
|
||||
hud.exact_pressed.connect(_on_exact_pressed)
|
||||
hud.rematch_pressed.connect(_on_rematch)
|
||||
hud.karte_pressed.connect(_on_karte)
|
||||
hud.booster_chosen.connect(_on_booster_chosen)
|
||||
hud.quit_pressed.connect(_on_quit)
|
||||
hud.pause_changed.connect(_on_pause_changed)
|
||||
@@ -209,6 +216,7 @@ func _host_loop() -> void:
|
||||
winner = s.name
|
||||
banner = "%s gewinnt" % winner
|
||||
_log(banner)
|
||||
Kampagne.ergebnis(seats, ausgeschieden)
|
||||
_push_state()
|
||||
|
||||
|
||||
@@ -433,6 +441,7 @@ func _phase_bid() -> Dictionary:
|
||||
await _sleep(1.1)
|
||||
# Erst planen, dann passend dazu eine Münze werfen. Die kann die
|
||||
# Lage ändern - also danach noch einmal entscheiden.
|
||||
DiceAI.stufe = int(seats[turn].get("stufe", DiceAI.stufe))
|
||||
var a := DiceAI.choose_action(host_values[turn], _total_dice(), bid,
|
||||
must_bid.get(turn, false), rng, _bot_wissen(turn))
|
||||
if await _bot_muenze(turn, a):
|
||||
@@ -788,7 +797,19 @@ func _on_rematch() -> void:
|
||||
for s in seats:
|
||||
if s.ai:
|
||||
bots += 1
|
||||
Net.rematch = {"name": Net.player_name, "ai": bots, "stufe": DiceAI.stufe}
|
||||
var kap := ""
|
||||
if Kampagne.kampagnenpartie and cfg_start.get("bots", []).size() > 0:
|
||||
kap = String(cfg_start.bots[0].name)
|
||||
Net.rematch = {"name": Net.player_name, "ai": bots, "stufe": int(cfg_start.get("stufe", 1)),
|
||||
"bots": cfg_start.get("bots", []), "kampagne": kap}
|
||||
_on_quit()
|
||||
|
||||
|
||||
## Zurück auf die Seekarte: das frisch geladene Menü zeigt sie sofort.
|
||||
func _on_karte() -> void:
|
||||
if _quitting:
|
||||
return
|
||||
Kampagne.zur_karte = true
|
||||
_on_quit()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user