feat: adding the skin_shader_generator, and gacha base barebone

This commit is contained in:
2026-04-24 00:17:00 +08:00
parent 16c82a48b8
commit 7e4b707e84
196 changed files with 4883 additions and 200 deletions
+14 -1
View File
@@ -33,6 +33,7 @@ signal profile_updated
@onready var costume_tab_btn := %CostumeTabBtn as Button
@onready var glove_tab_btn := %GloveTabBtn as Button
@onready var acc_tab_btn := %AccTabBtn as Button
@onready var frag_tab_btn := %FragTabBtn as Button
@onready var drag_zone := %DragZone as Control
@onready var character_root := %CharacterRoot as Node3D
@onready var char_left_btn := %CharLeftBtn as Button
@@ -173,6 +174,7 @@ func _connect_signals() -> void:
costume_tab_btn.pressed.connect(func(): _on_category_tab_pressed("costume"))
glove_tab_btn.pressed.connect(func(): _on_category_tab_pressed("glove"))
acc_tab_btn.pressed.connect(func(): _on_category_tab_pressed("accessory"))
frag_tab_btn.pressed.connect(func(): _on_category_tab_pressed("fragment"))
# Item grid slot buttons
for i in _item_slots.size():
@@ -248,13 +250,18 @@ func _highlight_active_tab() -> void:
"head": head_tab_btn,
"costume": costume_tab_btn,
"glove": glove_tab_btn,
"accessory": acc_tab_btn
"accessory": acc_tab_btn,
"fragment": frag_tab_btn
}
for cat: String in map:
(map[cat] as Button).modulate = Color(1.3, 1.3, 0.4, 1) if cat == _current_category else Color.WHITE
func _rebuild_category_items() -> void:
_category_items.clear()
# Fragment tab handled separately
if _current_category == "fragment":
_rebuild_fragment_items()
return
var prefix := _current_category + "_"
# Resolve the current character's node name (e.g. "Copper" → "Oldpop")
var current_char_display: String = CHARACTERS[_loadout_index]
@@ -283,6 +290,12 @@ func _rebuild_category_items() -> void:
# ─────────────────────────────────────────────────────────────
# Item grid
# ─────────────────────────────────────────────────────────────
func _rebuild_fragment_items() -> void:
var frags: Dictionary = UserProfileManager.fragments
for fid in ["frag_common", "frag_uncommon", "frag_rare"]:
var count: int = frags.get(fid, 0)
if count > 0: _category_items.append(fid)
func _populate_item_grid() -> void:
var start: int = _current_page * ITEMS_PER_PAGE
var total: int = _category_items.size()