50 lines
1.4 KiB
GDScript
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!"
|