fix: check cross realm properly
This commit is contained in:
parent
74914bef0c
commit
1f85158c68
71
Plugin.cs
71
Plugin.cs
@ -319,33 +319,6 @@ public class Plugin : IDalamudPlugin {
|
||||
}
|
||||
|
||||
var names = new List<ListInfo>();
|
||||
|
||||
var crossInfo = InfoProxyCrossRealm.Instance();
|
||||
if (crossInfo->IsCrossRealm != 0) {
|
||||
var crossGroup = crossInfo->CrossRealmGroups[crossInfo->LocalPlayerGroupIndex];
|
||||
|
||||
for (var i = 0; i < crossGroup.GroupMemberCount && i < list->PartyMembers.Length; i++) {
|
||||
var member = crossGroup.GroupMembers[i];
|
||||
var name = member.NameString;
|
||||
if (string.IsNullOrWhiteSpace(name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (chara->GetSoftTargetId() == member.EntityId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var info = new ListInfo {
|
||||
Name = name,
|
||||
IsChocobo = false,
|
||||
Mana = null,
|
||||
PartyListIndex = i,
|
||||
ClassJob = member.ClassJobId,
|
||||
};
|
||||
|
||||
names.Add(info);
|
||||
}
|
||||
} else {
|
||||
var members = AgentHUD.Instance()->PartyMembers;
|
||||
for (var i = 0; i < members.Length && i < list->PartyMembers.Length; i++) {
|
||||
var member = members[i];
|
||||
@ -376,6 +349,38 @@ public class Plugin : IDalamudPlugin {
|
||||
|
||||
names.Add(info);
|
||||
}
|
||||
|
||||
// check cross realm party for any members we may have missed
|
||||
var crossInfo = InfoProxyCrossRealm.Instance();
|
||||
if (crossInfo->IsInCrossRealmParty != 0) {
|
||||
var crossGroup = crossInfo->CrossRealmGroups[crossInfo->LocalPlayerGroupIndex];
|
||||
|
||||
for (var i = 0; i < crossGroup.GroupMemberCount && i < list->PartyMembers.Length; i++) {
|
||||
var member = crossGroup.GroupMembers[i];
|
||||
var name = member.NameString;
|
||||
if (string.IsNullOrWhiteSpace(name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (chara->GetSoftTargetId() == member.EntityId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (names.FirstOrDefault(info => info.Name == name) is { } info) {
|
||||
info.PartyListIndex = member.MemberIndex;
|
||||
continue;
|
||||
}
|
||||
|
||||
info = new ListInfo {
|
||||
Name = name,
|
||||
IsChocobo = false,
|
||||
Mana = null,
|
||||
PartyListIndex = member.MemberIndex,
|
||||
ClassJob = member.ClassJobId,
|
||||
};
|
||||
|
||||
names.Add(info);
|
||||
}
|
||||
}
|
||||
|
||||
this._ranLastTick = true;
|
||||
@ -385,8 +390,10 @@ public class Plugin : IDalamudPlugin {
|
||||
this._showDps ^= true;
|
||||
}
|
||||
|
||||
names.Sort((a, b) => a.PartyListIndex.CompareTo(b.PartyListIndex));
|
||||
for (var i = 0; i < names.Count; i++) {
|
||||
var info = names[i];
|
||||
Plugin.Log.Info($"{info.Name} at {info.PartyListIndex}");
|
||||
var lookupName = info.Name == playerName
|
||||
? "YOU"
|
||||
: info.Name;
|
||||
@ -407,7 +414,9 @@ public class Plugin : IDalamudPlugin {
|
||||
bool includeBar,
|
||||
bool includeTargeted
|
||||
) {
|
||||
var unit = info.IsChocobo ? list->Chocobo : list->PartyMembers[info.PartyListIndex];
|
||||
var unit = info.IsChocobo
|
||||
? list->Chocobo
|
||||
: list->PartyMembers[info.PartyListIndex];
|
||||
if (includeBar && unit.TargetGlow != null && (includeTargeted || list->TargetedIndex != info.PartyListIndex)) {
|
||||
unit.TargetGlow->SetAlpha(255);
|
||||
unit.TargetGlow->SetScaleX(0);
|
||||
@ -572,7 +581,9 @@ public class Plugin : IDalamudPlugin {
|
||||
Combatant combatant,
|
||||
IEnumerable<Combatant> combatants
|
||||
) {
|
||||
var member = info.IsChocobo ? list->Chocobo : list->PartyMembers[info.PartyListIndex];
|
||||
var member = info.IsChocobo
|
||||
? list->Chocobo
|
||||
: list->PartyMembers[info.PartyListIndex];
|
||||
if (this.Config.UseDpsBar && member.TargetGlow != null) {
|
||||
float denominator;
|
||||
switch (this.Config.DpsBarMode) {
|
||||
@ -726,7 +737,7 @@ public class Plugin : IDalamudPlugin {
|
||||
public class ListInfo {
|
||||
public required string Name { get; init; }
|
||||
public required bool IsChocobo { get; init; }
|
||||
public required int PartyListIndex { get; init; }
|
||||
public required int PartyListIndex { get; set; }
|
||||
public required uint? Mana { get; init; }
|
||||
public required byte? ClassJob { get; init; }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user