247 lines
7.2 KiB
C#
247 lines
7.2 KiB
C#
|
using Hanatric.Unity.MonoComponent;
|
|||
|
using System;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Text.RegularExpressions;
|
|||
|
using TMPro;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.SceneManagement;
|
|||
|
using UnityEngine.UI;
|
|||
|
using UnityEngine.Windows;
|
|||
|
|
|||
|
public class TitlePage : MonoBehaviour
|
|||
|
{
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_OneToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_TwoToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_ThreeToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_FourToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_FiveToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_SixToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_SevenToggle;
|
|||
|
[SerializeField]
|
|||
|
private Toggle m_EightToggle;
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private List<GameObject> m_PageList = new List<GameObject>();
|
|||
|
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private TextMeshProUGUI m_TimeValueText;
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private TextMeshProUGUI m_TempValueText;
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private Image m_WeatherImage;
|
|||
|
[SerializeField]
|
|||
|
public Sprite[] m_WeatherIcons;
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private GameObject m_LoadingPage;
|
|||
|
[SerializeField]
|
|||
|
private Image m_LoadingProcess;
|
|||
|
[SerializeField]
|
|||
|
private Text m_LoadingProcessText;
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private string m_LastSceneName;
|
|||
|
|
|||
|
[SerializeField]
|
|||
|
private List<string> m_SceneName;
|
|||
|
// Start is called before the first frame update
|
|||
|
void Start()
|
|||
|
{
|
|||
|
m_OneToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(0);
|
|||
|
}
|
|||
|
});
|
|||
|
m_TwoToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(1);
|
|||
|
}
|
|||
|
});
|
|||
|
m_ThreeToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(2);
|
|||
|
}
|
|||
|
});
|
|||
|
m_FourToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(3);
|
|||
|
}
|
|||
|
});
|
|||
|
m_FiveToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(4);
|
|||
|
}
|
|||
|
});
|
|||
|
m_SixToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(5);
|
|||
|
}
|
|||
|
});
|
|||
|
m_SevenToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(6);
|
|||
|
}
|
|||
|
});
|
|||
|
m_EightToggle.onValueChanged.AddListener((b) =>
|
|||
|
{
|
|||
|
if (b)
|
|||
|
{
|
|||
|
ActivePage(7);
|
|||
|
}
|
|||
|
});
|
|||
|
m_OneToggle.isOn = false;
|
|||
|
m_OneToggle.isOn = true;
|
|||
|
StopCoroutine("GetWeatherInfo");
|
|||
|
StartCoroutine("GetWeatherInfo");
|
|||
|
//LoadSceneAsync(m_SceneName[0]);
|
|||
|
//ActivePage(0);
|
|||
|
}
|
|||
|
|
|||
|
private IEnumerator GetWeatherInfo()
|
|||
|
{
|
|||
|
while(true)
|
|||
|
{
|
|||
|
HttpManager.Instance.Down((w) =>
|
|||
|
{
|
|||
|
MatchCollection result = System.Text.RegularExpressions.Regex.Matches(w, @"<span><b>.+</b>.+</span>");
|
|||
|
string str = "";
|
|||
|
string weather = "";
|
|||
|
string tem = "";
|
|||
|
foreach (Match match in result)
|
|||
|
{
|
|||
|
str = match.Value;
|
|||
|
}
|
|||
|
string pattern = "[\u4e00-\u9fa5]+";
|
|||
|
MatchCollection matches = Regex.Matches(str, pattern);
|
|||
|
foreach (Match match in matches)
|
|||
|
{
|
|||
|
weather = match.Value;
|
|||
|
}
|
|||
|
tem = str.Replace("<span>","");
|
|||
|
tem = tem.Replace("</span>", "");
|
|||
|
tem = tem.Replace(weather, "");
|
|||
|
//<span><b>С<><D0A1></b>13 ~ 24<32><34></span>
|
|||
|
Debug.Log(weather);
|
|||
|
if (weather.Contains("<22><>"))
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[0];
|
|||
|
}
|
|||
|
else if (weather.Contains("ѩ"))
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[3];
|
|||
|
}
|
|||
|
else if (weather.Contains("<22><>"))
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[2];
|
|||
|
}
|
|||
|
else if (weather.Contains("<22><><EFBFBD><EFBFBD>") || weather.Contains("<22><>") || weather.Contains("<22><>"))
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[1];
|
|||
|
}
|
|||
|
else if (weather.Contains("<22><>"))
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[4];
|
|||
|
}
|
|||
|
else if (weather.Contains("ɳ<><C9B3>"))
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[5];
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_WeatherImage.sprite = m_WeatherIcons[0];
|
|||
|
}
|
|||
|
m_TempValueText.text = tem;
|
|||
|
});
|
|||
|
yield return new WaitForSeconds(12800);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>岢<EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="index"></param>
|
|||
|
private void ActivePage(int index)
|
|||
|
{
|
|||
|
LifeCycleManager.Instance.funMoudle = (FunMoudle)index;
|
|||
|
for (int i = 0; i < m_PageList.Count; i++)
|
|||
|
{
|
|||
|
if (i == index)
|
|||
|
{
|
|||
|
m_PageList[i].SetActive(true);
|
|||
|
LoadSceneAsync(m_SceneName[i]);
|
|||
|
continue;
|
|||
|
}
|
|||
|
m_PageList[i].SetActive(false);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void LoadSceneAsync(string sceneName)
|
|||
|
{
|
|||
|
SceneManager.LoadScene(sceneName);
|
|||
|
//StartCoroutine(LoadSceneAsyncCoroutine(sceneName));
|
|||
|
}
|
|||
|
|
|||
|
private IEnumerator LoadSceneAsyncCoroutine(string sceneName)
|
|||
|
{
|
|||
|
m_LoadingPage.gameObject.SetActive(true);
|
|||
|
if (!string.IsNullOrEmpty(m_LastSceneName))
|
|||
|
{
|
|||
|
AsyncOperation asyncUnLoad = SceneManager.UnloadSceneAsync(m_LastSceneName);
|
|||
|
m_LoadingProcess.fillAmount = 0;
|
|||
|
m_LoadingProcessText.text = "<22><><EFBFBD><EFBFBD>ж<EFBFBD>س<EFBFBD><D8B3><EFBFBD>0%...";
|
|||
|
while (!asyncUnLoad.isDone)
|
|||
|
{
|
|||
|
float progress = Mathf.Clamp01(asyncUnLoad.progress / 0.9f);
|
|||
|
//Debug.Log("Loading progress: " + progress * 100 + "%");
|
|||
|
m_LoadingProcess.fillAmount = progress;
|
|||
|
m_LoadingProcessText.text = "<22><><EFBFBD><EFBFBD>ж<EFBFBD>س<EFBFBD><D8B3><EFBFBD>" + progress * 100 + "%...";
|
|||
|
yield return null;
|
|||
|
}
|
|||
|
}
|
|||
|
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName,LoadSceneMode.Additive);
|
|||
|
m_LoadingProcess.fillAmount = 0;
|
|||
|
m_LoadingProcessText.text = "<22><><EFBFBD>ڼ<EFBFBD><DABC>س<EFBFBD><D8B3><EFBFBD>0%...";
|
|||
|
while (!asyncLoad.isDone)
|
|||
|
{
|
|||
|
float progress = Mathf.Clamp01(asyncLoad.progress / 0.9f);
|
|||
|
//Debug.Log("Loading progress: " + progress * 100 + "%");
|
|||
|
m_LoadingProcess.fillAmount = progress;
|
|||
|
m_LoadingProcessText.text = "<22><><EFBFBD>ڼ<EFBFBD><DABC>س<EFBFBD><D8B3><EFBFBD>" + progress * 100 + "%...";
|
|||
|
yield return null;
|
|||
|
}
|
|||
|
m_LastSceneName = sceneName;
|
|||
|
m_LoadingPage.gameObject.SetActive(false);
|
|||
|
}
|
|||
|
|
|||
|
// Update is called once per frame
|
|||
|
void Update()
|
|||
|
{
|
|||
|
m_TimeValueText.text = DateTime.Now.ToString("HH:mm:ss yyyy.M.d");
|
|||
|
}
|
|||
|
}
|