예제 #1
0
        private void StoreIncrementalSet(Character character, DisplayCalculations calculations)
        {
            CalculationOptionsMage calculationOptions = character.CalculationOptions as CalculationOptionsMage;
            List<int> cooldownList = new List<int>();
            List<CycleId> spellList = new List<CycleId>();
            List<int> segmentList = new List<int>();
            List<int> manaSegmentList = new List<int>();
            List<VariableType> variableTypeList = new List<VariableType>();
            List<CycleId> manaNeutralMixList = new List<CycleId>();
            for (int i = 0; i < calculations.SolutionVariable.Count; i++)
            {
                if (calculations.Solution[i] > 0)
                {
                    VariableType type = calculations.SolutionVariable[i].Type;
                    int cooldown;
                    if (calculations.SolutionVariable[i].State != null)
                    {
                        cooldown = calculations.SolutionVariable[i].State.Effects & (int)StandardEffect.NonItemBasedMask;
                    }
                    else
                    {
                        cooldown = 0;
                    }
                    CycleId spellId;
                    if (calculations.SolutionVariable[i].Type == VariableType.Spell)
                    {
                        spellId = calculations.SolutionVariable[i].Cycle.CycleId;
                    }
                    else
                    {
                        spellId = CycleId.None;
                    }
                    if (spellId == CycleId.ArcaneManaNeutral)
                    {
                        if (calculations.SolutionVariable[i].Cycle.Mix1 != CycleId.None && !manaNeutralMixList.Contains(calculations.SolutionVariable[i].Cycle.Mix1))
                        {
                            manaNeutralMixList.Add(calculations.SolutionVariable[i].Cycle.Mix1);
                        }
                        if (calculations.SolutionVariable[i].Cycle.Mix2 != CycleId.None && !manaNeutralMixList.Contains(calculations.SolutionVariable[i].Cycle.Mix2))
                        {
                            manaNeutralMixList.Add(calculations.SolutionVariable[i].Cycle.Mix2);
                        }
                    }
                    int segment = calculations.SolutionVariable[i].Segment;
                    int manaSegment = calculations.SolutionVariable[i].ManaSegment;
                    bool found = false;
                    for (int j = 0; j < cooldownList.Count; j++)
                    {
                        if (cooldownList[j] == cooldown && spellList[j] == spellId && segmentList[j] == segment && manaSegmentList[j] == manaSegment && variableTypeList[j] == type)
                        {
                            found = true;
                            break;
                        }
                    }
                    if (!found)
                    {
                        cooldownList.Add(cooldown);
                        spellList.Add(spellId);
                        segmentList.Add(segment);
                        manaSegmentList.Add(manaSegment);
                        variableTypeList.Add(type);
                    }
                }
            }
            calculationOptions.IncrementalSetStateIndexes = cooldownList.ToArray();
            calculationOptions.IncrementalSetSpells = spellList.ToArray();
            calculationOptions.IncrementalSetSegments = segmentList.ToArray();
            calculationOptions.IncrementalSetVariableType = variableTypeList.ToArray();
            calculationOptions.IncrementalSetManaSegment = manaSegmentList.ToArray();
            calculationOptions.IncrementalSetManaNeutralMix = manaNeutralMixList.ToArray();
            if (calculationOptions.AutomaticArmor)
            {
                calculationOptions.IncrementalSetArmor = calculations.MageArmor;
            }
            else
            {
                calculationOptions.IncrementalSetArmor = null;
            }

            List<int> filteredCooldowns = ListUtils.RemoveDuplicates(cooldownList);
            filteredCooldowns.Sort();
            calculationOptions.IncrementalSetSortedStates = filteredCooldowns.ToArray();
        }
예제 #2
0
        private void StoreCycleSolutions(Character character, DisplayCalculations calculations)
        {
            //CalculationOptionsMage calculationOptions = character.CalculationOptions as CalculationOptionsMage;

            //calculationOptions.FrBDFFFBIL_KDFS = calculations.FrBDFFFBIL_KDFS;
            //calculationOptions.FrBDFFFBIL_KFFB = calculations.FrBDFFFBIL_KFFB;
            //calculationOptions.FrBDFFFBIL_KFFBS = calculations.FrBDFFFBIL_KFFBS;
            //calculationOptions.FrBDFFFBIL_KFrB = calculations.FrBDFFFBIL_KFrB;
            //calculationOptions.FrBDFFFBIL_KILS = calculations.FrBDFFFBIL_KILS;
        }