A UI Razor component that renders a small list of a player's banished perk icons. It chooses the selected player or local player, skips rendering when no player or no banished perks, then iterates the player's BanishedPerkIdentities to draw PerkIconStatic components with a slight randomized rotation.
@namespace Sandbox
@using Sandbox;
@using Sandbox.UI;
@using System;
@inherits Panel
@attribute [StyleSheet("BanishedPerks.razor.scss")]
@{
var player = Manager.Instance.SelectedPlayer.IsValid()
? Manager.Instance.SelectedPlayer
: Manager.Instance.LocalPlayer;
if (!player.IsValid() || player.BanishedPerkIdentities.Count == 0)
return;
}
<root>
<div class="banishedlist" style="opacity:@(player.IsProxy ? 1f : 0.3f);">
@{
int index = 0;
}
@foreach(var typeIdentity in player.BanishedPerkIdentities)
{
var rot = Utils.Map((player.PerkRandomRotationSeed * 2 + index * 4f) % 10, 0, 9, -5f, 5f);
<PerkIconStatic style="width: 42px; height: 42px; transform: rotate(@(rot)deg);" PerkType=@(PerkManager.IdentityToType(typeIdentity)) Level=@(1) Banished=@true />
index++;
}
</div>
</root>
@code{
protected override int BuildHash()
{
var player = Manager.Instance.SelectedPlayer.IsValid()
? Manager.Instance.SelectedPlayer
: Manager.Instance.LocalPlayer;
return HashCode.Combine(player, player.BanishedPerkIdentities.Count);
}
}