75 lines
2.3 KiB
C#
75 lines
2.3 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
namespace Quest_Environment.Q3
|
|
{
|
|
public class WipeableSurface : MonoBehaviour, IInteractable
|
|
{
|
|
[Header("Settings")]
|
|
public ItemData requiredRagItem;
|
|
[SerializeField] private float wipeDuration = 1.0f;
|
|
|
|
[Header("Object References")]
|
|
[Tooltip("The clean version of the surface to be activated.")]
|
|
[SerializeField] private GameObject cleanSurfaceObject;
|
|
[Tooltip("The dirty version of the surface to be deactivated.")]
|
|
[SerializeField] private GameObject dirtySurfaceObject;
|
|
|
|
private bool isWiping = false;
|
|
|
|
private void Start()
|
|
{
|
|
// Ensure the clean version is hidden at the start
|
|
if (cleanSurfaceObject != null) cleanSurfaceObject.SetActive(false);
|
|
}
|
|
|
|
public void Interact()
|
|
{
|
|
if (isWiping) return;
|
|
|
|
bool hasRag = InventorySystem.Instance.HasItem(requiredRagItem);
|
|
|
|
if (hasRag)
|
|
{
|
|
if (QuestManager.Instance != null && QuestManager.Instance.currentQuest is Q3_WipeSurfacesQuest)
|
|
{
|
|
StartCoroutine(WipeRoutine());
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("This is dirty, but I have no reason to clean it right now.");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("A rag is needed to clean this!");
|
|
}
|
|
}
|
|
|
|
private IEnumerator WipeRoutine()
|
|
{
|
|
isWiping = true;
|
|
|
|
PlayerHandsController.Instance?.PlayWipeAnimation();
|
|
InteractionHandler.Instance.NotifyInteraction(gameObject);
|
|
|
|
// Wait for the animation to finish
|
|
yield return new WaitForSeconds(wipeDuration);
|
|
|
|
if (dirtySurfaceObject != null) dirtySurfaceObject.SetActive(false);
|
|
if (cleanSurfaceObject != null) cleanSurfaceObject.SetActive(true);
|
|
|
|
Debug.Log("Surface wiped clean!");
|
|
|
|
// We don't destroy the parent object, just disable this script
|
|
// to prevent further interaction.
|
|
this.enabled = false;
|
|
}
|
|
|
|
public string GetDescription()
|
|
{
|
|
if (isWiping || !this.enabled) return "";
|
|
return "Wipe surface";
|
|
}
|
|
}
|
|
} |