Files
2026-03-04 10:03:45 +08:00

366 lines
11 KiB
C#

using System;
using System.Collections;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class Home : MonoBehaviour
{
public Image GoFishingImage;
public Text GoFishingText;
public Text GoFishingNameText;
public Text levelValueText;
public Text xPValueText;
public Image xpProgressBarImage;
public RawImage profileAvatar;
public Text profileLevelValueText;
public Text profileXpValueText;
public Image profileXpProgressBarImage;
public Text profileGametimeValueText;
public Text profileFishCaughtValueText;
public Text profileRankingPointsValueText;
public Text profileTournamentsValueText;
public Text completedDailyQuestsValueText;
public Text completedWeeklyQuestsValueText;
public Text completedMonthlyQuestsValueText;
public Text ResidenceFishAquariumsText;
public Text ResidenceTotalAquariumsText;
public Text ResidenceTotalTrophiesText;
public Text FishNetLevelText;
public Text FishNetCapacityText;
public Text FishNetTotalFishText;
public Text FishNetXpText;
public Image FishNetLevelProgress;
public Text FishStatsWeightText;
public Text FishStatsAmoutText;
public Button ShowFishNetButton;
public Button ShowResidenceButton;
public GameObject[] homeContents;
public GameObject tournamentsGameObject;
public GameObject tournamentsBannedGameObject;
public GameObject inventoryGameObject;
public GameObject ShopGameObject;
public BaitFishListItem BaitFishListItemPrefab;
public GameObject BaitFishListScrollView;
[SerializeField]
private Sprite ResidenceSprite;
[SerializeField]
private Sprite TournamentSprite;
[SerializeField]
private LocalizationUIText tournamentLocalizationText;
public Color activePanelColor;
public Color inactivePanelColor;
public Color inactiveTextColor;
private int lastPlayLocationIndex;
private MainGameScene mgscene;
public int lastDisplayedContent;
public static event Action<int> OnShowContent;
private void Start()
{
if (FScriptsHandler.Instance != null)
{
ShowResidenceButton.gameObject.SetActive(value: false);
}
if ((bool)GameManager.Instance.playerResidence)
{
ShowResidenceButton.gameObject.SetActive(value: false);
}
mgscene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
ShowFisheshOnMap();
}
private void FixedUpdate()
{
if (ServerManager.isBanned)
{
if (!tournamentsBannedGameObject.activeSelf)
{
tournamentsBannedGameObject.SetActive(value: true);
}
}
else if (tournamentsBannedGameObject.activeSelf)
{
tournamentsBannedGameObject.SetActive(value: false);
}
}
private void Update()
{
if (InputManager.isBPressed || InputManager.isExit)
{
if (lastDisplayedContent == 2)
{
ShowContent(1);
}
else
{
ShowContent(0);
}
}
}
private void ShowFisheshOnMap()
{
if (GameManager.Instance.playerResidence != null || FScriptsHandler.Instance == null)
{
BaitFishListScrollView.gameObject.SetActive(value: false);
return;
}
int num = GameManager.Instance._playerData.Player[GameManager.Instance._playerData.currentPlayerProfileIndex].lastPlayLocationIndex;
GameManager.FishSpecies[] fishSpecies = GameManager.Instance.gameLocations[num].fishSpecies;
_ = GameManager.Instance.gameFish[0].speciesName;
GameManager.FishSpecies[] array = fishSpecies;
foreach (GameManager.FishSpecies f in array)
{
GameManager.GameFish fish = GameManager.Instance.gameFish.ToList().FirstOrDefault((GameManager.GameFish x) => x.speciesName == f);
UnityEngine.Object.Instantiate(BaitFishListItemPrefab, BaitFishListScrollView.transform).Initialize(fish);
}
}
public void ShowContent(int index)
{
Home.OnShowContent?.Invoke(index);
for (int i = 0; i < homeContents.Length; i++)
{
homeContents[i].SetActive(value: false);
}
lastDisplayedContent = index;
if (index == -1)
{
return;
}
homeContents[index].SetActive(value: true);
GetData();
if ((bool)TutorialManager.Instance)
{
inventoryGameObject.GetComponent<Image>().color = inactivePanelColor;
inventoryGameObject.GetComponentInChildren<Text>().color = inactiveTextColor;
ShopGameObject.GetComponent<Image>().color = inactivePanelColor;
ShopGameObject.GetComponentInChildren<Text>().color = inactiveTextColor;
return;
}
inventoryGameObject.GetComponent<Image>().color = activePanelColor;
inventoryGameObject.GetComponentInChildren<Text>().color = activePanelColor;
ShopGameObject.GetComponent<Image>().color = activePanelColor;
ShopGameObject.GetComponentInChildren<Text>().color = activePanelColor;
if ((bool)GameManager.Instance.playerResidence)
{
GoFishingImage.color = inactivePanelColor;
GoFishingText.color = inactiveTextColor;
}
}
private void GetData()
{
_ = GameManager.Instance._playerData.currentPlayerProfileIndex;
FishNetLevelText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNetLevel.ToString();
FishNetCapacityText.text = GameManager.Instance.ConvertWeight(GameManager.Instance._playerData.GetFishNetCapacity());
FishNetTotalFishText.text = GameManager.Instance.ConvertWeight(GameManager.Instance._playerData.GetUsedFishNet());
FishNetXpText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNetExp + " XP";
FishNetLevelProgress.fillAmount = (float)Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNetExp / (float)GameManager.Instance._playerData.fishNetMaxExp[Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNetLevel - 1];
FishStatsWeightText.text = GameManager.Instance.ConvertWeight(GameManager.Instance._playerData.GetUsedFishNet()) + "/" + GameManager.Instance.ConvertWeight(GameManager.Instance._playerData.GetFishNetCapacity());
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNet.Count == 0)
{
FishStatsAmoutText.text = "0";
}
else
{
FishStatsAmoutText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNet.Count.ToString();
}
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerFishNet.Count == 0)
{
ShowFishNetButton.interactable = false;
}
else
{
ShowFishNetButton.interactable = true;
}
lastPlayLocationIndex = GameManager.Instance._playerData.Player[GameManager.Instance._playerData.currentPlayerProfileIndex].lastPlayLocationIndex;
GoFishingImage.sprite = GameManager.Instance.gameLocations[lastPlayLocationIndex].GetScreenMapImage(0);
GoFishingNameText.text = GameManager.Instance.gameLocations[lastPlayLocationIndex].name;
if (FScriptsHandler.Instance != null)
{
GoFishingText.enabled = false;
}
else
{
GoFishingText.enabled = true;
}
levelValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerLevel.ToString();
xPValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerExp + " XP";
xpProgressBarImage.fillAmount = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerExp / Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMaxExp;
profileLevelValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerLevel.ToString();
profileXpValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerExp + " XP";
profileXpProgressBarImage.fillAmount = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerExp / Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMaxExp;
profileGametimeValueText.text = Mathf.RoundToInt(GameManager.Instance._playerData.GetGameTimeInSeconds() / 3600) + "h";
profileFishCaughtValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TotalFish.ToString();
profileRankingPointsValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerRankingPoints.ToString();
completedDailyQuestsValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().CompletedDailyQuests.ToString();
completedWeeklyQuestsValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().CompletedWeeklyQuests.ToString();
completedMonthlyQuestsValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().CompletedMonthlyQuests.ToString();
profileTournamentsValueText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerTournamentsWon.ToString();
ResidenceFishAquariumsText.text = GetAquariumsFish("CURRENT").ToString();
ResidenceTotalAquariumsText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerAquarium.Count.ToString();
ResidenceTotalTrophiesText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerTrophy.Count.ToString();
}
private int GetAquariumsFish(string valueType)
{
int num = 0;
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerAquarium.Count; i++)
{
if (!(valueType == "CURRENT"))
{
if (valueType == "MAX")
{
num += Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerAquarium[i].maxCapacity;
}
}
else
{
num += Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerAquarium[i].fish.Count;
}
}
return num;
}
public void GoToResidence()
{
if (!(FScriptsHandler.Instance != null))
{
GameManager.Instance.LoadScene("Residence");
}
}
public void OpenSettings()
{
UnityEngine.Object.FindObjectOfType<PlayerHeader>().ShowSettings();
}
public void OpenInventory()
{
if (!TutorialManager.Instance)
{
UnityEngine.Object.FindObjectOfType<PlayerHeader>().ShowEquipment();
}
}
public void OpenShop()
{
if (!TutorialManager.Instance)
{
UnityEngine.Object.FindObjectOfType<PlayerHeader>().ShowShop();
}
}
public void Gameplay()
{
if (!TutorialManager.Instance)
{
UnityEngine.Object.FindObjectOfType<PlayerHeader>().ShowGameplay();
}
}
public void GoFishing()
{
GameManager.Instance.UnloadAddectiveScene();
if (FScriptsHandler.Instance == null)
{
GameManager.Instance.LoadScene(GameManager.Instance.gameLocations[lastPlayLocationIndex].sceneName);
}
}
public void OpenTournaments()
{
if (Singleton<SaveDataManager>.Instance.IsCurrentlySandbox())
{
UnityEngine.Object.FindObjectOfType<PlayerHeader>().ShowResidence();
}
else
{
UnityEngine.Object.FindObjectOfType<PlayerHeader>().ShowTournaments();
}
}
public void PlayOnClickSound()
{
GameManager.Instance.PlayOnClickSound();
}
private void OnEnable()
{
StartCoroutine(ShowContentDelay(0));
GetData();
if (Singleton<SaveDataManager>.Instance.IsCurrentlySandbox())
{
tournamentsGameObject.GetComponent<Image>().sprite = ResidenceSprite;
tournamentLocalizationText.key = "RESIDENCE_GRID";
}
else
{
tournamentsGameObject.GetComponent<Image>().sprite = TournamentSprite;
tournamentLocalizationText.key = "TOURNAMENTS";
}
}
private IEnumerator ShowContentDelay(int index)
{
yield return null;
if (GameManager.Instance._playerData.forceShowFishNet)
{
ShowContent(2);
GameManager.Instance._playerData.forceShowFishNet = false;
}
else
{
ShowContent(index);
}
}
}