Add generated map badge icons
This commit is contained in:
@@ -33,6 +33,7 @@ const PANEL_TEXTURE_PATH_TEMPLATE := "res://art/ui/panels/panel_%s.png"
|
||||
const BUTTON_TEXTURE_PATH_TEMPLATE := "res://art/ui/buttons/button_%s.png"
|
||||
const TILE_MARKER_TEXTURE_PATH_TEMPLATE := "res://art/ui/tiles/tile_marker_%s.png"
|
||||
const CLASS_ICON_TEXTURE_PATH_TEMPLATE := "res://art/ui/class_icons/class_%s.png"
|
||||
const MAP_BADGE_TEXTURE_PATH_TEMPLATE := "res://art/ui/map_badges/map_badge_%s.png"
|
||||
const TERRAIN_TEXTURE_PATH_TEMPLATE := "res://art/terrain/terrain_%s.png"
|
||||
const OPENING_PROLOGUE_REBELLION_PATH := "res://art/story/opening/yellow_turban_rebellion.png"
|
||||
const OPENING_PROLOGUE_RESOLVE_PATH := "res://art/story/opening/cao_cao_resolves.png"
|
||||
@@ -4530,11 +4531,12 @@ func _draw_recovery_terrain_markers(bounds: Rect2i) -> void:
|
||||
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)
|
||||
var plus_center := marker_rect.position + Vector2(8.0, marker_rect.size.y * 0.5)
|
||||
var plus_color := Color(0.54, 0.86, 0.48, 0.92)
|
||||
draw_line(plus_center + Vector2(-3.0, 0.0), plus_center + Vector2(3.0, 0.0), plus_color, 1.6)
|
||||
draw_line(plus_center + Vector2(0.0, -3.0), plus_center + Vector2(0.0, 3.0), plus_color, 1.6)
|
||||
_draw_ink_text(font, marker_rect.position + Vector2(9.0, 13.0), marker_text, HORIZONTAL_ALIGNMENT_CENTER, marker_rect.size.x - 9.0, 11, Color(0.78, 0.98, 0.62, 0.96))
|
||||
if not _draw_map_badge("recover", marker_rect.grow(3.0), Color(1.0, 1.0, 1.0, 0.96)):
|
||||
var plus_center := marker_rect.position + Vector2(8.0, marker_rect.size.y * 0.5)
|
||||
var plus_color := Color(0.54, 0.86, 0.48, 0.92)
|
||||
draw_line(plus_center + Vector2(-3.0, 0.0), plus_center + Vector2(3.0, 0.0), plus_color, 1.6)
|
||||
draw_line(plus_center + Vector2(0.0, -3.0), plus_center + Vector2(0.0, 3.0), plus_color, 1.6)
|
||||
_draw_ink_text(font, marker_rect.position + Vector2(9.0, 13.0), marker_text, HORIZONTAL_ALIGNMENT_CENTER, marker_rect.size.x - 9.0, 11, Color(0.78, 0.98, 0.62, 0.96))
|
||||
|
||||
|
||||
func _recovery_marker_text(cell: Vector2i) -> String:
|
||||
@@ -4546,7 +4548,7 @@ func _recovery_marker_text(cell: Vector2i) -> String:
|
||||
|
||||
func _recovery_marker_rect(cell: Vector2i) -> Rect2:
|
||||
var cell_rect := _rect_for_cell(cell)
|
||||
var size := Vector2(34.0, 16.0)
|
||||
var size := Vector2(24.0, 24.0)
|
||||
return Rect2(cell_rect.position + Vector2(TILE_SIZE - size.x - 4.0, 4.0), size)
|
||||
|
||||
|
||||
@@ -4903,6 +4905,15 @@ func _load_class_icon_texture(icon_key: String) -> Texture2D:
|
||||
return _load_art_texture(CLASS_ICON_TEXTURE_PATH_TEMPLATE % normalized_key)
|
||||
|
||||
|
||||
func _load_map_badge_texture(badge_key: String) -> Texture2D:
|
||||
var normalized_key := badge_key.strip_edges().to_lower()
|
||||
if normalized_key.is_empty():
|
||||
normalized_key = "event"
|
||||
if not ["objective", "supply", "gold", "tactic", "recover", "event"].has(normalized_key):
|
||||
normalized_key = "event"
|
||||
return _load_art_texture(MAP_BADGE_TEXTURE_PATH_TEMPLATE % normalized_key)
|
||||
|
||||
|
||||
func _load_unit_class_icon_texture(unit: Dictionary) -> Texture2D:
|
||||
return _load_class_icon_texture(_unit_class_icon_key(unit))
|
||||
|
||||
@@ -4925,6 +4936,17 @@ func _draw_tile_marker(marker_key: String, rect: Rect2, modulate: Color = Color.
|
||||
return true
|
||||
|
||||
|
||||
func _draw_map_badge(badge_key: String, rect: Rect2, modulate: Color = Color.WHITE, inset: float = 0.0) -> bool:
|
||||
var texture := _load_map_badge_texture(badge_key)
|
||||
if texture == null:
|
||||
return false
|
||||
var target_rect := rect.grow(-inset)
|
||||
if target_rect.size.x <= 0.0 or target_rect.size.y <= 0.0:
|
||||
return false
|
||||
draw_texture_rect(texture, target_rect, false, modulate)
|
||||
return true
|
||||
|
||||
|
||||
func _terrain_texture_modulate(cell: Vector2i, terrain_key: String, has_background: bool) -> Color:
|
||||
var alpha := 0.17 if has_background else 0.58
|
||||
if terrain_key == "W":
|
||||
@@ -5204,9 +5226,11 @@ func _draw_objective_foreground_markers() -> void:
|
||||
continue
|
||||
var rect := _rect_for_cell(cell)
|
||||
_draw_objective_corner_brackets(rect)
|
||||
var label_rect := Rect2(rect.position + Vector2(rect.size.x - 20.0, 3.0), Vector2(17.0, 16.0))
|
||||
var label_rect := Rect2(rect.position + Vector2(rect.size.x - 25.0, 3.0), Vector2(22.0, 22.0))
|
||||
draw_rect(label_rect, Color(UI_SEAL_RED_DARK.r, UI_SEAL_RED_DARK.g, UI_SEAL_RED_DARK.b, 0.86))
|
||||
draw_rect(label_rect, Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.88), false, 1.2)
|
||||
if _draw_map_badge("objective", label_rect.grow(3.0), Color(1.0, 1.0, 1.0, 0.96)):
|
||||
continue
|
||||
_draw_ink_text(font, label_rect.position + Vector2(0, 12), "목", HORIZONTAL_ALIGNMENT_CENTER, label_rect.size.x, 11, UI_PARCHMENT_TEXT)
|
||||
|
||||
|
||||
@@ -5228,15 +5252,16 @@ func _draw_event_foreground_marker(rect: Rect2, label: String, kind: String, fon
|
||||
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))
|
||||
draw_rect(marker_rect, Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.88), false, 1.2)
|
||||
var text := _event_marker_abbrev(label, kind)
|
||||
_draw_ink_text(font, marker_rect.position + Vector2(0, 12), text, HORIZONTAL_ALIGNMENT_CENTER, marker_rect.size.x, 11, UI_PARCHMENT_TEXT)
|
||||
if not _draw_map_badge(_event_marker_badge_kind(label, kind), marker_rect.grow(3.0), Color(1.0, 1.0, 1.0, 0.96)):
|
||||
var text := _event_marker_abbrev(label, kind)
|
||||
_draw_ink_text(font, marker_rect.position + Vector2(0, 12), text, HORIZONTAL_ALIGNMENT_CENTER, marker_rect.size.x, 11, UI_PARCHMENT_TEXT)
|
||||
var knot := marker_rect.get_center() + Vector2(0.0, -8.0)
|
||||
draw_line(knot + Vector2(-5.0, 0.0), knot + Vector2(5.0, 0.0), Color(0.10, 0.05, 0.02, 0.70), 1.2)
|
||||
draw_line(knot + Vector2(0.0, -4.0), knot + Vector2(0.0, 4.0), Color(0.10, 0.05, 0.02, 0.56), 1.0)
|
||||
|
||||
|
||||
func _event_marker_rect(cell_rect: Rect2) -> Rect2:
|
||||
return Rect2(cell_rect.position + Vector2(4.0, 26.0), Vector2(23.0, 17.0))
|
||||
return Rect2(cell_rect.position + Vector2(4.0, 26.0), Vector2(23.0, 23.0))
|
||||
|
||||
|
||||
func _event_marker_color(kind: String) -> Color:
|
||||
@@ -5249,6 +5274,18 @@ func _event_marker_color(kind: String) -> Color:
|
||||
return Color(UI_MUTED_JADE.r, UI_MUTED_JADE.g, UI_MUTED_JADE.b, 1.0)
|
||||
|
||||
|
||||
func _event_marker_badge_kind(label: String, kind: String) -> String:
|
||||
var normalized_kind := kind.strip_edges().to_lower()
|
||||
var normalized_label := label.strip_edges()
|
||||
if normalized_kind == "gold" or normalized_label.contains("군자금"):
|
||||
return "gold"
|
||||
if normalized_kind == "supply" or normalized_label.contains("보급"):
|
||||
return "supply"
|
||||
if normalized_kind == "tactic" or normalized_label.contains("유인"):
|
||||
return "tactic"
|
||||
return "event"
|
||||
|
||||
|
||||
func _event_marker_abbrev(label: String, kind: String) -> String:
|
||||
if kind == "tactic":
|
||||
return "유" if label.contains("유인") else "전"
|
||||
|
||||
Reference in New Issue
Block a user