96 lines
2.5 KiB
C#
96 lines
2.5 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace MMO
|
|
{
|
|
public class MMODataSyncManager : MMOSingleton<MMODataSyncManager>
|
|
{
|
|
public Action DelDataOverride;
|
|
|
|
private bool mUploadEnabled = false;
|
|
private float mUploadTimer = 0;
|
|
|
|
private void Update()
|
|
{
|
|
if (MMOConstConfig.Instance.IsEnabled && mUploadEnabled)
|
|
{
|
|
mUploadTimer -= Time.unscaledDeltaTime;
|
|
if (mUploadTimer < 0)
|
|
{
|
|
UploadUserData();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnApplicationFocus(bool focus)
|
|
{
|
|
if (MMOConstConfig.Instance.IsEnabled)
|
|
{
|
|
#if !UNITY_EDITOR
|
|
UploadUserData();
|
|
#endif
|
|
}
|
|
}
|
|
|
|
protected override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
mUploadTimer = MMOConstConfig.Instance.UploadInterval;
|
|
}
|
|
|
|
public void SyncUserData()
|
|
{
|
|
MMORespondLogin tLoginData = MMOAPIRequestManager.Instance.GetData<MMORespondLogin>();
|
|
if (tLoginData != null)
|
|
{
|
|
if (tLoginData.DataVersion > MMOUserData.Instance.DataVersion)
|
|
{
|
|
string tData = MMOEncrypt.MD5Decrypt(tLoginData.Data);
|
|
#if UNITY_EDITOR
|
|
Debug.Log("Receive Data :" + tData);
|
|
#endif
|
|
ES3.SaveRaw(StringToBytes(tData));
|
|
MMOUserData.Load();
|
|
|
|
DelDataOverride?.Invoke();
|
|
}
|
|
|
|
mUploadEnabled = true;
|
|
}
|
|
}
|
|
|
|
private void UploadUserData()
|
|
{
|
|
if (!mUploadEnabled)
|
|
return;
|
|
|
|
string tData = BytesToString(ES3.LoadRawBytes());
|
|
#if UNITY_EDITOR
|
|
Debug.Log("Send Data :" + tData);
|
|
#endif
|
|
MMOAPIRequestManager.Instance.SendRequest<MMORequestSetUserData, string>(new MMORequestSetUserData(MMOEncrypt.MD5Encrypt(tData), MMOUserData.Instance.DataVersion));
|
|
|
|
mUploadTimer = MMOConstConfig.Instance.UploadInterval;
|
|
}
|
|
|
|
private string BytesToString(byte[] pBytes)
|
|
{
|
|
Encoding tCoding = Encoding.UTF8;
|
|
string tString = tCoding.GetString(pBytes);
|
|
|
|
return tString;
|
|
}
|
|
|
|
private byte[] StringToBytes(string pStr)
|
|
{
|
|
Encoding tCoding = Encoding.UTF8;
|
|
byte[] tBytes = tCoding.GetBytes(pStr);
|
|
|
|
return tBytes;
|
|
}
|
|
}
|
|
} |