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

609 lines
17 KiB
C#

using System;
using System.Collections.Generic;
using HeathenEngineering.SteamApi.Foundation;
using Rewired.UI.ControlMapper;
using Steamworks;
using UnityEngine;
using UnityEngine.UI;
public class PlayerHeader : MonoBehaviour
{
private delegate void ShowContent();
public GameObject optionsBar;
public Text playerNameText;
public Text playerLevelText;
public Text playerCashText;
public Text playerFriendsText;
public Text playerRewardsText;
public Text playerExpText;
public Text ExpBoostTimeText;
public Text CashBoostTimeText;
public Text ToNextLevelText;
public Image LevelProgress;
private GameManager.PlayerData currentPlayerData;
public HeaderOptionsBarHover[] optionsHoverBtn;
private bool isVersionPanelOpen;
public GameObject VersionInfoPanel;
public GameObject skillNewImage;
public GameObject QuestCompleteImage;
public GameObject goResidenceButton;
public static int mainmenuContentIndex;
[SerializeField]
public GameObject tokensUI;
[SerializeField]
private Animator tokenUIAnimator;
[SerializeField]
private GameObject _playerExpBoost;
[SerializeField]
private GameObject _playerCashBoost;
[SerializeField]
private Text _nextLevelXPText;
[SerializeField]
private GameObject _nextLevel;
[SerializeField]
private GameObject _wonTournaments;
[SerializeField]
private GameObject _rankingsButton;
private List<ShowContent> ShowContentArray = new List<ShowContent> { ShowEscapeMenu, ShowSkills, ShowQuests, ShowFishRecords, ShowRankings, ShowFishpedia, ShowHelp };
public void ResetContentIndex()
{
mainmenuContentIndex = 0;
}
private void incrementCurrentContent()
{
if (mainmenuContentIndex < ShowContentArray.Count - 1)
{
mainmenuContentIndex++;
}
else
{
mainmenuContentIndex = 0;
}
}
private void decrementCurrentContent()
{
if (mainmenuContentIndex > 0)
{
mainmenuContentIndex--;
}
else
{
mainmenuContentIndex = ShowContentArray.Count - 1;
}
}
private void Start()
{
currentPlayerData = GameManager.Instance._playerData;
CheckAndUpdatePlayerStats();
tokensUI.SetActive(value: false);
}
public void OnDisable()
{
tokensUI.SetActive(value: false);
}
private void OnEnable()
{
if (GameManager.Instance._playerData.currentPlayerProfileIndex != -1)
{
SetSandboxProperties();
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().GameMode == GameManager.PlayerData.CPlayer.GameMode.Realistic)
{
optionsHoverBtn[7].gameObject.SetActive(value: false);
}
else
{
optionsHoverBtn[7].gameObject.SetActive(value: true);
}
UpdateFriends();
InvokeRepeating("UpdateFriends", 10f, 10f);
}
if (FScriptsHandler.Instance != null)
{
optionsHoverBtn[0].gameObject.SetActive(value: false);
goResidenceButton.SetActive(value: false);
if ((bool)FScriptsHandler.Instance.m_HudManager.fishCatchPanel)
{
optionsHoverBtn[1].gameObject.SetActive(value: false);
}
if ((bool)TutorialManager.Instance)
{
optionsHoverBtn[0].gameObject.SetActive(value: false);
optionsHoverBtn[1].gameObject.SetActive(value: false);
optionsHoverBtn[2].gameObject.SetActive(value: false);
optionsHoverBtn[3].gameObject.SetActive(value: false);
optionsHoverBtn[4].gameObject.SetActive(value: false);
optionsHoverBtn[7].gameObject.SetActive(value: false);
optionsHoverBtn[8].gameObject.SetActive(value: false);
}
}
if (UnityEngine.Object.FindObjectOfType<Residence>() != null)
{
optionsHoverBtn[0].gameObject.SetActive(value: false);
optionsHoverBtn[7].gameObject.SetActive(value: false);
optionsHoverBtn[8].gameObject.SetActive(value: false);
optionsHoverBtn[4].gameObject.SetActive(value: false);
}
}
public void QuickSceneChange(bool directionRight)
{
if (GameManager.Instance.messageBoxStack.Count == 0 && !SRDebug.Instance.IsDebugPanelVisible && !UnityEngine.Object.FindObjectOfType<SetNamePopUpItem>() && !UnityEngine.Object.FindObjectOfType<Window>() && (!UnityEngine.Object.FindObjectOfType<ShopManager>() || !UnityEngine.Object.FindObjectOfType<ShopManager>().searchField.isFocused) && (!UnityEngine.Object.FindObjectOfType<FishPediaManager>() || !UnityEngine.Object.FindObjectOfType<FishPediaManager>().searchText.isFocused) && (!UnityEngine.Object.FindObjectOfType<EquipmentManager>() || !UnityEngine.Object.FindObjectOfType<EquipmentManager>().searchInputField.isFocused) && !MultiplayerAddectiveScene.IsFocused)
{
if (directionRight)
{
incrementCurrentContent();
}
else
{
decrementCurrentContent();
}
ShowContentArray[mainmenuContentIndex]();
}
}
private void Update()
{
if (GameManager.Instance._playerData.currentPlayerProfileIndex == -1)
{
return;
}
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().GameMode != GameManager.PlayerData.CPlayer.GameMode.Realistic)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerSkillsPoint > 0)
{
if (!Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ShowSkillsAnimation)
{
skillNewImage.SetActive(value: false);
}
else
{
skillNewImage.SetActive(value: true);
}
}
else
{
skillNewImage.SetActive(value: false);
}
}
if (GameManager.Instance.player.GetButtonDown("RB") || GameManager.Instance.player.GetButtonDown("E"))
{
QuickSceneChange(directionRight: true);
}
else if (GameManager.Instance.player.GetButtonDown("LB") || GameManager.Instance.player.GetButtonDown("Q"))
{
QuickSceneChange(directionRight: false);
}
CheckAndUpdatePlayerStats();
CheckQuestCompleteIcon();
}
private void CheckQuestCompleteIcon()
{
bool active = false;
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest.Count; i++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].curentObjectiveProgress >= Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest.objectiveValue)
{
active = true;
}
}
QuestCompleteImage.SetActive(active);
}
public void PlayOnClickSound()
{
GameManager.Instance.PlayOnClickSound();
}
private void UpdateFriends()
{
int num;
try
{
num = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);
}
catch (Exception)
{
num = 0;
}
int num2 = 0;
if (num == -1)
{
Debug.Log("GetFriendCount returned -1, the current user is not logged in.\n");
num = 0;
}
for (int i = 0; i < num; i++)
{
if (SteamFriends.GetFriendGamePlayed(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate), out var pFriendGameInfo) && pFriendGameInfo.m_gameID.AppID().m_AppId == SteamSettings.current.applicationId.m_AppId)
{
num2++;
}
}
playerFriendsText.text = num2 + " / " + num;
}
public void CheckAndUpdatePlayerStats()
{
playerNameText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerName;
if (!Singleton<SaveDataManager>.Instance.IsCurrentlySandbox() && currentPlayerData.currentPlayerProfileIndex != -1)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostExp > 0f)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostExp -= Time.unscaledDeltaTime;
ExpBoostTimeText.text = GameManager.Instance._playerData.GetExpBoostTime();
}
else
{
ExpBoostTimeText.text = "00:00";
}
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostCash > 0f)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostCash -= Time.unscaledDeltaTime;
CashBoostTimeText.text = GameManager.Instance._playerData.GetCashBoostTime();
}
else
{
CashBoostTimeText.text = "00:00";
}
playerLevelText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerLevel.ToString();
string text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerCash.ToString("F0");
playerCashText.text = text;
playerRewardsText.text = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerTournamentsWon.ToString();
float num = (float)Math.Round(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerExp, 0);
float num2 = (float)Math.Round(Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMaxExp, 0);
float num3 = num2 - num;
playerExpText.text = GameManager.Instance.formatNumber(long.Parse(num.ToString("F0"))) + " / " + GameManager.Instance.formatNumber(long.Parse(num2.ToString("F0")));
ToNextLevelText.text = GameManager.Instance.formatNumber(long.Parse(num3.ToString("F0"))) + " XP";
LevelProgress.fillAmount = num / num2;
}
}
public void SetSelectedOptionBtn(int index)
{
for (int i = 0; i < optionsHoverBtn.Length; i++)
{
if (i == index)
{
optionsHoverBtn[i].isSelected = true;
}
else
{
optionsHoverBtn[i].isSelected = false;
}
}
}
public void ShowHideVersionInfoPanel()
{
isVersionPanelOpen = !isVersionPanelOpen;
VersionInfoPanel.SetActive(isVersionPanelOpen);
optionsBar.SetActive(!isVersionPanelOpen);
}
public void ShowHome()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Home)
{
mainGameScene.ShowContent(MainGameScene.Content.Home);
tokensUI.SetActive(value: false);
}
}
else
{
ShowEscapeMenu();
}
}
public void ShowEquipment()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Equipment)
{
mainGameScene.ShowContent(MainGameScene.Content.Equipment);
tokensUI.SetActive(value: false);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Equipment")
{
GameManager.Instance.LoadAddectiveScene("Equipment");
}
}
public void ShowShop()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Shop)
{
mainGameScene.ShowContent(MainGameScene.Content.Shop);
tokensUI.SetActive(value: false);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Shop")
{
GameManager.Instance.LoadAddectiveScene("Shop");
}
}
public static void ShowFishRecords()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Records)
{
mainGameScene.ShowContent(MainGameScene.Content.Records);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "PersonalRecords")
{
GameManager.Instance.LoadAddectiveScene("PersonalRecords");
}
mainmenuContentIndex = 3;
}
public static void ShowRankings()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Ranking)
{
mainGameScene.ShowContent(MainGameScene.Content.Ranking);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Ranking")
{
GameManager.Instance.LoadAddectiveScene("Ranking");
}
mainmenuContentIndex = 4;
}
public void ShowGameplay()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene && mainGameScene.currentContent != MainGameScene.Content.Gameplay)
{
mainGameScene.ShowContent(MainGameScene.Content.Gameplay);
tokensUI.SetActive(value: false);
}
}
public void ShowTournaments()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Tournament)
{
mainGameScene.ShowContent(MainGameScene.Content.Tournament);
tokensUI.SetActive(value: false);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Tournaments")
{
GameManager.Instance.LoadAddectiveScene("Tournaments");
}
}
public void ShowSettings()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Settings)
{
mainGameScene.ShowContent(MainGameScene.Content.Settings);
tokensUI.SetActive(value: false);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Settings")
{
GameManager.Instance.LoadAddectiveScene("Settings");
}
}
public static void ShowSkills()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Skills)
{
mainGameScene.ShowContent(MainGameScene.Content.Skills);
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ShowSkillsAnimation)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ShowSkillsAnimation = false;
}
}
}
else
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ShowSkillsAnimation)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().ShowSkillsAnimation = false;
}
if (GameManager.Instance.addectiveSceneLoaded != "SkillTree")
{
GameManager.Instance.LoadAddectiveScene("SkillTree");
}
}
mainmenuContentIndex = 1;
}
public static void ShowQuests()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Quests)
{
mainGameScene.ShowContent(MainGameScene.Content.Quests);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Quests")
{
GameManager.Instance.LoadAddectiveScene("Quests");
}
mainmenuContentIndex = 2;
}
public static void ShowHelp()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Help)
{
mainGameScene.ShowContent(MainGameScene.Content.Help);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "Help")
{
GameManager.Instance.LoadAddectiveScene("Help");
}
mainmenuContentIndex = 6;
}
public void ShowCharacterCustomize()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.CharacterCustomize)
{
mainGameScene.ShowContent(MainGameScene.Content.CharacterCustomize);
tokensUI.SetActive(value: false);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "CharacterCustomize")
{
GameManager.Instance.LoadAddectiveScene("CharacterCustomize");
}
}
public void ShowResidence()
{
if (!(FScriptsHandler.Instance != null))
{
GameManager.Instance.UnloadAddectiveScene();
GameManager.Instance.LoadScene("Residence");
}
}
public static void ShowEscapeMenu()
{
if (GameManager.Instance.addectiveSceneLoaded != "EscapeMenu")
{
GameManager.Instance.LoadAddectiveScene("EscapeMenu");
}
mainmenuContentIndex = 0;
}
public static void ShowFishpedia()
{
MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType<MainGameScene>();
if ((bool)mainGameScene)
{
if (mainGameScene.currentContent != MainGameScene.Content.Fishpedia)
{
mainGameScene.ShowContent(MainGameScene.Content.Fishpedia);
}
}
else if (GameManager.Instance.addectiveSceneLoaded != "FishPedia")
{
GameManager.Instance.LoadAddectiveScene("FishPedia");
}
mainmenuContentIndex = 5;
}
public void ShowTokens()
{
bool flag = !tokensUI.activeSelf;
if (flag)
{
tokensUI.SetActive(flag);
tokenUIAnimator.SetTrigger("show");
}
else
{
tokenUIAnimator.SetTrigger("hide");
}
}
private void SetSandboxProperties()
{
if (!Singleton<SaveDataManager>.Instance.IsCurrentlySandbox())
{
_playerExpBoost.SetActive(value: true);
_playerCashBoost.SetActive(value: true);
_wonTournaments.SetActive(value: true);
_rankingsButton.SetActive(value: true);
_nextLevel.SetActive(value: true);
if (ShowContentArray[4] != new ShowContent(ShowRankings))
{
ShowContentArray.Insert(4, ShowRankings);
}
return;
}
playerExpText.text = "∞";
playerCashText.text = "∞";
playerLevelText.text = "99";
_nextLevelXPText.text = "FISH WITHOUT LIMITS";
_playerExpBoost.SetActive(value: false);
_playerCashBoost.SetActive(value: false);
_wonTournaments.SetActive(value: false);
_rankingsButton.SetActive(value: false);
_nextLevel.SetActive(value: false);
LevelProgress.fillAmount = 1f;
if (ShowContentArray[4] == new ShowContent(ShowRankings))
{
ShowContentArray.RemoveAt(4);
}
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerSlotsEquip == null)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerSlotsEquip = new List<GameManager.PlayerData.CSlots>(GameManager.Instance._playerData.PlayerSlotsEquipTemplate);
}
}
}