Keep battlefield observation prompt visible

This commit is contained in:
2026-06-20 23:03:39 +09:00
parent 4d89c03948
commit 9621eba866
2 changed files with 17 additions and 6 deletions

View File

@@ -10916,17 +10916,21 @@ func _update_hud_unit_portrait(unit: Dictionary) -> void:
func _update_cell_info() -> void: func _update_cell_info() -> void:
if cell_info_label == null: if cell_info_label == null:
return return
if cell_info_panel != null:
cell_info_panel.visible = state.is_inside(hover_cell)
if not state.is_inside(hover_cell): if not state.is_inside(hover_cell):
cell_info_label.text = "" var idle_visible := battle_started and state.battle_status == BattleState.STATUS_ACTIVE
cell_info_label.tooltip_text = "전장 칸 위에 올리면 지형과 부대 정보를 볼 수 있습니다." if cell_info_panel != null:
cell_info_panel.visible = idle_visible
cell_info_label.text = "전장 칸 관측 대기" if idle_visible else ""
cell_info_label.tooltip_text = "전장 칸 위에 마우스를 올리면 지형, 회복지, 목표, 부대 정보를 볼 수 있습니다."
if cell_info_icon != null: if cell_info_icon != null:
cell_info_icon.texture = _make_toolbar_icon("terrain") cell_info_icon.texture = _make_toolbar_icon("terrain")
cell_info_icon.set_meta("icon_kind", "terrain") cell_info_icon.set_meta("icon_kind", "terrain")
cell_info_icon.tooltip_text = cell_info_label.tooltip_text
if cell_info_panel != null: if cell_info_panel != null:
_set_control_tree_tooltip(cell_info_panel, cell_info_label.tooltip_text) _set_control_tree_tooltip(cell_info_panel, cell_info_label.tooltip_text)
return return
if cell_info_panel != null:
cell_info_panel.visible = true
var detail_text := _format_cell_info_detail_text(hover_cell) var detail_text := _format_cell_info_detail_text(hover_cell)
cell_info_label.text = _format_cell_info_summary_text(hover_cell) cell_info_label.text = _format_cell_info_summary_text(hover_cell)
cell_info_label.tooltip_text = detail_text cell_info_label.tooltip_text = detail_text

View File

@@ -5664,9 +5664,16 @@ func _check_terrain_and_unit_presentation(failures: Array[String]) -> void:
if scene.state.get_event_marker_kind(Vector2i(4, 6)) != "tactic": if scene.state.get_event_marker_kind(Vector2i(4, 6)) != "tactic":
failures.append("tactical lure marker should expose tactic kind") failures.append("tactical lure marker should expose tactic kind")
scene.hover_cell = Vector2i(-1, -1) scene.hover_cell = Vector2i(-1, -1)
scene.battle_started = true
scene._update_cell_info() scene._update_cell_info()
if scene.cell_info_panel != null and scene.cell_info_panel.visible: if scene.cell_info_panel == null or not scene.cell_info_panel.visible:
failures.append("cell info panel should hide when the cursor is outside the board") failures.append("cell info panel should keep a compact observation prompt during active battle")
elif scene.cell_info_label == null or scene.cell_info_label.text != "전장 칸 관측 대기":
failures.append("idle cell info prompt should explain battlefield observation: %s" % ("" if scene.cell_info_label == null else scene.cell_info_label.text))
elif not scene.cell_info_label.tooltip_text.contains("지형") or not scene.cell_info_label.tooltip_text.contains("부대"):
failures.append("idle cell info prompt should keep detail in tooltip: %s" % scene.cell_info_label.tooltip_text)
elif scene.cell_info_icon == null or str(scene.cell_info_icon.get_meta("icon_kind", "")) != "terrain":
failures.append("idle cell info prompt should use terrain observation icon")
scene.state.select_unit("cao_cao") scene.state.select_unit("cao_cao")
var forecast_enemy: Dictionary = scene.state.get_unit("yellow_turban_1") var forecast_enemy: Dictionary = scene.state.get_unit("yellow_turban_1")
forecast_enemy["pos"] = Vector2i(1, 5) forecast_enemy["pos"] = Vector2i(1, 5)