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 EvaluationMinCombatants;
|
||||||
public int EvaluationMinSameRole;
|
public int EvaluationMinSameRole;
|
||||||
|
public Dictionary<Guid, bool> EvaluatorsRandomEnabled = Evaluator.Evaluators.ToDictionary(
|
||||||
|
e => e.Id,
|
||||||
|
_ => true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum MeterMode {
|
public enum MeterMode {
|
||||||
|
21
Plugin.cs
21
Plugin.cs
@ -212,9 +212,7 @@ public class Plugin : IDalamudPlugin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var evaluator = this.Config.EvaluatorId == Evaluator.RandomId
|
var evaluator = GetEvaluator();
|
||||||
? Random.Shared.GetItems(Evaluator.Evaluators, 1)[0]
|
|
||||||
: Evaluator.Evaluators.FirstOrDefault(e => e.Id == this.Config.EvaluatorId);
|
|
||||||
if (evaluator == null) {
|
if (evaluator == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -257,12 +255,27 @@ public class Plugin : IDalamudPlugin {
|
|||||||
bytes,
|
bytes,
|
||||||
5f,
|
5f,
|
||||||
evaluator.BattleTalkImage,
|
evaluator.BattleTalkImage,
|
||||||
0
|
6
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
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>
|
/// <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 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);
|
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