Example #1
0
    public static Tuple <AchievementData, UInt128> GetAvailableAchievement(this List <AchievementData> data,
                                                                           UInt128 gatheredValue, UInt128 redeemedValue)
    {
        var gatheredValueClamped = gatheredValue.ToClampedLong();
        var gatheredIndex        = Data.AchievementData_ConditionNewArg_UpperBound(data, gatheredValueClamped) - 1;

        var redeemedValueClamped = redeemedValue.ToClampedLong();
        var nextRedeemIndex      = Data.AchievementData_ConditionNewArg_UpperBound(data, redeemedValueClamped);

        if (nextRedeemIndex <= gatheredIndex && nextRedeemIndex < data.Count)
        {
            return(new Tuple <AchievementData, UInt128>(data[nextRedeemIndex], gatheredValue));
        }

        return(null);
    }
Example #2
0
    static void AddCanBeRedeemedAchievement(List <Tuple <AchievementData, UInt128> > canBeRedeemedAchievements,
                                            Dictionary <ScString, List <AchievementData> > group, string groupKey, UInt128 gatheredValue,
                                            UInt128 redeemedValue)
    {
        var gatheredValueClamped = gatheredValue.ToClampedLong();
        //ConDebug.Log($"groupKey={groupKey}");
        var achievementGroup = group[groupKey];
        var gatheredIndex    = Data.AchievementData_ConditionNewArg_UpperBound(achievementGroup, gatheredValueClamped) - 1;

        var redeemedValueClamped = redeemedValue.ToClampedLong();
        var nextRedeemIndex      = Data.AchievementData_ConditionNewArg_UpperBound(achievementGroup, redeemedValueClamped);

        if (nextRedeemIndex <= gatheredIndex && nextRedeemIndex < achievementGroup.Count)
        {
            canBeRedeemedAchievements.Add(
                new Tuple <AchievementData, UInt128>(achievementGroup[nextRedeemIndex], gatheredValue));
        }
    }