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 ShowContentArray = new List { 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.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() != 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() && !UnityEngine.Object.FindObjectOfType() && (!UnityEngine.Object.FindObjectOfType() || !UnityEngine.Object.FindObjectOfType().searchField.isFocused) && (!UnityEngine.Object.FindObjectOfType() || !UnityEngine.Object.FindObjectOfType().searchText.isFocused) && (!UnityEngine.Object.FindObjectOfType() || !UnityEngine.Object.FindObjectOfType().searchInputField.isFocused) && !MultiplayerAddectiveScene.IsFocused) { if (directionRight) { incrementCurrentContent(); } else { decrementCurrentContent(); } ShowContentArray[mainmenuContentIndex](); } } private void Update() { if (GameManager.Instance._playerData.currentPlayerProfileIndex == -1) { return; } if (Singleton.Instance.GetCurrentPlayerData().GameMode != GameManager.PlayerData.CPlayer.GameMode.Realistic) { if (Singleton.Instance.GetCurrentPlayerData().PlayerSkillsPoint > 0) { if (!Singleton.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.Instance.GetCurrentPlayerData().PlayerQuest.Count; i++) { if (Singleton.Instance.GetCurrentPlayerData().PlayerQuest[i].curentObjectiveProgress >= Singleton.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.Instance.GetCurrentPlayerData().PlayerName; if (!Singleton.Instance.IsCurrentlySandbox() && currentPlayerData.currentPlayerProfileIndex != -1) { if (Singleton.Instance.GetCurrentPlayerData().TimeBoostExp > 0f) { Singleton.Instance.GetCurrentPlayerData().TimeBoostExp -= Time.unscaledDeltaTime; ExpBoostTimeText.text = GameManager.Instance._playerData.GetExpBoostTime(); } else { ExpBoostTimeText.text = "00:00"; } if (Singleton.Instance.GetCurrentPlayerData().TimeBoostCash > 0f) { Singleton.Instance.GetCurrentPlayerData().TimeBoostCash -= Time.unscaledDeltaTime; CashBoostTimeText.text = GameManager.Instance._playerData.GetCashBoostTime(); } else { CashBoostTimeText.text = "00:00"; } playerLevelText.text = Singleton.Instance.GetCurrentPlayerData().PlayerLevel.ToString(); string text = Singleton.Instance.GetCurrentPlayerData().PlayerCash.ToString("F0"); playerCashText.text = text; playerRewardsText.text = Singleton.Instance.GetCurrentPlayerData().PlayerTournamentsWon.ToString(); float num = (float)Math.Round(Singleton.Instance.GetCurrentPlayerData().PlayerExp, 0); float num2 = (float)Math.Round(Singleton.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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); 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(); if ((bool)mainGameScene) { if (mainGameScene.currentContent != MainGameScene.Content.Skills) { mainGameScene.ShowContent(MainGameScene.Content.Skills); if (Singleton.Instance.GetCurrentPlayerData().ShowSkillsAnimation) { Singleton.Instance.GetCurrentPlayerData().ShowSkillsAnimation = false; } } } else { if (Singleton.Instance.GetCurrentPlayerData().ShowSkillsAnimation) { Singleton.Instance.GetCurrentPlayerData().ShowSkillsAnimation = false; } if (GameManager.Instance.addectiveSceneLoaded != "SkillTree") { GameManager.Instance.LoadAddectiveScene("SkillTree"); } } mainmenuContentIndex = 1; } public static void ShowQuests() { MainGameScene mainGameScene = UnityEngine.Object.FindObjectOfType(); 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(); 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(); 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(); 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.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.Instance.GetCurrentPlayerData().PlayerSlotsEquip == null) { Singleton.Instance.GetCurrentPlayerData().PlayerSlotsEquip = new List(GameManager.Instance._playerData.PlayerSlotsEquipTemplate); } } }