|
|
|
|
/*
|
|
|
|
|
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.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<int> ReverseNumbers = new List<int> { 4, 6, 10, 12, 16, 18, 22, 24, 28, 30, 34, 36, 40, 42, 46, 48 };
|
|
|
|
|
public Button EnteredNameButton;
|
|
|
|
|
public List<Sprite> AvatarSprites;
|
|
|
|
|
public Sprite AvatarSelectedSprite;
|
|
|
|
|
private void Start()
|
|
|
|
|
{
|
|
|
|
|
instance = this;
|
|
|
|
|
OnPlayButtonPressed = new UnityEvent();
|
|
|
|
|
CheckForDisplayName();
|
|
|
|
|
CheckForAvatar();
|
|
|
|
|
SetupSettingToggle();
|
|
|
|
|
if (GameManager.openLevelSelection)
|
|
|
|
|
{
|
|
|
|
|
GameManager.openLevelSelection = false;
|
|
|
|
|
List<LevelGroupButton> list = new List<LevelGroupButton>(groupList.GetComponentsInChildren<LevelGroupButton>());
|
|
|
|
|
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 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];
|
|
|
|
|
//NameEnterPanel.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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<Image>().sprite = lb.AwardGoldImage.GetComponentInParent<Image>().sprite;
|
|
|
|
|
// LD_LevelCompletdLbl.GetComponentInParent<Image>().sprite = lb.LevelCompletdLbl.GetComponentInParent<Image>().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>().text = i + 1 + string.Empty;
|
|
|
|
|
//if (i <= completedLevel)
|
|
|
|
|
if (int.Parse(button.GetComponentInChildren<Text>().text) <= completedLevel + 1)
|
|
|
|
|
{
|
|
|
|
|
//if (i == completedLevel)
|
|
|
|
|
if (button.GetComponentInChildren<Text>().text == (completedLevel + 1).ToString())
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
button.GetComponent<Image>().sprite = currentLevelImage;
|
|
|
|
|
button.GetComponentInChildren<ParticleSystem>(true).gameObject.SetActive(true);
|
|
|
|
|
}
|
|
|
|
|
button.interactable = true;
|
|
|
|
|
button.GetComponent<_2dxFX_GrayScale>().enabled = false;
|
|
|
|
|
button.GetComponent<Image>().color = Color.white;
|
|
|
|
|
button.GetComponentInChildren<Text>().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<Image>().color = lb.levelGroup.bgColor;
|
|
|
|
|
button.GetComponentInChildren<Text>().color = Color.white;
|
|
|
|
|
}
|
|
|
|
|
CustomUI CUI = button.gameObject.GetComponent<CustomUI>();
|
|
|
|
|
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>().text = ReverseNumbers[index + 1] + string.Empty;
|
|
|
|
|
//if (i <= completedLevel)
|
|
|
|
|
//if (button.GetComponentInChildren<Text>().text == (completedLevel + 1).ToString())
|
|
|
|
|
if (int.Parse(button.GetComponentInChildren<Text>().text) <= completedLevel + 1)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
if (i == completedLevel)
|
|
|
|
|
{
|
|
|
|
|
button.GetComponent<Image>().sprite = currentLevelImage;
|
|
|
|
|
button.GetComponentInChildren<ParticleSystem>(true).gameObject.SetActive(true);
|
|
|
|
|
}
|
|
|
|
|
button.interactable = true;
|
|
|
|
|
button.GetComponent<_2dxFX_GrayScale>().enabled = false;
|
|
|
|
|
button.GetComponent<Image>().color = Color.white;
|
|
|
|
|
button.GetComponentInChildren<Text>().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<Image>().color = lb.levelGroup.bgColor;
|
|
|
|
|
button.GetComponentInChildren<Text>().color = Color.white;
|
|
|
|
|
}
|
|
|
|
|
CustomUI CUI = button.gameObject.GetComponent<CustomUI>();
|
|
|
|
|
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>().text = ReverseNumbers[index - 1] + string.Empty;
|
|
|
|
|
//if (i <= completedLevel)
|
|
|
|
|
if (int.Parse(button.GetComponentInChildren<Text>().text) <= completedLevel + 1)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
//if (i == completedLevel)
|
|
|
|
|
if (button.GetComponentInChildren<Text>().text == (completedLevel + 1).ToString())
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
button.GetComponent<Image>().sprite = currentLevelImage;
|
|
|
|
|
button.GetComponentInChildren<ParticleSystem>(true).gameObject.SetActive(true);
|
|
|
|
|
}
|
|
|
|
|
button.interactable = true;
|
|
|
|
|
button.GetComponent<_2dxFX_GrayScale>().enabled = false;
|
|
|
|
|
button.GetComponent<Image>().color = Color.white;
|
|
|
|
|
button.GetComponentInChildren<Text>().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<Image>().color = lb.levelGroup.bgColor;
|
|
|
|
|
button.GetComponentInChildren<Text>().color = Color.white;
|
|
|
|
|
}
|
|
|
|
|
CustomUI CUI = button.gameObject.GetComponent<CustomUI>();
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|