PvP nameplates: correct GC icons (62601/62602/62603), configurable GC IDs, Role/Job icon for enemy players

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-01-31 22:40:28 -05:00
parent 11b4c268f0
commit 80f45f5a31
7 changed files with 275 additions and 42 deletions
+47
View File
@@ -550,6 +550,53 @@ namespace HSUI.Interface.Nameplates
}
// company icon (PvP Frontline: Maelstrom, Flames, Adders)
var gcIconOverrides = (Config.CompanyIconConfig.IconIdTeam1, Config.CompanyIconConfig.IconIdTeam2, Config.CompanyIconConfig.IconIdTeam3);
if (Config.CompanyIconConfig.Enabled && Utils.GrandCompanyIconIdForPvPEnemy(data.GameObject, gcIconOverrides) is uint gcIconId)
{
anchor = anchors.GetAnchor(Config.CompanyIconConfig.NameplateLabelAnchor, Config.CompanyIconConfig.PrioritizeHealthBarAnchor);
anchor = anchor ?? new NameplateAnchor(data.ScreenPosition, Vector2.Zero);
var pos = Utils.GetAnchoredPosition(_config.Position + anchor.Value.Position, -anchor.Value.Size, Config.CompanyIconConfig.FrameAnchor);
var iconPos = Utils.GetAnchoredPosition(pos + Config.CompanyIconConfig.Position, Config.CompanyIconConfig.Size, Config.CompanyIconConfig.Anchor);
drawActions.Add((Config.CompanyIconConfig.StrataLevel, () =>
{
DrawHelper.DrawInWindow(_config.ID + "_enemyCompanyIcon", iconPos, Config.CompanyIconConfig.Size, false, (drawList) =>
{
DrawHelper.DrawIcon(gcIconId, iconPos, Config.CompanyIconConfig.Size, false, alpha, drawList);
});
}
));
}
// role/job icon (enemy players only; has ClassJob)
if (Config.RoleIconConfig.Enabled && data.GameObject is IPlayerCharacter playerCharacter)
{
uint jobId = playerCharacter.ClassJob.RowId;
uint iconId = Config.RoleIconConfig.UseRoleIcons
? JobsHelper.RoleIconIDForJob(jobId, Config.RoleIconConfig.UseSpecificDPSRoleIcons)
: JobsHelper.IconIDForJob(jobId, (uint)Config.RoleIconConfig.Style);
if (iconId > 0)
{
anchor = anchors.GetAnchor(Config.RoleIconConfig.NameplateLabelAnchor, Config.RoleIconConfig.PrioritizeHealthBarAnchor);
anchor = anchor ?? new NameplateAnchor(data.ScreenPosition, Vector2.Zero);
var pos = Utils.GetAnchoredPosition(_config.Position + anchor.Value.Position, -anchor.Value.Size, Config.RoleIconConfig.FrameAnchor);
var iconPos = Utils.GetAnchoredPosition(pos + Config.RoleIconConfig.Position, Config.RoleIconConfig.Size, Config.RoleIconConfig.Anchor);
drawActions.Add((Config.RoleIconConfig.StrataLevel, () =>
{
DrawHelper.DrawInWindow(_config.ID + "_enemyRoleJobIcon", iconPos, Config.RoleIconConfig.Size, false, (drawList) =>
{
DrawHelper.DrawIcon(iconId, iconPos, Config.RoleIconConfig.Size, false, alpha, drawList);
});
}
));
}
}
return drawActions;
}