public override void OnGUI() { GUILayout.BeginVertical(GUI.skin.box, GUILayout.Width(400f), GUILayout.ExpandHeight(true)); m_scroll = GUILayout.BeginScrollView(m_scroll); GUILayout.Label("<size=16>Enemy Resists:</size>"); GUILayout.BeginHorizontal(); for (int i = 0; i < 6; i++) { if (i == 3) { GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); } GUILayout.Label(((DamageType.Types)i).ToString(), GUILayout.Width(60)); var resInput = (BuildCalcMenu.Profile.Enemy.DamageResistance[i] * 100f).ToString("F0"); resInput = GUILayout.TextField(resInput, GUILayout.Width(50)); if (float.TryParse(resInput, out float f)) { BuildCalcMenu.Profile.Enemy.DamageResistance[i] = f * 0.01f; } } GUILayout.EndHorizontal(); m_hexChoices.OnGUI(); UIStyles.HorizontalLine(Color.grey); GUILayout.Label("<size=16>Player Setup:</size>"); m_weaponChoice.OnGUI(); if (m_weaponChoice.Equipment == null) { m_blacklistedWeapons.OnGUI(); } m_offhandChoice.OnGUI(); m_helmetChoice.OnGUI(); m_chestChoice.OnGUI(); m_bootsChoice.OnGUI(); m_backpackChoice.OnGUI(); UIStyles.HorizontalLine(Color.grey); m_imbueOptions.OnGUI(); UIStyles.HorizontalLine(Color.grey); m_passives.OnGUI(); UIStyles.HorizontalLine(Color.grey); m_statuses.OnGUI(); GUILayout.EndScrollView(); GUILayout.EndVertical(); }
//internal static bool[] s_expandedResults = new bool[0]; public override void OnGUI() { GUILayout.BeginVertical(GUI.skin.box, GUILayout.ExpandHeight(true)); GUILayout.Label("<size=16>Result Options:</size>"); GUILayout.BeginHorizontal(); GUILayout.Label("Result limit:", GUILayout.Width(90)); var limitString = this.ResultLimit.ToString(); limitString = GUILayout.TextField(limitString, GUILayout.Width(50)); if (int.TryParse(limitString, out int newLim)) { ResultLimit = newLim; } //BuildCalcMenu.s_buildProfile.LimitOneEachWeapon // = GUILayout.Toggle(BuildCalcMenu.s_buildProfile.LimitOneEachWeapon, "Limit One Result Per Weapon?"); BuildCalcMenu.Profile.AxesOnlyUseSpecial = GUILayout.Toggle(BuildCalcMenu.Profile.AxesOnlyUseSpecial, "Use Special Attacks for Axe DPS?"); BuildCalcMenu.Profile.ConsiderWeaponHex = GUILayout.Toggle(BuildCalcMenu.Profile.ConsiderWeaponHex, "Consider Main-hand Hexes?"); GUILayout.EndHorizontal(); GUI.color = Color.green; if (GUILayout.Button("Calculate / Find Best Builds")) { BuildCalcMenu.Profile.Calculate(ResultLimit, out List <CalcResult> highestDamage, out List <CalcResult> highestDPS); s_lastResults = new Dictionary <string, List <CalcResult> > { { "Highest Damage", highestDamage }, { "Highest DPS", highestDPS } }; //s_expandedResults = new bool[ResultLimit]; } GUI.color = Color.white; if (s_lastResults != null) { UIStyles.HorizontalLine(Color.grey); GUILayout.Label("<size=16>Results:</size>"); if (BuildProfile.IsCalculating) { if (BuildProfile.IsGenerating) { GUILayout.Label($"Generating builds... ({BuildProfile.GeneratedBuildCount})"); } else if (BuildProfile.IsPickingGear) { GUILayout.Label($"Picking best gear... ({BuildProfile.GearPickProgress} / {BuildProfile.GeneratedBuildCount})"); } else { GUILayout.Label($"Checking builds... ({BuildProfile.GeneratedBuildCount})"); } } else { GUILayout.BeginHorizontal(); for (int i = 0; i < s_lastResults.Count; i++) { if (i == s_selectedResults) { GUI.color = Color.green; } if (GUILayout.Button(s_lastResults.ElementAt(i).Key)) { s_selectedResults = i; //s_expandedResults = new bool[ResultLimit]; } GUI.color = Color.white; } GUILayout.EndHorizontal(); var selected = s_lastResults.ElementAt(s_selectedResults); GUILayout.Label($"<b>{selected.Key}</b>"); m_scroll = GUILayout.BeginScrollView(m_scroll); var results = s_lastResults.ElementAt(s_selectedResults).Value; for (int i = 0; i < results.Count; i++) { var result = results[i]; result.OnGUI(); } GUILayout.EndScrollView(); } } GUILayout.EndVertical(); }