feat: begin prototyping npc rating
This commit is contained in:
parent
c8eefd6ab2
commit
6e9036a6ce
@ -26,6 +26,7 @@ public class Configuration : IPluginConfiguration {
|
|||||||
public int TextMulBlue = 100;
|
public int TextMulBlue = 100;
|
||||||
public bool ClearResultsOnInactive = true;
|
public bool ClearResultsOnInactive = true;
|
||||||
public float ClearDelaySeconds = 10;
|
public float ClearDelaySeconds = 10;
|
||||||
|
public bool UseEvaluatorNpc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum MeterMode {
|
public enum MeterMode {
|
||||||
|
112
Plugin.cs
112
Plugin.cs
@ -160,6 +160,18 @@ public class Plugin : IDalamudPlugin {
|
|||||||
if (this.Config.ClearResultsOnInactive) {
|
if (this.Config.ClearResultsOnInactive) {
|
||||||
this.DelayWatch.Restart();
|
this.DelayWatch.Restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.Config.UseEvaluatorNpc && this.Client.Data != null) {
|
||||||
|
var combatants = this.Client.Data.Combatants.Values.ToList();
|
||||||
|
combatants.Sort((a, b) => b.EncDps.CompareTo(a.EncDps));
|
||||||
|
var rank = combatants.FindIndex(combatant => combatant.Name == "YOU");
|
||||||
|
var msg = rank switch {
|
||||||
|
< 0 => null,
|
||||||
|
1 => "Well done! I never doubted for a second that you'd do so well.",
|
||||||
|
_ => "Keep trying, friend! You'll get there in the end.",
|
||||||
|
};
|
||||||
|
UIModule.Instance()->ShowBattleTalkImage("G'raha Tia", msg, 5f, 10, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.Config.ClearResultsOnInactive && this.DelayWatch.IsRunning && this.DelayWatch.Elapsed >= TimeSpan.FromSeconds(this.Config.ClearDelaySeconds)) {
|
if (this.Config.ClearResultsOnInactive && this.DelayWatch.IsRunning && this.DelayWatch.Elapsed >= TimeSpan.FromSeconds(this.Config.ClearDelaySeconds)) {
|
||||||
@ -248,22 +260,20 @@ public class Plugin : IDalamudPlugin {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.UpdateMember(list->PartyMembers[i], member.Object, data.Encounter, combatant);
|
this.UpdateMember(list, i, member.Object, data.Encounter, combatant);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private unsafe void ResetMembers(AddonPartyList* list) {
|
private unsafe void ResetMember(
|
||||||
var members = AgentHUD.Instance()->PartyMembers;
|
AddonPartyList* list,
|
||||||
for (var i = 0; i < members.Length && i < list->PartyMembers.Length; i++) {
|
BattleChara* chara,
|
||||||
var member = members[i];
|
int listIndex,
|
||||||
if (member.Name == null) {
|
bool includeTargeted
|
||||||
continue;
|
) {
|
||||||
}
|
var unit = list->PartyMembers[listIndex];
|
||||||
|
if (unit.TargetGlow != null && (includeTargeted || list->TargetedIndex != listIndex)) {
|
||||||
var unit = list->PartyMembers[i];
|
|
||||||
if (list->TargetedIndex != i && unit.TargetGlow != null) {
|
|
||||||
unit.TargetGlow->SetAlpha(255);
|
unit.TargetGlow->SetAlpha(255);
|
||||||
unit.TargetGlow->SetScaleX(0);
|
unit.TargetGlow->SetScaleX(0);
|
||||||
unit.TargetGlow->AddRed = 0;
|
unit.TargetGlow->AddRed = 0;
|
||||||
@ -277,7 +287,6 @@ public class Plugin : IDalamudPlugin {
|
|||||||
|
|
||||||
var left = (AtkTextNode*) unit.MPGaugeBar->GetTextNodeById(2);
|
var left = (AtkTextNode*) unit.MPGaugeBar->GetTextNodeById(2);
|
||||||
var right = (AtkTextNode*) unit.MPGaugeBar->GetTextNodeById(3);
|
var right = (AtkTextNode*) unit.MPGaugeBar->GetTextNodeById(3);
|
||||||
var chara = member.Object;
|
|
||||||
|
|
||||||
var hasLeft = left != null && left->IsVisible();
|
var hasLeft = left != null && left->IsVisible();
|
||||||
var hasRight = right != null && right->IsVisible();
|
var hasRight = right != null && right->IsVisible();
|
||||||
@ -345,14 +354,22 @@ public class Plugin : IDalamudPlugin {
|
|||||||
// unit.Name->MultiplyGreen = 100;
|
// unit.Name->MultiplyGreen = 100;
|
||||||
// unit.Name->MultiplyBlue = 100;
|
// unit.Name->MultiplyBlue = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private unsafe void ResetMembers(AddonPartyList* list) {
|
||||||
|
var members = AgentHUD.Instance()->PartyMembers;
|
||||||
|
for (var i = 0; i < members.Length && i < list->PartyMembers.Length; i++) {
|
||||||
|
this.ResetMember(list, members[i].Object, i, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private unsafe void UpdateMember(
|
private unsafe void UpdateMember(
|
||||||
AddonPartyList.PartyListMemberStruct member,
|
AddonPartyList* list,
|
||||||
|
int listIndex,
|
||||||
BattleChara* chara,
|
BattleChara* chara,
|
||||||
Encounter encounter,
|
Encounter encounter,
|
||||||
Combatant combatant
|
Combatant combatant
|
||||||
) {
|
) {
|
||||||
|
var member = list->PartyMembers[listIndex];
|
||||||
if (this.Config.UseDpsBar && member.TargetGlow != null) {
|
if (this.Config.UseDpsBar && member.TargetGlow != null) {
|
||||||
member.TargetGlow->ToggleVisibility(true);
|
member.TargetGlow->ToggleVisibility(true);
|
||||||
member.TargetGlow->SetAlpha((byte) Math.Round(this.Config.BarAlpha * 255));
|
member.TargetGlow->SetAlpha((byte) Math.Round(this.Config.BarAlpha * 255));
|
||||||
@ -383,42 +400,7 @@ public class Plugin : IDalamudPlugin {
|
|||||||
if (this.Config.Alternate && !this._showDps) {
|
if (this.Config.Alternate && !this._showDps) {
|
||||||
var isCaster = hasChara && Array.IndexOf(this._manaUsers, chara->ClassJob) != -1;
|
var isCaster = hasChara && Array.IndexOf(this._manaUsers, chara->ClassJob) != -1;
|
||||||
if (!this.Config.ManaModeAlternateOnlyManaUsers || isCaster) {
|
if (!this.Config.ManaModeAlternateOnlyManaUsers || isCaster) {
|
||||||
left->TextColor = new ByteColor {
|
this.ResetMember(list, chara, listIndex, true);
|
||||||
RGBA = 0xFFFFFFFF,
|
|
||||||
};
|
|
||||||
|
|
||||||
left->AddRed = 0;
|
|
||||||
left->AddGreen = 0;
|
|
||||||
left->AddBlue = 0;
|
|
||||||
left->MultiplyRed = 100;
|
|
||||||
left->MultiplyGreen = 100;
|
|
||||||
left->MultiplyBlue = 100;
|
|
||||||
|
|
||||||
if (hasRight) {
|
|
||||||
right->TextColor = left->TextColor;
|
|
||||||
right->AddRed = left->AddRed;
|
|
||||||
right->AddGreen = left->AddGreen;
|
|
||||||
right->AddBlue = left->AddBlue;
|
|
||||||
right->MultiplyRed = left->MultiplyRed;
|
|
||||||
right->MultiplyGreen = left->MultiplyGreen;
|
|
||||||
right->MultiplyBlue = left->MultiplyBlue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var manaString = hasChara
|
|
||||||
? chara->Mana.ToString(CultureInfo.InvariantCulture)
|
|
||||||
: "???";
|
|
||||||
if (hasRight) {
|
|
||||||
if (manaString.Length <= 1) {
|
|
||||||
left->SetText("");
|
|
||||||
right->SetText(manaString);
|
|
||||||
} else {
|
|
||||||
left->SetText(manaString[..^2]);
|
|
||||||
right->SetText(manaString[^2..]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
left->SetText(manaString);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -473,37 +455,5 @@ public class Plugin : IDalamudPlugin {
|
|||||||
left->SetText($"{leftText}{rightText}");
|
left->SetText($"{leftText}{rightText}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// else if (this.Config.Mode == MeterMode.Name) {
|
|
||||||
// var dpsText = combatant.EncDps switch {
|
|
||||||
// float.NaN => "0",
|
|
||||||
// float.PositiveInfinity => "0",
|
|
||||||
// float.NegativeInfinity => "0",
|
|
||||||
// < 1_000 => $"{combatant.EncDps:N2}",
|
|
||||||
// < 1_000_000 => $"{combatant.EncDps / 1_000:N2}K",
|
|
||||||
// < 1_000_000_000 => $"{combatant.EncDps / 1_000_000:N2}M",
|
|
||||||
// _ => $"{combatant.EncDps / 1_000_000_000:N2}B",
|
|
||||||
// };
|
|
||||||
|
|
||||||
// if (this.Config.Alternate && !this._showDps) {
|
|
||||||
// member.Name->TextColor = new ByteColor {
|
|
||||||
// RGBA = 0xFFFFFFFF,
|
|
||||||
// };
|
|
||||||
// member.Name->SetText(chara->Name);
|
|
||||||
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// member.Name->SetText(dpsText);
|
|
||||||
// member.Name->TextColor = new ByteColor {
|
|
||||||
// RGBA = this.Config.TextColour,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// member.Name->AddRed = (byte) Math.Clamp(this.Config.TextAddRed, 0, 255);
|
|
||||||
// member.Name->AddGreen = (byte) Math.Clamp(this.Config.TextAddGreen, 0, 255);
|
|
||||||
// member.Name->AddBlue = (byte) Math.Clamp(this.Config.TextAddBlue, 0, 255);
|
|
||||||
// member.Name->MultiplyRed = (byte) Math.Clamp(this.Config.TextMulRed, 0, 100);
|
|
||||||
// member.Name->MultiplyGreen = (byte) Math.Clamp(this.Config.TextMulGreen, 0, 100);
|
|
||||||
// member.Name->MultiplyBlue = (byte) Math.Clamp(this.Config.TextMulBlue, 0, 100);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,8 @@ public class PluginUi : IDisposable {
|
|||||||
anyChanged |= ImGui.SliderFloat("Seconds to delay before clearing", ref this.Plugin.Config.ClearDelaySeconds, 0, 300);
|
anyChanged |= ImGui.SliderFloat("Seconds to delay before clearing", ref this.Plugin.Config.ClearDelaySeconds, 0, 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
anyChanged |= ImGui.Checkbox("Show an NPC text bubble rating your performance after an encounter", ref this.Plugin.Config.UseEvaluatorNpc);
|
||||||
|
|
||||||
if (anyChanged) {
|
if (anyChanged) {
|
||||||
this.Plugin.SaveConfig();
|
this.Plugin.SaveConfig();
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,9 @@ public class RawEncounter {
|
|||||||
[JsonProperty("enchps")]
|
[JsonProperty("enchps")]
|
||||||
public string EncHps;
|
public string EncHps;
|
||||||
|
|
||||||
|
[JsonProperty("ENCHPS")]
|
||||||
|
public string EncHps2;
|
||||||
|
|
||||||
[JsonProperty("CurrentZoneName")]
|
[JsonProperty("CurrentZoneName")]
|
||||||
public string CurrentZoneName;
|
public string CurrentZoneName;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user