2019-10-26 05:02:57 +08:00
|
|
|
/******************************************/
|
|
|
|
|
/* */
|
|
|
|
|
/* Copyright (c) 2018 monitor1394 */
|
|
|
|
|
/* https://github.com/monitor1394 */
|
|
|
|
|
/* */
|
|
|
|
|
/******************************************/
|
|
|
|
|
|
2019-10-23 18:59:34 +08:00
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using System.Text.RegularExpressions;
|
2020-04-09 08:02:46 +08:00
|
|
|
using UnityEngine.Networking;
|
2019-10-23 18:59:34 +08:00
|
|
|
|
|
|
|
|
namespace XCharts
|
|
|
|
|
{
|
|
|
|
|
class XChartsVersion
|
|
|
|
|
{
|
|
|
|
|
public string version = "";
|
|
|
|
|
public int date = 0;
|
|
|
|
|
public int checkdate = 0;
|
|
|
|
|
public string desc = "";
|
|
|
|
|
public string homepage = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class XChartsMgr : MonoBehaviour
|
|
|
|
|
{
|
2020-04-11 22:44:50 +08:00
|
|
|
public const string version = "1.4.0";
|
|
|
|
|
public const int date = 20200411;
|
2019-10-23 18:59:34 +08:00
|
|
|
|
|
|
|
|
[SerializeField] private string m_NowVersion;
|
|
|
|
|
[SerializeField] private string m_NewVersion;
|
|
|
|
|
|
|
|
|
|
private static XChartsMgr m_XCharts;
|
|
|
|
|
|
|
|
|
|
public static XChartsMgr Instance
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (m_XCharts == null)
|
|
|
|
|
{
|
|
|
|
|
var go = GameObject.Find("_xcharts_");
|
|
|
|
|
if (go == null)
|
|
|
|
|
{
|
|
|
|
|
go = new GameObject();
|
|
|
|
|
go.name = "_xcharts_";
|
2019-10-26 05:02:57 +08:00
|
|
|
if (Application.isPlaying)
|
|
|
|
|
{
|
|
|
|
|
DontDestroyOnLoad(go);
|
|
|
|
|
}
|
2019-10-23 18:59:34 +08:00
|
|
|
m_XCharts = go.AddComponent<XChartsMgr>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_XCharts = go.GetComponent<XChartsMgr>();
|
|
|
|
|
if (m_XCharts == null)
|
|
|
|
|
{
|
|
|
|
|
m_XCharts = go.AddComponent<XChartsMgr>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
m_XCharts.m_NowVersion = version + " (" + date + ")";
|
|
|
|
|
}
|
|
|
|
|
return m_XCharts;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private XChartsMgr() { }
|
|
|
|
|
|
2019-11-04 13:09:06 +08:00
|
|
|
private void Awake()
|
|
|
|
|
{
|
|
|
|
|
SerieLabelPool.ClearAll();
|
|
|
|
|
}
|
2019-10-23 18:59:34 +08:00
|
|
|
|
|
|
|
|
public string changeLog { get; private set; }
|
|
|
|
|
public string newVersion { get { return m_NewVersion; } }
|
|
|
|
|
public string nowVersion { get { return m_NowVersion; } }
|
|
|
|
|
public string desc { get; private set; }
|
|
|
|
|
public string homepage { get; private set; }
|
|
|
|
|
public int newDate { get; private set; }
|
|
|
|
|
public int newCheckDate { get; private set; }
|
|
|
|
|
public bool isCheck { get; private set; }
|
2020-04-09 08:02:46 +08:00
|
|
|
public bool isNetworkError { get; private set; }
|
|
|
|
|
public string networkError { get; private set; }
|
2019-10-23 18:59:34 +08:00
|
|
|
|
|
|
|
|
public bool needUpdate
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return date < newCheckDate;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void CheckVersion()
|
|
|
|
|
{
|
|
|
|
|
isCheck = true;
|
2020-04-09 08:02:46 +08:00
|
|
|
isNetworkError = false;
|
|
|
|
|
networkError = "";
|
2019-10-23 18:59:34 +08:00
|
|
|
StartCoroutine(GetVersion());
|
|
|
|
|
if (date < newCheckDate)
|
|
|
|
|
{
|
|
|
|
|
StartCoroutine(GetChangeLog());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IEnumerator GetVersion()
|
|
|
|
|
{
|
|
|
|
|
var url = "https://raw.githubusercontent.com/monitor1394/unity-ugui-XCharts/master/Assets/XCharts/version.json";
|
2020-04-09 08:02:46 +08:00
|
|
|
var web = UnityWebRequest.Get(url);
|
2019-10-23 18:59:34 +08:00
|
|
|
yield return web;
|
2020-04-09 08:02:46 +08:00
|
|
|
if (web.isNetworkError)
|
|
|
|
|
{
|
|
|
|
|
isNetworkError = true;
|
|
|
|
|
networkError = web.error;
|
|
|
|
|
m_NewVersion = "-";
|
|
|
|
|
}
|
|
|
|
|
else if (web.responseCode == 200)
|
2019-10-23 18:59:34 +08:00
|
|
|
{
|
2020-04-09 08:02:46 +08:00
|
|
|
var cv = JsonUtility.FromJson<XChartsVersion>(web.downloadHandler.text);
|
2019-10-23 18:59:34 +08:00
|
|
|
m_NewVersion = cv.version + " (" + cv.date + ")";
|
|
|
|
|
newDate = cv.date;
|
|
|
|
|
newCheckDate = cv.checkdate;
|
|
|
|
|
desc = cv.desc;
|
|
|
|
|
homepage = cv.homepage;
|
|
|
|
|
web.Dispose();
|
|
|
|
|
isCheck = false;
|
|
|
|
|
}
|
2020-04-09 08:02:46 +08:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
isCheck = false;
|
|
|
|
|
isNetworkError = true;
|
|
|
|
|
if (web.responseCode > 0)
|
|
|
|
|
networkError = web.responseCode.ToString();
|
|
|
|
|
else if (!string.IsNullOrEmpty(web.error))
|
|
|
|
|
networkError = web.error;
|
|
|
|
|
else
|
|
|
|
|
networkError = "-";
|
|
|
|
|
m_NewVersion = "-";
|
|
|
|
|
}
|
2019-10-23 18:59:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IEnumerator GetChangeLog()
|
|
|
|
|
{
|
|
|
|
|
isCheck = true;
|
|
|
|
|
var url = "https://raw.githubusercontent.com/monitor1394/unity-ugui-XCharts/master/Assets/XCharts/CHANGELOG.md";
|
2020-04-09 08:02:46 +08:00
|
|
|
var web = new UnityWebRequest(url);
|
2019-10-23 18:59:34 +08:00
|
|
|
yield return web;
|
2020-04-09 08:02:46 +08:00
|
|
|
if (!web.isNetworkError)
|
|
|
|
|
{
|
2019-10-23 18:59:34 +08:00
|
|
|
Debug.LogError(web.error);
|
2020-04-09 08:02:46 +08:00
|
|
|
}
|
|
|
|
|
else if (web.responseCode == 200)
|
2019-10-23 18:59:34 +08:00
|
|
|
{
|
2020-04-09 08:02:46 +08:00
|
|
|
CheckLog(web.downloadHandler.text);
|
2019-10-23 18:59:34 +08:00
|
|
|
web.Dispose();
|
|
|
|
|
isCheck = false;
|
|
|
|
|
}
|
2020-04-09 08:02:46 +08:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
isCheck = false;
|
|
|
|
|
}
|
2019-10-23 18:59:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CheckLog(string text)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
var temp = text.Split('\n');
|
|
|
|
|
var regex = new Regex(".*(\\d{4}\\.\\d{2}\\.\\d{2}).*");
|
|
|
|
|
var checkDate = XChartsMgr.date;
|
|
|
|
|
foreach (var t in temp)
|
|
|
|
|
{
|
|
|
|
|
if (regex.IsMatch(t))
|
|
|
|
|
{
|
|
|
|
|
var mat = regex.Match(t);
|
|
|
|
|
var date = mat.Groups[1].ToString().Replace(".", "");
|
|
|
|
|
int logDate;
|
|
|
|
|
if (int.TryParse(date, out logDate))
|
|
|
|
|
{
|
|
|
|
|
if (logDate >= checkDate)
|
|
|
|
|
{
|
|
|
|
|
sb.Append(t).Append("\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sb.Append(t).Append("\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
changeLog = sb.ToString();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|