feat(client): harnesses show the considering-state around the call
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,12 +7,14 @@ extends Control
|
|||||||
const DmService = preload("res://scripts/net/dm_service.gd")
|
const DmService = preload("res://scripts/net/dm_service.gd")
|
||||||
const HttpTransport = preload("res://scripts/net/http_transport.gd")
|
const HttpTransport = preload("res://scripts/net/http_transport.gd")
|
||||||
const FallbackLibrary = preload("res://scripts/net/fallback_library.gd")
|
const FallbackLibrary = preload("res://scripts/net/fallback_library.gd")
|
||||||
|
const ConsideringIndicator = preload("res://scripts/ui/considering_indicator.gd")
|
||||||
|
|
||||||
var _service: DmService
|
var _service: DmService
|
||||||
var _log: CanonLog
|
var _log: CanonLog
|
||||||
var _label: RichTextLabel
|
var _label: RichTextLabel
|
||||||
var _status: Label
|
var _status: Label
|
||||||
var _button: Button
|
var _button: Button
|
||||||
|
var _indicator: ConsideringIndicator
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -39,11 +41,15 @@ func _ready() -> void:
|
|||||||
_status = Label.new()
|
_status = Label.new()
|
||||||
vbox.add_child(_status)
|
vbox.add_child(_status)
|
||||||
|
|
||||||
|
_indicator = ConsideringIndicator.new()
|
||||||
|
add_child(_indicator)
|
||||||
|
|
||||||
|
|
||||||
func _on_narrate_pressed() -> void:
|
func _on_narrate_pressed() -> void:
|
||||||
_button.disabled = true
|
_button.disabled = true
|
||||||
_status.text = "…narrating…"
|
_indicator.start(_status)
|
||||||
var r := await _service.narrate(_log)
|
var r := await _service.narrate(_log)
|
||||||
|
_indicator.stop()
|
||||||
_label.text = r.display_text
|
_label.text = r.display_text
|
||||||
for f in r.facts:
|
for f in r.facts:
|
||||||
_log.add_fact(f)
|
_log.add_fact(f)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const MoveApplier = preload("res://scripts/npc/move_applier.gd")
|
|||||||
const ContentDB = preload("res://scripts/content/content_db.gd")
|
const ContentDB = preload("res://scripts/content/content_db.gd")
|
||||||
const HttpTransport = preload("res://scripts/net/http_transport.gd")
|
const HttpTransport = preload("res://scripts/net/http_transport.gd")
|
||||||
const FallbackLibrary = preload("res://scripts/net/fallback_library.gd")
|
const FallbackLibrary = preload("res://scripts/net/fallback_library.gd")
|
||||||
|
const ConsideringIndicator = preload("res://scripts/ui/considering_indicator.gd")
|
||||||
|
|
||||||
const NPC_ID := "fenn"
|
const NPC_ID := "fenn"
|
||||||
|
|
||||||
@@ -20,6 +21,8 @@ var _canon_log: CanonLog
|
|||||||
var _output: RichTextLabel
|
var _output: RichTextLabel
|
||||||
var _entry: LineEdit
|
var _entry: LineEdit
|
||||||
var _speak_btn: Button
|
var _speak_btn: Button
|
||||||
|
var _status: Label
|
||||||
|
var _indicator: ConsideringIndicator
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -60,6 +63,12 @@ func _ready() -> void:
|
|||||||
_speak_btn.pressed.connect(_on_speak)
|
_speak_btn.pressed.connect(_on_speak)
|
||||||
vbox.add_child(_speak_btn)
|
vbox.add_child(_speak_btn)
|
||||||
|
|
||||||
|
_status = Label.new()
|
||||||
|
vbox.add_child(_status)
|
||||||
|
|
||||||
|
_indicator = ConsideringIndicator.new()
|
||||||
|
add_child(_indicator)
|
||||||
|
|
||||||
|
|
||||||
func _on_speak() -> void:
|
func _on_speak() -> void:
|
||||||
var utterance := _entry.text
|
var utterance := _entry.text
|
||||||
@@ -72,8 +81,10 @@ func _on_speak() -> void:
|
|||||||
var disposition := int(_game_state.npc_dispositions.get(NPC_ID, 0))
|
var disposition := int(_game_state.npc_dispositions.get(NPC_ID, 0))
|
||||||
var available := NpcContent.available_moves(_content.npc(NPC_ID), _game_state, _canon_log)
|
var available := NpcContent.available_moves(_content.npc(NPC_ID), _game_state, _canon_log)
|
||||||
|
|
||||||
|
_indicator.start(_status)
|
||||||
var r: NpcResult = await _service.speak(
|
var r: NpcResult = await _service.speak(
|
||||||
NPC_ID, utterance, _canon_log, disposition, available)
|
NPC_ID, utterance, _canon_log, disposition, available)
|
||||||
|
_indicator.stop()
|
||||||
|
|
||||||
# Apply state explicitly (§2) — the service applied nothing.
|
# Apply state explicitly (§2) — the service applied nothing.
|
||||||
MoveApplier.apply(r.valid_moves, _game_state, _canon_log, _content, NPC_ID)
|
MoveApplier.apply(r.valid_moves, _game_state, _canon_log, _content, NPC_ID)
|
||||||
|
|||||||
Reference in New Issue
Block a user