diff --git a/runtime/entry/views/guild_page_view.gd b/runtime/entry/views/guild_page_view.gd index 8ccdb373..b05863ae 100644 --- a/runtime/entry/views/guild_page_view.gd +++ b/runtime/entry/views/guild_page_view.gd @@ -13,6 +13,7 @@ const GUILD_DESK_WORLD = preload("res://assets/entry/guild_desk_v001/world.png") const M52_GUILD_BACKGROUND = preload("res://assets/backgrounds/m52_guild_background.png") const M52_Q_GUILD_BACKGROUND = preload("res://assets/backgrounds/m52_q_guild_background.png") const M52_GUILD_RESOURCE_STATUS = preload("res://ui/m52/guild_resource_status.gd") +const M52_GUILD_CONTRACT_BOARD = preload("res://ui/m52/guild_contract_board.gd") const M52_GUILD_HEADER = preload("res://ui/m52/guild_header.gd") const GUILD_DESK_CONTRACT_BOARD = preload("res://assets/entry/guild_desk_v001/contract-board.png") const GUILD_DESK_TOP_LEFT = preload("res://assets/entry/guild_desk_v001/top_rail/left.png") @@ -250,6 +251,13 @@ func _build_overlay(data: Dictionary) -> void: notice.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS notice.mouse_filter = Control.MOUSE_FILTER_IGNORE kiosk_copy_area.add_child(notice) + for legacy_copy in [kiosk_text, contract_reason, market_reason, notice]: + legacy_copy.visible = false + var contract_board := M52_GUILD_CONTRACT_BOARD.new().configure(kiosk_title, contract_copy, market_copy, String(page_data.get("notice", ""))) + contract_board.name = "GuildContractBoardContent" + contract_board.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + contract_board.mouse_filter = Control.MOUSE_FILTER_IGNORE + kiosk_copy_area.add_child(contract_board) var equipment_state: Dictionary = Dictionary(destinations.get("equipment", {})) var party_state: Dictionary = Dictionary(destinations.get("party", {})) diff --git a/runtime/ui/m52/guild_contract_board.gd b/runtime/ui/m52/guild_contract_board.gd new file mode 100644 index 00000000..b17782c9 --- /dev/null +++ b/runtime/ui/m52/guild_contract_board.gd @@ -0,0 +1,43 @@ +class_name ABGM52GuildContractBoard +extends Control + +const UIFactory = preload("res://ui/shared/ui_factory.gd") + +var title_text := "委托板" +var contract_text := "" +var market_text := "" +var notice_text := "" + +func configure(next_title: String, next_contract: String, next_market: String, next_notice: String) -> ABGM52GuildContractBoard: + title_text = next_title + contract_text = next_contract + market_text = next_market + notice_text = next_notice + return self + +func _ready() -> void: + clip_contents = true + _add_copy("GuildKioskText", title_text, Rect2(0.03, 0.04, 0.94, 0.20), 13) + _add_copy("GuildContractReason", contract_text, Rect2(0.04, 0.31, 0.92, 0.24), 9) + _add_copy("GuildMarketReason", market_text, Rect2(0.04, 0.58, 0.92, 0.28), 9) + _add_copy("GuildNotice", notice_text, Rect2(0.03, 0.86, 0.94, 0.13), 8) + +func _add_copy(node_name: String, value: String, area: Rect2, design_size: int) -> void: + var label := UIFactory.label(value, "body", 1.0, Color("#4b3724")) + label.name = node_name + label.anchor_left = area.position.x + label.anchor_top = area.position.y + label.anchor_right = area.end.x + label.anchor_bottom = area.end.y + label.offset_left = 0.0 + label.offset_top = 0.0 + label.offset_right = 0.0 + label.offset_bottom = 0.0 + label.add_theme_font_size_override("font_size", design_size) + label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + label.clip_text = true + label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS + label.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(label)