UI/GameUI.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@namespace CryptidHunt
<root>
<div class="ItemPrompt" style="display: @(Interactable.IsValid() && Interactable.Active ? "flex" : "none")">
<div class="itemContainer" style="left:@(ItemPromptPosition.x)px; top:@(ItemPromptPosition.y)px">
<div class="image" style="background-image: url(@((Interactable?.Locked ?? false) ? "ui/lock.png" : "ui/hand.png"))"></div>
<div class="promptContainer">
<div class="prompt">@Interactable?.InteractDescription</div>
</div>
</div>
</div>
</root>
@code
{
public static GameUI Instance { get; private set; }
public Interactable Interactable { get; set; }
public Vector2 ItemPromptPosition { get; set; } = new Vector2(0, 0);
protected override void OnStart()
{
base.OnStart();
Instance = this;
}
protected override void OnUpdate()
{
base.OnUpdate();
Interactable = Player.Instance?.InteractingWith;
if (Interactable.IsValid() && Interactable.Active)
ItemPromptPosition = (Scene.Camera.PointToScreenPixels(Interactable.WorldTransform.PointToWorld(Interactable.PromptOffset3D)) + Interactable.PromptOffset2D) * Panel.ScaleFromScreen;
}
public static void OpenNote( string text, bool handprint = false )
{
var note = Instance.Panel.AddChild<Note>();
note.Text = text;
note.Handprint = handprint;
}
public static void CloseNote()
{
foreach (var note in Instance.Panel.Children.OfType<Note>())
note?.Delete();
}
public static void OpenZoneHint(string text, float lifeSpan = 5f)
{
var zoneHint = Instance.Panel.AddChild<ZoneHint>();
zoneHint.Text = text;
zoneHint.LifeSpan = lifeSpan;
}
public static void BlackScreen(float lifeSpan = 5f)
{
var blackScreen = Instance.Panel.AddChild<BlackScreen>();
blackScreen.LifeSpan = lifeSpan;
}
public static void OpenInputHint(string text, string input = "attack1", float lifeSpan = 5f)
{
var inputHint = Instance.Panel.AddChild<InputHint>();
inputHint.Text = text;
inputHint.ButtonHint = input;
inputHint.LifeSpan = lifeSpan;
}
protected override int BuildHash() => System.HashCode.Combine( Time.Now );
[ConCmd("input")]
public static void OpenInputHintDebug( string text )
{
OpenInputHint( text );
}
}