feat: the rebuild gamemode of "Gauntlet"
This commit is contained in:
@@ -20,14 +20,14 @@ func fetch_mails() -> void:
|
||||
if _is_fetching or not NakamaManager.session: return
|
||||
_is_fetching = true
|
||||
|
||||
var r = await NakamaManager.client.rpc_async(NakamaManager.session, "get_mail", "{}")
|
||||
var result = await BackendService.get_mail()
|
||||
_is_fetching = false
|
||||
|
||||
if r.is_exception():
|
||||
push_error("[MailManager] Failed to fetch mails: " + r.get_exception().message)
|
||||
if result.get("success", false) == false:
|
||||
push_error("[MailManager] Failed to fetch mails: " + str(result.get("error", "")))
|
||||
return
|
||||
|
||||
var payload = JSON.parse_string(r.payload)
|
||||
var payload = result.get("data", {})
|
||||
if payload and payload is Dictionary:
|
||||
mails = payload.get("mails", [])
|
||||
var state = payload.get("state", {})
|
||||
@@ -50,12 +50,12 @@ func _update_unread_count() -> void:
|
||||
unread_count_changed.emit(count)
|
||||
|
||||
func claim_reward(mail_id: String) -> bool:
|
||||
var r = await NakamaManager.client.rpc_async(NakamaManager.session, "claim_mail_reward", JSON.stringify({"mail_id": mail_id}))
|
||||
if r.is_exception():
|
||||
push_error("[MailManager] Claim failed: " + r.get_exception().message)
|
||||
var result = await BackendService.claim_mail_reward(mail_id)
|
||||
if result.get("success", false) == false:
|
||||
push_error("[MailManager] Claim failed: " + str(result.get("error", "")))
|
||||
return false
|
||||
|
||||
var payload = JSON.parse_string(r.payload)
|
||||
var payload = result.get("data", {})
|
||||
if payload and payload.get("success"):
|
||||
claimed_ids = payload.get("claimed_ids", claimed_ids)
|
||||
if mail_id not in read_ids:
|
||||
@@ -69,12 +69,12 @@ func claim_reward(mail_id: String) -> bool:
|
||||
return false
|
||||
|
||||
func delete_mail(mail_id: String) -> bool:
|
||||
var r = await NakamaManager.client.rpc_async(NakamaManager.session, "delete_mail", JSON.stringify({"mail_id": mail_id}))
|
||||
if r.is_exception():
|
||||
push_error("[MailManager] Delete failed: " + r.get_exception().message)
|
||||
var result = await BackendService.delete_mail(mail_id)
|
||||
if result.get("success", false) == false:
|
||||
push_error("[MailManager] Delete failed: " + str(result.get("error", "")))
|
||||
return false
|
||||
|
||||
var payload = JSON.parse_string(r.payload)
|
||||
var payload = result.get("data", {})
|
||||
if payload and payload.get("success"):
|
||||
var deleted_ids = payload.get("deleted_ids", [])
|
||||
# Remove from local array
|
||||
@@ -102,13 +102,9 @@ func _save_inbox_state() -> void:
|
||||
"deleted_ids": [],
|
||||
"read_ids": read_ids
|
||||
}
|
||||
# We use storage write via a lightweight RPC or direct storage
|
||||
var r = await NakamaManager.client.rpc_async(
|
||||
NakamaManager.session, "save_mail_state",
|
||||
JSON.stringify(state_payload)
|
||||
)
|
||||
if r.is_exception():
|
||||
push_warning("[MailManager] Could not save mail state: " + r.get_exception().message)
|
||||
var result = await BackendService.api_rpc_async("save_mail_state", JSON.stringify(state_payload))
|
||||
if result.get("success", false) == false:
|
||||
push_warning("[MailManager] Could not save mail state: " + str(result.get("error", "")))
|
||||
|
||||
func read_all_and_claim_all() -> void:
|
||||
"""Mark all mails as read and claim all unclaimed rewards."""
|
||||
|
||||
Reference in New Issue
Block a user