/* http://www.cgsoso.com/forum-211-1.html CG搜搜 Unity3d 每日Unity3d插件免费更新 更有VIP资源! CGSOSO 主打游戏开发,影视设计等CG资源素材。 插件如若商用,请务必官网购买! daily assets update for try. U should buy the asset from home store if u use it in your project! */ using MS; using System.Collections.Generic; using DG.Tweening; using PlayFab; using PlayFab.ClientModels; using PlayFab.MultiplayerModels; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; public class HomeScene : MonoBehaviour { [Header("Menu")] public TMP_Text starRanklbl; public Text coinLbl; public Image starRankBar; public Sprite currentLevelImage; public GameObject groupList; [Header("Setting")] public Toggle soundToggle; public Toggle musicToggle; public Popup NameEnterPanel; public TMP_InputField nameInputField; [Header("Level Detail View")] [SerializeField] private Popup LevelDetailPopup; [SerializeField] private Text LD_TitleLbl; [SerializeField] private Text LD_LevelCompletdLbl; [SerializeField] private GameObject LD_AwardGoldImage; [SerializeField] private Image LD_BGImage; [SerializeField] private ScrollRect LD_scrollRect; [SerializeField] private Transform LD_parentContent; [SerializeField] private Button LD_prefabBtn; [Header("")] public CanvasGroup[] canvasGroups; public Popup[] popups; public static HomeScene instance; public UnityEvent OnPlayButtonPressed; private List ReverseNumbers = new List { 4, 6, 10, 12, 16, 18, 22, 24, 28, 30, 34, 36, 40, 42, 46, 48 }; public Button EnteredNameButton; public List AvatarSprites; public Sprite AvatarSelectedSprite; private void Start() { instance = this; OnPlayButtonPressed = new UnityEvent(); CheckForDisplayName(); CheckForAvatar(); SetupSettingToggle(); if (GameManager.openLevelSelection) { GameManager.openLevelSelection = false; // List list = new List(groupList.GetComponentsInChildren()); // if (GameManager.currentLevelGroup != null && list.Exists((LevelGroupButton obj) => obj.levelGroup.Equals(GameManager.currentLevelGroup))) // { // ShowDetailLevel(list.Find((LevelGroupButton obj) => obj.levelGroup.Equals(GameManager.currentLevelGroup))); // } } Music.instance.Play(Music.Type.MainMusic); Application.targetFrameRate = 60; EnteredNameButton.interactable = false; } private void CheckForAvatar() { int hasSelectedAvatar = PlayerPrefs.GetInt(GameConstants.AvatarSelectedCheckKey, 0); if (hasSelectedAvatar > 0) { //string name = PlayerPrefs.GetString(GameConstants.DisplayNameKey); //PlayFabLeaderboards.DisplayName = name; AvatarSelectedSprite = AvatarSprites[PlayerPrefs.GetInt(GameConstants.AvatarSelectedIndex)]; } else { if (!NameEnterPanel.isOpen) NameEnterPanel.Open(); } } private void CheckForDisplayName() { int hasEnteredName = PlayerPrefs.GetInt(GameConstants.NameEnteredCheckKey, 0); if (hasEnteredName > 0) { string name = PlayerPrefs.GetString(GameConstants.DisplayNameKey); PlayFabLeaderboards.DisplayName = name; } else { if (!NameEnterPanel.isOpen) NameEnterPanel.Open(); } } public void OnDisplayNameEntered() { PlayFabManager.Instance.playFabLeaderboards.SetDisplayName(nameInputField.text); PlayerPrefs.SetInt(GameConstants.NameEnteredCheckKey, 1); NameEnterPanel.Close(); } public void OnAvatarSelected(int AvatarID) { //PlayFabManager.Instance.playFabLeaderboards.SetDisplayName(nameInputField.text); EnteredNameButton.interactable = true; PlayerPrefs.SetInt(GameConstants.AvatarSelectedCheckKey, 1); PlayerPrefs.SetInt(GameConstants.AvatarSelectedIndex, AvatarID); AvatarSelectedSprite = AvatarSprites[AvatarID]; SetAvatarID(AvatarID); //NameEnterPanel.Close(); } public void SetAvatarID(int avatarID) { var request = new UpdateUserDataRequest { Data = new Dictionary { { "AvatarID", avatarID.ToString() } // Convert int to string for storage }, Permission = UserDataPermission.Public }; PlayFabClientAPI.UpdateUserData(request, OnDataUpdateSuccess, OnDataUpdateFailure); } private void OnDataUpdateSuccess(UpdateUserDataResult result) { Debug.Log("Avatar ID updated successfully."); } private void OnDataUpdateFailure(PlayFabError error) { Debug.LogError("Failed to update Avatar ID: " + error.GenerateErrorReport()); } private void SetupSettingToggle() { soundToggle.isOn = Sound.instance.IsEnabled(); musicToggle.isOn = Music.instance.IsEnabled(); soundToggle.onValueChanged.AddListener(delegate (bool arg0) { Sound.instance.SetEnabled(arg0); PlayButton(); }); musicToggle.onValueChanged.AddListener(delegate (bool arg0) { Music.instance.SetEnabled(arg0, updateMusic: true); PlayButton(); }); UpdateUI(); } public void UpdateUI() { coinLbl.text = GameManager.Coin + string.Empty; starRanklbl.text = GameManager.StarLevel + string.Empty; starRankBar.fillAmount = GameManager.StarLevelProgress; } public void ShowDetailLevel(LevelGroupButton lb) { int completedLevel = 0; if (!GamePlayManager.isTimerLevel) { completedLevel = lb.levelGroup.CompletedLevel; } else { completedLevel = lb.levelGroup.CompletedLevel_Timer; } LD_TitleLbl.text = lb.levelGroup.LevelGroupName.ToUpper(); LD_LevelCompletdLbl.text = completedLevel + " / " + lb.levelGroup.TotalLevel; // LD_AwardGoldImage.SetActive(completedLevel >= lb.levelGroup.TotalLevel); LD_BGImage.sprite = lb.levelGroup.LevelDetailBG; // LD_AwardGoldImage.GetComponentInParent().sprite = lb.AwardGoldImage.GetComponentInParent().sprite; // LD_LevelCompletdLbl.GetComponentInParent().sprite = lb.LevelCompletdLbl.GetComponentInParent().sprite; for (int num = LD_parentContent.childCount - 1; num >= 0; num--) { UnityEngine.Object.DestroyImmediate(LD_parentContent.GetChild(0).gameObject); } for (int i = 0; i < lb.levelGroup.TotalLevel; i++) { if (!ReverseNumbers.Contains(i + 1)) { Button button = UnityEngine.Object.Instantiate(LD_prefabBtn, LD_parentContent); button.name = lb.levelGroup.LevelGroupName + "_" + (i + 1); button.GetComponentInChildren().text = i + 1 + string.Empty; //if (i <= completedLevel) if (int.Parse(button.GetComponentInChildren().text) <= completedLevel + 1) { //if (i == completedLevel) if (button.GetComponentInChildren().text == (completedLevel + 1).ToString()) { button.GetComponent().sprite = currentLevelImage; button.GetComponentInChildren(true).gameObject.SetActive(true); } button.interactable = true; button.GetComponent<_2dxFX_GrayScale>().enabled = false; button.GetComponent().color = Color.white; button.GetComponentInChildren().color = lb.levelGroup.bgColor; int lNo = i + 1; button.onClick.AddListener(delegate { GameManager.currentLevelGroup = lb.levelGroup; GameManager.CurrentLevelNo = lNo; SceneManager.LoadScene("GameScene"); PlayButton(); }); } else { button.interactable = false; button.GetComponent<_2dxFX_GrayScale>().enabled = true; button.GetComponent().color = lb.levelGroup.bgColor; button.GetComponentInChildren().color = Color.white; } CustomUI CUI = button.gameObject.GetComponent(); CUI.SetUi(i + 1, completedLevel); } else { int index = ReverseNumbers.IndexOf(i + 1); if (index % 2 == 0) { //index is 0,2,4,6,8 etc Button button = UnityEngine.Object.Instantiate(LD_prefabBtn, LD_parentContent); //button.name = lb.levelGroup.LevelGroupName + "_" + (i + 1); button.name = lb.levelGroup.LevelGroupName + "_" + (ReverseNumbers[index + 1]); button.GetComponentInChildren().text = ReverseNumbers[index + 1] + string.Empty; //if (i <= completedLevel) //if (button.GetComponentInChildren().text == (completedLevel + 1).ToString()) if (int.Parse(button.GetComponentInChildren().text) <= completedLevel + 1) { if (i == completedLevel) { button.GetComponent().sprite = currentLevelImage; button.GetComponentInChildren(true).gameObject.SetActive(true); } button.interactable = true; button.GetComponent<_2dxFX_GrayScale>().enabled = false; button.GetComponent().color = Color.white; button.GetComponentInChildren().color = lb.levelGroup.bgColor; int lNo = ReverseNumbers[index + 1]; button.onClick.AddListener(delegate { GameManager.currentLevelGroup = lb.levelGroup; GameManager.CurrentLevelNo = lNo; SceneManager.LoadScene("GameScene"); PlayButton(); }); } else { button.interactable = false; button.GetComponent<_2dxFX_GrayScale>().enabled = true; button.GetComponent().color = lb.levelGroup.bgColor; button.GetComponentInChildren().color = Color.white; } CustomUI CUI = button.gameObject.GetComponent(); CUI.SetUi(ReverseNumbers[index + 1], completedLevel); } else { Button button = UnityEngine.Object.Instantiate(LD_prefabBtn, LD_parentContent); //button.name = lb.levelGroup.LevelGroupName + "_" + (i + 1); button.name = lb.levelGroup.LevelGroupName + "_" + (ReverseNumbers[index - 1]); button.GetComponentInChildren().text = ReverseNumbers[index - 1] + string.Empty; //if (i <= completedLevel) if (int.Parse(button.GetComponentInChildren().text) <= completedLevel + 1) { //if (i == completedLevel) if (button.GetComponentInChildren().text == (completedLevel + 1).ToString()) { button.GetComponent().sprite = currentLevelImage; button.GetComponentInChildren(true).gameObject.SetActive(true); } button.interactable = true; button.GetComponent<_2dxFX_GrayScale>().enabled = false; button.GetComponent().color = Color.white; button.GetComponentInChildren().color = lb.levelGroup.bgColor; int lNo = ReverseNumbers[index - 1]; button.onClick.AddListener(delegate { GameManager.currentLevelGroup = lb.levelGroup; GameManager.CurrentLevelNo = lNo; SceneManager.LoadScene("GameScene"); PlayButton(); }); } else { button.interactable = false; button.GetComponent<_2dxFX_GrayScale>().enabled = true; button.GetComponent().color = lb.levelGroup.bgColor; button.GetComponentInChildren().color = Color.white; } CustomUI CUI = button.gameObject.GetComponent(); CUI.SetUi(ReverseNumbers[index - 1], completedLevel); } } } LD_scrollRect.verticalNormalizedPosition = 1f; LevelDetailPopup.Open(); } public void OnRateUs() { Timer.Schedule(this, 0.4f, OnRate); } public void OnRate() { Sound.instance.PlayButton(); CUtils.OpenStore(); } public void OnSendFeedback() { Sound.instance.PlayButton(); Application.OpenURL("mailto:" + GameConfig.instance.feedbackEmail); } public void OnFB() { Sound.instance.PlayButton(); CUtils.LikeFacebookPage(GameConfig.instance.facebookPageID); } public void PlayButton() { OnPlayButtonPressed.Invoke(); Sound.instance.PlayButton(); } public void PlayBackButton() { Sound.instance.PlayButton(Sound.Button.Back); } private void Update() { if (!Input.GetKeyDown(KeyCode.Escape)) { return; } bool flag = false; CanvasGroup[] array = canvasGroups; foreach (CanvasGroup canvasGroup in array) { if (canvasGroup.alpha != 0f) { flag = true; break; } } Popup[] array2 = popups; foreach (Popup popup in array2) { if (popup.isOpen) { flag = true; break; } } if (!flag) { Application.Quit(); } } }