You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PlumberUltimateAds/Assets/Scripts/HomeScene.cs

390 lines
14 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
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();
}
}
}