feat: sync time with dailylogin server

This commit is contained in:
2026-05-03 20:46:32 +08:00
parent 21875cdf8a
commit 5ec85f3954
4 changed files with 121 additions and 78 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ signal closed
# Tab: Daily Rewards
@onready var month_option_btn := %MonthOptionBtn as OptionButton
@onready var days_grid := %DaysGrid as GridContainer
@onready var day_config_template := %DayConfigTemplate as VBoxContainer
@onready var day_config_template := %DayConfigTemplate as PanelContainer
@onready var load_dr_btn := %LoadDRConfigBtn as Button
@onready var save_dr_btn := %SaveDRConfigBtn as Button
+19 -10
View File
@@ -14,7 +14,9 @@ signal closed
@onready var reward_name_label = $MainWindow/HBox/RightCol/MiddleDetails/VBox/RewardName
var _month_rewards: Array = []
var _claimed_days: int = 0
var _claimed_days: Array = []
var _today_index: int = 0
var _server_month: int = 1
var _can_claim: bool = false
var _today: String = ""
@@ -25,10 +27,6 @@ func _ready():
)
claim_btn.pressed.connect(_on_claim_pressed)
var time_dict = Time.get_datetime_dict_from_system()
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
month_label.text = months[time_dict.month - 1] + " Sign-in"
func show_panel():
show()
status_label.text = "Loading rewards..."
@@ -51,9 +49,20 @@ func _fetch_state():
var data = json.get_data()
_month_rewards = data.get("month_rewards", [])
var state = data.get("state", {})
_claimed_days = state.get("claimed_days", 0)
var claimed_list = state.get("claimed_days", [])
_claimed_days.clear()
for item in claimed_list:
_claimed_days.append(int(item))
_can_claim = data.get("can_claim_today", false)
_today = data.get("today_date", "")
_today_index = data.get("today_index", 0)
_server_month = data.get("server_month", 1)
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
if _server_month >= 1 and _server_month <= 12:
month_label.text = months[_server_month - 1] + " Sign-in"
_update_ui()
else:
@@ -73,8 +82,8 @@ func _update_ui():
var today_reward_amount = 0
var today_reward_type = "star"
if _claimed_days < _month_rewards.size():
var r = _month_rewards[_claimed_days]
if _today_index < _month_rewards.size():
var r = _month_rewards[_today_index]
if typeof(r) == TYPE_DICTIONARY:
today_reward_amount = r.get("amount", 0)
today_reward_type = r.get("type", "star")
@@ -99,8 +108,8 @@ func _update_ui():
var r_slot_data = _get_reward_display_data(reward_type)
var is_claimed = i < _claimed_days
var is_today = i == _claimed_days
var is_claimed = _claimed_days.has(i)
var is_today = i == _today_index
var slot = slot_template.duplicate()
slot.visible = true