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."); } } } } }