Files
tekton/scripts/ui/daily_reward_config_panel.gd
T
2026-05-01 05:07:54 +08:00

52 lines
1.6 KiB
GDScript

extends Control
@onready var close_btn = %CloseBtn
@onready var save_btn = %SaveBtn
@onready var status_lbl = %StatusLabel
@onready var text_edit = %TextEdit
func _ready():
close_btn.pressed.connect(func(): queue_free())
save_btn.pressed.connect(_on_save)
_load_config()
func _load_config():
if not NakamaManager.session:
status_lbl.text = "Not authenticated"
return
status_lbl.text = "Loading..."
var res = await NakamaManager.client.rpc_async(NakamaManager.session, "get_daily_reward_config_admin", "{}")
if res.is_exception():
status_lbl.text = "Error: " + res.get_exception().message
return
var json = JSON.new()
if json.parse(res.payload) == OK:
var config = json.get_data().get("config", {})
if config.is_empty():
# generate default 12 months for 2026/2027
var year = 2026
for m in range(1, 13):
var m_str = "%d-%02d" % [year, m]
var arr = []
for d in range(30):
arr.append(min(10 + d*5, 100)) # Reward is star currency, max 100
config[m_str] = arr
text_edit.text = JSON.stringify(config, "\t")
status_lbl.text = "Loaded"
func _on_save():
var json = JSON.new()
if json.parse(text_edit.text) != OK:
status_lbl.text = "Invalid JSON syntax. Please check your formatting."
return
status_lbl.text = "Saving..."
var req = { "config": json.get_data() }
var res = await NakamaManager.client.rpc_async(NakamaManager.session, "set_daily_reward_config", JSON.stringify(req))
if res.is_exception():
status_lbl.text = "Save error: " + res.get_exception().message
else:
status_lbl.text = "Config saved successfully!"