public void ToggleFacebookLink() { if (FB.IsLoggedIn) { Action <bool> afterCheck = response => { if (response) { PF_Authentication.UnlinkFbAccount(); } }; if (!PF_PlayerData.isPlayFabRegistered) { DialogCanvasController.RequestConfirmationPrompt(GlobalStrings.CONFIRM_UNLINK_PROMPT, GlobalStrings.CONFIRM_UNLINK_MSG, afterCheck); } else { DialogCanvasController.RequestConfirmationPrompt(GlobalStrings.CONFIRM_UNLINK_PROMPT, "Are you sure?", afterCheck); } } else { PF_Authentication.StartFacebookLogin(); // This will do the linking automatically based on being logged in } }
public void SetDisplayName() { Action <string> processResponse = response => { if (response == null) { return; } PF_Authentication.UpdateDisplayName(response, result => { displayName.text = result.DisplayName; PF_PlayerData.accountInfo.TitleInfo.DisplayName = result.DisplayName; }); }; if (FB.IsLoggedIn) { UnityAction <string> afterGetFbName = fbName => { DialogCanvasController.RequestTextInputPrompt(GlobalStrings.DISPLAY_NAME_PROMPT, GlobalStrings.DISPLAY_NAME_MSG, processResponse, fbName); }; FacebookHelperClass.GetFBUserName(afterGetFbName); } else { DialogCanvasController.RequestTextInputPrompt(GlobalStrings.DISPLAY_NAME_PROMPT, GlobalStrings.DISPLAY_NAME_MSG, processResponse); } }
public void SetDisplayName() { Action <string> processResponse = (string response) => { if (response != null) { PF_Authentication.UpdateDisplayName(response, (UpdateUserTitleDisplayNameResult result) => { this.displayName.text = result.DisplayName; PF_PlayerData.accountInfo.TitleInfo.DisplayName = result.DisplayName; }); } }; if (PF_PlayerData.accountInfo.FacebookInfo != null) { UnityAction <string> afterGetFBName = (string name) => { DialogCanvasController.RequestTextInputPrompt(GlobalStrings.DISPLAY_NAME_PROMPT, GlobalStrings.DISPLAY_NAME_MSG, processResponse, name); }; FacebookHelperClass.GetFBUserName(afterGetFBName); } else { DialogCanvasController.RequestTextInputPrompt(GlobalStrings.DISPLAY_NAME_PROMPT, GlobalStrings.DISPLAY_NAME_MSG, processResponse); } }
public void ToggleShowOnLogin() { Action <bool> processResponse = (bool response) => { if (response == true) { this.isShownOnLogin = !this.isShownOnLogin; this.changedLoginState = true; if (this.isShownOnLogin) { this.showOnLogin.GetComponent <Image> ().overrideSprite = this.checkedBox; } else { this.showOnLogin.GetComponent <Image> ().overrideSprite = this.uncheckedBox; } } }; if (this.isShownOnLogin == true) { DialogCanvasController.RequestConfirmationPrompt(GlobalStrings.TOGGLE_PROMPT, GlobalStrings.TOGGLE_MSG, processResponse); } else { processResponse.Invoke(true); } }
public static void AddFriend(string input, AddFriendMethod method, UnityAction <bool> callback = null) { var request = new AddFriendRequest(); switch (method) { case AddFriendMethod.DisplayName: request.FriendTitleDisplayName = input; break; case AddFriendMethod.Email: request.FriendEmail = input; break; case AddFriendMethod.Username: request.FriendUsername = input; break; case AddFriendMethod.PlayFabID: request.FriendPlayFabId = input; break; } DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.AddFriend); PlayFabClientAPI.AddFriend(request, result => { if (callback != null) { callback(result.Created); } PF_Bridge.RaiseCallbackSuccess(string.Empty, PlayFabAPIMethods.AddFriend, MessageDisplayStyle.none); }, PF_Bridge.PlayFabErrorCallback); }
public void CategoryFilterClicked() { UnityAction <int> afterSelect = (int response) => { if (response == 0) // stand alone { CategoryFilter.GetComponentInChildren <Text>().text = "Standalone"; this.ActiveOptions = this.StandAloneStatistics; this.QuestContainer.gameObject.SetActive(false); this.StatsContainer.anchoredPosition = new Vector2(this.QuestContainer.anchoredPosition.x + 5, this.QuestContainer.anchoredPosition.y); } else if (response == 1) // per quest { CategoryFilter.GetComponentInChildren <Text>().text = "Per Quest"; this.ActiveOptions = this.QuestStatistics; this.StatsContainer.anchoredPosition = new Vector2(this.StatsContainer.anchoredPosition.x + this.StatsContainer.rect.width, this.StatsContainer.anchoredPosition.y); this.QuestContainer.gameObject.SetActive(true); } }; List <string> categories = new List <string>() { "Standalone", "Per Quest" }; DialogCanvasController.RequestSelectorPrompt(GlobalStrings.CATEGORY_SELECTOR_PROMPT, categories, afterSelect); }
/// <summary> /// Login with PlayFab username. /// </summary> /// <param name="user">Username to use</param> /// <param name="pass">Password to use</param> public static void LoginWithUsername(string user, string password) { if (user.Length > 0 && password.Length > 0) { //LoginMethodUsed = LoginPathways.pf_username; LoginWithPlayFabRequest request = new LoginWithPlayFabRequest(); request.Username = user; request.Password = password; request.TitleId = PlayFabSettings.TitleId; // if(!string.IsNullOrEmpty(PlayFabLoginCalls.publisher_id)) // { // request.PublisherId = PlayFabLoginCalls.publisher_id; // } DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GenericLogin); PlayFabClientAPI.LoginWithPlayFab(request, OnLoginResult, OnLoginError); } else { if (OnLoginFail != null) { OnLoginFail("User Name and Password cannot be blank.", MessageDisplayStyle.error); } } }
/// <summary> /// Login using the email associated with a PlayFab account. /// </summary> /// <param name="user">User.</param> /// <param name="password">Password.</param> public static void LoginWithEmail(string user, string password) { if (user.Length > 0 && password.Length > 0 && ValidateEmail(user)) { //LoginMethodUsed = LoginPathways.pf_email; LoginWithEmailAddressRequest request = new LoginWithEmailAddressRequest(); request.Email = user; request.Password = password; request.TitleId = PlayFabSettings.TitleId; // if(!string.IsNullOrEmpty(PlayFabLoginCalls.publisher_id)) // { // request.PublisherId = PlayFabLoginCalls.publisher_id; // } DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GenericLogin); PlayFabClientAPI.LoginWithEmailAddress(request, OnLoginResult, OnLoginError); } else { if (OnLoginFail != null) { OnLoginFail("Username or Password is invalid. Check credentails and try again", MessageDisplayStyle.error); } } }
public static void GetEncounterLists(List <string> encounters) { var request = new GetTitleDataRequest { Keys = encounters }; var JsonUtil = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer); DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetTitleData_Specific); PlayFabClientAPI.GetTitleData(request, result => { // Clear encounters for now (until we have reasons to merge dicts); PF_GamePlay.ClearQuestProgress(); Encounters.Clear(); foreach (var item in encounters) { if (result.Data.ContainsKey(item)) { Encounters.Add(item, JsonUtil.DeserializeObject <Dictionary <string, UB_EncounterData> >(result.Data[item])); } } PF_Bridge.RaiseCallbackSuccess("Encounters Loaded!", PlayFabAPIMethods.GetTitleData_Specific, MessageDisplayStyle.none); }, PF_Bridge.PlayFabErrorCallback); }
public static void BuildCDNRequests() { List <AssetBundleHelperObject> requests = new List <AssetBundleHelperObject>(); var mime = "application/x-gzip"; var keyPrefix = string.Empty; if (Application.platform == RuntimePlatform.Android) { keyPrefix = "Android/"; } else if (Application.platform == RuntimePlatform.IPhonePlayer) { keyPrefix = "iOS/"; } foreach (var ev in Events) { if (IsEventActive(ev.Key) == PromotionType.Active && !string.IsNullOrEmpty(ev.Value.BundleId)) { requests.Add(new AssetBundleHelperObject { MimeType = mime, ContentKey = keyPrefix + ev.Value.BundleId, FileName = ev.Key, Unpacked = new UB_UnpackedAssetBundle() }); } } GameController.Instance.cdnController.assets = requests; UnityAction <bool> afterCdnRequest = response => { if (response) { PF_Bridge.RaiseCallbackSuccess(string.Empty, PlayFabAPIMethods.GetCDNConent, MessageDisplayStyle.none); Debug.Log("CDN Retrieved!"); } PromoAssets.Clear(); foreach (var obj in requests) { if (obj.IsUnpacked) { PromoAssets.Add(obj.Unpacked); } } GameController.Instance.cdnController.isInitalContentUnpacked = true; }; if (GameController.Instance.cdnController.isInitalContentUnpacked == false && GameController.Instance.cdnController.useCDN) { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetCDNConent); GameController.Instance.cdnController.KickOffCDNGet(requests, afterCdnRequest); } else { GameController.Instance.cdnController.KickOffStreamingAssetsGet(requests, afterCdnRequest); } }
public static void UpdateCharacterStatistics(string characterId, Dictionary <string, int> updates) { Dictionary <string, int> activeStats; if (!characterStatistics.TryGetValue(characterId, out activeStats)) { return; } ; foreach (var each in updates) { int temp; activeStats.TryGetValue(each.Key, out temp); activeStats[each.Key] = temp + each.Value; } DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.UpdateCharacterStatistics); var request = new ExecuteCloudScriptRequest { FunctionName = "SetCharacterStats", FunctionParameter = new { characterId = characterId, statistics = activeStats }, GeneratePlayStreamEvent = true }; PlayFabClientAPI.ExecuteCloudScript(request, OnUpdateCharacterStatisticsSuccess, PF_Bridge.PlayFabErrorCallback); }
/// <summary> /// Starts the buy store item. /// </summary> /// <param name="item">Item.</param> /// <param name="storeID">Store I.</param> public static void StartBuyStoreItem(CatalogItem item, string storeID) { if (item.VirtualCurrencyPrices.ContainsKey("RM")) { PF_Bridge.IAB_CurrencyCode = "US"; PF_Bridge.IAB_Price = (int)item.VirtualCurrencyPrices["RM"]; MakeRmPurchase(item.ItemId); return; } var vcKvp = item.VirtualCurrencyPrices.First(); // normal purchase item flow var request = new PurchaseItemRequest(); request.ItemId = item.ItemId; request.VirtualCurrency = vcKvp.Key; request.Price = (int)vcKvp.Value; request.StoreId = storeID; if (PF_PlayerData.activeCharacter != null) { request.CharacterId = PF_PlayerData.activeCharacter.characterDetails.CharacterId; } DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.MakePurchase); PlayFabClientAPI.PurchaseItem(request, OnBuyStoreItemSuccess, PF_Bridge.PlayFabErrorCallback); }
public void HandleCallbackSuccess(string details, PlayFabAPIMethods method, MessageDisplayStyle style) { switch (method) { case PlayFabAPIMethods.MakePurchase: // refresh after purchase. if (PF_PlayerData.activeCharacter == null) { PF_PlayerData.GetUserAccountInfo(); } else { PF_PlayerData.GetCharacterInventory(PF_PlayerData.activeCharacter.characterDetails.CharacterId); } break; case PlayFabAPIMethods.GetCharacterInventory: DialogCanvasController.RequestStore(this.StoreName.text); break; case PlayFabAPIMethods.GetAccountInfo: DialogCanvasController.RequestStore(this.StoreName.text); break; } }
void OnLevelWasLoaded(int index) { if (sceneController != null) { string levelName = SceneManager.GetActiveScene().name; //Debug.Log ("GAME CONTROLLER ON LEVEL LOADED: " + Application.loadedLevelName); if (levelName.Contains("Authenticate") && (sceneController.previousScene != SceneController.GameScenes.Null || sceneController.previousScene != SceneController.GameScenes.Splash)) { //Debug.Log("MADE IT THROUGH THE IF STATEMENT"); DialogCanvasController.RequestInterstitial(); } else if (levelName.Contains("CharacterSelect")) { DialogCanvasController.RequestInterstitial(); CharacterSelectDataRefresh(); } else if (levelName.Contains("Profile")) { CharacterProfileDataRefresh(); } else if (levelName.Contains("Gameplay")) { DialogCanvasController.RequestInterstitial(); } } }
public static void LinkFaceBookToPlayFab() { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.LinkFacebookId); var request = new LinkFacebookAccountRequest { AccessToken = AccessToken.CurrentAccessToken.TokenString }; PlayFabClientAPI.LinkFacebookAccount(request, OnLinkSuccess, error => { if (!error.ErrorMessage.Contains("already linked")) // ew, gotta get better error codes { PF_Bridge.RaiseCallbackError(error.ErrorMessage, PlayFabAPIMethods.LinkFacebookId, MessageDisplayStyle.error); return; } PF_Bridge.RaiseCallbackSuccess(string.Empty, PlayFabAPIMethods.LinkFacebookId, MessageDisplayStyle.none); Action <bool> afterConfirm = (bool response) => { if (!response) { return; } DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.LinkFacebookId); request.ForceLink = true; PlayFabClientAPI.LinkFacebookAccount(request, OnLinkSuccess, PF_Bridge.PlayFabErrorCallback); }; DialogCanvasController.RequestConfirmationPrompt("Caution!", "Your current facebook account is already linked to another Unicorn Battle player. Do you want to force-bind your Facebook account to this player?", afterConfirm); }); }
public static void RedeemItemOffer(CatalogItem offer, string instanceToRemove, UnityAction <string> callback = null, bool onlyRemoveInstance = false) { if (onlyRemoveInstance) { // this offer has already been rewarded, need to remove from the player's invenetory. var request = new ExecuteCloudScriptRequest(); request.FunctionName = "RemoveOfferItem"; request.FunctionParameter = new { PFID = PlayerId, InstanceToRemove = instanceToRemove }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.ConsumeOffer); PlayFabClientAPI.ExecuteCloudScript(request, result => { if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result)) { return; } if (callback != null) { callback(null); } PF_Bridge.RaiseCallbackSuccess(string.Empty, PlayFabAPIMethods.ConsumeOffer, MessageDisplayStyle.none); }, PF_Bridge.PlayFabErrorCallback); } else { // consume the item var removeReq = new ExecuteCloudScriptRequest { FunctionName = "RemoveOfferItem", FunctionParameter = new { PFID = PlayerId, InstanceToRemove = instanceToRemove } }; PlayFabClientAPI.ExecuteCloudScript(removeReq, result => { PF_Bridge.VerifyErrorFreeCloudScriptResult(result); }, PF_Bridge.PlayFabErrorCallback); // make the award var awardRequest = new ExecuteCloudScriptRequest { FunctionName = "RedeemItemOffer", FunctionParameter = new { PFID = PlayerId, Offer = offer, SingleUse = offer.Tags.IndexOf("SingleUse") > -1 ? true : false } }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.ConsumeOffer); PlayFabClientAPI.ExecuteCloudScript(awardRequest, result => { if (!PF_Bridge.VerifyErrorFreeCloudScriptResult(result)) { return; } if (callback != null) { callback(result.FunctionResult.ToString()); } PF_Bridge.RaiseCallbackSuccess(string.Empty, PlayFabAPIMethods.ConsumeOffer, MessageDisplayStyle.none); }, PF_Bridge.PlayFabErrorCallback); } }
public void UnlockContainer() { DialogCanvasController.RequestItemViewer(new List <string>() { selectedItem.itemData.category.catalogRef.ItemId }, true); HideSelectedItem(); }
public static void GetTitleData() { var request = new GetTitleDataRequest { Keys = GlobalStrings.InitTitleKeys }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetTitleData); PlayFabClientAPI.GetTitleData(request, OnGetTitleDataSuccess, PF_Bridge.PlayFabErrorCallback); }
public static void CreateNewCharacter(string name, FG_ClassDetail details) { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GrantCharacterToUser); ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest(); request.FunctionName = "CreateCharacter"; request.FunctionParameter = new { catalogCode = details.CatalogCode, characterName = name }; PlayFabClientAPI.ExecuteCloudScript(request, OnCreateNewCharacterSuccess, PF_Bridge.PlayFabErrorCallback); }
public static void DrawCharactersToUser() { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.DrawCharacterToUser); ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest(); request.FunctionName = "DrawCharacters"; request.FunctionParameter = new { times = 2 }; PlayFabClientAPI.ExecuteCloudScript(request, OnDrawCharactersSuccess, PF_Bridge.PlayFabErrorCallback); }
public static void GetOffersCatalog() { var request = new GetCatalogItemsRequest { CatalogVersion = "Offers" }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetOffersCatalog); PlayFabClientAPI.GetCatalogItems(request, OnGetOffersCatalogSuccess, PF_Bridge.PlayFabErrorCallback); }
/// <summary> /// Retrives the quest items. /// </summary> public static void RetriveQuestItems() { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.RetriveQuestItems); ExecuteCloudScriptRequest request = new ExecuteCloudScriptRequest(); request.FunctionName = "RetriveQuestItems"; request.FunctionParameter = new { ItemIds = PF_GamePlay.QuestProgress.ItemsFound }; PlayFabClientAPI.ExecuteCloudScript(request, OnRetriveQuestItemsSuccess, PF_Bridge.PlayFabErrorCallback); }
public static void GetTitleData() { // now get the rest of the title data -- these are stored in traditional title data var request = new GetTitleDataRequest { Keys = GlobalStrings.InitTitleKeys }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetTitleData_General); PlayFabClientAPI.GetTitleData(request, OnGetTitleDataSuccess, PF_Bridge.PlayFabErrorCallback); }
public static void GetEventData() { // first get list of events --- these are stored in a special catalog var request = new GetCatalogItemsRequest { CatalogVersion = "Events" }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetEvents); PlayFabClientAPI.GetCatalogItems(request, OnGetEventsSuccess, PF_Bridge.PlayFabErrorCallback); }
public void AfterUnlock(UnlockContainerItemResult result) { // unlocking a container will automatically add the returned items, this ensures that items are not added twice. PF_GamePlay.QuestProgress.ItemsFound.Remove(this.selectedItem.ItemId); // build our list for displaying the container results List <ContainerResultItem> items = new List <ContainerResultItem>(); foreach (var award in result.GrantedItems) { string awardIcon = "Default"; CatalogItem catItem = PF_GameData.catalogItems.Find((i) => { return(i.ItemId == award.ItemId); }); Dictionary <string, string> kvps = PlayFab.Json.JsonWrapper.DeserializeObject <Dictionary <string, string> >(catItem.CustomData); kvps.TryGetValue("icon", out awardIcon); items.Add(new ContainerResultItem() { displayIcon = GameController.Instance.iconManager.GetIconById(awardIcon), displayName = award.DisplayName }); } if (result.VirtualCurrency != null) { foreach (var award in result.VirtualCurrency) { items.Add(new ContainerResultItem() { displayIcon = GameController.Instance.iconManager.GetIconById(award.Key), displayName = string.Format("{1} Award: {0}", award.Value, award.Key) }); } } else { CatalogItem catRef = PF_GameData.catalogItems.Find((i) => { return(i.ItemId == this.selectedItem.ItemId); }); if (catRef.Container.VirtualCurrencyContents.Count > 0) { foreach (var vc in catRef.Container.VirtualCurrencyContents) { items.Add(new ContainerResultItem() { displayIcon = GameController.Instance.iconManager.GetIconById(vc.Key), displayName = string.Format("{1} Award: {0}", vc.Value, vc.Key) }); } } } this.CurrentIcon.overrideSprite = GameController.Instance.iconManager.GetIconById(currentIconId + "_Open"); this.openedBoxes.Add(this.selectedIndex, items); EnableUnlockedItemsView(items); DialogCanvasController.RequestInventoryPrompt(); }
/// <summary> /// write back the quest progress to playfab /// </summary> public static void SavePlayerData() { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.SavePlayerInfo); var request = new ExecuteCloudScriptRequest { FunctionName = "SaveProgress", FunctionParameter = new { CurrentPlayerData = PF_PlayerData.activeCharacter, QuestProgress = QuestProgress, LevelRamp = PF_GameData.CharacterLevelRamp }, }; PlayFabClientAPI.ExecuteCloudScript(request, OnSavePlayerDataSuccess, PF_Bridge.PlayFabErrorCallback); }
/// <summary> /// Makes the RM purchase. /// </summary> /// <param name="itemId">Item identifier.</param> public static void MakeRmPurchase(string itemId) { if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer) { DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.MakePurchase); OnePF.OpenIAB.purchaseProduct(itemId); } else { PF_Bridge.RaiseCallbackError("Current plaform does not support IAP; cannot process transaction.", PlayFabAPIMethods.MakePurchase, MessageDisplayStyle.error); } }
public void StatisticFilterClicked() { UnityAction <int> afterSelect = (int response) => { this.StatisticFilter.GetComponentInChildren <Text>().text = this.PlayerLevelStats[response]; UpdateFriendsLB(this.PlayerLevelStats[response]); UpdateTop10LB(this.PlayerLevelStats[response]); //UpdateMyRank(this.PlayerLevelStats[response]); }; DialogCanvasController.RequestSelectorPrompt(GlobalStrings.STAT_SELECTOR_PROMPT, this.PlayerLevelStats, afterSelect); }
public void RedeemCoupon() { UnityAction <string> afterPrompt = (string response) => { if (!string.IsNullOrEmpty(response)) { PF_GamePlay.RedeemCoupon(response); } }; DialogCanvasController.RequestTextInputPrompt("Redeem a Coupon Code", "Enter a valid code to redeem rewards.", (string response) => { afterPrompt(response); }, "XXX-XXXX-XXX"); }
public static void GetUserAccountInfo() { var request = new GetPlayerCombinedInfoRequest { InfoRequestParameters = new GetPlayerCombinedInfoRequestParams { GetUserData = true, GetUserReadOnlyData = true, GetUserInventory = true, GetUserVirtualCurrency = true, GetUserAccountInfo = true, GetPlayerStatistics = true } }; DialogCanvasController.RequestLoadingPrompt(PlayFabAPIMethods.GetAccountInfo); PlayFabClientAPI.GetPlayerCombinedInfo(request, OnGetUserAccountInfoSuccess, PF_Bridge.PlayFabErrorCallback); }