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(); }
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; }