chip-gameV3/Assets/Scripts/PrizeSystem/CharacterPrizeConfigurator.cs

66 lines
1.7 KiB
C#

using CharacterSystem;
using PrizeSystem;
using System;
using UnityEngine;
public class CharacterPrizeConfigurator : MonoBehaviour
{
public event Action OnClosed;
[SerializeField] private CharacterSelectionPanel _characterSelection;
[SerializeField] private PrizesSelector _prizesSelector;
private void Awake()
{
_characterSelection.OnCharacterSelected += OpenPrizeSelector;
_characterSelection.OnExitRequested += SaveAndClose;
_prizesSelector.OnConfirmed += OpenCharacterSelection;
}
private void OnEnable()
{
OpenCharacterSelection();
}
private void Start()
{
OpenCharacterSelection();
}
private void OnDestroy()
{
_characterSelection.OnCharacterSelected -= OpenPrizeSelector;
_characterSelection.OnExitRequested -= SaveAndClose;
_prizesSelector.OnConfirmed -= OpenCharacterSelection;
}
private void OpenPrizeSelector(Character character)
{
_characterSelection.gameObject.SetActive(false);
_prizesSelector.Open(character);
ControlsPerformer.Instance.SetControlable(_prizesSelector);
}
private void OpenCharacterSelection()
{
_prizesSelector.gameObject.SetActive(false);
_characterSelection.gameObject.SetActive(true);
_characterSelection.Open();
if (ControlsPerformer.Instance != null)
ControlsPerformer.Instance.SetControlable(_characterSelection);
}
private void SaveAndClose()
{
PrizeSerializer.SaveToFile();
PrizeSystemManager.SavePrizes();
if (ControlsPerformer.Instance != null)
ControlsPerformer.Instance.SetControlable(null);
gameObject.SetActive(false);
OnClosed?.Invoke();
}
}