Enhance opening and battlefield visual markers

This commit is contained in:
2026-06-20 05:02:49 +09:00
parent 4dcb584f2c
commit 6ee0b9403e
4 changed files with 56 additions and 8 deletions

View File

@@ -45,7 +45,7 @@ const SETTINGS_SAVE_VERSION := 1
const OPENING_PROLOGUE_PAGES := [
{
"title": "황건의 난",
"body": "누런 머릿수건을 맨 무리가 고을을 불태우고 길을 끊었다. 젊은 조조는 무너지는 질서와 굶주린 백성을 보며 더는 관망할 수 없음을 깨달았다.",
"body": "황건의 난이 일어나자 누런 머릿수건을 맨 무리가 고을을 불태우고 길을 끊었다. 젊은 조조는 무너지는 질서와 굶주린 백성을 보며 더는 관망할 수 없음을 깨달았다.",
"image": OPENING_PROLOGUE_REBELLION_PATH
},
{
@@ -2933,6 +2933,21 @@ func _create_hud() -> void:
opening_bottom_dim.size = Vector2(1280, 264)
opening_prologue_root.add_child(opening_bottom_dim)
var opening_chapter_panel := PanelContainer.new()
opening_chapter_panel.name = "OpeningChapterSeal"
opening_chapter_panel.position = Vector2(56, 36)
opening_chapter_panel.size = Vector2(278, 58)
opening_chapter_panel.custom_minimum_size = Vector2(278, 58)
_apply_panel_style(opening_chapter_panel, "caption")
opening_prologue_root.add_child(opening_chapter_panel)
var opening_chapter_label := Label.new()
opening_chapter_label.text = "제1장 영천으로"
opening_chapter_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
opening_chapter_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
_apply_label_style(opening_chapter_label, UI_PARCHMENT_TEXT, 21)
opening_chapter_panel.add_child(opening_chapter_label)
var opening_caption_panel := PanelContainer.new()
opening_caption_panel.name = "OpeningCaptionScroll"
opening_caption_panel.position = Vector2(56, 500)
@@ -4545,6 +4560,8 @@ func _draw_recovery_terrain_markers(bounds: Rect2i) -> void:
var marker_text := _recovery_marker_text(cell)
if marker_text.is_empty():
continue
var cell_rect := _rect_for_cell(cell)
_draw_tile_marker("recover", cell_rect, Color(1.0, 1.0, 1.0, 0.34), 2.0)
var marker_rect := _recovery_marker_rect(cell)
draw_rect(marker_rect, Color(0.035, 0.022, 0.012, 0.74))
draw_rect(marker_rect, Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.88), false, 1.4)
@@ -4928,7 +4945,7 @@ func _texture_cover_region_source_rect(texture: Texture2D, visible_rect: Rect2,
func _terrain_fill_color(cell: Vector2i, terrain_key: String, has_background: bool) -> Color:
var color := state.get_terrain_color(cell)
var alpha := 0.075 if has_background else 0.34
var alpha := 0.105 if has_background else 0.34
if terrain_key == "W":
alpha += 0.025
elif terrain_key == "C" or terrain_key == "H" or terrain_key == "T":
@@ -5037,7 +5054,7 @@ func _draw_terrain_feature(feature_key: String, rect: Rect2, modulate: Color = C
func _terrain_texture_modulate(cell: Vector2i, terrain_key: String, has_background: bool) -> Color:
var alpha := 0.17 if has_background else 0.58
var alpha := 0.26 if has_background else 0.58
if terrain_key == "W":
alpha += 0.07 if has_background else 0.10
elif terrain_key == "C" or terrain_key == "T":
@@ -5382,6 +5399,10 @@ func _draw_event_foreground_markers() -> void:
func _draw_event_foreground_marker(rect: Rect2, label: String, kind: String, font: Font) -> void:
var color := _event_marker_color(kind)
var tile_marker_key := _event_marker_tile_marker_key(label, kind)
if not tile_marker_key.is_empty():
_draw_tile_marker(tile_marker_key, rect, Color(1.0, 1.0, 1.0, 0.38), 2.0)
draw_rect(rect.grow(-8.0), Color(color.r, color.g, color.b, 0.16), false, 1.5)
var marker_rect := _event_marker_rect(rect)
draw_rect(marker_rect, Color(0.035, 0.022, 0.012, 0.76))
draw_rect(marker_rect.grow(-2.0), Color(color.r, color.g, color.b, 0.72))
@@ -5420,6 +5441,17 @@ func _event_marker_badge_kind(label: String, kind: String) -> String:
return "event"
func _event_marker_tile_marker_key(label: String, kind: String) -> String:
var badge_kind := _event_marker_badge_kind(label, kind)
if badge_kind == "supply":
return "recover"
if badge_kind == "tactic":
return "move"
if badge_kind == "gold" or badge_kind == "objective":
return "objective"
return "select"
func _event_marker_abbrev(label: String, kind: String) -> String:
if kind == "tactic":
return "" if label.contains("유인") else ""
@@ -11695,7 +11727,7 @@ func _update_opening_prologue_page() -> void:
if opening_prologue_body_label != null:
opening_prologue_body_label.text = str(page.get("body", ""))
if opening_prologue_step_label != null:
opening_prologue_step_label.text = "이야기 %d/%d" % [opening_prologue_index + 1, page_count]
opening_prologue_step_label.text = "장면 %d/%d" % [opening_prologue_index + 1, page_count]
if opening_prologue_next_button != null:
opening_prologue_next_button.text = "군막으로" if opening_prologue_index >= page_count - 1 else "다음"
opening_prologue_next_button.tooltip_text = "군막으로 이동합니다." if opening_prologue_index >= page_count - 1 else "다음 이야기로 넘깁니다."