/* 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; public Popup MainScreen; public TextMeshProUGUI profileName; public Image profilePic; public TextMeshProUGUI CashText; public LeaderboardUIScreen leaderboardUIScreen; private void Start() { instance = this; OnPlayButtonPressed = new UnityEvent(); CheckForDisplayName(); CheckForAvatar(); SetupSettingToggle(); leaderboardUIScreen.Init(); //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; //MainScreen.Open(); CashText.text = PlayerPrefs.GetInt("Cash").ToString(); } 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)]; profilePic.sprite = AvatarSelectedSprite; profileName.text = PlayerPrefs.GetString(GameConstants.DisplayNameKey); MainScreen.Open(); } else { if (!NameEnterPanel.isOpen) { MainScreen.Close(); NameEnterPanel.Open(); } } } private void CheckForDisplayName() { int hasEnteredName = PlayerPrefs.GetInt(GameConstants.NameEnteredCheckKey, 0); if (hasEnteredName > 0) { string name = PlayerPrefs.GetString(GameConstants.DisplayNameKey); PlayFabLeaderboards.DisplayName = name; MainScreen.Open(); } else { if (!NameEnterPanel.isOpen) { MainScreen.Close(); NameEnterPanel.Open(); } } } public void OnDisplayNameEntered() { //PlayFabManager.Instance.playFabLeaderboards.SetDisplayName(nameInputField.text.ToString()); PlayerPrefs.SetInt(GameConstants.NameEnteredCheckKey, 1); PlayerPrefs.SetString(GameConstants.DisplayNameKey, nameInputField.text.ToString()); NameEnterPanel.Close(); MainScreen.Open(); CheckForAvatar(); } 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(); SceneManager.LoadScene(2); //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(); } } }