working on quest and interaction system
This commit is contained in:
63
Assets/Scripts/QuestObjectiveUI.cs
Normal file
63
Assets/Scripts/QuestObjectiveUI.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
public class QuestObjectiveUI : MonoBehaviour
|
||||
{
|
||||
[Tooltip("The text component for the objective description")]
|
||||
public TextMeshProUGUI objectiveText;
|
||||
|
||||
[Header("GameObject Toggling (Option A)")]
|
||||
[Tooltip("The GameObject to show when the objective is NOT the currently active one (Completed or Pending future)")]
|
||||
[UnityEngine.Serialization.FormerlySerializedAs("incompleteIcon")]
|
||||
public GameObject inactiveIcon;
|
||||
|
||||
[Tooltip("The GameObject to show when the objective IS the currently active one")]
|
||||
[UnityEngine.Serialization.FormerlySerializedAs("completeIcon")]
|
||||
public GameObject activeIcon;
|
||||
|
||||
[Header("Sprite Swapping (Option B)")]
|
||||
[Tooltip("Assign this if you use a SINGLE Image and want to swap its sprite")]
|
||||
public Image iconImage;
|
||||
[Tooltip("Sprite for Completed/Pending objective")]
|
||||
public Sprite inactiveSprite;
|
||||
[Tooltip("Sprite for the Active objective")]
|
||||
public Sprite activeSprite;
|
||||
|
||||
public void Setup(string description, bool isActive, bool isCompleted, string countText = "")
|
||||
{
|
||||
if (objectiveText != null)
|
||||
{
|
||||
objectiveText.text = description + countText;
|
||||
|
||||
if (isCompleted)
|
||||
{
|
||||
// Completed
|
||||
objectiveText.fontStyle = FontStyles.Strikethrough;
|
||||
objectiveText.color = new Color(0.5f, 0.5f, 0.5f, 0.5f); // Faded gray
|
||||
}
|
||||
else if (isActive)
|
||||
{
|
||||
// Currently Active!
|
||||
objectiveText.fontStyle = FontStyles.Normal;
|
||||
objectiveText.color = Color.white;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pending/Locked future objective
|
||||
objectiveText.fontStyle = FontStyles.Normal;
|
||||
objectiveText.color = Color.gray;
|
||||
}
|
||||
}
|
||||
|
||||
// Option A: Toggle GameObjects based on Completion
|
||||
if (inactiveIcon != null) inactiveIcon.SetActive(!isCompleted);
|
||||
if (activeIcon != null) activeIcon.SetActive(isCompleted);
|
||||
|
||||
// Option B: Swap Sprite on a single Image based on Active state
|
||||
if (iconImage != null)
|
||||
{
|
||||
iconImage.sprite = isActive ? activeSprite : inactiveSprite;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user