79 lines
3.0 KiB
C#
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.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|