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(); animator = GetComponent(); 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(); fScriptsHandler.m_PlayerMain.firstPersonController.frezzeRotation = true; fScriptsHandler.m_PlayerMain.firstPersonController.frezzePosition = true; } public void Refresh() { int christmasFish = Singleton.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.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.Instance.GetCurrentPlayerData().ChristmasData.christmasFish++; Refresh(); int christmasFish = Singleton.Instance.GetCurrentPlayerData().ChristmasData.christmasFish; if (christmasFish >= 50 && !Singleton.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(); currentShowPrize.Setup(indexPrize); Singleton.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.Instance.GetCurrentPlayerData().ChristmasData.sockCollectId.Add(sockIndex); if (Singleton.Instance.GetCurrentPlayerData().ChristmasData.sockCollectId.Count == 5) { currentSocketShowPrize = Object.Instantiate(SockPrizesPrefab, base.transform.parent).GetComponent(); 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().sockID = Singleton.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(); } }