Files
Cielonos/Assets/Scripts/Core/Interaction/InteractableObjectBase.cs
SoulliesOfficial 50ee502684 完善
2026-02-13 09:22:11 -05:00

80 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using SickscoreGames.HUDNavigationSystem;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Cielonos.Core.Interaction
{
public partial class InteractableObjectBase : MonoBehaviour
{
public InteractionTrigger interactionTrigger;
public HUDNavigationElement navigation;
[HideInInspector]
public List<InteractionChoice> choices;
private void Awake()
{
choices = new List<InteractionChoice>();
InitializeChoices();
}
}
public partial class InteractableObjectBase
{
protected virtual void InitializeChoices()
{
// Override in derived classes to set up interaction choices
}
public virtual void EnterTriggerAction()
{
navigation.showIndicator = true;
navigation.useIndicatorDistanceText = true;
navigation.indicatorOnscreenDistanceTextFormat = "[E]-Interact";
}
public virtual void ExitTriggerAction()
{
navigation.showIndicator = false;
}
}
#if UNITY_EDITOR
public partial class InteractableObjectBase
{
private void Reset()
{
Setup();
}
[Button("Setup")]
private void Setup()
{
if (interactionTrigger == null)
{
interactionTrigger = GetComponentInChildren<InteractionTrigger>();
interactionTrigger.interactableObject = this;
}
if (navigation == null)
{
navigation = GetComponentInChildren<HUDNavigationElement>();
}
}
}
#endif
public class InteractionChoice
{
public string choiceName;
public Action action;
public InteractionChoice(string name, Action action)
{
this.choiceName = name;
this.action = action;
}
}
}