Example #1
0
 internal SortedListValueEnumerator(OpenSortedList <TKey, TValue> sortedList)
 {
     _sortedList  = sortedList;
     index        = 0;
     version      = sortedList.version;
     currentValue = default;
 }
Example #2
0
    /// <summary>
    /// Result list can be returned to the list pool
    /// </summary>
    /// <param name="sortedProgressions"></param>
    /// <param name="rangeLowExclusive"></param>
    /// <param name="rangeHighInclusive"></param>
    List <ProgressionInfo> RequiringValueInRange(OpenSortedList <long, List <ProgressionInfo> > sortedProgressions, long rangeLowExclusive, long rangeHighInclusive)
    {
        List <ProgressionInfo> list = ListPool <ProgressionInfo> .Get();

        List <ProgressionInfo>[] progressionsList = sortedProgressions.values;
        if (progressionsList.Length == 0)
        {
            return(list);
        }
        int start = sortedProgressions.IndexOfKeyGreaterThanOrEqualTo(rangeLowExclusive);
        int end   = sortedProgressions.IndexOfKeyLessThanOrEqualTo(rangeHighInclusive);

        if (start == progressionsList.Length)
        {
            if (end == start - 1)
            {
                return(list);
            }
            else
            {
                --start;
            }
        }

        for (int i = start; i <= end; ++i)
        {
            list.AddList(progressionsList[i]);
        }

        return(list);
    }
Example #3
0
 internal Enumerator(OpenSortedList <TKey, TValue> sortedList, int getEnumeratorRetType)
 {
     this._sortedList          = sortedList;
     this.index                = 0;
     version                   = _sortedList.version;
     this.getEnumeratorRetType = getEnumeratorRetType;
     key   = default(TKey);
     value = default(TValue);
 }
Example #4
0
    public void Configure()
    {
        ProgressionInfo[] progressionInfos = ScriptableObjects.instance.progressionInfos;

        machineConditions.Clear();
        Dictionary <long, List <ProgressionInfo> > moneyConditions = new Dictionary <long, List <ProgressionInfo> >();
        Dictionary <long, List <ProgressionInfo> > levelConditions = new Dictionary <long, List <ProgressionInfo> >();

        for (int i = 0, len = progressionInfos.Length; i < len; ++i)
        {
            ProgressionInfo progression = progressionInfos[i];

            // Machine Conditions
            MachineInfo[] machineUnlockConditions = progression.machineUnlockConditions;
            for (int j = 0, jlen = machineUnlockConditions.Length; j < jlen; ++j)
            {
                MachineInfo machineUnlock = machineUnlockConditions[j];
                if (!machineConditions.TryGetValue(machineUnlock, out List <ProgressionInfo> conditions))
                {
                    conditions = new List <ProgressionInfo>();
                    machineConditions.Add(machineUnlock, conditions);
                }
                conditions.Add(progression);
            }

            // Money Conditions
            if (progression.moneyCondition != 0)
            {
                if (!moneyConditions.TryGetValue(progression.moneyCondition, out List <ProgressionInfo> conditions))
                {
                    conditions = new List <ProgressionInfo>();
                    moneyConditions.Add(progression.moneyCondition, conditions);
                }
                conditions.Add(progression);
            }

            // Level Conditions
            if (progression.levelCondition != 0)
            {
                if (!levelConditions.TryGetValue(progression.levelCondition, out List <ProgressionInfo> conditions))
                {
                    conditions = new List <ProgressionInfo>();
                    levelConditions.Add(progression.levelCondition, conditions);
                }
                conditions.Add(progression);
            }
        }

        this.moneyConditions = new OpenSortedList <long, List <ProgressionInfo> >(moneyConditions);
        this.levelConditions = new OpenSortedList <long, List <ProgressionInfo> >(levelConditions);
    }
Example #5
0
    /// <summary>
    /// Result list can be returned to the list pool
    /// </summary>
    /// <param name="sortedProgressions"></param>
    /// <param name="rangeLowExclusive"></param>
    /// <param name="rangeHighInclusive"></param>
    List <ProgressionInfo> RequiringValueGreaterThan(OpenSortedList <long, List <ProgressionInfo> > sortedProgressions, long valueInclusive)
    {
        List <ProgressionInfo> list = ListPool <ProgressionInfo> .Get();

        List <ProgressionInfo>[] progressionsList = sortedProgressions.values;
        if (progressionsList.Length == 0)
        {
            return(list);
        }
        int start = sortedProgressions.IndexOfKeyGreaterThanOrEqualTo(valueInclusive);

        for (int i = start, len = progressionsList.Length; i < len; ++i)
        {
            list.AddList(progressionsList[i]);
        }

        return(list);
    }
Example #6
0
 internal ValueList(OpenSortedList <TKey, TValue> dictionary)
 {
     _dict = dictionary;
 }