public CalculatedValues() { AiValues = new CalculatedAiValues(); MonsterValues = new CalculatedMonsterValues(); }
private static CalculatedAiValues CalculateAiValues(UserInput userInput, int protectionIndex, int additionalAiValue = 0) { var result = new CalculatedAiValues(); bool zoneGuard = userInput.IsZoneGuard; if (zoneGuard) { result.Object1Value = 0; result.Object2Value = 0; result.Object3Value = 0; result.Object4Value = 0; result.Object5Value = 0; result.Object6Value = 0; result.ZoneConnectionValue = userInput.ZoneConnectionValue; } else { result.Object1Value = userInput.GetMapObjectAiValue(1); result.Object2Value = userInput.GetMapObjectAiValue(2); result.Object3Value = userInput.GetMapObjectAiValue(3); result.Object4Value = userInput.GetMapObjectAiValue(4); result.Object5Value = userInput.GetMapObjectAiValue(5); result.Object6Value = userInput.GetMapObjectAiValue(6); result.ZoneConnectionValue = 0; } int totalObjectValue = result.ZoneConnectionValue + Math.Max(0, result.Object1Value) + Math.Max(0, result.Object2Value) + Math.Max(0, result.Object3Value) + Math.Max(0, result.Object4Value) + Math.Max(0, result.Object5Value) + Math.Max(0, result.Object6Value) + additionalAiValue; int minimalValue1; float coefficient1; int minimalValue2; float coefficient2; switch (protectionIndex) { case 1: minimalValue1 = 2500; coefficient1 = 0.5f; minimalValue2 = 7500; coefficient2 = 0.5f; break; case 2: minimalValue1 = 1500; coefficient1 = 0.75f; minimalValue2 = 7500; coefficient2 = 0.75f; break; case 3: minimalValue1 = 1000; coefficient1 = 1f; minimalValue2 = 7500; coefficient2 = 1f; break; case 4: minimalValue1 = 500; coefficient1 = 1.5f; minimalValue2 = 5000; coefficient2 = 1f; break; case 5: minimalValue1 = 0; coefficient1 = 1.5f; minimalValue2 = 5000; coefficient2 = 1.5f; break; default: return(result); } result.TotalAiValue = (int)(Math.Max(totalObjectValue - minimalValue1, 0) * coefficient1 + Math.Max(totalObjectValue - minimalValue2, 0) * coefficient2); return(result); }