Files
spellforge/addons/game_designer/designer_panel.gd
T
joywayerandClaude Opus 5 a0e205a031 feat(attr): 游戏设计器新增「属性」页,字段化编辑 attributes.json
按 CLAUDE.md 编辑器插件规范:控件经 designer_ui 工厂创建、标签中英双语中文在前、
combine 下拉存 key 不存显示串、_save 合并式写回防丢键、UI 在 _ready 而非 _init 构建。

另修:SpinBox 按 step 吸附会引入双精度噪声(0.01 → 0.00999999999476),
直接写回会把噪声固化进 JSON;_collect 用 snappedf(v, 1e-6) 抹平,
使「不改任何值就保存」得到逐位一致的 attributes.json。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 12:05:50 +08:00

29 lines
1.4 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 游戏设计器主面板 — TabContainer 整合 法术/敌人/波次/Core/平衡 五个编辑器
@tool
extends Control
func _init() -> void:
custom_minimum_size = Vector2(0, 320)
var tabs := TabContainer.new()
tabs.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
add_child(tabs)
# 法术(字段化表单 tab
_add_tab(tabs, "✨ 法术", preload("res://addons/game_designer/spell_tab.gd").new())
_add_tab(tabs, "👾 敌人", preload("res://addons/game_designer/enemy_tab.gd").new())
_add_tab(tabs, "🌊 波次", preload("res://addons/game_designer/wave_tab.gd").new())
_add_tab(tabs, "🪄 Core", preload("res://addons/game_designer/core_tab.gd").new())
_add_tab(tabs, "🔮 共鸣", preload("res://addons/game_designer/resonance_tab.gd").new())
_add_tab(tabs, "🔥 状态", preload("res://addons/game_designer/status_tab.gd").new())
_add_tab(tabs, "👑 Boss", preload("res://addons/game_designer/boss_tab.gd").new())
_add_tab(tabs, "⚖ 平衡", preload("res://addons/game_designer/balance_tab.gd").new())
_add_tab(tabs, "📊 属性", preload("res://addons/game_designer/attribute_tab.gd").new())
func _add_tab(tabs: TabContainer, title: String, content: Control) -> void:
var scroll := ScrollContainer.new()
scroll.name = title
scroll.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
content.size_flags_horizontal = Control.SIZE_EXPAND_FILL
scroll.add_child(content)
tabs.add_child(scroll)