feat: allow customising random evaluator pool
This commit is contained in:
parent
57467788ea
commit
4b2f88850e
17
ArrayExt.cs
Executable file
17
ArrayExt.cs
Executable file
@ -0,0 +1,17 @@
|
||||
namespace PartyDamage;
|
||||
|
||||
public static class ArrayExt {
|
||||
public static bool TryGetIndex<T>(this T[] array, int index, out T? result) {
|
||||
if (index < 0 || index >= array.Length) {
|
||||
result = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
result = array[index];
|
||||
return true;
|
||||
}
|
||||
|
||||
public static T? GetIndexOrDefault<T>(this T[] array, int index) {
|
||||
return array.TryGetIndex(index, out var result) ? result : default;
|
||||
}
|
||||
}
|
@ -37,6 +37,10 @@ public class Configuration : IPluginConfiguration {
|
||||
};
|
||||
public int EvaluationMinCombatants;
|
||||
public int EvaluationMinSameRole;
|
||||
public Dictionary<Guid, bool> EvaluatorsRandomEnabled = Evaluator.Evaluators.ToDictionary(
|
||||
e => e.Id,
|
||||
_ => true
|
||||
);
|
||||
}
|
||||
|
||||
public enum MeterMode {
|
||||
|
21
Plugin.cs
21
Plugin.cs
@ -212,9 +212,7 @@ public class Plugin : IDalamudPlugin {
|
||||
return;
|
||||
}
|
||||
|
||||
var evaluator = this.Config.EvaluatorId == Evaluator.RandomId
|
||||
? Random.Shared.GetItems(Evaluator.Evaluators, 1)[0]
|
||||
: Evaluator.Evaluators.FirstOrDefault(e => e.Id == this.Config.EvaluatorId);
|
||||
var evaluator = GetEvaluator();
|
||||
if (evaluator == null) {
|
||||
return;
|
||||
}
|
||||
@ -257,12 +255,27 @@ public class Plugin : IDalamudPlugin {
|
||||
bytes,
|
||||
5f,
|
||||
evaluator.BattleTalkImage,
|
||||
0
|
||||
6
|
||||
);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
Evaluator? GetEvaluator() {
|
||||
if (this.Config.EvaluatorId != Evaluator.RandomId) {
|
||||
return Evaluator.Evaluators.FirstOrDefault(e => e.Id == this.Config.EvaluatorId);
|
||||
}
|
||||
|
||||
var pool = Evaluator.Evaluators
|
||||
.Where(e => this.Config.EvaluatorsRandomEnabled.GetValueOrDefault(e.Id))
|
||||
.ToArray();
|
||||
return pool.Length == 0
|
||||
? null
|
||||
: Random.Shared.GetItems(pool, 1).GetIndexOrDefault(0);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
12
PluginUi.cs
12
PluginUi.cs
@ -163,6 +163,18 @@ public class PluginUi : IDisposable {
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui.TreeNodeEx("Random evaluator pool")) {
|
||||
using var treePop = new OnDispose(ImGui.TreePop);
|
||||
|
||||
foreach (var evaluator in Evaluator.Evaluators) {
|
||||
var enabled = this.Plugin.Config.EvaluatorsRandomEnabled.GetValueOrDefault(evaluator.Id, false);
|
||||
if (ImGui.Checkbox(evaluator.Name, ref enabled)) {
|
||||
anyChanged = true;
|
||||
this.Plugin.Config.EvaluatorsRandomEnabled[evaluator.Id] = enabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
anyChanged |= ImGui.SliderInt("Minimum players to show evaluation", ref this.Plugin.Config.EvaluationMinCombatants, 0, 24);
|
||||
anyChanged |= ImGui.SliderInt("Minimum players on the same role to show evaluation", ref this.Plugin.Config.EvaluationMinSameRole, 0, 8);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user