ui/BountyElement.razor
@using Sandbox;
@using Sandbox.UI;
@inherits Panel
@attribute [StyleSheet("BountyElement.razor.scss")]
<root style="width:@(Size)px; height:@(Size)px; transform:scale(@(Utils.Map(Manager.Instance.TimeSinceTurnStart, 0f, 0.5f, 1.25f, 1f, EasingType.QuadOut)));">
@{
int currTurn = (int)Manager.Instance.Stats[StatType.TurnNum];
bool isActive = Manager.Instance.Stats[StatType.TurnNum] >= BountyData.startTurn;
int turnsRemaining = (isActive ? BountyData.endTurn : BountyData.startTurn) - currTurn;
}
<div class="bounty_container" style="background-image:url(@($"textures/bounty_2.png")); opacity:@(isActive ? 1f : Utils.Map(currTurn, 0, BountyData.startTurn, 0.1f, 0.3f));">
<div class="turns_remaining" style="font-size:@(Size * 0.6f)px; color:@((isActive ? new Color(0.5f, 0.5f, 1f) : new Color(1f, 0.5f, 0.5f)).Rgba);">
@($"{turnsRemaining}")
</div>
<div class="money_amount" style="font-size:@(Size * 0.4f)px; left:@(-Size * 0.3f)px; ">
@($"${BountyData.moneyAmount}")
</div>
</div>
</root>
@code
{
public CardType CardType { get; set; }
public float Size { get; set; }
public int Index { get; set; }
public int TypeIndexUnmatched { get; set; }
public BountyData BountyData { get; set; }
protected override void OnMouseOver(MousePanelEvent e)
{
base.OnMouseOver(e);
Manager.Instance.HoveredPanelType = CardType;
Manager.Instance.IsHoveringBounty = true;
if(Manager.Instance.TimeSinceHoverSfx > 0.025f)
{
Manager.Instance.PlaySfx("click_1", new Vector3(100f, 0f, 0f));
Manager.Instance.TimeSinceHoverSfx = 0f;
}
e.StopPropagation();
}
protected override void OnMouseOut(MousePanelEvent e)
{
base.OnMouseOut(e);
if(Manager.Instance.IsHoveringBounty)
{
Manager.Instance.HoveredPanelType = CardType.None;
Manager.Instance.HoveredPanelIndex = -1;
Manager.Instance.IsHoveringBounty = false;
}
e.StopPropagation();
}
protected override int BuildHash()
{
var turnStartTimeHash = Manager.Instance.TimeSinceTurnStart < 0.5f ? Manager.Instance.TimeSinceTurnStart.Relative : 0f;
return HashCode.Combine(
CardType,
Size,
Manager.Instance.Stats[StatType.TurnNum],
turnStartTimeHash
);
}
}