Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/ChristmasEventManager.cs
2026-03-04 10:03:45 +08:00

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();
}
}