185 lines
4.9 KiB
C#
185 lines
4.9 KiB
C#
using System.Collections;
|
|
using Steamworks;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class ChristmasEventManager : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Sprite[] prizesSprite;
|
|
|
|
[SerializeField]
|
|
private Image[] prizesImage;
|
|
|
|
[SerializeField]
|
|
private Image progressBar;
|
|
|
|
[SerializeField]
|
|
private GameObject prizesPrefab;
|
|
|
|
[SerializeField]
|
|
private GameObject WelcomePrefab;
|
|
|
|
[SerializeField]
|
|
private GameObject SockPrizesPrefab;
|
|
|
|
[SerializeField]
|
|
private GameObject SockAnimatePrefab;
|
|
|
|
[SerializeField]
|
|
private AudioSource audioSource;
|
|
|
|
[SerializeField]
|
|
private Sprite sockSprite;
|
|
|
|
[SerializeField]
|
|
private Image[] socksImage;
|
|
|
|
private ChristmasPrize currentShowPrize;
|
|
|
|
private ChristmasSockPrize currentSocketShowPrize;
|
|
|
|
[HideInInspector]
|
|
private WelcomePopUp currentWelcome;
|
|
|
|
[SerializeField]
|
|
private int[] prizeFishTotal;
|
|
|
|
[SerializeField]
|
|
private int maxFishTotal = 50;
|
|
|
|
private bool isStarted;
|
|
|
|
private Animator animator;
|
|
|
|
private int currentPlayerProfileIndex;
|
|
|
|
private FScriptsHandler fScriptsHandler;
|
|
|
|
public WelcomePopUp CurrentWelcome => currentWelcome;
|
|
|
|
private void Start()
|
|
{
|
|
currentPlayerProfileIndex = GameManager.Instance._playerData.currentPlayerProfileIndex;
|
|
fScriptsHandler = Object.FindObjectOfType<FScriptsHandler>();
|
|
animator = GetComponent<Animator>();
|
|
Refresh();
|
|
Invoke("ShowWelcomePopUp", 0.1f);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (GameManager.Instance.isDevModeAllowed && Input.GetKeyDown(KeyCode.X))
|
|
{
|
|
CheckChristmasFish(GameManager.FishSpecies.CarpCommon);
|
|
}
|
|
if (isStarted)
|
|
{
|
|
animator.SetBool("isStarted", value: true);
|
|
}
|
|
}
|
|
|
|
private void ShowWelcomePopUp()
|
|
{
|
|
currentWelcome = Object.Instantiate(WelcomePrefab, base.transform.parent).GetComponent<WelcomePopUp>();
|
|
fScriptsHandler.m_PlayerMain.firstPersonController.frezzeRotation = true;
|
|
fScriptsHandler.m_PlayerMain.firstPersonController.frezzePosition = true;
|
|
}
|
|
|
|
public void Refresh()
|
|
{
|
|
int christmasFish = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.christmasFish;
|
|
float fillAmount = (float)christmasFish / (float)maxFishTotal;
|
|
progressBar.fillAmount = fillAmount;
|
|
for (int i = 0; i < prizeFishTotal.Length; i++)
|
|
{
|
|
if (prizeFishTotal[i] <= christmasFish)
|
|
{
|
|
prizesImage[i].sprite = prizesSprite[1];
|
|
}
|
|
}
|
|
for (int j = 0; j < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.sockCollectId.Count; j++)
|
|
{
|
|
socksImage[j].sprite = sockSprite;
|
|
}
|
|
}
|
|
|
|
public void CheckChristmasFish(GameManager.FishSpecies fishSpecies)
|
|
{
|
|
if (fishSpecies != GameManager.FishSpecies.CarpCommon && fishSpecies != GameManager.FishSpecies.CarpMirror && fishSpecies != GameManager.FishSpecies.CarpSezan && fishSpecies != GameManager.FishSpecies.CarpCrucian && fishSpecies != GameManager.FishSpecies.CarpGrass)
|
|
{
|
|
return;
|
|
}
|
|
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.christmasFish++;
|
|
Refresh();
|
|
int christmasFish = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.christmasFish;
|
|
if (christmasFish >= 50 && !Singleton<SaveDataManager>.Instance.IsCurrentlySandbox() && SteamUserStats.GetAchievement("DECORATE_CHRISTMAS_TREE", out var pbAchieved) && !pbAchieved && SteamUserStats.SetAchievement("DECORATE_CHRISTMAS_TREE"))
|
|
{
|
|
SteamUserStats.StoreStats();
|
|
}
|
|
for (int i = 0; i < prizeFishTotal.Length; i++)
|
|
{
|
|
if (prizeFishTotal[i] == christmasFish)
|
|
{
|
|
ShowPrize(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ShowPrize(int indexPrize)
|
|
{
|
|
if (!currentShowPrize)
|
|
{
|
|
currentShowPrize = Object.Instantiate(prizesPrefab, base.transform.parent).GetComponent<ChristmasPrize>();
|
|
currentShowPrize.Setup(indexPrize);
|
|
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.lastGetPrizeIndex = indexPrize;
|
|
}
|
|
}
|
|
|
|
public void RefreshData()
|
|
{
|
|
StartCoroutine(RefreshDataIE());
|
|
}
|
|
|
|
private IEnumerator RefreshDataIE()
|
|
{
|
|
yield return new WaitForSeconds(1.3f);
|
|
Refresh();
|
|
}
|
|
|
|
public void AddSock(int sockIndex)
|
|
{
|
|
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.sockCollectId.Add(sockIndex);
|
|
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.sockCollectId.Count == 5)
|
|
{
|
|
currentSocketShowPrize = Object.Instantiate(SockPrizesPrefab, base.transform.parent).GetComponent<ChristmasSockPrize>();
|
|
currentSocketShowPrize.Setup(0, 1);
|
|
if (SteamUserStats.GetAchievement("FIND_ALL_SOCKS", out var pbAchieved) && !pbAchieved && SteamUserStats.SetAchievement("FIND_ALL_SOCKS"))
|
|
{
|
|
SteamUserStats.StoreStats();
|
|
}
|
|
}
|
|
Object.Instantiate(SockAnimatePrefab, base.transform.parent).GetComponent<ChristmasSockAnimate>().sockID = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ChristmasData.sockCollectId.Count;
|
|
}
|
|
|
|
private void DoneQuest()
|
|
{
|
|
animator.SetTrigger("Done");
|
|
}
|
|
|
|
private void QuestDestroy()
|
|
{
|
|
Object.Destroy(base.gameObject);
|
|
}
|
|
|
|
public void SetStarted()
|
|
{
|
|
isStarted = true;
|
|
}
|
|
|
|
public void PlayGetSockSound()
|
|
{
|
|
audioSource.Play();
|
|
}
|
|
}
|