Clarify recovery terrain markers

This commit is contained in:
2026-06-20 06:58:25 +09:00
parent 65667b261b
commit 345ed20e4a
2 changed files with 47 additions and 6 deletions

View File

@@ -99,6 +99,8 @@ const BATTLE_PRESENTATION_STEP_GAP := 0.08
const BATTLE_PRESENTATION_FEEDBACK_LAG := 0.10
const UNIT_MOVE_ANIMATION_DURATION := 0.18
const UNIT_IDLE_PHASE_SPEED := 2.4
const RECOVERY_TERRAIN_MARKER_SIZE := Vector2(30, 30)
const RECOVERY_TERRAIN_AMOUNT_BADGE_SIZE := Vector2(24, 12)
const TARGET_PREVIEW_BADGE_SIZE := Vector2(122, 24)
const TARGET_PREVIEW_BADGE_ICON_SIZE := Vector2(18, 18)
const HOVER_INFO_BADGE_ICON_SIZE := Vector2(19, 19)
@@ -4986,16 +4988,39 @@ func _draw_recovery_terrain_markers(bounds: Rect2i) -> void:
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)
_draw_tile_marker("recover", cell_rect, _recovery_tile_marker_modulate(cell), 1.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)
if not _draw_map_badge("recover", marker_rect.grow(3.0), Color(1.0, 1.0, 1.0, 0.96)):
draw_rect(marker_rect.grow(1.0), Color(0.018, 0.014, 0.010, 0.78))
draw_rect(marker_rect.grow(1.0), Color(UI_OLD_BRONZE.r, UI_OLD_BRONZE.g, UI_OLD_BRONZE.b, 0.94), false, 1.6)
if _draw_map_badge("recover", marker_rect.grow(2.0), Color(1.0, 1.0, 1.0, 0.98)):
_draw_recovery_marker_amount(font, marker_rect, marker_text)
else:
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))
_draw_recovery_marker_amount(font, marker_rect, marker_text)
func _draw_recovery_marker_amount(font: Font, marker_rect: Rect2, marker_text: String) -> void:
var text_rect := _recovery_marker_amount_rect(marker_rect)
draw_rect(text_rect, Color(0.030, 0.018, 0.010, 0.82))
draw_rect(text_rect, Color(0.58, 0.82, 0.42, 0.78), false, 1.0)
_draw_ink_text(
font,
text_rect.position + Vector2(0.0, text_rect.size.y - 2.0),
marker_text,
HORIZONTAL_ALIGNMENT_CENTER,
text_rect.size.x,
10,
Color(0.82, 1.0, 0.62, 0.98)
)
func _recovery_tile_marker_modulate(cell: Vector2i) -> Color:
var heal := maxi(0, state.get_terrain_heal(cell))
var alpha := 0.42 + minf(float(heal) * 0.012, 0.12)
return Color(1.0, 1.0, 1.0, alpha)
func _recovery_marker_text(cell: Vector2i) -> String:
@@ -5007,10 +5032,18 @@ func _recovery_marker_text(cell: Vector2i) -> String:
func _recovery_marker_rect(cell: Vector2i) -> Rect2:
var cell_rect := _rect_for_cell(cell)
var size := Vector2(24.0, 24.0)
var size := RECOVERY_TERRAIN_MARKER_SIZE
return Rect2(cell_rect.position + Vector2(TILE_SIZE - size.x - 4.0, 4.0), size)
func _recovery_marker_amount_rect(marker_rect: Rect2) -> Rect2:
var size := RECOVERY_TERRAIN_AMOUNT_BADGE_SIZE
return Rect2(
marker_rect.position + Vector2((marker_rect.size.x - size.x) * 0.5, marker_rect.size.y - size.y - 1.0),
size
)
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))