Files
tekton/scripts/ui/daily_reward_config_panel.gd

50 lines
1.4 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 result = await BackendService.get_daily_reward_config_admin()
if result.get("success", false) == false:
status_lbl.text = "Error: " + str(result.get("error", ""))
return
var config = result.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 config = json.get_data()
var result = await BackendService.set_daily_reward_config(config)
if result.get("success", false) == false:
status_lbl.text = "Save error: " + str(result.get("error", ""))
else:
status_lbl.text = "Config saved successfully!"