using UnityEngine; public class PuzzleManager : MonoBehaviour { public bool keyPlaced; public bool gemPlaced; public bool puzzleSolved; public PuzzleUI puzzleUI; public DraggableObject gemItem; private const string KeyObjective = "Перетащите ключ в слот"; private const string GemAvailableObjective = "Дверь открыта. Возьмите самоцвет за дверью"; private const string GemObjective = "Перетащите самоцвет во второй слот"; private const string SolvedObjective = "Пазл решён. Выход открыт"; private void Start() { // Самоцвет становится доступен только после решения первого шага. if (gemItem != null) { gemItem.SetInteractable(false); } if (puzzleUI != null) { puzzleUI.SetObjective(KeyObjective); puzzleUI.SetSolvedVisible(false); puzzleUI.UpdateDebug(keyPlaced, gemPlaced, puzzleSolved); } } public void OnKeyPlaced() { keyPlaced = true; if (gemItem != null) { gemItem.SetInteractable(true); } if (puzzleUI != null) { puzzleUI.SetObjective(GemAvailableObjective); puzzleUI.ShowMessage(GemObjective); } CheckPuzzleSolved(); } public void OnGemPlaced() { gemPlaced = true; if (puzzleUI != null) { puzzleUI.SetObjective(SolvedObjective); } CheckPuzzleSolved(); } public void CheckPuzzleSolved() { // Финальное состояние наступает только после обоих правильных размещений. puzzleSolved = keyPlaced && gemPlaced; if (puzzleUI != null) { puzzleUI.UpdateDebug(keyPlaced, gemPlaced, puzzleSolved); if (puzzleSolved) { puzzleUI.SetSolvedVisible(true); puzzleUI.ShowMessage("Пазл решён!"); } } } }