public void Update(Result[] results)
    {
        bool allIsOk = true;
        int  score   = -1;

        foreach (AchievQuery query in Queries)
        {
            //is there any query that wasn't set in the results?
            bool wasChecked = false;
            foreach (Result result in results)
            {
                if (result.ScoreType == WhatIncrement)
                {
                    score = result.Value;
                }
                if (query.IsTheSameType(result))
                {
                    wasChecked = true;
                }

                if (!query.CanAccept(result))
                {
                    allIsOk = false;
                }
            }
            //if there was no result for specific query, then this is no good
            if (!wasChecked)
            {
                allIsOk = false;
            }
        }


        if (allIsOk && score != -1)           //score is -1 when achievement and results have different scoreTypes. no worries, this is normal, when updating just some of achievements while game is running

        {
            if (_Type == ACHIEVEMENT_TYPE.INCREMENTAL && ProcessScore(score) > 0)               //there is no need to send request to inrement by zero
            {
                GoogleAchievement.IncrementAchievement(Id, ProcessScore(score));
            }
            if (_Type == ACHIEVEMENT_TYPE.UNLOCKABLE)
            {
                GoogleAchievement.UnlockAchievement(Id);
            }
        }
    }