/* 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 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; [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=new UnityEvent(); private List ReverseNumbers = new List{4, 6, 10, 12, 16, 18,22,24,28,30,34,36,40,42,46,48}; private void Start() { instance = this; 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; } 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(); } } }