using Cysharp.Threading.Tasks; using System.Collections.Generic; using UnityEngine; namespace BulletHellTemplate { /// /// Thin Firebase-backed IBackendService that delegates work to handler classes. /// public sealed class FirebaseBackendService : #if FIREBASE IBackendService #else MonoBehaviour #endif { #if FIREBASE /*──────────────────── AUTH ───────────────*/ public UniTask AccountLogin(string email, string pass) => FirebaseAuthHandler.LoginWithEmailAsync(email, pass); public UniTask AccountRegister(string email, string pass, string confirmPass) => FirebaseAuthHandler.RegisterWithEmailAsync(email, pass, confirmPass); public UniTask PlayAsGuest() => FirebaseAuthHandler.SignInAnonymouslyAsync(); public UniTask TryAutoLoginAsync() => FirebaseAuthHandler.TryAutoLoginAsync(); public UniTask Logout() => FirebaseAuthHandler.LogoutAsync(); public UniTask LoadAllAccountDataAsync() => FirebaseAuthHandler.LoadAllAccountDataAsync(); /*──────────────────── PROFILE ───────────────*/ public UniTask ChangePlayerNameAsync(string newName) => FirebaseProfileHandler.ChangePlayerNameAsync(newName); public UniTask ChangePlayerIconAsync(string iconId) => FirebaseProfileHandler.ChangePlayerIconAsync(iconId); public UniTask ChangePlayerFrameAsync(string frameId) => FirebaseProfileHandler.ChangePlayerFrameAsync(frameId); /*──────────────────── PURCHASES ───────────────*/ public UniTask PurchaseShopItemAsync(ShopItem shopItem) => FirebasePurchasesHandler.PurchaseShopItemAsync(shopItem); public UniTask UpgradeInventoryItemAsync(string uniqueItemGuid, InventoryItem inventorySO) => FirebasePurchasesHandler.UpgradeInventoryItemAsync(uniqueItemGuid, inventorySO); public UniTask DeletePurchasedInventoryItemAsync(string uniqueItemGuid) => FirebasePurchasesHandler.DeletePurchasedInventoryItemAsync(uniqueItemGuid); public UniTask UnlockBattlePassPremiumAsync() => FirebasePurchasesHandler.TryUnlockBattlePassPremiumAsync(); public UniTask ClaimBattlePassRewardAsync(BattlePassItem reward) => FirebasePurchasesHandler.ClaimBattlePassRewardAsync(reward); public UniTask CompleteGameSessionAsync(EndGameSessionData sessionData) => FirebaseProgressHandler.CompleteGameSessionAsync(sessionData); public UniTask CompleteQuestAsync(int questId) => FirebaseProgressHandler.TryCompleteQuestAsync(questId); public UniTask RefreshQuestLevelProgressAsync() => FirebaseProgressHandler.RefreshLevelBasedProgressAsync(); /*──────────────────── CHAR / ITEM STATE ─────────*/ public UniTask UpdateSelectedCharacterAsync(int characterId) => FirebaseCharacterHandler.TrySelectCharacterAsync(characterId); public UniTask UpdatePlayerCharacterFavouriteAsync(int characterId) => FirebaseCharacterHandler.UpdatePlayerCharacterFavouriteAsync(characterId); public UniTask UnlockCharacterSkin(int characterId, int skinId) => FirebaseCharacterHandler.TryUnlockCharacterSkinAsync(characterId, skinId); public UniTask UpdateCharacterSkin(int characterId, int skinId) => FirebaseCharacterHandler.UpdateCharacterSkinAsync(characterId, skinId); public UniTask UpdateCharacterLevelUP(int characterId) => FirebaseCharacterHandler.TryCharacterLevelUpAsync(characterId); public UniTask UpdateCharacterStatUpgradeAsync(StatUpgrade stat, CharacterStatsRuntime stats, int characterId) => FirebaseCharacterHandler.TryUpgradeStatAsync(stat, stats, characterId); public UniTask SetCharacterItemAsync(int characterId, string slotName, string uniqueItemGuid) => FirebaseCharacterHandler.SetCharacterSlotItemAsync(characterId, slotName, uniqueItemGuid); public UniTask GetPlayerRankAsync() => FirebaseRankingHandler.GetPlayerRankAsync(); public UniTask>> GetTopPlayersAsync(int limit = 20) => FirebaseRankingHandler.GetTopPlayersAsync(limit); public UniTask InitCurrencyRechargeAsync() => UniTask.FromResult(RequestResult.Fail("not_implemented")); /*──────────────────── REWARDS ───────────────*/ public UniTask ClaimDailyRewardAsync(int day, BattlePassItem reward) => FirebaseRewardsHandler.ClaimDailyRewardAsync(day, reward); public UniTask ClaimNewPlayerRewardAsync(int day, BattlePassItem reward) => FirebaseRewardsHandler.ClaimNewPlayerRewardAsync(day, reward); public UniTask ApplyMapRewardsAsync(MapCompletionRewardData data) => FirebaseRewardsHandler.ApplyMapRewardsAsync(data); public UniTask RedeemCouponAsync(string code) => FirebaseRewardsHandler.RedeemCouponAsync(code); /*──────────────────── DEBUG ───────────────*/ public UniTask TestAddAccountExpAsync(int exp) => FirebaseExpHandler.AddAccountExpAsync(exp); public UniTask TestAddCharacterExpAsync(int cid, int exp) => FirebaseExpHandler.AddCharacterExpAsync(cid, exp); public UniTask TestAddCharacterMasteryExpAsync(int cid, int exp) => FirebaseExpHandler.AddCharacterMasteryExpAsync(cid, exp); public UniTask TestAddBattlePassXpAsync(int amount) => FirebaseExpHandler.AddBattlePassXpAsync(amount); #endif } }