fix: more performant and reset mana

This commit is contained in:
Anna 2024-07-24 23:56:10 -04:00
parent 9273763187
commit 528276c414
Signed by: anna
GPG Key ID: D0943384CD9F87D1

View File

@ -117,6 +117,7 @@ public class Plugin : IDalamudPlugin {
} }
var chara = (Character*) player.Address; var chara = (Character*) player.Address;
var playerName = player.Name.TextValue;
var list = (AddonPartyList*) AtkStage.Instance()->RaptureAtkUnitManager->GetAddonByName("_PartyList"); var list = (AddonPartyList*) AtkStage.Instance()->RaptureAtkUnitManager->GetAddonByName("_PartyList");
if (list->HoveredIndex >= 0 || list->TargetedIndex >= 0) { if (list->HoveredIndex >= 0 || list->TargetedIndex >= 0) {
@ -124,7 +125,9 @@ public class Plugin : IDalamudPlugin {
} }
var names = new List<string>(); var names = new List<string>();
foreach (var member in AgentHUD.Instance()->PartyMembers) { var members = AgentHUD.Instance()->PartyMembers;
for (var i = 0; i < members.Length && i < list->PartyMembers.Length; i++) {
var member = members[i];
if (member.Name == null) { if (member.Name == null) {
continue; continue;
} }
@ -136,31 +139,46 @@ public class Plugin : IDalamudPlugin {
var name = MemoryHelper.ReadStringNullTerminated((nint) member.Name); var name = MemoryHelper.ReadStringNullTerminated((nint) member.Name);
names.Add(name); names.Add(name);
}
var numPlayers = list->PartyMembers.Length; var lookupName = name == playerName
foreach (var combatant in data.Combatants.Values) { ? "YOU"
if (combatant.Name.EndsWith(" (YOU)")) { : name;
var name = combatant.Name[..^6];
var chocoboName = UIState.Instance()->Buddy.CompanionInfo.NameString;
if (chocoboName == name) {
this.UpdateMember(list->Chocobo, data.Encounter, combatant);
continue;
}
}
var idx = combatant.Name == "YOU" if (!data.Combatants.TryGetValue(lookupName, out var combatant)) {
? 0
: names.IndexOf(combatant.Name);
if (idx == -1 || idx >= numPlayers) {
continue; continue;
} }
this.UpdateMember(list->PartyMembers[idx], data.Encounter, combatant); this.UpdateMember(list->PartyMembers[i], member.Object, data.Encounter, combatant);
}
} }
private unsafe void UpdateMember(AddonPartyList.PartyListMemberStruct member, Encounter encounter, Combatant combatant) { // var numPlayers = list->PartyMembers.Length;
// foreach (var combatant in data.Combatants.Values) {
// if (combatant.Name.EndsWith(" (YOU)")) {
// var name = combatant.Name[..^6];
// var chocoboName = UIState.Instance()->Buddy.CompanionInfo.NameString;
// if (chocoboName == name) {
// this.UpdateMember(list->Chocobo, data.Encounter, combatant);
// continue;
// }
// }
// var idx = combatant.Name == "YOU"
// ? 0
// : names.IndexOf(combatant.Name);
// if (idx == -1 || idx >= numPlayers) {
// continue;
// }
// this.UpdateMember(list->PartyMembers[idx], data.Encounter, combatant);
// }
}
private unsafe void UpdateMember(
AddonPartyList.PartyListMemberStruct member,
BattleChara* chara,
Encounter encounter,
Combatant combatant
) {
member.TargetGlow->ToggleVisibility(true); member.TargetGlow->ToggleVisibility(true);
member.TargetGlow->SetAlpha(128); member.TargetGlow->SetAlpha(128);
member.TargetGlow->SetScaleX( member.TargetGlow->SetScaleX(
@ -178,6 +196,10 @@ public class Plugin : IDalamudPlugin {
}; };
right->TextColor = left->TextColor; right->TextColor = left->TextColor;
var manaString = chara->Mana.ToString(CultureInfo.InvariantCulture);
left->SetText(manaString[..^2]);
right->SetText(manaString[^2..]);
return; return;
} }