feat: the rebuild gamemode of "Gauntlet"
This commit is contained in:
@@ -321,18 +321,14 @@ func purchase_item(item_id: String) -> String:
|
||||
"idempotency_key": str(randi()) + "_" + str(Time.get_ticks_usec())
|
||||
})
|
||||
|
||||
var result = await NakamaManager.client.rpc_async(
|
||||
NakamaManager.session,
|
||||
"purchase_item",
|
||||
payload
|
||||
)
|
||||
var result = await BackendService.api_rpc_async("purchase_item", payload)
|
||||
|
||||
if result.is_exception():
|
||||
var msg = result.get_exception().message
|
||||
if result.get("success", false) == false:
|
||||
var msg = str(result.get("message", "Unknown error"))
|
||||
push_error("[UserProfileManager] Purchase failed: ", msg)
|
||||
return msg
|
||||
|
||||
var response = JSON.parse_string(result.payload)
|
||||
var response = result.get("data", {})
|
||||
if typeof(response) == TYPE_DICTIONARY and response.has("success") and response.success == true:
|
||||
await _reload_wallet()
|
||||
if not inventory.has(item_id):
|
||||
@@ -346,17 +342,13 @@ func purchase_item(item_id: String) -> String:
|
||||
func fetch_shop_catalog() -> void:
|
||||
if not NakamaManager.session: return
|
||||
|
||||
var result = await NakamaManager.client.rpc_async(
|
||||
NakamaManager.session,
|
||||
"get_shop_catalog",
|
||||
"{}"
|
||||
)
|
||||
var result = await BackendService.api_rpc_async("get_shop_catalog", "{}")
|
||||
|
||||
if result.is_exception():
|
||||
push_error("[UserProfileManager] Failed to fetch shop catalog: ", result.get_exception().message)
|
||||
if result.get("success", false) == false:
|
||||
push_error("[UserProfileManager] Failed to fetch shop catalog: " + str(result.get("message", "")))
|
||||
return
|
||||
|
||||
var payload: Dictionary = JSON.parse_string(result.payload)
|
||||
var payload: Dictionary = result.get("data", {})
|
||||
if payload and payload.has("catalog"):
|
||||
shop_catalog = payload.catalog
|
||||
if payload.has("featured_banners"):
|
||||
@@ -368,13 +360,9 @@ func fetch_shop_catalog() -> void:
|
||||
## The Nakama function requireAdmin() on the server prevents non-admin abuse.
|
||||
func admin_topup_gold() -> bool:
|
||||
if not NakamaManager.session: return false
|
||||
var result = await NakamaManager.client.rpc_async(
|
||||
NakamaManager.session,
|
||||
"admin_topup_gold",
|
||||
"{}"
|
||||
)
|
||||
if result.is_exception():
|
||||
push_error("[UserProfileManager] Topup failed: ", result.get_exception().message)
|
||||
var result = await BackendService.api_rpc_async("admin_topup_gold", "{}")
|
||||
if result.get("success", false) == false:
|
||||
push_error("[UserProfileManager] Topup failed: " + str(result.get("message", "")))
|
||||
return false
|
||||
await _reload_wallet()
|
||||
return true
|
||||
@@ -389,21 +377,17 @@ func buy_currency(package_id: String) -> bool:
|
||||
"store_type": "test"
|
||||
})
|
||||
|
||||
var result = await NakamaManager.client.rpc_async(
|
||||
NakamaManager.session,
|
||||
"buy_currency",
|
||||
payload
|
||||
)
|
||||
var result = await BackendService.api_rpc_async("buy_currency", payload)
|
||||
|
||||
if result.is_exception():
|
||||
var msg = result.get_exception().message
|
||||
if result.get("success", false) == false:
|
||||
var msg = str(result.get("message", "Unknown error"))
|
||||
if "NotEnoughFunds" in msg:
|
||||
push_error("[UserProfileManager] Failed to buy currency: Not enough funds.")
|
||||
else:
|
||||
push_error("[UserProfileManager] Failed to buy currency: ", msg)
|
||||
return false
|
||||
|
||||
var response = JSON.parse_string(result.payload)
|
||||
var response = result.get("data", {})
|
||||
if typeof(response) == TYPE_DICTIONARY and response.has("status") and response.status == "pending":
|
||||
print("[UserProfileManager] Currency purchase pending verification.")
|
||||
|
||||
@@ -494,14 +478,10 @@ func submit_to_leaderboard() -> void:
|
||||
"loadout_character": profile.get("loadout_character", "Copper")
|
||||
})
|
||||
|
||||
var result = await NakamaManager.client.rpc_async(
|
||||
NakamaManager.session,
|
||||
"submit_score",
|
||||
payload
|
||||
)
|
||||
var result = await BackendService.api_rpc_async("submit_score", payload)
|
||||
|
||||
if result.is_exception():
|
||||
push_warning("[UserProfileManager] Leaderboard RPC failed: ", result.get_exception().message)
|
||||
if result.get("success", false) == false:
|
||||
push_warning("[UserProfileManager] Leaderboard RPC failed: " + str(result.get("message", "")))
|
||||
else:
|
||||
print("[UserProfileManager] Leaderboard score submitted: ", stats.get("high_score", 0))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user