Files
beyond/Assets/Scripts/Tutorial/PlantTreeStep.cs
2024-11-20 15:21:28 +01:00

79 lines
3.0 KiB
C#

using UnityEngine;
namespace Beyond
{
public class PlantTreeStep : MonoBehaviour
{
public BaseStepController baseStepController; // Odwołanie do BaseStepController
public TreeSpotController treeSpotController; // Odwołanie do kontrolera drzewa
public ConsumablesButtonController consumablesButtonController; // Kontroler przycisku do wiary
private bool isTreeGrown = false; // Flaga wskazująca, czy drzewo wyrosło
private bool shouldSkipToGrowthStep = false; // Flaga do określenia, czy powinniśmy pominąć krok 2
private void Start()
{
// Subskrybuje wydarzenie rozpoczęcia kroku tutoriala
baseStepController.OnStarted += OnStepStarted;
// Dodaje warunek do BaseStepController, który określa, czy krok może zostać zakończony
baseStepController.ConditionsAreMet += () => isTreeGrown;
// Subskrybuje zdarzenie zmiany stanu drzewa
if (treeSpotController != null)
{
treeSpotController.onStateChanged.AddListener(OnTreeStateChanged);
}
}
private void OnStepStarted()
{
// Resetujemy flagi na początku kroku
isTreeGrown = false;
shouldSkipToGrowthStep = false;
Debug.Log("Rozpoczęcie kroku: zasadz drzewo.");
// Sprawdź poziom wiary na początku kroku
if (IsFaithSufficient())
{
Debug.Log("Wiara jest wystarczająca. Pomijamy krok ładowania wiary i przechodzimy do wzrostu drzewa.");
shouldSkipToGrowthStep = true;
}
}
private bool IsFaithSufficient()
{
// Zakładamy, że jeśli `imageParent` powiązany z `ConsumablesFaith` jest aktywny, oznacza to wystarczającą ilość wiary
if (consumablesButtonController != null)
{
return consumablesButtonController.imageParent.activeSelf;
}
return false;
}
private void OnTreeStateChanged(TreeState newState)
{
// Sprawdzamy, czy drzewo osiągnęło etap wzrostu, który uznajemy za "wyrośnięcie"
if (newState == TreeState.FreshlySeeded ||
newState == TreeState.SmallTree ||
newState == TreeState.MediumTree ||
newState == TreeState.FullyGrown)
{
if (shouldSkipToGrowthStep && newState == TreeState.FreshlySeeded)
{
// Jeśli mamy wystarczającą ilość wiary, pomijamy krok 2 i od razu rośniemy do kolejnego etapu
Debug.Log("Pomijamy krok ładowania wiary i przechodzimy do kroku wzrostu drzewa.");
treeSpotController.GrowTree(); // Rozpoczynamy wzrost drzewa
}
else
{
// W przeciwnym razie zakończ krok 1 i przejdź do kroku 2
isTreeGrown = true;
Debug.Log("Drzewo wyrosło, krok tutoriala zakończony.");
}
}
}
}
}