From c58b1f8ed8854400be32de9d50bfbf8542c79394 Mon Sep 17 00:00:00 2001 From: jkboy Date: Sat, 10 May 2025 21:20:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=9A=84ui=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_development/gameplay/gameplay.gd | 390 +++ .../task_development/gameplay/gameplay.gd.uid | 1 + .../task_development/gameplay/gameplay.tscn | 1394 +++++++++ .../gameplay/gameplay_option_button.tres | 17 + .../key_output/key_output.png | Bin 0 -> 16317 bytes .../key_output/key_output.png.import | 34 + .../task_development/platform/platform.gd | 278 ++ .../task_development/platform/platform.gd.uid | 1 + .../task_development/platform/platform.tscn | 488 ++++ .../task_development/platform/platform_1.png | Bin 0 -> 5757 bytes .../platform/platform_1.png.import | 34 + .../task_development/platform/platform_2.png | Bin 0 -> 2490 bytes .../platform/platform_2.png.import | 34 + .../task_development/proposal/proposal.gd | 16 + .../task_development/proposal/proposal.gd.uid | 1 + .../task_development/proposal/proposal.tscn | 632 +++++ .../task_development/strategy/strategy.gd | 291 ++ .../task_development/strategy/strategy.gd.uid | 1 + .../task_development/strategy/strategy.tscn | 351 +++ UI/popup/task_development/task_development.gd | 362 +++ .../task_development/task_development.gd.uid | 1 + .../task_development/task_development.tscn | 548 ++++ UI/popup/task_development/task_general.png | Bin 0 -> 101151 bytes .../task_development/task_general.png.import | 34 + UI/popup/task_development/theme/theme.gd | 369 +++ UI/popup/task_development/theme/theme.gd.uid | 1 + UI/popup/task_development/theme/theme.tscn | 2492 +++++++++++++++++ .../theme/theme_option_button.tres | 17 + 28 files changed, 7787 insertions(+) create mode 100644 UI/popup/task_development/gameplay/gameplay.gd create mode 100644 UI/popup/task_development/gameplay/gameplay.gd.uid create mode 100644 UI/popup/task_development/gameplay/gameplay.tscn create mode 100644 UI/popup/task_development/gameplay/gameplay_option_button.tres create mode 100644 UI/popup/task_development/key_output/key_output.png create mode 100644 UI/popup/task_development/key_output/key_output.png.import create mode 100644 UI/popup/task_development/platform/platform.gd create mode 100644 UI/popup/task_development/platform/platform.gd.uid create mode 100644 UI/popup/task_development/platform/platform.tscn create mode 100644 UI/popup/task_development/platform/platform_1.png create mode 100644 UI/popup/task_development/platform/platform_1.png.import create mode 100644 UI/popup/task_development/platform/platform_2.png create mode 100644 UI/popup/task_development/platform/platform_2.png.import create mode 100644 UI/popup/task_development/proposal/proposal.gd create mode 100644 UI/popup/task_development/proposal/proposal.gd.uid create mode 100644 UI/popup/task_development/proposal/proposal.tscn create mode 100644 UI/popup/task_development/strategy/strategy.gd create mode 100644 UI/popup/task_development/strategy/strategy.gd.uid create mode 100644 UI/popup/task_development/strategy/strategy.tscn create mode 100644 UI/popup/task_development/task_development.gd create mode 100644 UI/popup/task_development/task_development.gd.uid create mode 100644 UI/popup/task_development/task_development.tscn create mode 100644 UI/popup/task_development/task_general.png create mode 100644 UI/popup/task_development/task_general.png.import create mode 100644 UI/popup/task_development/theme/theme.gd create mode 100644 UI/popup/task_development/theme/theme.gd.uid create mode 100644 UI/popup/task_development/theme/theme.tscn create mode 100644 UI/popup/task_development/theme/theme_option_button.tres diff --git a/UI/popup/task_development/gameplay/gameplay.gd b/UI/popup/task_development/gameplay/gameplay.gd new file mode 100644 index 0000000..d3bc2a6 --- /dev/null +++ b/UI/popup/task_development/gameplay/gameplay.gd @@ -0,0 +1,390 @@ +# gameplay.gd (更新版) +extends NinePatchRect + +# UI Node References +@onready var list_container = $Option/Info +@onready var previous_button = $Title/previous/Button +@onready var next_button = $Title/next/Button +@onready var title_label = $Title/Title + +# Configuration +var items_per_page: int = 7 # 每页显示的选项数量 + +# Data Storage +var gameplay_list_nodes: Array[VBoxContainer] = [] # 存储 List_1, List_2 等节点 +var option_nodes_per_list: Array = [] # 存储每个 List 对应的 option_X 按钮数组 +var all_enabled_gameplays: Array = [] # 存储筛选后的玩法数据 { "name": String, "data": Dictionary } + +# State +var total_pages: int = 0 +var current_page_index: int = 0 +var selected_gameplay_key: String = "" # 当前逻辑上选中的项的 Key (用于确认) +var currently_selected_button: Button = null # 当前高亮/聚焦的按钮节点引用 +var initial_key_to_highlight: String = "" # 弹窗打开时需要高亮的 Key (由父节点设置) + +func _ready(): + # 1. 获取 List 节点 (与原版一致) + for i in range(1, 4): # 检查 List_1, List_2, List_3 + var list_node = list_container.get_node_or_null("List_" + str(i)) + if list_node: + gameplay_list_nodes.append(list_node) + else: + break + + if gameplay_list_nodes.is_empty(): + printerr("错误:在 gameplay.tscn 中未找到 List 节点!无法显示选项。") + set_process(false) + return + + # 2. 获取每个 List 内的 Option 节点 (与原版一致) + for list_node in gameplay_list_nodes: + var current_list_options: Array = [] + for i in range(1, items_per_page + 1): + var option_node = list_node.get_node_or_null("option_" + str(i)) + if option_node and option_node is Button: + current_list_options.append(option_node) + else: + push_warning("警告:在 %s 中未能找到 option_%d 按钮" % [list_node.name, i]) + option_nodes_per_list.append(current_list_options) + + # 3. 连接按钮信号 (与原版一致) + if previous_button: + if not previous_button.pressed.is_connected(_on_previous_pressed): + previous_button.pressed.connect(_on_previous_pressed) + else: printerr("错误:在 gameplay.tscn 中未找到 Previous 按钮") + + if next_button: + if not next_button.pressed.is_connected(_on_next_pressed): + next_button.pressed.connect(_on_next_pressed) + else: printerr("错误:在 gameplay.tscn 中未找到 Next 按钮") + + # 4. 连接 visibility_changed 信号 (与原版一致) + if not is_connected("visibility_changed", _on_visibility_changed): + visibility_changed.connect(_on_visibility_changed) + + # 5. 移除 _ready 中的初始数据加载和显示更新 + # 这些逻辑现在完全由 _on_visibility_changed -> reset_display 处理 + +# --- Visibility Change Handler --- +func _on_visibility_changed(): + if is_visible_in_tree(): + print("Gameplay: 弹窗变为可见,调用 reset_display()") + reset_display() # 当变为可见时调用 reset + # else: # 可选:隐藏时的清理逻辑 + # print("Gameplay: 弹窗变为隐藏。") + +# --- 新增:用于父节点设置初始选中项 --- +func set_initial_selection(key: String): + """ + 由父节点 (task_development) 在显示此弹窗前调用, + 传递当前在 task_info 中选中的玩法 Key。 + """ + initial_key_to_highlight = key + print("Gameplay: 父节点设置初始高亮 Key 为: '%s'" % initial_key_to_highlight) + + +# --- Data Processing and Display Logic --- + +func _process_gameplay_data(all_gameplays_data: Dictionary): + """【修改】根据从 GameState 获取的玩法数据,筛选出启用的玩法,并计算总页数。""" + all_enabled_gameplays.clear() + if all_gameplays_data.is_empty(): + push_warning("警告:接收到的玩法数据为空。") + total_pages = 0 + return + + # 遍历从 GameState 获取的玩法字典 + for gameplay_name in all_gameplays_data: + var gameplay_info = all_gameplays_data[gameplay_name] + # 检查是否为字典且 "enabled" 字段为 true + if typeof(gameplay_info) == TYPE_DICTIONARY and gameplay_info.get("enabled", false) == true: + all_enabled_gameplays.append({"name": gameplay_name, "data": gameplay_info}) + # else: # Debugging: 可以取消注释来看哪些被过滤了 + # print("Gameplay: 过滤掉未启用或格式错误的玩法: ", gameplay_name) + + # 根据筛选结果计算总页数 + if items_per_page > 0: + total_pages = ceil(float(all_enabled_gameplays.size()) / items_per_page) + else: + total_pages = 0 + printerr("错误:items_per_page 为零,无法计算页数。") + + print("Gameplay: 处理完成,找到 %d 个启用的玩法,共 %d 页。" % [all_enabled_gameplays.size(), total_pages]) + + +func reset_display(): + """【修改】重置状态,从 GameState 重新加载数据,并准备更新显示。""" + print("Gameplay: 重置显示状态 (reset_display)。") + # 1. 重置本地状态变量 + currently_selected_button = null + selected_gameplay_key = "" + # initial_key_to_highlight 由 set_initial_selection 设置,这里不清空 + + # 2. 【修改】从 GameState 重新加载并处理数据 + if not GameState: + printerr("错误:GameState 在 reset_display 期间不可用。") + total_pages = 0 + all_enabled_gameplays.clear() + _update_display() # 即使没有数据也要更新显示(显示空状态) + return + + var task_dev_data = GameState.get_value("task_development", {}) + if task_dev_data.is_empty(): + printerr("错误:从 GameState 获取 'task_development' 数据失败。") + total_pages = 0 + all_enabled_gameplays.clear() + else: + var all_gameplays_data = task_dev_data.get("gameplays", {}) + _process_gameplay_data(all_gameplays_data) # 重新处理数据,计算 total_pages + + # 3. 【修改】根据 initial_key_to_highlight 确定初始页面 + current_page_index = 0 # 默认为第一页 + var found_initial_key = false + if total_pages > 0 and not initial_key_to_highlight.is_empty(): + # 查找 initial_key_to_highlight 所在的索引和页面 + for i in range(all_enabled_gameplays.size()): + if all_enabled_gameplays[i].name == initial_key_to_highlight: + current_page_index = int(floor(float(i) / items_per_page)) + found_initial_key = true + print("Gameplay: 找到需要初始高亮的 Key '%s' 在索引 %d, 目标页面 %d" % [initial_key_to_highlight, i, current_page_index]) + break # 找到了,停止循环 + if not found_initial_key: + print("Gameplay: 需要初始高亮的 Key '%s' 未在启用的玩法中找到,将显示第一页。" % initial_key_to_highlight) + # 保持 current_page_index 为 0 + initial_key_to_highlight = "" # 清空,避免后续 _update_display 尝试高亮不存在的项 + + # 确保页面索引有效 + if total_pages == 0: + current_page_index = 0 + elif current_page_index >= total_pages: + current_page_index = total_pages - 1 + elif current_page_index < 0: + current_page_index = 0 + + # 4. 触发显示更新 + _update_display() + +func _update_display(): + """【更新版】更新列表的可见性并填充当前页面的内容。 + 现在将“经验”和“成本”显示为整数。 + """ + # --- 处理无数据情况 --- + if gameplay_list_nodes.is_empty(): + print("Gameplay: 无可用的 List 节点。") + if title_label: title_label.text = "玩法选择" + return + + if total_pages == 0: + for list_node in gameplay_list_nodes: list_node.visible = false + print("Gameplay: 没有启用的玩法选项可供显示。") + if title_label: title_label.text = "玩法选择 (无可用)" + # 确保按钮也禁用或隐藏 + if previous_button: previous_button.disabled = true + if next_button: next_button.disabled = true + return + else: + # 确保按钮状态正确 (启用/禁用基于页数) + if previous_button: previous_button.disabled = (total_pages <= 1) + if next_button: next_button.disabled = (total_pages <= 1) + + + # --- 更新页面索引 (循环) --- + # 注意: reset_display 设置了初始页, 取模主要用于翻页 + if total_pages > 0 : # 避免除以零 + current_page_index = current_page_index % total_pages + if current_page_index < 0: + current_page_index += total_pages + else: + current_page_index = 0 + + + # --- 更新标题 --- + if title_label: + var display_page_number = current_page_index + 1 # 显示给用户的页码从1开始 + title_label.text = "玩法选择 %d/%d" % [display_page_number, total_pages] + + # --- 更新 List 可见性 --- + # 确保只有一个 List 节点是可见的,即当前页对应的 List + for i in range(gameplay_list_nodes.size()): + gameplay_list_nodes[i].visible = (i == current_page_index) + + # --- 填充可见列表并查找要高亮的按钮 --- + var button_to_highlight: Button = null + var first_enabled_button_on_page: Button = null # 如果 initial_key 不在本页,则使用此按钮 + + # 检查当前页索引是否在有效范围内 + if current_page_index < option_nodes_per_list.size(): + var current_options = option_nodes_per_list[current_page_index] # 获取当前页的所有按钮节点 + var start_index = current_page_index * items_per_page # 计算当前页数据在 all_enabled_gameplays 中的起始索引 + + # 遍历当前页的按钮槽位 + for i in range(current_options.size()): + var option_button = current_options[i] # 获取具体的按钮节点 + var item_index = start_index + i # 计算此按钮对应的数据索引 + + # --- 断开旧信号 --- + # 确保在连接新信号前断开旧的,防止重复连接 + if option_button.pressed.is_connected(_on_option_selected): + option_button.pressed.disconnect(_on_option_selected) + + # 检查数据索引是否在有效范围内 + if item_index < all_enabled_gameplays.size(): + # 获取对应的玩法数据 + var gameplay_entry = all_enabled_gameplays[item_index] + var gameplay_name = gameplay_entry.name + var gameplay_data = gameplay_entry.data # 这是包含 Cost, Experience, Popularity 等信息的字典 + + # 获取按钮内部用于显示信息的 Row 节点 + var row = option_button.get_node_or_null("Row") + if row: + # 填充标签文本 + var title_label_in_row = row.get_node_or_null("Title") + var exp_label = row.get_node_or_null("Experience") + var pop_label = row.get_node_or_null("Popularity") + # 查找成本标签,兼容 "Cost" 和 "cost" 两种可能的节点名 + var cost_label = row.get_node_or_null("Cost") if row.has_node("Cost") else row.get_node_or_null("cost") + + # 设置标题 + if title_label_in_row: title_label_in_row.text = gameplay_name + + # 【修改】设置经验值,显示为整数 + if exp_label: + var experience_value = gameplay_data.get("Experience", 0.0) # 获取原始值 + exp_label.text = str(int(experience_value)) # 转为整数再转为字符串 + + # 【保持】设置流行度,保持原始字符串显示 + if pop_label: + var popularity_value = gameplay_data.get("Popularity", "未知") # 获取原始值 + pop_label.text = str(popularity_value) # 直接转为字符串 + + # 【修改】设置成本,显示为整数 + if cost_label: + var cost_value = gameplay_data.get("Cost", 0.0) # 获取原始值 + cost_label.text = str(int(cost_value)) # 转为整数再转为字符串 + + # 设置按钮可见、可用,并存储玩法名称到元数据 + option_button.visible = true + option_button.disabled = false + option_button.set_meta("gameplay_name", gameplay_name) + + # --- 连接新信号 (使用 bind) --- + # 传递玩法名称和按钮节点本身给处理函数 + option_button.pressed.connect(_on_option_selected.bind(gameplay_name, option_button)) + + # 记录本页第一个可用的按钮,作为备选高亮目标 + if first_enabled_button_on_page == null: + first_enabled_button_on_page = option_button + + # 检查此按钮是否是需要初始高亮的按钮 + if not initial_key_to_highlight.is_empty() and gameplay_name == initial_key_to_highlight: + button_to_highlight = option_button + # print("Gameplay: 找到需要初始高亮的按钮: ", button_to_highlight.name) # Debug + + else: # 未找到 Row 节点 + push_warning("警告:在按钮 %s 中未找到 Row 节点" % option_button.get_path()) + option_button.visible = false # 隐藏按钮以避免显示不完整 + option_button.disabled = true + else: # 此槽位没有对应的启用玩法数据 (例如最后一页不满) + option_button.visible = false # 隐藏按钮 + option_button.disabled = true + else: + # 这种情况理论上不应发生,除非页面计算或节点结构有问题 + printerr("错误:当前页面索引 %d 超出 option_nodes_per_list 的范围 (大小 %d)" % [current_page_index, option_nodes_per_list.size()]) + + # --- 设置初始高亮和焦点 --- + # 优先高亮 initial_key_to_highlight 对应的按钮 + if button_to_highlight: + # print("Gameplay: 尝试高亮指定按钮: ", button_to_highlight.name) # Debug + _set_initial_highlight(button_to_highlight) + # 如果没有指定按钮或指定按钮不在当前页,则高亮当前页的第一个可用按钮 + elif first_enabled_button_on_page: + print("Gameplay: 初始 Key '%s' 不在本页或为空。高亮本页第一个按钮: %s" % [initial_key_to_highlight, first_enabled_button_on_page.name]) + _set_initial_highlight(first_enabled_button_on_page) + # 如果当前页没有任何可用按钮 + else: + print("Gameplay: 本页没有可供高亮的按钮。") + currently_selected_button = null # 确保没有按钮被标记为选中 + selected_gameplay_key = "" # 确保没有 Key 被标记为选中 + +# (Helper) 设置初始高亮和焦点 (与原版类似,增加日志) +func _set_initial_highlight(button_to_highlight: Button): + if not is_instance_valid(button_to_highlight): + printerr("错误:传递给 _set_initial_highlight 的按钮无效。") + currently_selected_button = null + selected_gameplay_key = "" + return + + # print("Gameplay: 设置高亮按钮: ", button_to_highlight.name) # Debug + currently_selected_button = button_to_highlight + selected_gameplay_key = button_to_highlight.get_meta("gameplay_name", "") # 同时设置 Key + # print("Gameplay: currently_selected_button 设置为: ", currently_selected_button.name) # Debug + # print("Gameplay: selected_gameplay_key 设置为: '", selected_gameplay_key, "'") # Debug + + # 延迟调用 grab_focus 确保按钮已准备好接收焦点 + if currently_selected_button and currently_selected_button.is_inside_tree(): + # print("Gameplay: 尝试为按钮 call_deferred('grab_focus'): ", currently_selected_button.name) # Debug + currently_selected_button.call_deferred("grab_focus") + else: + print("Gameplay: 按钮无效或不在场景树中,无法获取焦点。") + + +# --- Signal Handlers --- + +func _on_previous_pressed(): + if total_pages > 1: # 仅当有多页时才翻页 + current_page_index -= 1 + # 循环由 _update_display 处理 + _update_display() + +func _on_next_pressed(): + if total_pages > 1: # 仅当有多页时才翻页 + current_page_index += 1 + # 循环由 _update_display 处理 + _update_display() + +# 【修改】处理选项按钮按下事件 (与原版类似,增加日志) +func _on_option_selected(gameplay_name: String, button_node: Button): + """当选项按钮被按下时调用。""" + if not is_instance_valid(button_node): + printerr("错误:在 _on_option_selected 中收到无效按钮节点,Key: " + gameplay_name) + return + + if button_node == currently_selected_button: + # --- 双击 (或点击已选中的按钮) --- + print("Gameplay: 检测到双击或确认点击: ", gameplay_name) + _confirm_and_close(gameplay_name) # 确认此选择 + else: + # --- 首次点击或点击不同按钮 --- + print("Gameplay: 选中 (高亮) 玩法: ", gameplay_name) + currently_selected_button = button_node + selected_gameplay_key = gameplay_name # 更新 Key,以便后续可能的确认 + + # 更新视觉焦点 + button_node.grab_focus() + +# 【修改】确认选择并关闭弹窗的逻辑 +func _confirm_and_close(key_to_confirm: String): + """更新父节点并关闭此弹窗。""" + if key_to_confirm.is_empty(): + printerr("错误:尝试确认一个空的玩法 Key。") + return + + print("Gameplay: 确认选择: ", key_to_confirm) + + # --- 更新父节点 (Task Development Popup) --- + var parent_node = get_parent() + if parent_node and parent_node.has_method("update_task_options"): + # 通知父节点更新其内部的 task_info + parent_node.update_task_options({"玩法": key_to_confirm}) + print("Gameplay: 已更新父节点的 task_options: 玩法 = ", key_to_confirm) + else: + printerr("错误:Gameplay: 父节点未找到或缺少 'update_task_options' 方法。") + # 考虑是否应该在此处停止或仅记录错误后继续 + + # --- 关闭此弹窗 --- + if parent_node and parent_node.has_method("_close_child_popup_and_return"): + # 调用父节点的标准方法来关闭子弹窗并返回 + parent_node._close_child_popup_and_return(self) + else: + printerr("错误:Gameplay: 父节点未找到或缺少 '_close_child_popup_and_return' 方法。") + self.hide() # 作为备选方案,直接隐藏自身 diff --git a/UI/popup/task_development/gameplay/gameplay.gd.uid b/UI/popup/task_development/gameplay/gameplay.gd.uid new file mode 100644 index 0000000..bc95ce2 --- /dev/null +++ b/UI/popup/task_development/gameplay/gameplay.gd.uid @@ -0,0 +1 @@ +uid://cbiwirr68lspl diff --git a/UI/popup/task_development/gameplay/gameplay.tscn b/UI/popup/task_development/gameplay/gameplay.tscn new file mode 100644 index 0000000..440f67f --- /dev/null +++ b/UI/popup/task_development/gameplay/gameplay.tscn @@ -0,0 +1,1394 @@ +[gd_scene load_steps=17 format=3 uid="uid://c7brdhj8ybu1y"] + +[ext_resource type="Texture2D" uid="uid://pucudatqrcrq" path="res://UI/popup/popup_bg_1.png" id="1_sdpor"] +[ext_resource type="Texture2D" uid="uid://dgcugleiv7sfw" path="res://UI/popup/task_development/arrow.png" id="2_3igef"] +[ext_resource type="Script" uid="uid://cbiwirr68lspl" path="res://UI/popup/task_development/gameplay/gameplay.gd" id="2_kj02u"] +[ext_resource type="Theme" uid="uid://ddq54ba6vwyn0" path="res://UI/popup/task_development/gameplay/gameplay_option_button.tres" id="4_kj02u"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6a8uh"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bu5lv"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mue51"] + +[sub_resource type="Animation" id="Animation_bu5lv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(9, 7)] +} + +[sub_resource type="Animation" id="Animation_6a8uh"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(16, 7), Vector2(12, 7), Vector2(9, 7), Vector2(16, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mue51"] +_data = { +&"RESET": SubResource("Animation_bu5lv"), +&"base": SubResource("Animation_6a8uh") +} + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wpgbx"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_r6b7x"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hsiy4"] + +[sub_resource type="Animation" id="Animation_wpgbx"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(461, 7)] +} + +[sub_resource type="Animation" id="Animation_mue51"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(455, 7), Vector2(458, 7), Vector2(461, 7), Vector2(455, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_r6b7x"] +_data = { +&"RESET": SubResource("Animation_wpgbx"), +&"base": SubResource("Animation_mue51") +} + +[node name="gameplay" type="NinePatchRect"] +custom_minimum_size = Vector2(500, 350) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_top = -175.0 +offset_right = 250.0 +offset_bottom = 175.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_sdpor") +region_rect = Rect2(1, 35, 86, 53) +patch_margin_left = 8 +patch_margin_top = 35 +patch_margin_right = 8 +patch_margin_bottom = 32 +script = ExtResource("2_kj02u") + +[node name="Title" type="NinePatchRect" parent="."] +custom_minimum_size = Vector2(500, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_right = 250.0 +offset_bottom = 44.0 +grow_horizontal = 2 +texture = ExtResource("1_sdpor") +region_rect = Rect2(1, 27, 86, 8) +patch_margin_left = 8 +patch_margin_top = 7 +patch_margin_right = 8 +patch_margin_bottom = 6 + +[node name="Title" type="Label" parent="Title"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -34.5 +offset_top = -18.0 +offset_right = 34.5 +offset_bottom = 18.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 27 +text = "玩法选择" +vertical_alignment = 1 + +[node name="previous" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 9.0 +offset_top = -15.0 +offset_right = 39.0 +offset_bottom = 15.0 +grow_vertical = 2 +texture = ExtResource("2_3igef") +region_rect = Rect2(0, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/previous"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_6a8uh") +theme_override_styles/hover = SubResource("StyleBoxEmpty_bu5lv") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_mue51") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/previous"] +root_node = NodePath("../../..") +libraries = { +&"": SubResource("AnimationLibrary_mue51") +} +autoplay = "base" + +[node name="next" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -39.0 +offset_top = -15.0 +offset_right = -9.0 +offset_bottom = 15.0 +grow_horizontal = 0 +grow_vertical = 2 +texture = ExtResource("2_3igef") +region_rect = Rect2(6, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/next"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wpgbx") +theme_override_styles/hover = SubResource("StyleBoxEmpty_r6b7x") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_hsiy4") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/next"] +libraries = { +&"": SubResource("AnimationLibrary_r6b7x") +} +autoplay = "base" + +[node name="Option" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Column_Headers" type="HBoxContainer" parent="Option"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -210.0 +offset_top = 51.0 +offset_right = 210.0 +offset_bottom = 82.0 +grow_horizontal = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "玩法" + +[node name="Experience" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "尝试次数" +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "流行度" +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "成本" +horizontal_alignment = 2 + +[node name="Info" type="NinePatchRect" parent="Option"] +custom_minimum_size = Vector2(440, 240) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -220.0 +offset_top = -92.0 +offset_right = 220.0 +offset_bottom = 149.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_sdpor") +region_rect = Rect2(92, 38, 76, 34) +patch_margin_left = 2 +patch_margin_top = 33 +patch_margin_right = 2 +patch_margin_bottom = 33 + +[node name="List_1" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "回合战斗" + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "0" +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "中" +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "600" +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(436, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_2" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_3" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_kj02u") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 diff --git a/UI/popup/task_development/gameplay/gameplay_option_button.tres b/UI/popup/task_development/gameplay/gameplay_option_button.tres new file mode 100644 index 0000000..2ec3d6c --- /dev/null +++ b/UI/popup/task_development/gameplay/gameplay_option_button.tres @@ -0,0 +1,17 @@ +[gd_resource type="Theme" load_steps=5 format=3 uid="uid://ddq54ba6vwyn0"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kemom"] +bg_color = Color(0.513883, 0.609153, 0.731076, 1) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ao15e"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kemom"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mp8x4"] +bg_color = Color(0.513883, 0.609153, 0.731076, 1) + +[resource] +Button/styles/focus = SubResource("StyleBoxFlat_kemom") +Button/styles/hover = SubResource("StyleBoxEmpty_ao15e") +Button/styles/normal = SubResource("StyleBoxEmpty_kemom") +Button/styles/pressed = SubResource("StyleBoxFlat_mp8x4") diff --git a/UI/popup/task_development/key_output/key_output.png b/UI/popup/task_development/key_output/key_output.png new file mode 100644 index 0000000000000000000000000000000000000000..8306f5f574e4191c16b820b9d33db86cf127d6d5 GIT binary patch literal 16317 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 literal 0 HcmV?d00001 diff --git a/UI/popup/task_development/key_output/key_output.png.import b/UI/popup/task_development/key_output/key_output.png.import new file mode 100644 index 0000000..32198e6 --- /dev/null +++ b/UI/popup/task_development/key_output/key_output.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctled08bky4mu" +path="res://.godot/imported/key_output.png-784f6b35ef722e290819983a5a30c217.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/popup/task_development/key_output/key_output.png" +dest_files=["res://.godot/imported/key_output.png-784f6b35ef722e290819983a5a30c217.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/popup/task_development/platform/platform.gd b/UI/popup/task_development/platform/platform.gd new file mode 100644 index 0000000..bbc5f90 --- /dev/null +++ b/UI/popup/task_development/platform/platform.gd @@ -0,0 +1,278 @@ +extends NinePatchRect + +# References to UI elements +@onready var title_label = $Title/Title +@onready var name_label = $Option/Name +@onready var icon_rect = $Option/Info/Icon +@onready var info1_label = $Option/Info/Info_List_1/Info_1/info # 制造商 (Maker) +@onready var info2_label = $Option/Info/Info_List_1/Info_2/info # 发售 (Sales) +@onready var info3_label = $Option/Info/Info_List_1/Info_3/info # 市场占比 (Market_share) +@onready var info4_label = $Option/Info/Info_List_2/info_4/info # 开发费用 (Cost) +# @onready var info5_label = $Option/Info/Info_List_2/info_5/info # 开发次数 - 暂不处理,数据源未知 + +@onready var prev_button = $Title/previous/Button +@onready var next_button = $Title/next/Button +@onready var confirm_button = $Confirm + +# Internal state +var enabled_platform_keys: Array[String] = [] # Store keys (names) of enabled platforms +var current_platform_index: int = -1 # Index in the enabled_platform_keys array + +const PLATFORM_ICON_PATH = "res://UI/popup/task_development/platform/" +# --- 新增:用于存储从 GameState 获取的平台数据 --- +var _platforms_data: Dictionary = {} +# --- 新增:用于存储上次确认的平台 Key 的 GameState 键名 --- +const SELECTED_PLATFORM_KEY_NAME = "selected_platform_key" # 假设用这个顶层键存储 + +func _ready(): + add_to_group(str(name)) # 保持不变 + + # Connect button signals (保持不变) + if prev_button: + if not prev_button.pressed.is_connected(_on_previous_pressed): + prev_button.pressed.connect(_on_previous_pressed) + if next_button: + if not next_button.pressed.is_connected(_on_next_pressed): + next_button.pressed.connect(_on_next_pressed) + if confirm_button: + if not confirm_button.pressed.is_connected(_on_confirm_pressed): + confirm_button.pressed.connect(_on_confirm_pressed) + + # Connect visibility changed signal (保持不变) + if not is_connected("visibility_changed", _on_visibility_changed): + visibility_changed.connect(_on_visibility_changed) + + # Initial call if already visible on ready (保持不变) + if is_visible_in_tree(): + reset_display() + + +# Visibility Change Handler (保持不变) +func _on_visibility_changed(): + if is_visible_in_tree(): + reset_display() + + +# --- 修改:reset_display --- +# 重置显示状态,在窗口可见时调用 +func reset_display(): + print("Platform: Resetting display state.") + # 1. 加载并过滤平台数据 + _load_and_filter_platforms() # 这会更新 _platforms_data 和 enabled_platform_keys + + # 2. 检查是否有可用的平台 + if enabled_platform_keys.is_empty(): + print("Platform: No enabled platforms found during reset.") + current_platform_index = -1 + _display_current_platform() # 显示 "无可用平台" 状态 + return + + # 3. 获取上次确认的平台 Key + var last_confirmed_key = "" + if GameState: + # --- 修改:使用 get_value 获取上次选择 --- + last_confirmed_key = GameState.get_value(SELECTED_PLATFORM_KEY_NAME, "") + else: + push_error("GameState not available during reset_display.") + # 默认使用第一个可用平台 + current_platform_index = 0 + _display_current_platform() + return + + # 4. 查找上次确认的 Key 在当前可用列表中的索引 + if not last_confirmed_key.is_empty(): + var found_index = enabled_platform_keys.find(last_confirmed_key) + if found_index != -1: + # 5. 如果找到,更新当前索引 + current_platform_index = found_index + print("Platform: Found last confirmed key '%s' at index %d." % [last_confirmed_key, found_index]) + else: + # 6. 如果找不到(可能平台不再可用),默认使用第一个可用平台 + print("Platform: Last confirmed key '%s' not found in enabled list. Defaulting to index 0." % last_confirmed_key) + current_platform_index = 0 + else: + # 7. 如果 GameState 中没有记录,默认使用第一个可用平台 + print("Platform: No last confirmed key found in GameState. Defaulting to index 0.") + current_platform_index = 0 + + # 8. 更新显示 + _display_current_platform() + + +# --- 修改:_load_and_filter_platforms --- +# 从 GameState 获取平台数据并筛选出启用的平台 +func _load_and_filter_platforms(): + enabled_platform_keys.clear() + _platforms_data = {} # 清空旧数据 + + if not GameState: + push_error("GameState not available in _load_and_filter_platforms.") + return + + # --- 修改:从 GameState 获取 task_development 数据 --- + var task_dev_data = GameState.get_value("task_development", {}) + if task_dev_data.is_empty(): + printerr("Platform: Failed to get 'task_development' data from GameState.") + return + + # --- 修改:获取 platforms 字典 --- + var all_platforms = task_dev_data.get("platforms", {}) + if all_platforms.is_empty(): + print("Platform: 'platforms' data in GameState is empty.") + return + + # --- 修改:将获取到的平台数据存储到内部变量 --- + _platforms_data = all_platforms + + # 遍历平台数据,筛选出启用的平台 Key + for platform_key in _platforms_data: + var platform_info = _platforms_data[platform_key] + # 确保 platform_info 是字典并且 'enabled' 键存在且为 true + if typeof(platform_info) == TYPE_DICTIONARY and platform_info.get("enabled", false) == true: + enabled_platform_keys.append(platform_key) + + # 可选:按键名排序,保持一致性 + #if not enabled_platform_keys.is_empty(): + #enabled_platform_keys.sort() # 简单字符串排序 + ## current_platform_index 会在 reset_display 中设置 + #else: + #print("Platform: No enabled platforms found.") + #current_platform_index = -1 # 明确设置无可用平台 + +# 根据 current_platform_index 更新 UI 显示 +func _display_current_platform(): + # 处理无可用平台或索引无效的情况 + if current_platform_index < 0 or current_platform_index >= enabled_platform_keys.size(): + title_label.text = "游戏平台" + name_label.text = "无可用平台" + if icon_rect: icon_rect.texture = null + if info1_label: info1_label.text = "-" # Maker + if info2_label: info2_label.text = "-" # Sales + if info3_label: info3_label.text = "-" # Market_share + if info4_label: info4_label.text = "-" # Cost + if prev_button: prev_button.disabled = true + if next_button: next_button.disabled = true + if confirm_button: confirm_button.disabled = true + return + + # --- 如果有有效平台 --- + if confirm_button: confirm_button.disabled = false # 启用确认按钮 + + # 更新标题 + var display_index = current_platform_index + 1 + var total_count = enabled_platform_keys.size() + title_label.text = "游戏平台 %d/%d" % [display_index, total_count] + + # 获取当前平台的 Key 和数据 + var platform_key = enabled_platform_keys[current_platform_index] + + # --- 从内部缓存 _platforms_data 获取平台信息 --- + if not _platforms_data.has(platform_key): + push_error("Current platform key '%s' not found in cached _platforms_data!" % platform_key) + name_label.text = "错误:数据丢失" + # ... 清空其他信息 ... + return + + var platform_info = _platforms_data[platform_key] + + # 更新平台名称 + name_label.text = platform_key + + # --- 修改:从 platform_info 读取所有需要的信息,数值转为整数显示 --- + # 使用 .get(key, default) 确保安全访问 + + # 制造商 (Maker) - 通常是字符串,保持不变 + info1_label.text = platform_info.get("Maker", "-") + + # 发售 (Sales) - 转换为整数显示 + var sales_value = platform_info.get("Sales", null) + if typeof(sales_value) == TYPE_INT or typeof(sales_value) == TYPE_FLOAT: + info2_label.text = str(int(sales_value)) # 转换为整数再转字符串 + else: + info2_label.text = "-" # 如果不是数字或不存在,显示 "-" + + # 市场占比 (Market_share) - 转换为整数显示 + var market_share_value = platform_info.get("Market_share", null) + if typeof(market_share_value) == TYPE_INT or typeof(market_share_value) == TYPE_FLOAT: + info3_label.text = str(int(market_share_value)) # 转换为整数再转字符串 + else: + info3_label.text = "-" + + # 开发费用 (Cost) - 转换为整数显示 + var cost_value = platform_info.get("Cost", null) + if typeof(cost_value) == TYPE_INT or typeof(cost_value) == TYPE_FLOAT: + info4_label.text = str(int(cost_value)) # 转换为整数再转字符串 + else: + info4_label.text = "-" + + # info5 (开发次数) 暂不处理 + + # 更新图标 (逻辑不变) + var icon_name = platform_info.get("Icon", "") + if not icon_name.is_empty(): + var icon_path = PLATFORM_ICON_PATH + icon_name + ".png" + if ResourceLoader.exists(icon_path): + icon_rect.texture = ResourceLoader.load(icon_path) + else: + push_error("Failed to load platform icon: " + icon_path) + icon_rect.texture = null + else: + print("Platform icon name is empty for key: ", platform_key) + icon_rect.texture = null + + # 更新导航按钮状态 (逻辑不变) + var can_navigate = enabled_platform_keys.size() > 1 + if prev_button: prev_button.disabled = not can_navigate + if next_button: next_button.disabled = not can_navigate + + +# --- _on_previous_pressed (逻辑不变) --- +func _on_previous_pressed(): + if enabled_platform_keys.size() > 1: + current_platform_index -= 1 + if current_platform_index < 0: + current_platform_index = enabled_platform_keys.size() - 1 + _display_current_platform() + + +# --- _on_next_pressed (逻辑不变) --- +func _on_next_pressed(): + if enabled_platform_keys.size() > 1: + current_platform_index += 1 + if current_platform_index >= enabled_platform_keys.size(): + current_platform_index = 0 + _display_current_platform() + + +# --- 修改:_on_confirm_pressed --- +# 处理确认选择 +func _on_confirm_pressed(): + if current_platform_index != -1 and current_platform_index < enabled_platform_keys.size(): + # 1. 获取选中的平台 Key + var selected_platform_key = enabled_platform_keys[current_platform_index] + + # 2. 获取父节点 (task_development) + var parent_node = get_parent() + + # 3. 调用父节点的 update_task_options 更新选项 (保持不变) + if parent_node and parent_node.has_method("update_task_options"): + parent_node.update_task_options({"平台": selected_platform_key}) + else: + push_error("Platform: Parent node not found or missing 'update_task_options' method.") + # 即使父节点更新失败,也尝试关闭窗口 + + # 4. 调用父节点的方法来处理关闭自身 (保持不变) + if parent_node and parent_node.has_method("_close_child_popup_and_return"): + parent_node._close_child_popup_and_return(self) + else: + push_error("Platform: Parent node not found or missing '_close_child_popup_and_return' method.") + self.hide() # Fallback hide + else: + # 处理没有有效平台被选中的情况 + print("Platform: No valid platform selected to confirm.") + # 仍然尝试关闭窗口 + var parent_node = get_parent() + if parent_node and parent_node.has_method("_close_child_popup_and_return"): + parent_node._close_child_popup_and_return(self) + else: + self.hide() # Fallback hide diff --git a/UI/popup/task_development/platform/platform.gd.uid b/UI/popup/task_development/platform/platform.gd.uid new file mode 100644 index 0000000..018f9ba --- /dev/null +++ b/UI/popup/task_development/platform/platform.gd.uid @@ -0,0 +1 @@ +uid://ddadoyxwx3sbh diff --git a/UI/popup/task_development/platform/platform.tscn b/UI/popup/task_development/platform/platform.tscn new file mode 100644 index 0000000..ee2e156 --- /dev/null +++ b/UI/popup/task_development/platform/platform.tscn @@ -0,0 +1,488 @@ +[gd_scene load_steps=29 format=3 uid="uid://blv6i6w651pcs"] + +[ext_resource type="Texture2D" uid="uid://pucudatqrcrq" path="res://UI/popup/popup_bg_1.png" id="1_kr1r5"] +[ext_resource type="Texture2D" uid="uid://dgcugleiv7sfw" path="res://UI/popup/task_development/arrow.png" id="2_6a8uh"] +[ext_resource type="Script" uid="uid://ddadoyxwx3sbh" path="res://UI/popup/task_development/platform/platform.gd" id="2_bu5lv"] +[ext_resource type="Texture2D" uid="uid://b2n1f22bd06tc" path="res://UI/popup/task_development/platform/platform_1.png" id="3_bu5lv"] +[ext_resource type="LabelSettings" uid="uid://qcn0aduvrgvw" path="res://UI/tres/task_development_platform_label_settings.tres" id="4_mue51"] +[ext_resource type="Theme" uid="uid://bau80ps6kx783" path="res://UI/tres/Bottom_Info_button_theme.tres" id="5_wpgbx"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6a8uh"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bu5lv"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mue51"] + +[sub_resource type="Animation" id="Animation_bu5lv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(9, 7)] +} + +[sub_resource type="Animation" id="Animation_6a8uh"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(16, 7), Vector2(12, 7), Vector2(9, 7), Vector2(16, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mue51"] +_data = { +&"RESET": SubResource("Animation_bu5lv"), +&"base": SubResource("Animation_6a8uh") +} + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wpgbx"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_r6b7x"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hsiy4"] + +[sub_resource type="Animation" id="Animation_wpgbx"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(461, 7)] +} + +[sub_resource type="Animation" id="Animation_mue51"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(455, 7), Vector2(458, 7), Vector2(461, 7), Vector2(455, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_r6b7x"] +_data = { +&"RESET": SubResource("Animation_wpgbx"), +&"base": SubResource("Animation_mue51") +} + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nckjb"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6r1e0"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_at31c"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qrj6y"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_v0qi7"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rl25l"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tndxe"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xx8ge"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ep6fu"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ci4su"] + +[node name="platform" type="NinePatchRect"] +custom_minimum_size = Vector2(500, 350) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_top = -175.0 +offset_right = 250.0 +offset_bottom = 175.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_kr1r5") +region_rect = Rect2(1, 35, 86, 53) +patch_margin_left = 8 +patch_margin_top = 35 +patch_margin_right = 8 +patch_margin_bottom = 32 +script = ExtResource("2_bu5lv") + +[node name="Title" type="NinePatchRect" parent="."] +custom_minimum_size = Vector2(500, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_right = 250.0 +offset_bottom = 44.0 +grow_horizontal = 2 +texture = ExtResource("1_kr1r5") +region_rect = Rect2(1, 27, 86, 8) +patch_margin_left = 8 +patch_margin_top = 7 +patch_margin_right = 8 +patch_margin_bottom = 6 + +[node name="Title" type="Label" parent="Title"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -34.5 +offset_top = -18.0 +offset_right = 34.5 +offset_bottom = 18.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 27 +text = "游戏平台" +vertical_alignment = 1 + +[node name="previous" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 9.0 +offset_top = -15.0 +offset_right = 39.0 +offset_bottom = 15.0 +grow_vertical = 2 +texture = ExtResource("2_6a8uh") +region_rect = Rect2(0, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/previous"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_6a8uh") +theme_override_styles/hover = SubResource("StyleBoxEmpty_bu5lv") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_mue51") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/previous"] +root_node = NodePath("../../..") +libraries = { +&"": SubResource("AnimationLibrary_mue51") +} +autoplay = "base" + +[node name="next" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -39.0 +offset_top = -15.0 +offset_right = -9.0 +offset_bottom = 15.0 +grow_horizontal = 0 +grow_vertical = 2 +texture = ExtResource("2_6a8uh") +region_rect = Rect2(6, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/next"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wpgbx") +theme_override_styles/hover = SubResource("StyleBoxEmpty_r6b7x") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_hsiy4") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/next"] +libraries = { +&"": SubResource("AnimationLibrary_r6b7x") +} +autoplay = "base" + +[node name="Option" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Name" type="Label" parent="Option"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -75.0 +offset_top = -129.5 +offset_right = 75.0 +offset_bottom = -95.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 24 +text = "台式 & 笔记本" +horizontal_alignment = 1 + +[node name="Info" type="NinePatchRect" parent="Option"] +custom_minimum_size = Vector2(440, 200) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -220.0 +offset_top = -92.0 +offset_right = 220.0 +offset_bottom = 130.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_kr1r5") +region_rect = Rect2(92, 38, 76, 34) +patch_margin_left = 2 +patch_margin_top = 33 +patch_margin_right = 2 +patch_margin_bottom = 33 + +[node name="Icon" type="NinePatchRect" parent="Option/Info"] +custom_minimum_size = Vector2(144, 144) +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_top = -108.0 +offset_right = 190.0 +offset_bottom = 82.0 +grow_vertical = 2 +texture = ExtResource("3_bu5lv") + +[node name="Info_List_1" type="GridContainer" parent="Option/Info"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -225.0 +offset_top = -82.0 +offset_right = -9.0 +offset_bottom = 19.0 +grow_horizontal = 0 +grow_vertical = 2 +theme_override_constants/v_separation = 7 + +[node name="Info_1" type="HBoxContainer" parent="Option/Info/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="start" type="Label" parent="Option/Info/Info_List_1/Info_1"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = " " +label_settings = ExtResource("4_mue51") + +[node name="title" type="Label" parent="Option/Info/Info_List_1/Info_1"] +custom_minimum_size = Vector2(90, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = "制造商" +label_settings = ExtResource("4_mue51") + +[node name="info" type="Label" parent="Option/Info/Info_List_1/Info_1"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +text = "不定" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 1 + +[node name="Info_2" type="HBoxContainer" parent="Option/Info/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="start" type="Label" parent="Option/Info/Info_List_1/Info_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = " " +label_settings = ExtResource("4_mue51") + +[node name="title" type="Label" parent="Option/Info/Info_List_1/Info_2"] +custom_minimum_size = Vector2(90, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_6r1e0") +text = "发售" +label_settings = ExtResource("4_mue51") + +[node name="info" type="Label" parent="Option/Info/Info_List_1/Info_2"] +custom_minimum_size = Vector2(60, 0) +layout_mode = 2 +text = "50" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 2 + +[node name="unit" type="Label" parent="Option/Info/Info_List_1/Info_2"] +layout_mode = 2 +text = "万台" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 2 + +[node name="Info_3" type="HBoxContainer" parent="Option/Info/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="start" type="Label" parent="Option/Info/Info_List_1/Info_3"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = " " +label_settings = ExtResource("4_mue51") + +[node name="title" type="Label" parent="Option/Info/Info_List_1/Info_3"] +custom_minimum_size = Vector2(90, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_at31c") +text = "市场占比" +label_settings = ExtResource("4_mue51") + +[node name="info" type="Label" parent="Option/Info/Info_List_1/Info_3"] +custom_minimum_size = Vector2(60, 0) +layout_mode = 2 +text = "38" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 2 + +[node name="unit" type="Label" parent="Option/Info/Info_List_1/Info_3"] +layout_mode = 2 +text = "%" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 2 + +[node name="Info_List_2" type="HBoxContainer" parent="Option/Info"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -191.5 +offset_top = -38.0 +offset_right = 191.5 +offset_bottom = -10.0 +grow_horizontal = 2 +grow_vertical = 0 +alignment = 1 + +[node name="info_4" type="HBoxContainer" parent="Option/Info/Info_List_2"] +layout_mode = 2 + +[node name="title" type="Label" parent="Option/Info/Info_List_2/info_4"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_qrj6y") +text = "开发费用" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/Info/Info_List_2/info_4"] +custom_minimum_size = Vector2(70, 0) +layout_mode = 2 +text = "500" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 1 + +[node name="info_5" type="HBoxContainer" parent="Option/Info/Info_List_2"] +layout_mode = 2 + +[node name="title" type="Label" parent="Option/Info/Info_List_2/info_5"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_v0qi7") +text = "开发次数" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/Info/Info_List_2/info_5"] +custom_minimum_size = Vector2(30, 0) +layout_mode = 2 +text = "0" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 2 + +[node name="unit" type="Label" parent="Option/Info/Info_List_2/info_5"] +layout_mode = 2 +text = "次" +label_settings = ExtResource("4_mue51") +horizontal_alignment = 2 + +[node name="Confirm" type="Button" parent="."] +custom_minimum_size = Vector2(70, 0) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -35.0 +offset_top = -43.0 +offset_right = 35.0 +grow_horizontal = 2 +grow_vertical = 0 +theme = ExtResource("5_wpgbx") +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 23 +theme_override_styles/focus = SubResource("StyleBoxEmpty_rl25l") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_tndxe") +theme_override_styles/hover = SubResource("StyleBoxFlat_xx8ge") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_ep6fu") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ci4su") +text = "确定" diff --git a/UI/popup/task_development/platform/platform_1.png b/UI/popup/task_development/platform/platform_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c7178bc434283213f8cbe71e7c5fd4405889bc90 GIT binary patch literal 5757 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 literal 0 HcmV?d00001 diff --git a/UI/popup/task_development/platform/platform_1.png.import b/UI/popup/task_development/platform/platform_1.png.import new file mode 100644 index 0000000..fceef57 --- /dev/null +++ b/UI/popup/task_development/platform/platform_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2n1f22bd06tc" +path="res://.godot/imported/platform_1.png-0e1645d04a8add797ec527f1c14cb0a9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/popup/task_development/platform/platform_1.png" +dest_files=["res://.godot/imported/platform_1.png-0e1645d04a8add797ec527f1c14cb0a9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/popup/task_development/platform/platform_2.png b/UI/popup/task_development/platform/platform_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d038ae618b85ac5c22a5438be931d890e7f2f0 GIT binary patch literal 2490 zcmb7G`9ISQ9RF@>Xyu$`4^|=)a%E93cL-@MM$S1p9J!A$*HjDDTu)n)YdnQ{8o4vK zT+hmKA0ZyO&8Va~AN>i>`}O*KKEHfEpV#aCxn7?nEatKxOcDkFfS`rBiS>a^{Vf7~ z2YTM@-&z1T9B*M_gp0`HOt7y>Eu#3=3O|Wo^9A$qrIQ2Ij}6g{_5OAYp^>F$tV8|Sq9c`9qR)wieA0&oQ~?nTBN zZoUjqFF6(PA)d5<8e4+Bc{OCKtXow7Q@VNouTC3e%W{MPIlnhRUzn@*o;6_QF9~2U z7yy_J9*y?9^%W*099Ec;gauJx8z1M}yOak8tbQT%(}AjT6Iplt;f)xekS6)ZJ23DQ zdleGl|2g6;oPOsf(O2v013I0Wn}l85YP^wg=mO3UrNGw}|JvKu08UG9I~5vC@*qa1 zUqS?uz&$~E$UI4L)0XLJ_dzz>nzr&FxLE@?Uu_xYOMHDN*ki9y!Sp&kcJ4Ipry*#S zc9A_(lq@JxKOg7JJ50${g8mY+W!V*Ba?G>%h&Z34#REtnkGTz2b&V}$kj^~z&>#28 zyraJ&mh_OPNU1KXsYz&P&{MRmAKEg=&Ft2DgX=dB4ThE@rKGfTQ<9Ux0QLEPQe)$( z$;Ju2{_;!*nsmqYes%g{DZ4Tq`5=AZ zVxN3o4?{=bXzDdtE5k4ncqc*W&u#!18X8LNzV%^WRm~|u6OW+d#>(r@qyLP0EFiR{ zX((8hVA-$r%+d+XY^bV21BFInCo{7ug>J6IgR?xl<@1$~piPcq4NclbXph@H?qmS- zu-n3aS_wU~$vC9Z#dw-zd_q{m5F|=5S|z+EN&p@jGw%c_3w3~f&Ts*4EIoYp66(O= zB>W(p;pXQj7!zYrVL5o|;c2C_qB7ogBg>_p-JMZ8^#R@Ube@7zij91*T)?kjUb8fE zb3;XFLH7^`ueQ%PCB~A#hc_y09aM7T=wzK zrKNCl1%Aj~NZF%*^o7MKT`8nURHuWzeRFH8u?vf_8Dca#F_Bcct8U^Lzfy?Pu_a4s z`wukinCVB^&6Wp!SXx+UqWb%Who4@v9I(u17|u<-!zrQPh;D~j8;WJHV;dRRL< zy5*xP<)eT9@fX3lDHhedh1wN;_ck z5U@};Q=9`3IUGOVfPk0m?2%5Kta%-ypz!pZJ#R@KBMwIt*_epQlI>YAFfAbPtux2O1{ zSt7lH$%I_(*WvS#Wlcr8?3-z;jnA%Jy)agUaOqT>6;7hdF>u3$yeTzVo7+`^~gw>2?pZK3he7L zSm)h0@h7I8mZ$2<94STiDw*)~)|t+fWrqOQd*R_K6bqrN%vB1>C0?b1oq0!ZZ)0ux zl8UOTar!0P;V z7KHpoMe{k!XgF-4ZgmW`R3~JM^7abX&pv)xw$}*_N7+Fy>JH2*+d>RnYN*tUv=6F@ z8rYHWM-*k75lSJGx&3)&W+uh>u88O=X_Tp^P0kXhVhSNH&mG^l;COR~Wp%s1$}r3F zy1yIT|Lk34R2Q~PEe*S%EGjMfmpX^T0RhP=DF(!psN>KxDJf~{3v2MXwIWV03xPjDH$pxomO&~Hxz&}Fu+~HSJlQ$Z3kzNA4-Pgo zB&7d_+$-zu4Lk_~fh6A`Cc;+`raWyT1dssbH8t(~sXpH>*_m{trFWi0uLg{iDFzhD z9NAvZQMk@a7mFfh2E7Y9>(BAjeDS5w`V6!=^+&KY@v&u5)&Pw1w*xKRGyh4u$LGlt zUhg!Ww&HEv{#~z~s{%>Nj|KWP{VpO-Y2!4~J+0=42r;+7tmvyH;vPwi_0&V*;t#bf zDHLiq`?Ysm^uh5#^Qt0r8MiA&n>IH$oBZZ3*7}Xxt5nnIODE>^dEbYBvZFOO*G&gR zl?*sz*=U@suE(xx17Ra9!&OIuK>WtrK?6*^^mTrVY22jg@2*uqkjr=J4}BnJ5zflExHtnzR0eDMMMg$Mrj^1z zbS6a(mlo~m^9r`hR|whynL$U0Z?C_s+RkqiSVkieSl@9$;2Ml{zjSHlvVLwU)A%r+ zVhLk^0dzrS){5dnV+~+XhwBzRYcDtqaHL^%1Pa!p^-FIIwe-cN`r-D@QVs2lXB}u$ zH{Di`<;d&{#;!TNl>4{9_^?04GIZN^dhsD_U_BbA*i!r%;@k?a#zLO4=i7W&b?Gp~ z(|>Mqe*!l@)Pkp)_o8k?WnW0spY(;i`6em)|Iiz`9%nI%-!E9pK7a6&0T!kh6Na(d G{r>=mD3^%< literal 0 HcmV?d00001 diff --git a/UI/popup/task_development/platform/platform_2.png.import b/UI/popup/task_development/platform/platform_2.png.import new file mode 100644 index 0000000..b959c11 --- /dev/null +++ b/UI/popup/task_development/platform/platform_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c53cngwtsi5hb" +path="res://.godot/imported/platform_2.png-f66d0147b3d6ab941ada98eef168dcb4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/popup/task_development/platform/platform_2.png" +dest_files=["res://.godot/imported/platform_2.png-f66d0147b3d6ab941ada98eef168dcb4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/UI/popup/task_development/proposal/proposal.gd b/UI/popup/task_development/proposal/proposal.gd new file mode 100644 index 0000000..4d684ff --- /dev/null +++ b/UI/popup/task_development/proposal/proposal.gd @@ -0,0 +1,16 @@ +extends NinePatchRect + +@onready var confirm_button: Button = $Confirm + +func _ready() -> void: + var node_name = str(self.name) + add_to_group(node_name) + + if confirm_button: + if not confirm_button.pressed.is_connected(_on_confirm_pressed): + confirm_button.pressed.connect(_on_confirm_pressed) + +func _on_confirm_pressed(): + get_parent().start_task() + self.hide() + get_parent().close_all_popups() diff --git a/UI/popup/task_development/proposal/proposal.gd.uid b/UI/popup/task_development/proposal/proposal.gd.uid new file mode 100644 index 0000000..a0bbee0 --- /dev/null +++ b/UI/popup/task_development/proposal/proposal.gd.uid @@ -0,0 +1 @@ +uid://ciqayqceaadw4 diff --git a/UI/popup/task_development/proposal/proposal.tscn b/UI/popup/task_development/proposal/proposal.tscn new file mode 100644 index 0000000..ce8020f --- /dev/null +++ b/UI/popup/task_development/proposal/proposal.tscn @@ -0,0 +1,632 @@ +[gd_scene load_steps=31 format=3 uid="uid://be000l53jxash"] + +[ext_resource type="Texture2D" uid="uid://pucudatqrcrq" path="res://UI/popup/popup_bg_1.png" id="1_0ruly"] +[ext_resource type="Script" uid="uid://ciqayqceaadw4" path="res://UI/popup/task_development/proposal/proposal.gd" id="2_uudne"] +[ext_resource type="Texture2D" uid="uid://dgcugleiv7sfw" path="res://UI/popup/task_development/arrow.png" id="3_uudne"] +[ext_resource type="FontFile" uid="uid://egugs822n8gr" path="res://UI/font/AlimamaFangYuanTiVF-Thin.ttf" id="4_csatq"] +[ext_resource type="LabelSettings" uid="uid://qcn0aduvrgvw" path="res://UI/tres/task_development_platform_label_settings.tres" id="5_l6j0s"] +[ext_resource type="Texture2D" uid="uid://bb3kyiufyyj05" path="res://Entity/NPC/NPC_1_UI.png" id="5_uudne"] +[ext_resource type="Theme" uid="uid://bau80ps6kx783" path="res://UI/tres/Bottom_Info_button_theme.tres" id="6_6v1sj"] +[ext_resource type="Texture2D" uid="uid://hdidwixuokxn" path="res://Entity/NPC/npc_ability_icon.png" id="6_ybd2x"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6a8uh"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bu5lv"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mue51"] + +[sub_resource type="Animation" id="Animation_bu5lv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(9, 7)] +} + +[sub_resource type="Animation" id="Animation_6a8uh"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(16, 7), Vector2(12, 7), Vector2(9, 7), Vector2(16, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mue51"] +_data = { +&"RESET": SubResource("Animation_bu5lv"), +&"base": SubResource("Animation_6a8uh") +} + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wpgbx"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_r6b7x"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hsiy4"] + +[sub_resource type="Animation" id="Animation_wpgbx"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(461, 7)] +} + +[sub_resource type="Animation" id="Animation_mue51"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(455, 7), Vector2(458, 7), Vector2(461, 7), Vector2(455, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_r6b7x"] +_data = { +&"RESET": SubResource("Animation_wpgbx"), +&"base": SubResource("Animation_mue51") +} + +[sub_resource type="LabelSettings" id="LabelSettings_l6j0s"] +font = ExtResource("4_csatq") +font_size = 23 +font_color = Color(0, 0, 0, 1) + +[sub_resource type="LabelSettings" id="LabelSettings_6v1sj"] +font = ExtResource("4_csatq") +font_size = 24 +font_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nckjb"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qrj6y"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_v0qi7"] +bg_color = Color(0.913725, 0.913725, 0.913725, 0.913725) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rl25l"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tndxe"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xx8ge"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ep6fu"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ci4su"] + +[node name="proposal" type="NinePatchRect"] +custom_minimum_size = Vector2(500, 350) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_top = -175.0 +offset_right = 250.0 +offset_bottom = 175.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_0ruly") +region_rect = Rect2(1, 35, 86, 53) +patch_margin_left = 8 +patch_margin_top = 35 +patch_margin_right = 8 +patch_margin_bottom = 32 +script = ExtResource("2_uudne") + +[node name="Title" type="NinePatchRect" parent="."] +custom_minimum_size = Vector2(500, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_right = 250.0 +offset_bottom = 44.0 +grow_horizontal = 2 +texture = ExtResource("1_0ruly") +region_rect = Rect2(1, 27, 86, 8) +patch_margin_left = 8 +patch_margin_top = 7 +patch_margin_right = 8 +patch_margin_bottom = 6 + +[node name="Title" type="Label" parent="Title"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -34.5 +offset_top = -18.0 +offset_right = 34.5 +offset_bottom = 18.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 27 +text = "策划案负责人" +vertical_alignment = 1 + +[node name="previous" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 9.0 +offset_top = -15.0 +offset_right = 39.0 +offset_bottom = 15.0 +grow_vertical = 2 +texture = ExtResource("3_uudne") +region_rect = Rect2(0, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/previous"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_6a8uh") +theme_override_styles/hover = SubResource("StyleBoxEmpty_bu5lv") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_mue51") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/previous"] +root_node = NodePath("../../..") +libraries = { +&"": SubResource("AnimationLibrary_mue51") +} +autoplay = "base" + +[node name="next" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -39.0 +offset_top = -15.0 +offset_right = -9.0 +offset_bottom = 15.0 +grow_horizontal = 0 +grow_vertical = 2 +texture = ExtResource("3_uudne") +region_rect = Rect2(6, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/next"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wpgbx") +theme_override_styles/hover = SubResource("StyleBoxEmpty_r6b7x") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_hsiy4") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/next"] +libraries = { +&"": SubResource("AnimationLibrary_r6b7x") +} +autoplay = "base" + +[node name="Option" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="NPC_Info_1" type="HBoxContainer" parent="Option"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -170.0 +offset_top = 47.0 +offset_right = 202.0 +offset_bottom = 87.0 +grow_horizontal = 2 +theme_override_constants/separation = 160 + +[node name="Name" type="Label" parent="Option/NPC_Info_1"] +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 24 +text = "米子一" +label_settings = SubResource("LabelSettings_l6j0s") +horizontal_alignment = 1 + +[node name="Staff" type="Label" parent="Option/NPC_Info_1"] +custom_minimum_size = Vector2(140, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("4_csatq") +theme_override_font_sizes/font_size = 20 +text = "员工" +horizontal_alignment = 2 + +[node name="NPC_Info_2" type="NinePatchRect" parent="Option"] +custom_minimum_size = Vector2(440, 200) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -220.0 +offset_top = -92.0 +offset_right = 220.0 +offset_bottom = 130.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_0ruly") +region_rect = Rect2(92, 38, 76, 34) +patch_margin_left = 2 +patch_margin_top = 33 +patch_margin_right = 2 +patch_margin_bottom = 33 + +[node name="Info_List_0" type="VBoxContainer" parent="Option/NPC_Info_2"] +custom_minimum_size = Vector2(0, 95) +layout_mode = 0 +offset_left = 26.0 +offset_top = 23.0 +offset_right = 185.0 +offset_bottom = 147.0 +theme_override_constants/separation = 14 + +[node name="Job" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_0"] +layout_mode = 2 +theme_override_constants/separation = 25 + +[node name="Label" type="Label" parent="Option/NPC_Info_2/Info_List_0/Job"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "产品总监" +label_settings = SubResource("LabelSettings_6v1sj") + +[node name="Level" type="Label" parent="Option/NPC_Info_2/Info_List_0/Job"] +layout_mode = 2 +text = "Lv1" +label_settings = SubResource("LabelSettings_6v1sj") +horizontal_alignment = 2 + +[node name="Icon" type="TextureRect" parent="Option/NPC_Info_2/Info_List_0"] +custom_minimum_size = Vector2(95, 95) +layout_mode = 2 +texture = ExtResource("5_uudne") +stretch_mode = 5 + +[node name="Info_List_1" type="GridContainer" parent="Option/NPC_Info_2"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -204.0 +offset_top = -87.0 +offset_right = -8.0 +offset_bottom = 46.0 +grow_horizontal = 0 +grow_vertical = 2 +theme_override_constants/v_separation = 7 + +[node name="Info_1" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="icon" type="NinePatchRect" parent="Option/NPC_Info_2/Info_List_1/Info_1"] +custom_minimum_size = Vector2(28, 28) +layout_mode = 2 +texture = ExtResource("6_ybd2x") +region_rect = Rect2(38, 30, 20, 15) + +[node name="title" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_1"] +custom_minimum_size = Vector2(60, 0) +layout_mode = 2 +theme_override_fonts/font = ExtResource("4_csatq") +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = "策划" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_1"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "80" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="Info_2" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="icon" type="NinePatchRect" parent="Option/NPC_Info_2/Info_List_1/Info_2"] +custom_minimum_size = Vector2(28, 28) +layout_mode = 2 +texture = ExtResource("6_ybd2x") +region_rect = Rect2(12, 31, 17, 16) + +[node name="title" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_2"] +custom_minimum_size = Vector2(60, 0) +layout_mode = 2 +theme_override_fonts/font = ExtResource("4_csatq") +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = "程序" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_2"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "80" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="Info_3" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="icon" type="NinePatchRect" parent="Option/NPC_Info_2/Info_List_1/Info_3"] +custom_minimum_size = Vector2(28, 28) +layout_mode = 2 +texture = ExtResource("6_ybd2x") +region_rect = Rect2(63, 29, 21, 16) + +[node name="title" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_3"] +custom_minimum_size = Vector2(60, 0) +layout_mode = 2 +theme_override_fonts/font = ExtResource("4_csatq") +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = "美术" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_3"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "80" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="Info_4" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_1"] +layout_mode = 2 +theme_override_constants/separation = 0 + +[node name="icon" type="NinePatchRect" parent="Option/NPC_Info_2/Info_List_1/Info_4"] +custom_minimum_size = Vector2(28, 28) +layout_mode = 2 +texture = ExtResource("6_ybd2x") +region_rect = Rect2(92, 29, 22, 16) + +[node name="title" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_4"] +custom_minimum_size = Vector2(60, 0) +layout_mode = 2 +theme_override_fonts/font = ExtResource("4_csatq") +theme_override_styles/normal = SubResource("StyleBoxFlat_nckjb") +text = "音频" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/NPC_Info_2/Info_List_1/Info_4"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "80" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="Info_List_2" type="HBoxContainer" parent="Option/NPC_Info_2"] +custom_minimum_size = Vector2(160, 10) +layout_mode = 1 +offset_left = 27.0 +offset_top = 159.0 +offset_right = 187.0 +offset_bottom = 169.0 +theme_override_constants/separation = 0 +alignment = 1 + +[node name="Segment_1" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_2" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_3" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_4" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_5" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_6" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_7" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_8" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_9" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_10" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_11" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_12" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_13" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_14" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_15" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_16" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_17" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_18" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_19" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Segment_20" type="ColorRect" parent="Option/NPC_Info_2/Info_List_2"] +custom_minimum_size = Vector2(6, 0) +layout_mode = 2 + +[node name="Info_List_3" type="HBoxContainer" parent="Option/NPC_Info_2"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -191.5 +offset_top = -38.0 +offset_right = 191.5 +offset_bottom = -10.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="info_4" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_3"] +layout_mode = 2 + +[node name="title" type="Label" parent="Option/NPC_Info_2/Info_List_3/info_4"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_fonts/font = ExtResource("4_csatq") +theme_override_styles/normal = SubResource("StyleBoxFlat_qrj6y") +text = "费用" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/NPC_Info_2/Info_List_3/info_4"] +custom_minimum_size = Vector2(70, 0) +layout_mode = 2 +text = "500" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info_5" type="HBoxContainer" parent="Option/NPC_Info_2/Info_List_3"] +visible = false +layout_mode = 2 + +[node name="title" type="Label" parent="Option/NPC_Info_2/Info_List_3/info_5"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_styles/normal = SubResource("StyleBoxFlat_v0qi7") +text = "开发次数" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 1 + +[node name="info" type="Label" parent="Option/NPC_Info_2/Info_List_3/info_5"] +custom_minimum_size = Vector2(30, 0) +layout_mode = 2 +text = "0" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 2 + +[node name="unit" type="Label" parent="Option/NPC_Info_2/Info_List_3/info_5"] +layout_mode = 2 +text = "次" +label_settings = ExtResource("5_l6j0s") +horizontal_alignment = 2 + +[node name="Confirm" type="Button" parent="."] +custom_minimum_size = Vector2(70, 0) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -35.0 +offset_top = -43.0 +offset_right = 35.0 +grow_horizontal = 2 +grow_vertical = 0 +theme = ExtResource("6_6v1sj") +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 23 +theme_override_styles/focus = SubResource("StyleBoxEmpty_rl25l") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_tndxe") +theme_override_styles/hover = SubResource("StyleBoxFlat_xx8ge") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_ep6fu") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ci4su") +text = "确定" diff --git a/UI/popup/task_development/strategy/strategy.gd b/UI/popup/task_development/strategy/strategy.gd new file mode 100644 index 0000000..026710e --- /dev/null +++ b/UI/popup/task_development/strategy/strategy.gd @@ -0,0 +1,291 @@ +# 文件名: strategy.gd +# 脚本作用: 控制策略选择界面的显示和交互 (使用主题资源处理焦点视觉) +# 版本:已根据方案 A 修改,使用通用 GameState 接口,从父节点获取初始选择 + +extends NinePatchRect + +# --- 节点引用 --- +@onready var options_container: VBoxContainer = $Option/Options/List_1 +@onready var explanation_label: Label = $Option/Explaination + +# --- 内部状态 --- +var option_buttons: Array[Button] = [] # 存储选项按钮节点的数组 +var highlighted_button: Button = null # 当前逻辑上选中的按钮 (用于区分首次点击和确认点击) +var current_strategy_data: Dictionary = {} # 存储从 GameState 获取的原始策略数据 +var initial_selection_key: String = "" # 由父节点传入的初始/当前选择的策略 Key (中文名) + +# --- 初始化 --- +func _ready() -> void: + add_to_group(str(name)) # 便于父节点或其他系统查找 + + # --- 获取按钮引用 --- + option_buttons.clear() + for child in options_container.get_children(): + if child is Button: + option_buttons.append(child) + # 断开旧连接以防万一 (虽然理论上 _ready 只执行一次) + if child.is_connected("pressed", _on_option_button_pressed): + child.disconnect("pressed", _on_option_button_pressed) + + # --- 连接 GameState 通用值变化信号 --- + # 用于响应策略数据可能的动态变化 (如解锁新策略) + if GameState and not GameState.state_value_changed.is_connected(_on_game_state_value_changed): + GameState.state_value_changed.connect(_on_game_state_value_changed) + + # --- 连接 visibility_changed 信号 --- + # 确保每次界面可见时都刷新列表内容 + if not is_connected("visibility_changed", _on_visibility_changed): + visibility_changed.connect(_on_visibility_changed) + + # _update_strategy_list() 不再在 _ready 中调用,移至 _on_visibility_changed + +# --- 父节点调用接口 --- +# 由父节点 (task_development.gd) 在显示此弹窗前调用,传入当前的临时选择 +func set_initial_selection(strategy_key: String) -> void: + initial_selection_key = strategy_key + print("Strategy: Initial selection key set by parent: '", initial_selection_key, "'") + # 注意:这里只存储值,实际的高亮逻辑仍在 _update_strategy_list 中处理 + +# --- 信号处理 --- + +# 处理可见性变化的函数 +func _on_visibility_changed() -> void: + print("Strategy: _on_visibility_changed called, visible = ", is_visible_in_tree()) + # 当节点变为可见时,更新列表并设置初始焦点 + if is_visible_in_tree(): + print("Strategy popup became visible. Updating list and setting focus...") + # 确保在更新列表前,initial_selection_key 已被父节点设置 + _update_strategy_list() + # else: # 可选:如果需要在隐藏时做清理,可以在这里添加逻辑 + # print("Strategy popup became hidden.") + +# 当 GameState 的任何值发生变化时调用 +func _on_game_state_value_changed(key: String, new_value) -> void: + # 检查是否是 task_development 数据发生了变化,这可能影响可用策略 + # 注意:这是一个比较宽泛的检查。如果 task_development 下其他不相关数据变化也会触发刷新。 + if key == "task_development": + # 并且确保当前界面是可见的,避免在后台刷新不可见的UI + if is_visible_in_tree(): + print("Strategy: Detected change in 'task_development', refreshing list...") + # 重新执行列表更新,它会使用最新的 GameState 数据 + # 并尝试根据 initial_selection_key (由父节点设定,理论上不变) 恢复高亮 + _update_strategy_list() + +# --- 核心 UI 更新逻辑 --- + +# 更新策略列表UI的函数 +func _update_strategy_list() -> void: + # 0. 重置界面逻辑状态 (清除上次的高亮和说明) + _reset_highlight_state() + + # 1. 从 GameState 获取最新的 task_development 数据 + if not GameState: + printerr("Strategy: GameState not available during _update_strategy_list.") + for button in option_buttons: button.visible = false + explanation_label.text = "错误:无法访问游戏状态。" + return + + var task_dev_data: Dictionary = GameState.get_value("task_development", {}) + if task_dev_data.is_empty(): + printerr("Strategy: Failed to get 'task_development' data from GameState.") + for button in option_buttons: button.visible = false + explanation_label.text = "错误:无法获取开发数据。" + return + + # 提取策略子字典 + current_strategy_data = task_dev_data.get("strategies", {}) + if current_strategy_data.is_empty(): + printerr("Strategy: 'strategies' data not found or empty in task_development.") + for button in option_buttons: button.visible = false + explanation_label.text = "没有可用的开发策略。" + return + + # 2. 筛选出已启用的策略 + var enabled_strategies = [] + for strategy_name in current_strategy_data: # 遍历字典的键 (策略中文名) + var details: Dictionary = current_strategy_data[strategy_name] + # 确保 details 是字典并且 'enabled' 键存在且为 true + if typeof(details) == TYPE_DICTIONARY and details.get("enabled", false) == true: + enabled_strategies.append({"name": strategy_name, "details": details}) + + # 如果需要固定顺序,可能需要先对 enabled_strategies 排序 (基于某个字段或预设顺序) + # enabled_strategies.sort_custom(func(a, b): return a["name"] < b["name"]) # 示例:按名称排序 + + # 3. 填充按钮 + var strategy_index: int = 0 + var first_enabled_button: Button = null # 用于没有初始选择时的默认高亮 + + # --- 确保每次更新时正确设置按钮状态和信号连接 --- + for button in option_buttons: # 遍历场景中预设的按钮 + button.visible = false # 默认隐藏 + button.disabled = true # 默认禁用 + # 断开旧的 pressed 信号连接,防止重复触发 + if button.is_connected("pressed", _on_option_button_pressed): + button.disconnect("pressed", _on_option_button_pressed) + # 清除可能存在的旧元数据 + if button.has_meta("strategy_name"): + button.remove_meta("strategy_name") + + # 使用筛选出的启用策略数据填充按钮 + while strategy_index < enabled_strategies.size() and strategy_index < option_buttons.size(): + var button: Button = option_buttons[strategy_index] + var strategy_data: Dictionary = enabled_strategies[strategy_index] + var strategy_name: String = strategy_data["name"] + var strategy_details: Dictionary = strategy_data["details"] + + # 获取按钮内部的标签节点 + var title_label: Label = button.find_child("Title", true, false) as Label + var cost_label: Label = button.find_child("Cost", true, false) as Label + + if title_label and cost_label: + # 设置策略名称 + title_label.text = strategy_name + + # 设置成本显示 (格式化为百分比) + var cost_value = strategy_details.get("Cost", null) # 尝试获取 Cost 值 + if typeof(cost_value) == TYPE_FLOAT or typeof(cost_value) == TYPE_INT: + var percentage: int = int(cost_value * 100) + cost_label.text = "+%d%%" % percentage # GDScript 中 % 需要转义 + else: + cost_label.text = "N/A" # 如果 Cost 不存在或不是数字 + + # 将策略名称存储在按钮元数据中,方便点击时获取 + button.set_meta("strategy_name", strategy_name) + button.visible = true # 显示按钮 + button.disabled = false # 启用按钮 + # 重新连接 pressed 信号,并绑定按钮自身作为参数 + button.pressed.connect(_on_option_button_pressed.bind(button)) + + # 记录第一个可用的按钮,作为没有初始选择时的备选高亮目标 + if first_enabled_button == null: + first_enabled_button = button + else: + printerr("Strategy: 在按钮 '%s' 下未找到 Title 或 Cost 标签。" % button.name) + # 保持按钮隐藏和禁用 + + strategy_index += 1 + + # 4. 设置初始逻辑选中状态和焦点 + print("--- Updating Strategy List ---") + print("Initial selection key from parent: '", initial_selection_key, "'") + var initial_highlight_button: Button = null + + # 尝试根据父节点传入的 initial_selection_key 找到对应的按钮 + if not initial_selection_key.is_empty(): + print("Searching for matching button for key: '", initial_selection_key, "'") + for button in option_buttons: + # 检查按钮是否可见、启用,并且其元数据中的策略名与初始选择键匹配 + if button.visible and not button.disabled: + var meta_name = button.get_meta("strategy_name", "") + # print(" Checking button: '", button.name, "' with meta: '", meta_name, "'") # Debug + if meta_name == initial_selection_key: + print(" Match found!: ", button.name) + initial_highlight_button = button + break # 找到后即可停止搜索 + + # 如果没有找到匹配的按钮 (例如初始选择为空,或对应的策略不再可用) + if initial_highlight_button == null: + print("No match found for initial key or key was empty. Trying first enabled button.") + initial_highlight_button = first_enabled_button # 使用第一个可用的按钮作为默认高亮 + + # 如果找到了要高亮的按钮 (无论是匹配到的还是第一个可用的) + if initial_highlight_button: + print("Button to initially highlight: ", initial_highlight_button.name) + # 设置逻辑高亮状态并尝试让其获得焦点 + _set_initial_highlight(initial_highlight_button) + else: + # 如果连第一个可用的按钮都没有 (例如所有策略都未启用) + print("No button available to highlight.") + explanation_label.text = "没有可用的开发策略。" # 更新说明文本 + print("--- Finished Updating Strategy List ---") + + +# --- 交互处理 --- + +# 处理选项按钮点击事件的函数 +func _on_option_button_pressed(button_node: Button) -> void: + # 从按钮元数据获取对应的策略名称 + var strategy_name: String = button_node.get_meta("strategy_name", "") + if strategy_name.is_empty(): + printerr("Strategy: 无法从按钮 %s 获取 strategy_name 元数据。" % button_node.name) + return + + # 检查点击的按钮是否就是当前已逻辑高亮的按钮 + if button_node == highlighted_button: + # --- 第二次点击 (确认选择) --- + print("Strategy: Confirmed selection - ", strategy_name) + + # 1. 通知父节点更新临时选择状态 + var parent_node = get_parent() # 获取父节点 (应该是 task_development) + if parent_node and parent_node.has_method("update_task_options"): + # 调用父节点的接口,传递更新信息 (使用中文键名) + parent_node.update_task_options({"开发策略": strategy_name}) + print("Strategy: Updated parent task options with 开发策略 = ", strategy_name) + else: + printerr("Strategy: Parent node not found or missing 'update_task_options' method.") + + # 2. 请求父节点关闭当前弹窗并返回主界面 + if parent_node and parent_node.has_method("_close_child_popup_and_return"): + parent_node._close_child_popup_and_return(self) + else: + # 作为备选方案,如果找不到父节点或方法,直接隐藏自己 + printerr("Strategy: Parent node not found or missing '_close_child_popup_and_return' method. Hiding self.") + self.hide() + + else: + # --- 第一次点击 或 点击了不同的按钮 (更新逻辑选择和说明) --- + print("Strategy: Logically selected - ", strategy_name) + # 更新当前逻辑高亮的按钮引用 + highlighted_button = button_node + + # 更新底部的说明文本 + # 确保 current_strategy_data 是最新的 (理论上 _update_strategy_list 刚更新过) + if current_strategy_data.has(strategy_name): + var details: Dictionary = current_strategy_data[strategy_name] + explanation_label.text = details.get("Explaination", "暂无说明。") # 使用 .get 提供默认值 + else: + # 如果因为某些原因数据不同步,显示错误 + explanation_label.text = "错误:找不到策略详情。" + printerr("Strategy: Could not find details for strategy '", strategy_name, "' in current_strategy_data.") + + # 注意:此时按钮的视觉焦点可能还未改变,依赖于 Button 主题的 focus 样式 + # _set_initial_highlight 内部会处理 grab_focus + +# --- 辅助函数 --- + +# (辅助函数) 重置界面逻辑高亮状态 +func _reset_highlight_state() -> void: + highlighted_button = null # 清除逻辑高亮引用 + explanation_label.text = "" # 清空说明文本 + +# (辅助函数) 设置初始逻辑选中按钮并赋予焦点 +func _set_initial_highlight(button_to_highlight: Button) -> void: + print("--- Setting Initial Highlight ---") + if not is_instance_valid(button_to_highlight): + printerr("Strategy: Invalid button passed to _set_initial_highlight.") + return + + print("Button received: ", button_to_highlight.name) + # 设置逻辑高亮引用 + highlighted_button = button_to_highlight + print("highlighted_button variable set to: ", highlighted_button.name) + + # 更新说明文本 + var strategy_name = highlighted_button.get_meta("strategy_name", "") + if not strategy_name.is_empty() and current_strategy_data.has(strategy_name): + var details: Dictionary = current_strategy_data[strategy_name] + explanation_label.text = details.get("Explaination", "暂无说明。") + elif not strategy_name.is_empty(): + explanation_label.text = "错误:找不到策略详情。" + printerr("Strategy: Could not find details for highlighted strategy '", strategy_name, "'") + else: + explanation_label.text = "错误:无法获取策略名称。" # 如果连元数据都没有 + + # 尝试让按钮获得实际输入焦点 (使用 call_deferred 确保在安全的时机执行) + # 这会让按钮应用其主题中的 "focus" 样式 + if highlighted_button.is_inside_tree() and highlighted_button.visible and not highlighted_button.disabled: + print("Attempting call_deferred('grab_focus') for: ", highlighted_button.name) + highlighted_button.call_deferred("grab_focus") + else: + print("Button '%s' not valid, not in tree, hidden, or disabled. Cannot grab focus." % highlighted_button.name) + print("--- Finished Setting Initial Highlight ---") diff --git a/UI/popup/task_development/strategy/strategy.gd.uid b/UI/popup/task_development/strategy/strategy.gd.uid new file mode 100644 index 0000000..96510b9 --- /dev/null +++ b/UI/popup/task_development/strategy/strategy.gd.uid @@ -0,0 +1 @@ +uid://b5mfw2kc6lqpd diff --git a/UI/popup/task_development/strategy/strategy.tscn b/UI/popup/task_development/strategy/strategy.tscn new file mode 100644 index 0000000..a9ac1b0 --- /dev/null +++ b/UI/popup/task_development/strategy/strategy.tscn @@ -0,0 +1,351 @@ +[gd_scene load_steps=5 format=3 uid="uid://ctcbxvgljrkvi"] + +[ext_resource type="Texture2D" uid="uid://pucudatqrcrq" path="res://UI/popup/popup_bg_1.png" id="1_pbd5q"] +[ext_resource type="Script" uid="uid://b5mfw2kc6lqpd" path="res://UI/popup/task_development/strategy/strategy.gd" id="2_rq5uk"] +[ext_resource type="Theme" uid="uid://ddq54ba6vwyn0" path="res://UI/popup/task_development/gameplay/gameplay_option_button.tres" id="3_rq5uk"] +[ext_resource type="Texture2D" uid="uid://bb3kyiufyyj05" path="res://Entity/NPC/NPC_1_UI.png" id="4_pbd5q"] + +[node name="strategy" type="NinePatchRect"] +custom_minimum_size = Vector2(500, 350) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_top = -175.0 +offset_right = 250.0 +offset_bottom = 175.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_pbd5q") +region_rect = Rect2(1, 35, 86, 53) +patch_margin_left = 8 +patch_margin_top = 35 +patch_margin_right = 8 +patch_margin_bottom = 32 +script = ExtResource("2_rq5uk") + +[node name="Title" type="NinePatchRect" parent="."] +custom_minimum_size = Vector2(500, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_right = 250.0 +offset_bottom = 44.0 +grow_horizontal = 2 +texture = ExtResource("1_pbd5q") +region_rect = Rect2(1, 27, 86, 8) +patch_margin_left = 8 +patch_margin_top = 7 +patch_margin_right = 8 +patch_margin_bottom = 6 + +[node name="Title" type="Label" parent="Title"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -34.5 +offset_top = -18.0 +offset_right = 34.5 +offset_bottom = 18.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 27 +text = "开发策略" +vertical_alignment = 1 + +[node name="Option" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Column_Headers" type="HBoxContainer" parent="Option"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -210.0 +offset_top = 51.0 +offset_right = 210.0 +offset_bottom = 82.0 +grow_horizontal = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(320, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "开发方针" + +[node name="Cost" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "成本" +horizontal_alignment = 2 + +[node name="Options" type="NinePatchRect" parent="Option"] +custom_minimum_size = Vector2(440, 170) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -220.0 +offset_top = -92.0 +offset_right = 220.0 +offset_bottom = 78.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_pbd5q") +region_rect = Rect2(92, 38, 76, 34) +patch_margin_left = 2 +patch_margin_top = 33 +patch_margin_right = 2 +patch_margin_bottom = 33 + +[node name="List_1" type="VBoxContainer" parent="Option/Options"] +custom_minimum_size = Vector2(436, 160) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -80.0 +offset_right = 210.0 +offset_bottom = 80.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Options/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("3_rq5uk") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Options/List_1/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Options/List_1/option_1/Row"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "正常开发" + +[node name="Cost" type="Label" parent="Option/Options/List_1/option_1/Row"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "0" +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Options/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("3_rq5uk") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Options/List_1/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Options/List_1/option_2/Row"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Cost" type="Label" parent="Option/Options/List_1/option_2/Row"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Options/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("3_rq5uk") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Options/List_1/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Options/List_1/option_3/Row"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Cost" type="Label" parent="Option/Options/List_1/option_3/Row"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Options/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("3_rq5uk") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Options/List_1/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Options/List_1/option_4/Row"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Cost" type="Label" parent="Option/Options/List_1/option_4/Row"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Options/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("3_rq5uk") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Options/List_1/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Options/List_1/option_5/Row"] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Cost" type="Label" parent="Option/Options/List_1/option_5/Row"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="Explaination" type="Label" parent="Option"] +custom_minimum_size = Vector2(200, 60) +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 47.0 +offset_top = -83.0 +offset_right = 358.0 +offset_bottom = -23.0 +grow_vertical = 0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "说明" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 + +[node name="Human" type="TextureRect" parent="Option"] +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -128.0 +offset_top = -90.0 +offset_right = -55.0 +offset_bottom = -17.0 +grow_horizontal = 0 +grow_vertical = 0 +texture = ExtResource("4_pbd5q") diff --git a/UI/popup/task_development/task_development.gd b/UI/popup/task_development/task_development.gd new file mode 100644 index 0000000..b424a17 --- /dev/null +++ b/UI/popup/task_development/task_development.gd @@ -0,0 +1,362 @@ +# task_development.gd +extends Control + +# --- 节点引用 --- +@onready var confirm_button = $main_page/Confirm +@onready var platform_button = $"main_page/Part_3/Select_List/1_right/Button" +@onready var gameplay_button = $"main_page/Part_3/Select_List/2_right/Button" +@onready var theme_button = $"main_page/Part_3/Select_List/3_right/Button" +@onready var strategy_button = $"main_page/Part_3/Select_List/4_right/Button" +@onready var budget_button = $"main_page/Part_2/HBoxContainer/Button" +@onready var main_page = $main_page +@onready var platform_popup = $platform +@onready var gameplay_popup = $gameplay +@onready var theme_popup = $theme +@onready var strategy_popup = $strategy +@onready var product_focus = $product_focus +@onready var dialogue: Control = $dialogue + +# --- 内部状态 --- +var pop_up_list: Array = [] # 记录打开的UI弹出窗口 +var node_name: String +var is_active: bool = false + +# 存储用户在当前配置过程中的临时选择 (使用中文 Key) +var task_info: Dictionary = { + "平台": "", # 中文 Key for the selected platform (e.g., "台式 & 笔记本") + "玩法": "", # 中文 Key for the selected gameplay (e.g., "角色扮演(RPG)") + "题材": "", # 中文 Key for the selected theme (e.g., "现代都市") + "开发策略": "", # 中文 Key for the selected strategy (e.g., "正常开发") + "预算": 0, # Calculated budget based on selections + "产品侧重点": {} # To be filled by product_focus popup +} + +# --- 初始化 --- +func _ready() -> void: + node_name = str(self.name) + add_to_group(node_name) # 用于 UI_MAIN 查找 + main_page.hide() + # 连接信号 + confirm_button.pressed.connect(_on_confirm_button_pressed) + platform_button.pressed.connect(_on_category_button_pressed.bind(platform_popup)) + gameplay_button.pressed.connect(_on_category_button_pressed.bind(gameplay_popup)) + theme_button.pressed.connect(_on_category_button_pressed.bind(theme_popup)) + strategy_button.pressed.connect(_on_category_button_pressed.bind(strategy_popup)) + + # 注意:不再需要加载静态数据 + +# --- 核心显示与关闭逻辑 --- +func show_up(): + if GameState.is_on_task_status(): + self.visible = true + show_dialogue("正在进行其它项目","") + return + + print(node_name + ": Showing up.") + + # 1. 设置界面状态 + main_page.show() + self.visible = true + is_active = true + pop_up_list.clear() + pop_up_list.append(self) + + # 2. 设置默认选项 (从 GameState 读取) + _set_default_selections() + + # 3. 更新按钮文本和预算 (基于默认选项) + update_button_texts() + calculate_and_update_budget() # 初始计算预算 + + # 4. 暂停游戏并处理输入 + GameState.pause_game() # 假设 GameState 有此方法 + set_process_input(true) + +func close_all_popups(): + print(node_name + ": Closing all popups...") + while not pop_up_list.is_empty(): + var popup = pop_up_list.pop_back() + if popup and is_instance_valid(popup): + popup.visible = false + self.visible = false + is_active = false + if GameState: GameState.resume_game() # 假设 GameState 有此方法 + set_process_input(false) + +# --- 数据初始化 (从 GameState 设置默认值) --- + +# 根据 GameState 设置默认选项 +func _set_default_selections() -> void: + if not GameState: + printerr(node_name + ": GameState not available during _set_default_selections.") + # 将所有选项设置为空,让用户必须选择 + task_info["平台"] = "" + task_info["玩法"] = "" + task_info["题材"] = "" + task_info["开发策略"] = "" + return + + var task_dev_data = GameState.get_value("task_development", {}) + if task_dev_data.is_empty(): + printerr(node_name + ": Failed to get 'task_development' data from GameState during _set_default_selections.") + # 将所有选项设置为空 + task_info["平台"] = "" + task_info["玩法"] = "" + task_info["题材"] = "" + task_info["开发策略"] = "" + return + + # 定义 GameState 中的 Key 和 task_info 中的 Key 的映射 + var categories_map = { + "平台": "platforms", + "玩法": "gameplays", + "题材": "themes", + "开发策略": "strategies" + } + + # 为每个类别查找第一个启用的选项 + for task_key in categories_map: + var gamestate_key = categories_map[task_key] + var items_data = task_dev_data.get(gamestate_key, {}) + var default_item_key = _find_first_enabled_key_in_gamestate(items_data) + task_info[task_key] = default_item_key # 如果没找到,会是 "" + if default_item_key.is_empty(): + print(node_name + ": No enabled default found for category '%s'." % task_key) + + print(node_name + ": Default selections set from GameState: ", task_info) + +# 辅助函数:在 GameState 的某个类别数据中查找第一个 enabled 的 key (中文名称) +func _find_first_enabled_key_in_gamestate(items_data: Dictionary) -> String: + if items_data.is_empty(): + return "" + + # 尝试按某种顺序查找,如果字典是无序的,结果可能不固定 + # 如果需要固定顺序,可能需要在 GameState 中存储时就排序或提供顺序信息 + for item_key in items_data: + var item_details = items_data[item_key] + if typeof(item_details) == TYPE_DICTIONARY and item_details.get("enabled", false) == true: + return item_key # 返回第一个找到的 enabled key (中文名称) + + # 如果没有找到 enabled 的 + return "" + +# --- 预算计算与 UI 更新 --- + +# 计算并更新预算显示 (完全基于 GameState 数据) +func calculate_and_update_budget() -> void: + if not GameState: + printerr(node_name + ": Cannot calculate budget, GameState not available.") + task_info["预算"] = 0 + if budget_button: budget_button.text = "错误" + return + + var task_dev_data = GameState.get_value("task_development", {}) + if task_dev_data.is_empty(): + printerr(node_name + ": Cannot calculate budget, 'task_development' data not found in GameState.") + task_info["预算"] = 0 + if budget_button: budget_button.text = "错误" + return + + var platform_cost: float = 0.0 + var gameplay_cost: float = 0.0 + var theme_cost: float = 0.0 + var strategy_multiplier: float = 0.0 # 策略的 "Cost" 是乘数因子 + + # 1. 获取平台成本 + var platform_key = task_info["平台"] + if not platform_key.is_empty(): + var platform_data = task_dev_data.get("platforms", {}).get(platform_key, {}) + platform_cost = platform_data.get("Cost", 0.0) + else: + print(node_name + ": Platform not selected, cost is 0.") + + # 2. 获取玩法成本 + var gameplay_key = task_info["玩法"] + if not gameplay_key.is_empty(): + var gameplay_data = task_dev_data.get("gameplays", {}).get(gameplay_key, {}) + gameplay_cost = gameplay_data.get("Cost", 0.0) + else: + print(node_name + ": Gameplay not selected, cost is 0.") + + # 3. 获取题材成本 + var theme_key = task_info["题材"] + if not theme_key.is_empty(): + var theme_data = task_dev_data.get("themes", {}).get(theme_key, {}) + theme_cost = theme_data.get("Cost", 0.0) + else: + print(node_name + ": Theme not selected, cost is 0.") + + # 4. 获取策略成本乘数 + var strategy_key = task_info["开发策略"] + if not strategy_key.is_empty(): + var strategy_data = task_dev_data.get("strategies", {}).get(strategy_key, {}) + # 假设策略的 "Cost" 字段存储的是成本增加的百分比 (例如 0.2 代表增加 20%) + strategy_multiplier = strategy_data.get("Cost", 0.0) + else: + print(node_name + ": Strategy not selected, multiplier is 0.") + + # 计算总预算: (平台 + 玩法 + 题材) * (1 + 策略乘数) + var base_cost = platform_cost + gameplay_cost + theme_cost + var calculated_budget = int(base_cost * (1.0 + strategy_multiplier)) # 结果取整 + task_info["预算"] = calculated_budget + + # 更新预算显示 + if budget_button: + budget_button.text = str(calculated_budget) + # print(node_name + ": Budget updated to " + str(calculated_budget)) # Debug + else: + printerr(node_name + ": Budget button not found when updating budget.") + +# 更新所有主界面按钮文本 (直接使用 task_info 中的中文 Key) +func update_button_texts() -> void: + var placeholder_text = "请选择" # 如果未选择,显示的文本 + + platform_button.text = task_info["平台"] if not task_info["平台"].is_empty() else placeholder_text + gameplay_button.text = task_info["玩法"] if not task_info["玩法"].is_empty() else placeholder_text + theme_button.text = task_info["题材"] if not task_info["题材"].is_empty() else placeholder_text + strategy_button.text = task_info["开发策略"] if not task_info["开发策略"].is_empty() else placeholder_text + +# --- 子窗口交互与数据更新 --- + +# 提供给子节点调用的接口,用于启动此节点内的对话框 +# dialogues: String 或 PackedStringArray - 要显示的对话内容 +# next_node: Control (可选) - 对话结束后要显示的下一个UI节点 +func show_dialogue(dialogues, next_node_name: String = "") -> void: + if not is_instance_valid(dialogue): + printerr(node_name + ": Dialogue node is not valid or ready.") + return + + if not dialogue.has_method("_start"): + printerr(node_name + ": Dialogue node does not have a _start method.") + return + + print(node_name + ": Requesting to show dialogue with content: ", dialogues) + # 调用 dialogue 节点的 _start 方法来显示对话框 + # 注意:这里假设 dialogue 节点的 _start 方法会处理好显示、暂停游戏等逻辑 + var next_node = get_node_or_null(next_node_name) + dialogue._start(dialogues, next_node) + + # 可选:如果希望对话框显示时,task_development 的其他部分(如 main_page 或子弹窗)隐藏, + # 可以在这里添加隐藏逻辑,但这取决于具体交互需求。 + # 例如: + # if main_page.visible: main_page.hide() + # if not pop_up_list.is_empty() and pop_up_list[-1] != self and is_instance_valid(pop_up_list[-1]): + # pop_up_list[-1].hide() # 隐藏最上层的子弹窗 + + +# 处理分类按钮点击的通用函数 +func _on_category_button_pressed(popup_node: Control) -> void: + if not is_instance_valid(popup_node): + printerr(node_name + ": Invalid popup node provided for category button.") + return + if not GameState: + printerr(node_name + ": Cannot open popup, GameState not available.") + return + + # 子窗口现在自行从 GameState 加载数据,无需父窗口传递 + # 只需要显示对应的弹窗即可 + + # --- 确保子窗口在显示时会刷新其内容 --- + # 最好在子窗口的 _on_visibility_changed 或类似方法中处理数据加载 + # 如果子窗口没有这个逻辑,可以在这里强制调用一下(如果它们有 reset_display 方法) + if popup_node.has_method("reset_display"): + popup_node.reset_display() + elif popup_node.has_method("_on_visibility_changed"): # 备选方案 + # 注意:直接调用 _on_visibility_changed 可能不符合预期,因为它通常由引擎触发 + # 更好的方式是确保子窗口的 _ready 或 visibility_changed 信号连接正确并处理加载 + pass + + main_page.hide() + popup_node.show() # 显示弹窗 + pop_up_list.append(popup_node) + print(node_name + ": Showing category popup: ", popup_node.name) + + +# 提供给子弹出窗口调用的接口函数,用于更新选择 +# options: 字典,包含更新的类别和对应的 Key,例如 {"平台": "Switch"} +func update_task_options(options: Dictionary) -> void: + var updated = false + for key in options: # key 是 "平台", "玩法" 等中文名 + if task_info.has(key): + var new_value_key = options[key] # new_value_key 是 "Switch" 等中文 Key + if task_info[key] != new_value_key: + task_info[key] = new_value_key + updated = true + print(node_name + ": Option '%s' updated to '%s'." % [key, new_value_key]) + else: + printerr(node_name + ": Invalid key '%s' provided in update_task_options." % key) + + if updated: + update_button_texts() # 更新主界面按钮显示名称 + calculate_and_update_budget() # 重新计算预算 + print(node_name + ": Task info updated: ", task_info) # Debug + +# 处理子弹出窗口确认后关闭并返回主页面的逻辑 +func _close_child_popup_and_return(child_popup_node: Control) -> void: + if not is_instance_valid(child_popup_node): + printerr(node_name + ": Invalid child popup node passed.") + return + + print(node_name + ": Request received to close child popup '%s' and return." % child_popup_node.name) + + if child_popup_node in pop_up_list: + pop_up_list.erase(child_popup_node) + else: + printerr(node_name + ": Child popup '%s' was not found in pop_up_list during close request." % child_popup_node.name) + + child_popup_node.hide() + main_page.show() + print(node_name + ": Hid child popup '%s' and showed main_page." % child_popup_node.name) + + +# --- 输入处理 --- +# (保持不变) +func _input(event): + if not is_active: return + + if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed(): + if pop_up_list.size() > 0: + var last_popup = pop_up_list.pop_back() + if last_popup and is_instance_valid(last_popup): + if last_popup != self: + last_popup.visible = false + print(node_name + ": Closed popup via right-click: ", last_popup.name) + # 检查是否需要重显主页面 + if not pop_up_list.is_empty() and pop_up_list[-1] == self and not main_page.visible: + main_page.show() + print(node_name + ": Re-showing main_page after closing sub-popup.") + get_viewport().set_input_as_handled() + else: + # 在主界面右键点击,关闭整个界面 + print(node_name + ": Right-click on main page. Closing task_development.") + pop_up_list.append(last_popup) # 把 self 放回去,让下面的判断处理关闭 + + # 如果列表为空(或只剩 self 且刚刚弹出的是 self),则关闭所有 + if pop_up_list.is_empty() or (pop_up_list.size() == 1 and pop_up_list[0] == self and last_popup == self): + print(node_name + ": Closing task_development due to right-click logic.") + close_all_popups() + # 不需要 set_input_as_handled,因为界面关闭了 + +# --- 确认与后续流程 --- +func _on_confirm_button_pressed(): + print(node_name + ": Confirmed with task_info: ", task_info) + # 检查是否所有选项都已选择 (Key 不为空) + if task_info["平台"].is_empty() or \ + task_info["玩法"].is_empty() or \ + task_info["题材"].is_empty() or \ + task_info["开发策略"].is_empty(): + printerr(node_name + ": Cannot confirm, not all options are selected.") + # 此处可以添加用户提示 + var ui_main = get_tree().get_first_node_in_group("UI_MAIN") + if ui_main and ui_main.has_method("show_notification"): + ui_main.show_notification("请确保所有开发选项都已选择!") + return + + # --- 触发后续流程 --- + product_focus.show() + main_page.hide() + +# 发出开始任务的信号 +func start_task(): + print(node_name + ": start task with info: ", task_info) + GameState.set_system_status_value("is_on_task", true) diff --git a/UI/popup/task_development/task_development.gd.uid b/UI/popup/task_development/task_development.gd.uid new file mode 100644 index 0000000..8b0b620 --- /dev/null +++ b/UI/popup/task_development/task_development.gd.uid @@ -0,0 +1 @@ +uid://chgujg3vq0jbl diff --git a/UI/popup/task_development/task_development.tscn b/UI/popup/task_development/task_development.tscn new file mode 100644 index 0000000..a7baa6f --- /dev/null +++ b/UI/popup/task_development/task_development.tscn @@ -0,0 +1,548 @@ +[gd_scene load_steps=33 format=3 uid="uid://b4ll7wwg1s0qc"] + +[ext_resource type="Texture2D" uid="uid://pucudatqrcrq" path="res://UI/popup/popup_bg_1.png" id="1_57348"] +[ext_resource type="Script" uid="uid://chgujg3vq0jbl" path="res://UI/popup/task_development/task_development.gd" id="1_v0qi7"] +[ext_resource type="Texture2D" uid="uid://bk8155f5le6k4" path="res://UI/main/icon_money.png" id="3_lcrvn"] +[ext_resource type="Theme" uid="uid://bau80ps6kx783" path="res://UI/tres/Bottom_Info_button_theme.tres" id="4_sqys5"] +[ext_resource type="LabelSettings" uid="uid://cvwpqds25xnfs" path="res://UI/tres/ui_main_label_number.tres" id="4_xtl2p"] +[ext_resource type="FontFile" uid="uid://egugs822n8gr" path="res://UI/font/AlimamaFangYuanTiVF-Thin.ttf" id="5_qrj6y"] +[ext_resource type="PackedScene" uid="uid://blv6i6w651pcs" path="res://UI/popup/task_development/platform/platform.tscn" id="6_eatmm"] +[ext_resource type="PackedScene" uid="uid://c7brdhj8ybu1y" path="res://UI/popup/task_development/gameplay/gameplay.tscn" id="7_xfbvu"] +[ext_resource type="PackedScene" uid="uid://bej6f0cqirn4j" path="res://UI/popup/task_development/theme/theme.tscn" id="8_nckjb"] +[ext_resource type="PackedScene" uid="uid://ctcbxvgljrkvi" path="res://UI/popup/task_development/strategy/strategy.tscn" id="9_6r1e0"] +[ext_resource type="PackedScene" uid="uid://dpshanwm4o3by" path="res://UI/popup/task_development/product_focus/product_focus.tscn" id="10_at31c"] +[ext_resource type="PackedScene" uid="uid://be000l53jxash" path="res://UI/popup/task_development/proposal/proposal.tscn" id="12_v0qi7"] +[ext_resource type="PackedScene" uid="uid://dtywh0m5odikx" path="res://UI/popup/dialogue.tscn" id="13_kctqw"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_xtl2p"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_sqys5"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ts1uk"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ka0mh"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_4dqyo"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_k5x0l"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rl8fy"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ka0mh"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sqys5"] +bg_color = Color(0.639216, 0.639216, 0.639216, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4dqyo"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ln7qd"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_iashq"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kfl1n"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_20m4o"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rl25l"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tndxe"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xx8ge"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ep6fu"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ci4su"] + +[node name="task_development" type="Control"] +custom_minimum_size = Vector2(1000, 600) +layout_mode = 3 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -500.0 +offset_top = -300.0 +offset_right = 500.0 +offset_bottom = 300.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_v0qi7") + +[node name="main_page" type="NinePatchRect" parent="."] +custom_minimum_size = Vector2(500, 350) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_top = -175.0 +offset_right = 250.0 +offset_bottom = 175.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_57348") +region_rect = Rect2(1, 35, 86, 53) +patch_margin_left = 8 +patch_margin_top = 35 +patch_margin_right = 8 +patch_margin_bottom = 32 + +[node name="Part_1" type="NinePatchRect" parent="main_page"] +custom_minimum_size = Vector2(500, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_right = 250.0 +offset_bottom = 44.0 +grow_horizontal = 2 +texture = ExtResource("1_57348") +region_rect = Rect2(1, 27, 86, 8) +patch_margin_left = 8 +patch_margin_top = 7 +patch_margin_right = 8 +patch_margin_bottom = 6 + +[node name="Title" type="Label" parent="main_page/Part_1"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -34.5 +offset_top = -18.0 +offset_right = 34.5 +offset_bottom = 18.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 27 +text = "新项目" +vertical_alignment = 1 + +[node name="Part_2" type="Control" parent="main_page"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -20.0 +offset_top = 34.0 +offset_right = 20.0 +offset_bottom = 53.0 +grow_horizontal = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="main_page/Part_2"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -24.0 +offset_top = 5.0 +offset_right = 208.0 +offset_bottom = 39.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="Label" parent="main_page/Part_2/HBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 24 +text = "预算" +horizontal_alignment = 1 + +[node name="Button" type="Button" parent="main_page/Part_2/HBoxContainer"] +custom_minimum_size = Vector2(180, 0) +layout_mode = 2 +theme_override_colors/font_disabled_color = Color(0, 0, 0, 1) +theme_override_colors/font_hover_pressed_color = Color(0, 0, 0, 1) +theme_override_colors/font_hover_color = Color(0, 0, 0, 1) +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_colors/font_pressed_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +theme_override_styles/focus = SubResource("StyleBoxEmpty_xtl2p") +theme_override_styles/disabled = SubResource("StyleBoxEmpty_sqys5") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_ts1uk") +theme_override_styles/hover = SubResource("StyleBoxEmpty_ka0mh") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_4dqyo") +theme_override_styles/normal = SubResource("StyleBoxEmpty_k5x0l") +text = "500" +icon = ExtResource("3_lcrvn") +flat = true +alignment = 2 +icon_alignment = 2 + +[node name="Part_3" type="NinePatchRect" parent="main_page"] +custom_minimum_size = Vector2(440, 200) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -220.0 +offset_top = -91.0 +offset_right = 220.0 +offset_bottom = 131.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_57348") +region_rect = Rect2(92, 38, 76, 34) +patch_margin_left = 2 +patch_margin_top = 33 +patch_margin_right = 2 +patch_margin_bottom = 33 + +[node name="BG" type="NinePatchRect" parent="main_page/Part_3"] +custom_minimum_size = Vector2(440, 0) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -220.0 +offset_top = -127.0 +offset_right = 220.0 +offset_bottom = 2.0 +grow_horizontal = 2 +grow_vertical = 0 +texture = ExtResource("1_57348") +region_rect = Rect2(100, 95, 240, 75) + +[node name="Select_List" type="GridContainer" parent="main_page/Part_3"] +custom_minimum_size = Vector2(320, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -180.0 +offset_top = 7.0 +offset_right = 180.0 +offset_bottom = 179.0 +grow_horizontal = 2 +size_flags_horizontal = 4 +theme_override_constants/h_separation = 0 +columns = 2 + +[node name="1_left" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(140, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(1, 95, 36, 24) +patch_margin_left = 7 +patch_margin_top = 6 +patch_margin_right = 2 +patch_margin_bottom = 6 + +[node name="Label" type="Label" parent="main_page/Part_3/Select_List/1_left"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -60.0 +offset_top = -12.0 +offset_right = 60.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "平台" +label_settings = ExtResource("4_xtl2p") +horizontal_alignment = 1 + +[node name="1_right" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(220, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(38, 95, 50, 24) +patch_margin_top = 6 +patch_margin_right = 6 +patch_margin_bottom = 6 + +[node name="Button" type="Button" parent="main_page/Part_3/Select_List/1_right"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -70.0 +offset_top = -17.5 +offset_right = 70.0 +offset_bottom = 17.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("5_qrj6y") +theme_override_font_sizes/font_size = 18 +theme_override_styles/focus = SubResource("StyleBoxEmpty_rl8fy") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_ka0mh") +theme_override_styles/hover = SubResource("StyleBoxFlat_sqys5") +theme_override_styles/pressed = SubResource("StyleBoxFlat_4dqyo") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ln7qd") +text = "Steam & Epic" + +[node name="2_left" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(140, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(1, 95, 36, 24) +patch_margin_left = 7 +patch_margin_top = 6 +patch_margin_right = 2 +patch_margin_bottom = 6 + +[node name="Label" type="Label" parent="main_page/Part_3/Select_List/2_left"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -60.0 +offset_top = -12.0 +offset_right = 60.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "玩法" +label_settings = ExtResource("4_xtl2p") +horizontal_alignment = 1 + +[node name="2_right" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(220, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(38, 95, 50, 24) +patch_margin_top = 6 +patch_margin_right = 6 +patch_margin_bottom = 6 + +[node name="Button" type="Button" parent="main_page/Part_3/Select_List/2_right"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -70.0 +offset_top = -17.5 +offset_right = 70.0 +offset_bottom = 17.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("5_qrj6y") +theme_override_font_sizes/font_size = 18 +theme_override_styles/focus = SubResource("StyleBoxEmpty_iashq") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_ka0mh") +theme_override_styles/hover = SubResource("StyleBoxFlat_sqys5") +theme_override_styles/pressed = SubResource("StyleBoxFlat_4dqyo") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ln7qd") +text = "休闲放置" + +[node name="3_left" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(140, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(1, 95, 36, 24) +patch_margin_left = 7 +patch_margin_top = 6 +patch_margin_right = 2 +patch_margin_bottom = 6 + +[node name="Label" type="Label" parent="main_page/Part_3/Select_List/3_left"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -60.0 +offset_top = -12.0 +offset_right = 60.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "题材" +label_settings = ExtResource("4_xtl2p") +horizontal_alignment = 1 + +[node name="3_right" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(220, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(38, 95, 50, 24) +patch_margin_top = 6 +patch_margin_right = 6 +patch_margin_bottom = 6 + +[node name="Button" type="Button" parent="main_page/Part_3/Select_List/3_right"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -70.0 +offset_top = -17.5 +offset_right = 70.0 +offset_bottom = 17.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("5_qrj6y") +theme_override_font_sizes/font_size = 18 +theme_override_styles/focus = SubResource("StyleBoxEmpty_kfl1n") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_ka0mh") +theme_override_styles/hover = SubResource("StyleBoxFlat_sqys5") +theme_override_styles/pressed = SubResource("StyleBoxFlat_4dqyo") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ln7qd") +text = "古装仙侠" + +[node name="4_left" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(140, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(1, 95, 36, 24) +patch_margin_left = 7 +patch_margin_top = 6 +patch_margin_right = 2 +patch_margin_bottom = 6 + +[node name="Label" type="Label" parent="main_page/Part_3/Select_List/4_left"] +custom_minimum_size = Vector2(120, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -60.0 +offset_top = -12.0 +offset_right = 60.0 +offset_bottom = 24.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "开发策略" +label_settings = ExtResource("4_xtl2p") +horizontal_alignment = 1 + +[node name="4_right" type="NinePatchRect" parent="main_page/Part_3/Select_List"] +custom_minimum_size = Vector2(220, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_57348") +region_rect = Rect2(38, 95, 50, 24) +patch_margin_top = 6 +patch_margin_right = 6 +patch_margin_bottom = 6 + +[node name="Button" type="Button" parent="main_page/Part_3/Select_List/4_right"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -70.0 +offset_top = -17.5 +offset_right = 70.0 +offset_bottom = 17.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("5_qrj6y") +theme_override_font_sizes/font_size = 18 +theme_override_styles/focus = SubResource("StyleBoxEmpty_20m4o") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_ka0mh") +theme_override_styles/hover = SubResource("StyleBoxFlat_sqys5") +theme_override_styles/pressed = SubResource("StyleBoxFlat_4dqyo") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ln7qd") +text = "普通开发" + +[node name="Confirm" type="Button" parent="main_page"] +custom_minimum_size = Vector2(70, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -25.0 +offset_top = 131.0 +offset_right = 25.0 +offset_bottom = 174.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("4_sqys5") +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_colors/font_focus_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 23 +theme_override_styles/focus = SubResource("StyleBoxEmpty_rl25l") +theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_tndxe") +theme_override_styles/hover = SubResource("StyleBoxFlat_xx8ge") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_ep6fu") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ci4su") +text = "确定" + +[node name="platform" parent="." instance=ExtResource("6_eatmm")] +visible = false +layout_mode = 1 + +[node name="gameplay" parent="." instance=ExtResource("7_xfbvu")] +visible = false +layout_mode = 1 + +[node name="theme" parent="." instance=ExtResource("8_nckjb")] +visible = false +layout_mode = 1 + +[node name="strategy" parent="." instance=ExtResource("9_6r1e0")] +visible = false +layout_mode = 1 + +[node name="product_focus" parent="." instance=ExtResource("10_at31c")] +visible = false +layout_mode = 1 + +[node name="proposal" parent="." instance=ExtResource("12_v0qi7")] +visible = false +layout_mode = 1 + +[node name="dialogue" parent="." instance=ExtResource("13_kctqw")] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 diff --git a/UI/popup/task_development/task_general.png b/UI/popup/task_development/task_general.png new file mode 100644 index 0000000000000000000000000000000000000000..defdb2455f91013e29540d04cd4c59d382c29e97 GIT binary patch literal 101151 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 reset_display 处理 + +# --- Visibility Change Handler (与 gameplay.gd 一致) --- +func _on_visibility_changed(): + if is_visible_in_tree(): + print("Theme: 弹窗变为可见,调用 reset_display()") + reset_display() # 当变为可见时调用 reset + # else: # 可选:隐藏时的清理逻辑 + # print("Theme: 弹窗变为隐藏。") + +# --- 新增:用于父节点设置初始选中项 (与 gameplay.gd 一致) --- +func set_initial_selection(key: String): + """ + 由父节点 (task_development) 在显示此弹窗前调用, + 传递当前在 task_info 中选中的题材 Key。 + """ + initial_key_to_highlight = key + print("Theme: 父节点设置初始高亮 Key 为: '%s'" % initial_key_to_highlight) + + +# --- Data Processing and Display Logic --- + +func _process_theme_data(all_themes_data: Dictionary): + """【修改】根据从 GameState 获取的题材数据,筛选出启用的题材,并计算总页数。""" + all_enabled_themes.clear() + if all_themes_data.is_empty(): + push_warning("警告:接收到的题材数据为空。") + total_pages = 0 + return + + # 遍历从 GameState 获取的题材字典 + for theme_name in all_themes_data: + var theme_info = all_themes_data[theme_name] + # 检查是否为字典且 "enabled" 字段为 true + if typeof(theme_info) == TYPE_DICTIONARY and theme_info.get("enabled", false) == true: + all_enabled_themes.append({"name": theme_name, "data": theme_info}) + # else: # Debugging + # print("Theme: 过滤掉未启用或格式错误的题材: ", theme_name) + + # 根据筛选结果计算总页数 + if items_per_page > 0: + total_pages = ceil(float(all_enabled_themes.size()) / items_per_page) + else: + total_pages = 0 + printerr("错误:items_per_page 为零,无法计算页数。") + + print("Theme: 处理完成,找到 %d 个启用的题材,共 %d 页。" % [all_enabled_themes.size(), total_pages]) + + +func reset_display(): + """【修改】重置状态,从 GameState 重新加载数据,并准备更新显示。""" + print("Theme: 重置显示状态 (reset_display)。") + # 1. 重置本地状态变量 + currently_selected_button = null + selected_theme_key = "" + # initial_key_to_highlight 由 set_initial_selection 设置,这里不清空 + + # 2. 【修改】从 GameState 重新加载并处理数据 + if not GameState: + printerr("错误:GameState 在 reset_display 期间不可用。") + total_pages = 0 + all_enabled_themes.clear() + _update_display() # 即使没有数据也要更新显示(显示空状态) + return + + # --- 获取题材数据 --- + var task_dev_data = GameState.get_value("task_development", {}) + if task_dev_data.is_empty(): + printerr("错误:从 GameState 获取 'task_development' 数据失败。") + total_pages = 0 + all_enabled_themes.clear() + else: + # --- 从 task_development 中获取 themes --- + var all_themes_data = task_dev_data.get("themes", {}) + _process_theme_data(all_themes_data) # 重新处理数据,计算 total_pages + + # 3. 【修改】根据 initial_key_to_highlight 确定初始页面 + current_page_index = 0 # 默认为第一页 + var found_initial_key = false + if total_pages > 0 and not initial_key_to_highlight.is_empty(): + # 查找 initial_key_to_highlight 所在的索引和页面 + for i in range(all_enabled_themes.size()): + if all_enabled_themes[i].name == initial_key_to_highlight: + current_page_index = int(floor(float(i) / items_per_page)) + found_initial_key = true + print("Theme: 找到需要初始高亮的 Key '%s' 在索引 %d, 目标页面 %d" % [initial_key_to_highlight, i, current_page_index]) + break # 找到了,停止循环 + if not found_initial_key: + print("Theme: 需要初始高亮的 Key '%s' 未在启用的题材中找到,将显示第一页。" % initial_key_to_highlight) + # 保持 current_page_index 为 0 + initial_key_to_highlight = "" # 清空,避免后续 _update_display 尝试高亮不存在的项 + + # 确保页面索引有效 (与 gameplay.gd 一致) + if total_pages == 0: + current_page_index = 0 + elif current_page_index >= total_pages: + current_page_index = total_pages - 1 + elif current_page_index < 0: + current_page_index = 0 + + # 4. 触发显示更新 + _update_display() + +func _update_display(): + """【更新版】更新列表的可见性并填充当前页面的内容。 + 现在将“经验”和“成本”显示为整数。 + """ + # --- 处理无数据情况 (与 gameplay.gd 一致) --- + if theme_list_nodes.is_empty(): + print("Theme: 无可用的 List 节点。") + if title_label: title_label.text = "题材选择" + return + + if total_pages == 0: + for list_node in theme_list_nodes: list_node.visible = false + print("Theme: 没有启用的题材选项可供显示。") + if title_label: title_label.text = "题材选择 (无可用)" + if previous_button: previous_button.disabled = true + if next_button: next_button.disabled = true + return + else: + if previous_button: previous_button.disabled = (total_pages <= 1) + if next_button: next_button.disabled = (total_pages <= 1) + + # --- 更新页面索引 (循环) (与 gameplay.gd 一致) --- + if total_pages > 0 : + current_page_index = current_page_index % total_pages + if current_page_index < 0: + current_page_index += total_pages + else: + current_page_index = 0 + + # --- 更新标题 (与 gameplay.gd 一致) --- + if title_label: + var display_page_number = current_page_index + 1 + title_label.text = "题材选择 %d/%d" % [display_page_number, total_pages] + + # --- 更新 List 可见性 (与 gameplay.gd 一致) --- + for i in range(theme_list_nodes.size()): + theme_list_nodes[i].visible = (i == current_page_index) + + # --- 填充可见列表并查找要高亮的按钮 (与 gameplay.gd 类似) --- + var button_to_highlight: Button = null + var first_enabled_button_on_page: Button = null + + if current_page_index < option_nodes_per_list.size(): + var current_options = option_nodes_per_list[current_page_index] + var start_index = current_page_index * items_per_page + + for i in range(current_options.size()): + var option_button = current_options[i] + var item_index = start_index + i + + # --- 断开旧信号 --- + if option_button.pressed.is_connected(_on_option_selected): + option_button.pressed.disconnect(_on_option_selected) + + if item_index < all_enabled_themes.size(): + var theme_entry = all_enabled_themes[item_index] + var theme_name = theme_entry.name + var theme_data = theme_entry.data # 包含 Cost, Experience, Popularity 等 + + var row = option_button.get_node_or_null("Row") + if row: + # 填充标签文本 + var title_label_in_row = row.get_node_or_null("Title") + var exp_label = row.get_node_or_null("Experience") + var pop_label = row.get_node_or_null("Popularity") + var cost_label = row.get_node_or_null("Cost") if row.has_node("Cost") else row.get_node_or_null("cost") + + if title_label_in_row: title_label_in_row.text = theme_name + + # 【修改】设置经验值,显示为整数 + if exp_label: + var experience_value = theme_data.get("Experience", 0.0) + exp_label.text = str(int(experience_value)) + + # 【保持】设置流行度,保持原始字符串显示 + if pop_label: + var popularity_value = theme_data.get("Popularity", "未知") + pop_label.text = str(popularity_value) + + # 【修改】设置成本,显示为整数 + if cost_label: + var cost_value = theme_data.get("Cost", 0.0) + cost_label.text = str(int(cost_value)) + + option_button.visible = true + option_button.disabled = false + option_button.set_meta("theme_name", theme_name) # 存储题材名称 + + # --- 连接新信号 (使用 bind) --- + option_button.pressed.connect(_on_option_selected.bind(theme_name, option_button)) + + if first_enabled_button_on_page == null: + first_enabled_button_on_page = option_button + + if not initial_key_to_highlight.is_empty() and theme_name == initial_key_to_highlight: + button_to_highlight = option_button + # print("Theme: 找到需要初始高亮的按钮: ", button_to_highlight.name) # Debug + + else: # 未找到 Row 节点 + push_warning("警告:在按钮 %s 中未找到 Row 节点" % option_button.get_path()) + option_button.visible = false + option_button.disabled = true + else: # 此槽位没有对应的启用题材数据 + option_button.visible = false + option_button.disabled = true + else: + printerr("错误:当前页面索引 %d 超出 option_nodes_per_list 的范围 (大小 %d)" % [current_page_index, option_nodes_per_list.size()]) + + # --- 设置初始高亮和焦点 (与 gameplay.gd 一致) --- + if button_to_highlight: + _set_initial_highlight(button_to_highlight) + elif first_enabled_button_on_page: + print("Theme: 初始 Key '%s' 不在本页或为空。高亮本页第一个按钮: %s" % [initial_key_to_highlight, first_enabled_button_on_page.name]) + _set_initial_highlight(first_enabled_button_on_page) + else: + print("Theme: 本页没有可供高亮的按钮。") + currently_selected_button = null + selected_theme_key = "" + +# (Helper) 设置初始高亮和焦点 (与 gameplay.gd 一致) +func _set_initial_highlight(button_to_highlight: Button): + if not is_instance_valid(button_to_highlight): + printerr("错误:传递给 _set_initial_highlight 的按钮无效。") + currently_selected_button = null + selected_theme_key = "" + return + + # print("Theme: 设置高亮按钮: ", button_to_highlight.name) # Debug + currently_selected_button = button_to_highlight + # --- 修改元数据键名 --- + selected_theme_key = button_to_highlight.get_meta("theme_name", "") # 同时设置 Key + # print("Theme: currently_selected_button 设置为: ", currently_selected_button.name) # Debug + # print("Theme: selected_theme_key 设置为: '", selected_theme_key, "'") # Debug + + if currently_selected_button and currently_selected_button.is_inside_tree(): + # print("Theme: 尝试为按钮 call_deferred('grab_focus'): ", currently_selected_button.name) # Debug + currently_selected_button.call_deferred("grab_focus") + else: + print("Theme: 按钮无效或不在场景树中,无法获取焦点。") + + +# --- Signal Handlers --- + +# (与 gameplay.gd 一致) +func _on_previous_pressed(): + if total_pages > 1: + current_page_index -= 1 + _update_display() + +# (与 gameplay.gd 一致) +func _on_next_pressed(): + if total_pages > 1: + current_page_index += 1 + _update_display() + +# 【修改】处理选项按钮按下事件 (与 gameplay.gd 一致) +func _on_option_selected(theme_name: String, button_node: Button): + """当选项按钮被按下时调用。""" + if not is_instance_valid(button_node): + # --- 修改错误信息中的 Key 类型 --- + printerr("错误:在 _on_option_selected 中收到无效按钮节点,Key: " + theme_name) + return + + if button_node == currently_selected_button: + # --- 双击 (或点击已选中的按钮) --- + print("Theme: 检测到双击或确认点击: ", theme_name) + _confirm_and_close(theme_name) # 确认此选择 + else: + # --- 首次点击或点击不同按钮 --- + print("Theme: 选中 (高亮) 题材: ", theme_name) + currently_selected_button = button_node + selected_theme_key = theme_name # 更新 Key + + # 更新视觉焦点 + button_node.grab_focus() + +# 【修改】确认选择并关闭弹窗的逻辑 (与 gameplay.gd 一致) +func _confirm_and_close(key_to_confirm: String): + """更新父节点并关闭此弹窗。""" + if key_to_confirm.is_empty(): + printerr("错误:尝试确认一个空的题材 Key。") + return + + print("Theme: 确认选择: ", key_to_confirm) + + # --- 更新父节点 (Task Development Popup) --- + var parent_node = get_parent() + if parent_node and parent_node.has_method("update_task_options"): + # --- 修改传递给父节点的字典键名 --- + parent_node.update_task_options({"题材": key_to_confirm}) + print("Theme: 已更新父节点的 task_options: 题材 = ", key_to_confirm) + else: + printerr("错误:Theme: 父节点未找到或缺少 'update_task_options' 方法。") + + # --- 关闭此弹窗 (与 gameplay.gd 一致) --- + if parent_node and parent_node.has_method("_close_child_popup_and_return"): + parent_node._close_child_popup_and_return(self) + else: + printerr("错误:Theme: 父节点未找到或缺少 '_close_child_popup_and_return' 方法。") + self.hide() # 备选方案 diff --git a/UI/popup/task_development/theme/theme.gd.uid b/UI/popup/task_development/theme/theme.gd.uid new file mode 100644 index 0000000..48507ae --- /dev/null +++ b/UI/popup/task_development/theme/theme.gd.uid @@ -0,0 +1 @@ +uid://do3rv2hocchy3 diff --git a/UI/popup/task_development/theme/theme.tscn b/UI/popup/task_development/theme/theme.tscn new file mode 100644 index 0000000..3489882 --- /dev/null +++ b/UI/popup/task_development/theme/theme.tscn @@ -0,0 +1,2492 @@ +[gd_scene load_steps=17 format=3 uid="uid://bej6f0cqirn4j"] + +[ext_resource type="Texture2D" uid="uid://pucudatqrcrq" path="res://UI/popup/popup_bg_1.png" id="1_1qam4"] +[ext_resource type="Script" uid="uid://do3rv2hocchy3" path="res://UI/popup/task_development/theme/theme.gd" id="2_1qam4"] +[ext_resource type="Texture2D" uid="uid://dgcugleiv7sfw" path="res://UI/popup/task_development/arrow.png" id="3_v77qq"] +[ext_resource type="Theme" uid="uid://r5e0kacnb3xf" path="res://UI/popup/task_development/theme/theme_option_button.tres" id="4_xbfrb"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6a8uh"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bu5lv"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mue51"] + +[sub_resource type="Animation" id="Animation_bu5lv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(9, 7)] +} + +[sub_resource type="Animation" id="Animation_6a8uh"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Title/previous:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(16, 7), Vector2(12, 7), Vector2(9, 7), Vector2(16, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mue51"] +_data = { +&"RESET": SubResource("Animation_bu5lv"), +&"base": SubResource("Animation_6a8uh") +} + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wpgbx"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_r6b7x"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hsiy4"] + +[sub_resource type="Animation" id="Animation_wpgbx"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(461, 7)] +} + +[sub_resource type="Animation" id="Animation_mue51"] +resource_name = "base" +length = 0.6 +loop_mode = 1 +step = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(455, 7), Vector2(458, 7), Vector2(461, 7), Vector2(455, 7)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_r6b7x"] +_data = { +&"RESET": SubResource("Animation_wpgbx"), +&"base": SubResource("Animation_mue51") +} + +[node name="theme" type="NinePatchRect"] +custom_minimum_size = Vector2(500, 350) +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_top = -175.0 +offset_right = 250.0 +offset_bottom = 175.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_1qam4") +region_rect = Rect2(1, 35, 86, 53) +patch_margin_left = 8 +patch_margin_top = 35 +patch_margin_right = 8 +patch_margin_bottom = 32 +script = ExtResource("2_1qam4") + +[node name="Title" type="NinePatchRect" parent="."] +custom_minimum_size = Vector2(500, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -250.0 +offset_right = 250.0 +offset_bottom = 44.0 +grow_horizontal = 2 +texture = ExtResource("1_1qam4") +region_rect = Rect2(1, 27, 86, 8) +patch_margin_left = 8 +patch_margin_top = 7 +patch_margin_right = 8 +patch_margin_bottom = 6 + +[node name="Title" type="Label" parent="Title"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -34.5 +offset_top = -18.0 +offset_right = 34.5 +offset_bottom = 18.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 27 +text = "题材选择" +vertical_alignment = 1 + +[node name="previous" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 9.0 +offset_top = -15.0 +offset_right = 39.0 +offset_bottom = 15.0 +grow_vertical = 2 +texture = ExtResource("3_v77qq") +region_rect = Rect2(0, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/previous"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_6a8uh") +theme_override_styles/hover = SubResource("StyleBoxEmpty_bu5lv") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_mue51") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/previous"] +root_node = NodePath("../../..") +libraries = { +&"": SubResource("AnimationLibrary_mue51") +} +autoplay = "base" + +[node name="next" type="NinePatchRect" parent="Title"] +layout_mode = 1 +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -39.0 +offset_top = -15.0 +offset_right = -9.0 +offset_bottom = 15.0 +grow_horizontal = 0 +grow_vertical = 2 +texture = ExtResource("3_v77qq") +region_rect = Rect2(6, 0, 6, 9) + +[node name="Button" type="Button" parent="Title/next"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/focus = SubResource("StyleBoxEmpty_wpgbx") +theme_override_styles/hover = SubResource("StyleBoxEmpty_r6b7x") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_hsiy4") +flat = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Title/next"] +libraries = { +&"": SubResource("AnimationLibrary_r6b7x") +} +autoplay = "base" + +[node name="Option" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Column_Headers" type="HBoxContainer" parent="Option"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -210.0 +offset_top = 51.0 +offset_right = 210.0 +offset_bottom = 82.0 +grow_horizontal = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "题材" + +[node name="Experience" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "尝试次数" +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "流行度" +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Column_Headers"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 22 +text = "成本" +horizontal_alignment = 2 + +[node name="Info" type="NinePatchRect" parent="Option"] +custom_minimum_size = Vector2(440, 240) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -220.0 +offset_top = -92.0 +offset_right = 220.0 +offset_bottom = 148.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_1qam4") +region_rect = Rect2(92, 38, 76, 34) +patch_margin_left = 2 +patch_margin_top = 33 +patch_margin_right = 2 +patch_margin_bottom = 33 + +[node name="List_1" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "回合战斗" + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "0" +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "中" +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_1/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +text = "600" +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_1"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_1/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_1/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_2" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_2/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_2"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_2/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_2/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_3" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_3/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_3"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_3/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_3/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_4" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_4/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_4/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_4/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_4/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_4/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_4/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_4"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_4/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_4/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_4/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_4/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_4/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_5" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_5/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_5/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_5/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_5/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_5/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_5/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_5"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_5/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_5/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_5/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_5/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_5/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="List_6" type="VBoxContainer" parent="Option/Info"] +custom_minimum_size = Vector2(436, 230) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -20.0 +offset_right = 210.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="option_1" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_1"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_1/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_1/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Cost" type="Label" parent="Option/Info/List_6/option_1/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_2" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_2"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_2/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_2/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_6/option_2/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_3" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_3"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_3/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_3/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_6/option_3/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_4" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_4"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_4/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_4/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_6/option_4/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_5" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_5"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_5/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_5/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_6/option_5/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_6" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_6"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_6/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_6/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_6/option_6/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 + +[node name="option_7" type="Button" parent="Option/Info/List_6"] +custom_minimum_size = Vector2(0, 32) +layout_mode = 2 +theme = ExtResource("4_xbfrb") +disabled = true +flat = true + +[node name="Row" type="HBoxContainer" parent="Option/Info/List_6/option_7"] +custom_minimum_size = Vector2(420, 0) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -210.0 +offset_top = -15.5 +offset_right = 210.0 +offset_bottom = 15.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Option/Info/List_6/option_7/Row"] +custom_minimum_size = Vector2(160, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 + +[node name="Experience" type="Label" parent="Option/Info/List_6/option_7/Row"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="Popularity" type="Label" parent="Option/Info/List_6/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 1 + +[node name="cost" type="Label" parent="Option/Info/List_6/option_7/Row"] +custom_minimum_size = Vector2(80, 0) +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 20 +horizontal_alignment = 2 diff --git a/UI/popup/task_development/theme/theme_option_button.tres b/UI/popup/task_development/theme/theme_option_button.tres new file mode 100644 index 0000000..4a1b142 --- /dev/null +++ b/UI/popup/task_development/theme/theme_option_button.tres @@ -0,0 +1,17 @@ +[gd_resource type="Theme" load_steps=5 format=3 uid="uid://r5e0kacnb3xf"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kemom"] +bg_color = Color(0.513883, 0.609153, 0.731076, 1) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ao15e"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kemom"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mp8x4"] +bg_color = Color(0.513883, 0.609153, 0.731076, 1) + +[resource] +Button/styles/focus = SubResource("StyleBoxFlat_kemom") +Button/styles/hover = SubResource("StyleBoxEmpty_ao15e") +Button/styles/normal = SubResource("StyleBoxEmpty_kemom") +Button/styles/pressed = SubResource("StyleBoxFlat_mp8x4")