Example #1
0
    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);
        }
    }
Example #2
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));
            }
        }
Example #3
0
        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();
            }
        }
Example #7
0
    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);
        }
    }
Example #8
0
    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);
        }
    }
Example #9
0
        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));
            }
        }
Example #10
0
    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());
            }
        }