# ============================================================
# pid:db/assign_new  （由 pid:db/get_pid 呼叫，@s 為首次加入的新玩家）
# 執行者（@s）：需要分配新 PID 的玩家
# 功能：分配下一個可用的 PID 給 @s，並將紀錄寫入 DB
# ============================================================

# 步驟 1：將 .currentID 遞增 1
# .currentID 永遠代表已分配出去的最大 PID
scoreboard players add .currentID playerID 1

# 將新的 .currentID 值同步寫入 DB 的 current_pid 欄位（保持計分板與 storage 一致）
execute store result storage pid:db current_pid int 1 run scoreboard players get .currentID playerID

# 步驟 2：將新的 PID（.currentID 的當前值）分配給 @s
scoreboard players operation @s playerID = .currentID playerID

# 步驟 3：組裝新的 DB 紀錄
# 先建立帶佔位值的 entry 結構（uuid 和 pid 後續會被覆蓋）
data modify storage pid:temp entry set value {uuid:[I;0,0,0,0],pid:0b, name:""}

# 將 @s 的 UUID 填入 entry（從 player_uuid 複製過來）
data modify storage pid:temp entry.uuid set from storage pid:temp player_uuid

# 將 @s 的新 PID 填入 entry
execute store result storage pid:temp entry.pid int 1 run scoreboard players get @s playerID

# 將 @s 的當前名稱填入 entry
data modify storage pid:temp entry.name set from storage pid:temp player_name

# 步驟 4：將完整的 entry 附加到 DB 列表末尾
data modify storage pid:db players append from storage pid:temp entry

function pid:db/clear_temp