Quiet repeated map markers
This commit is contained in:
@@ -24,6 +24,11 @@ const FORMATION_OVERLAY_COLOR := Color(0.18, 0.38, 0.34, 0.30)
|
||||
const OBJECTIVE_OVERLAY_COLOR := Color(0.58, 0.18, 0.12, 0.28)
|
||||
const THREAT_OVERLAY_COLOR := Color(0.76, 0.060, 0.035, 0.20)
|
||||
const THREAT_BORDER_COLOR := Color(0.86, 0.18, 0.10, 0.48)
|
||||
const OBJECTIVE_BASE_MARKER_ALPHA := 0.16
|
||||
const OBJECTIVE_BASE_FILL_SCALE := 0.14
|
||||
const RECOVERY_TILE_MARKER_BASE_ALPHA := 0.060
|
||||
const RECOVERY_TILE_MARKER_HEAL_ALPHA := 0.003
|
||||
const EVENT_TILE_MARKER_ALPHA := 0.070
|
||||
const BGM_MENU_PATH := "res://audio/bgm/menu_camp_dawn_theme.wav"
|
||||
const BGM_BATTLE_PATH := "res://audio/bgm/battle_yingchuan_march.wav"
|
||||
const BGM_TRACK_LABELS := {
|
||||
@@ -6469,6 +6474,8 @@ func _draw_recovery_terrain_markers(bounds: Rect2i) -> void:
|
||||
var marker_text := _recovery_marker_text(cell)
|
||||
if marker_text.is_empty():
|
||||
continue
|
||||
if not _should_draw_recovery_terrain_marker(cell):
|
||||
continue
|
||||
var cell_rect := _rect_for_cell(cell)
|
||||
_draw_tile_marker("recover", cell_rect, _recovery_tile_marker_modulate(cell), 1.0)
|
||||
var marker_rect := _recovery_marker_rect(cell)
|
||||
@@ -6501,7 +6508,7 @@ func _draw_recovery_marker_amount(font: Font, marker_rect: Rect2, marker_text: S
|
||||
|
||||
func _recovery_tile_marker_modulate(cell: Vector2i) -> Color:
|
||||
var heal := maxi(0, state.get_terrain_heal(cell))
|
||||
var alpha := 0.18 + minf(float(heal) * 0.007, 0.07)
|
||||
var alpha := RECOVERY_TILE_MARKER_BASE_ALPHA + minf(float(heal) * RECOVERY_TILE_MARKER_HEAL_ALPHA, 0.035)
|
||||
return Color(1.0, 1.0, 1.0, alpha)
|
||||
|
||||
|
||||
@@ -6512,6 +6519,19 @@ func _recovery_marker_text(cell: Vector2i) -> String:
|
||||
return "+%d" % heal
|
||||
|
||||
|
||||
func _should_draw_recovery_terrain_marker(cell: Vector2i) -> bool:
|
||||
var heal := state.get_terrain_heal(cell)
|
||||
if heal <= 0:
|
||||
return false
|
||||
var terrain_key := state.get_terrain_key(cell)
|
||||
for neighbor in [cell + Vector2i(-1, 0), cell + Vector2i(0, -1)]:
|
||||
if not state.is_inside(neighbor):
|
||||
continue
|
||||
if state.get_terrain_key(neighbor) == terrain_key and state.get_terrain_heal(neighbor) == heal:
|
||||
return false
|
||||
return true
|
||||
|
||||
|
||||
func _recovery_marker_rect(cell: Vector2i) -> Rect2:
|
||||
var cell_rect := _rect_for_cell(cell)
|
||||
var size := RECOVERY_TERRAIN_MARKER_SIZE
|
||||
@@ -6526,6 +6546,16 @@ func _recovery_marker_amount_rect(marker_rect: Rect2) -> Rect2:
|
||||
)
|
||||
|
||||
|
||||
func _should_draw_objective_map_marker(cell: Vector2i) -> bool:
|
||||
var objective_cells := state.get_objective_cells()
|
||||
if not objective_cells.has(cell):
|
||||
return false
|
||||
for neighbor in [cell + Vector2i(-1, 0), cell + Vector2i(0, -1)]:
|
||||
if objective_cells.has(neighbor) and _cell_is_in_visible_bounds(neighbor):
|
||||
return false
|
||||
return true
|
||||
|
||||
|
||||
func _draw_silk_map_frame(board_rect: Rect2) -> void:
|
||||
var padding := MAP_SCROLL_FRAME_PADDING
|
||||
var top_rod := Rect2(board_rect.position + Vector2(-padding, -padding), Vector2(board_rect.size.x + padding * 2.0, 7.0))
|
||||
@@ -7366,12 +7396,14 @@ func _draw_objective_foreground_markers() -> void:
|
||||
for cell in state.get_objective_cells():
|
||||
if not state.is_inside(cell) or not _cell_is_in_visible_bounds(cell):
|
||||
continue
|
||||
if not _should_draw_objective_map_marker(cell):
|
||||
continue
|
||||
var rect := _rect_for_cell(cell)
|
||||
_draw_objective_corner_brackets(rect)
|
||||
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)):
|
||||
draw_rect(label_rect, Color(UI_SEAL_RED_DARK.r, UI_SEAL_RED_DARK.g, UI_SEAL_RED_DARK.b, 0.64))
|
||||
draw_rect(label_rect, Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.72), false, 1.1)
|
||||
if _draw_map_badge("objective", label_rect.grow(3.0), Color(1.0, 1.0, 1.0, 0.88)):
|
||||
continue
|
||||
_draw_ink_text(font, label_rect.position + Vector2(0, 12), "목", HORIZONTAL_ALIGNMENT_CENTER, label_rect.size.x, 11, UI_PARCHMENT_TEXT)
|
||||
|
||||
@@ -7392,18 +7424,18 @@ func _draw_event_foreground_marker(rect: Rect2, label: String, kind: String, fon
|
||||
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.18), 5.0)
|
||||
draw_rect(rect.grow(-8.0), Color(color.r, color.g, color.b, 0.08), false, 1.1)
|
||||
_draw_tile_marker(tile_marker_key, rect, Color(1.0, 1.0, 1.0, EVENT_TILE_MARKER_ALPHA), 7.0)
|
||||
draw_rect(rect.grow(-10.0), Color(color.r, color.g, color.b, 0.040), false, 0.9)
|
||||
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))
|
||||
draw_rect(marker_rect, Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.88), false, 1.2)
|
||||
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)):
|
||||
draw_rect(marker_rect, Color(0.035, 0.022, 0.012, 0.64))
|
||||
draw_rect(marker_rect.grow(-2.0), Color(color.r, color.g, color.b, 0.58))
|
||||
draw_rect(marker_rect, Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.70), false, 1.0)
|
||||
if not _draw_map_badge(_event_marker_badge_kind(label, kind), marker_rect.grow(3.0), Color(1.0, 1.0, 1.0, 0.86)):
|
||||
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)
|
||||
draw_line(knot + Vector2(-5.0, 0.0), knot + Vector2(5.0, 0.0), Color(0.10, 0.05, 0.02, 0.48), 1.0)
|
||||
draw_line(knot + Vector2(0.0, -4.0), knot + Vector2(0.0, 4.0), Color(0.10, 0.05, 0.02, 0.36), 0.9)
|
||||
|
||||
|
||||
func _event_marker_rect(cell_rect: Rect2) -> Rect2:
|
||||
@@ -7463,22 +7495,22 @@ func _event_marker_abbrev(label: String, kind: String) -> String:
|
||||
func _draw_objective_corner_brackets(rect: Rect2) -> void:
|
||||
var bracket := 12.0
|
||||
var inset := 4.0
|
||||
var line_color := Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.95)
|
||||
var shadow := Color(0.02, 0.012, 0.006, 0.88)
|
||||
var line_color := Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.56)
|
||||
var shadow := Color(0.02, 0.012, 0.006, 0.34)
|
||||
var corners := [
|
||||
rect.position + Vector2(inset, inset),
|
||||
Vector2(rect.end.x - inset, rect.position.y + inset),
|
||||
rect.end - Vector2(inset, inset),
|
||||
Vector2(rect.position.x + inset, rect.end.y - inset)
|
||||
]
|
||||
_draw_objective_corner(corners[0], Vector2.RIGHT, Vector2.DOWN, bracket, shadow, 4.0)
|
||||
_draw_objective_corner(corners[1], Vector2.LEFT, Vector2.DOWN, bracket, shadow, 4.0)
|
||||
_draw_objective_corner(corners[2], Vector2.LEFT, Vector2.UP, bracket, shadow, 4.0)
|
||||
_draw_objective_corner(corners[3], Vector2.RIGHT, Vector2.UP, bracket, shadow, 4.0)
|
||||
_draw_objective_corner(corners[0], Vector2.RIGHT, Vector2.DOWN, bracket, line_color, 2.0)
|
||||
_draw_objective_corner(corners[1], Vector2.LEFT, Vector2.DOWN, bracket, line_color, 2.0)
|
||||
_draw_objective_corner(corners[2], Vector2.LEFT, Vector2.UP, bracket, line_color, 2.0)
|
||||
_draw_objective_corner(corners[3], Vector2.RIGHT, Vector2.UP, bracket, line_color, 2.0)
|
||||
_draw_objective_corner(corners[0], Vector2.RIGHT, Vector2.DOWN, bracket, shadow, 2.4)
|
||||
_draw_objective_corner(corners[1], Vector2.LEFT, Vector2.DOWN, bracket, shadow, 2.4)
|
||||
_draw_objective_corner(corners[2], Vector2.LEFT, Vector2.UP, bracket, shadow, 2.4)
|
||||
_draw_objective_corner(corners[3], Vector2.RIGHT, Vector2.UP, bracket, shadow, 2.4)
|
||||
_draw_objective_corner(corners[0], Vector2.RIGHT, Vector2.DOWN, bracket, line_color, 1.35)
|
||||
_draw_objective_corner(corners[1], Vector2.LEFT, Vector2.DOWN, bracket, line_color, 1.35)
|
||||
_draw_objective_corner(corners[2], Vector2.LEFT, Vector2.UP, bracket, line_color, 1.35)
|
||||
_draw_objective_corner(corners[3], Vector2.RIGHT, Vector2.UP, bracket, line_color, 1.35)
|
||||
|
||||
|
||||
func _draw_objective_corner(origin: Vector2, x_dir: Vector2, y_dir: Vector2, length: float, color: Color, width: float) -> void:
|
||||
@@ -7488,9 +7520,12 @@ func _draw_objective_corner(origin: Vector2, x_dir: Vector2, y_dir: Vector2, len
|
||||
|
||||
func _draw_overlays() -> void:
|
||||
for cell in state.get_objective_cells():
|
||||
if not state.is_inside(cell) or not _cell_is_in_visible_bounds(cell):
|
||||
continue
|
||||
if not _should_draw_objective_map_marker(cell):
|
||||
continue
|
||||
var objective_rect := _rect_for_cell(cell)
|
||||
_draw_objective_seal_marker(objective_rect)
|
||||
_draw_tactical_tile_overlay("objective", objective_rect, OBJECTIVE_OVERLAY_COLOR, UI_SEAL_RED, 0.56, 0.30, 6.0)
|
||||
_draw_tactical_tile_overlay("objective", objective_rect, OBJECTIVE_OVERLAY_COLOR, UI_SEAL_RED, OBJECTIVE_BASE_MARKER_ALPHA, OBJECTIVE_BASE_FILL_SCALE, 8.0)
|
||||
|
||||
_draw_hovered_ai_zone_overlay()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user