public void takeALife() { KuberaUser tempUsr = currentUser; if (tempUsr.playerLifes == maximumLifes) { setLifeDate(); currentMinutes = timeForLifeInMinutes; currentSeconds = 0; } giveLifesToUser(-1); showTimer = true; //setLifeDate (); //LocalNotification*******De cuando se queda sin vidas y gana 1 vida if (tempUsr.playerLifes == 0) { int currentLevel = tempUsr.levels.Count; life1NotificationID = (LocalNotificationManager.GetInstance() as LocalNotificationManager).modifyAndScheduleNotificationByName( villavanilla.Notifications.ERegisteredNotification.LIFE_1, MultiLanguageTextManager.instance.getTextByID(MultiLanguageTextManager.NOTIFICATION_LIFE1).Replace("{{level}}", currentLevel.ToString()), "Kubera", timeForLifeInMinutes * 60.0); } }
private void OnUserDataObtained(string request_id) { if (mainUpdateRequest != null && mainUpdateRequest.id == request_id) { mainUpdateRequest = null; } if (OnDataReceived != null) { GSGetUserRequest request = (GSGetUserRequest)getRequestById(request_id); //Hacemos un usuario para el diff KuberaUser remoteUser = new KuberaUser(loginRequest.data.userId); remoteUser.remoteDataVersion = request.data.version; remoteUser.levels = request.data.levels; remoteUser.maxLevelReached = request.data.maxLevelReached; remoteUser.gemsUse = request.data.gemsUse; remoteUser.gemsPurchase = request.data.gemsPurchase; remoteUser.gemsUseAfterPurchase = request.data.gemsUseAfterPurchase; remoteUser.lifesAsked = request.data.lifesAsked; remoteUser.remoteLifesGranted = request.data.remoteLifesGranted; OnDataReceived(JsonUtility.ToJson(remoteUser)); } }
private string convertUserToJSON(KuberaUser user) { StringBuilder builder = new StringBuilder(); builder.Append("{"); builder.Append("\"_id\":\"" + user._id + "\""); builder.Append(",\"maxLevelReached\":" + user.maxLevelReached.ToString()); builder.Append(",\"gemsUse\":" + user.gemsUse.ToString().ToLower()); builder.Append(",\"gemsPurchase\":" + user.gemsPurchase.ToString().ToLower()); builder.Append(",\"gemsUseAfterPurchase\":" + user.gemsUseAfterPurchase.ToString().ToLower()); builder.Append(",\"lifesAsked\":" + user.lifesAsked.ToString().ToLower()); builder.Append(",\"remoteLifesGranted\":" + user.remoteLifesGranted.ToString().ToLower()); builder.Append(",\"levels\":{"); LevelData level; for (int i = 0; i < user.levels.Count; i++) { level = user.levels[i]; if (i > 0) { builder.Append(","); } builder.Append("\"" + level._id + "\":" + JsonUtility.ToJson(level)); } builder.Append("}"); builder.Append("}"); return(builder.ToString()); }
/** * Cuando se recibe el usuario (sin informacion solo sus identificaciones) **/ protected override void OnUserReceived(RemoteUser remoteUser) { base.OnUserReceived(remoteUser); //Exsitia un usuario creado con id de facebook temporal? KuberaUser kUser = localData.getCurrentData().getUserById(currentUser.facebookId); if (kUser != null) { //Le asignamos su id de verdad kUser._id = currentUser.id; } localData.changeCurrentuser(currentUser.id); //En caso de que se creo un nuevo usuario se le asigna su facebookId if (localData.currentUser.facebookId != currentUser.facebookId) { localData.currentUser.facebookId = currentUser.facebookId; localData.saveLocalData(false); } if (remoteUser.newlyCreated) { if (_mustShowDebugInfo) { Debug.Log("Creating remote user."); } KuberaAnalytics.GetInstance().registerFaceBookLogin(); if (!localData.currentUser.remoteLifesGranted) { if (_mustShowDebugInfo) { Debug.Log("Granted Lifes: " + freeLifesAfterSignIn.ToString()); } localData.giveUserLifes(freeLifesAfterSignIn); localData.currentUser.isDirty = localData.currentUser.updateremoteLifesGranted(true) || localData.currentUser.isDirty; } //Hacemos un update normal del usuario //updateData(localData.getUserDirtyData()); isGettingData = true; server.getUserData(currentUser.id, localData.currentUser.remoteDataVersion, true); } else { if (_mustShowDebugInfo) { Debug.Log("Getting data from remote user."); } isGettingData = true; //Nos traemos los datos de este usuario server.getUserData(currentUser.id, localData.currentUser.remoteDataVersion, true); } }
/** * Manda actualizar los datos del usuario **/ public void updateData(KuberaUser dirtyUser) { if (_mustShowDebugInfo) { Debug.Log("To update: \n" + JsonUtility.ToJson(dirtyUser)); } //Si no hay usuario remoto entonces no hay nada que actualizar if (existCurrentUser()) { server.updateUserData <KuberaUser>(currentUser.id, dirtyUser); } }
/** * Recibiendo la data del usuario **/ protected override void OnDataReceived(string fullData) { base.OnDataReceived(fullData); if (_mustShowDebugInfo) { Debug.Log("BeforeDiff:\n" + fullData); } KuberaUser toDiff = JsonUtility.FromJson <KuberaUser>(fullData); //Solo se hace diff si no llego vacio del server if (toDiff.remoteDataVersion != -1) { localData.diffUser(toDiff, true); } isGettingData = false; if (_mustShowDebugInfo) { Debug.Log("Usuario sincronizado."); } if (!localData.currentUser.remoteLifesGranted) { if (_mustShowDebugInfo) { Debug.Log("Granted Lifes: " + freeLifesAfterSignIn.ToString()); } localData.giveUserLifes(freeLifesAfterSignIn); localData.currentUser.isDirty = localData.currentUser.updateremoteLifesGranted(true) || localData.currentUser.isDirty; } //Necesita subirse? if (localData.currentUser.isDirty) { if (_mustShowDebugInfo) { Debug.Log("Subiendo datos sucios del usuario."); } updateData(localData.getUserDirtyData()); } if (OnDataRetrieved != null) { OnDataRetrieved(); } }
public void OnLifesPressed() { KuberaUser currentUser = (DataManagerKubera.GetInstance() as DataManagerKubera).currentUser; if (currentUser.playerLifes == LifesManager.GetInstance().maximumLifes) { openPopUp(fullLifes_PopUp); } else if (currentUser.playerLifes == 0) { openPopUp(noLifes_PopUp); } else { openPopUp(missingLifes_PopUp); } }
protected void updateLifesSinceLastPlay() { double toWait = calculateTotalWaitingTime(); double sinceLastPlay = lifeDateDifferenceInSecs(); double difference = 0; int minutes = 0; int lifesGained = 0; KuberaUser tempUsr = currentUser; if (toWait > sinceLastPlay) { difference = toWait - sinceLastPlay; //Se calcula si se consigio alguna vida minutes = (int)sinceLastPlay / 60; lifesGained = (int)minutes / timeForLifeInMinutes; //Se entregan las vidas que se hayan juntado if (lifesGained > 0) { giveLifesToUser(lifesGained); updateDateOnData(lifesGained); } int missingLifes = maximumLifes - tempUsr.playerLifes; difference -= (missingLifes - 1) * (60 * timeForLifeInMinutes); //Se dejan solos los segundos minutes = (int)difference / 60; //Se calcula el tiempo actual currentMinutes = minutes; currentSeconds = ((int)difference - (minutes * 60)); refreshHUD(); showTimer = true; } else { giveLifesToUser(maximumLifes); } }
private void OnUserDataUpdated(string request_id) { if (OnDataUpdated != null) { GSUpdateUserRequest request = (GSUpdateUserRequest)getRequestById(request_id); //Para que se desmarquen como sucios los datos locales hacemos un diff KuberaUser remoteUser = new KuberaUser(request.playerId); remoteUser.remoteDataVersion = request.data.version; remoteUser.levels = request.data.levels; remoteUser.maxLevelReached = request.data.maxLevelReached; remoteUser.gemsUse = request.data.gemsUse; remoteUser.gemsPurchase = request.data.gemsPurchase; remoteUser.gemsUseAfterPurchase = request.data.gemsUseAfterPurchase; remoteUser.lifesAsked = request.data.lifesAsked; remoteUser.remoteLifesGranted = request.data.remoteLifesGranted; OnDataUpdated(JsonUtility.ToJson(remoteUser)); } }
protected void initializeWorldsQuickMenuInfo() { KuberaUser user = DataManagerKubera.GetCastedInstance <DataManagerKubera> ().currentUser; int maxWorldReached = user.maxWorldReached(); int starsObtained = 0; List <LevelData> worldLevels; if (maxWorldReached == 0) { maxWorldReached++; } if (AllLevelsUnlocked) { maxWorldReached = worldsCount; } if (newWorldUnlocked) { maxWorldReached++; } for (int i = 0; i < worldsCount; i++) { if (maxWorldReached > i) { worldLevels = user.getLevelsByWorld(i + 1); for (int j = 0; j < worldLevels.Count; j++) { starsObtained += worldLevels[j].stars; } worldsPopUp.initializeMiniWorld(i, true, starsObtained, PersistentData.GetInstance().levelsData.getLevelsCountByWorld(i + 1) * 3); starsObtained = 0; } else { worldsPopUp.initializeMiniWorld(i, false, 0, 0); } } }
/** * Una vez actualizados los datos hay que actualizar el estado local de los datos **/ protected override void OnDataUpdated(string updatedData) { base.OnDataUpdated(updatedData); KuberaUser updatedUser = JsonUtility.FromJson <KuberaUser>(updatedData); //Se actualizo algo en el server localData.diffUser(updatedUser, true); //Ignoramos la version if (_mustShowDebugInfo) { Debug.Log("Usuario sincronizado."); } //Necesita subirse? if (localData.currentUser.isDirty) { if (_mustShowDebugInfo) { Debug.Log("Subiendo datos sucios del usuario."); } updateData(localData.getUserDirtyData()); } }