66 lines
1.7 KiB
C#
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();
|
|
}
|
|
}
|