mergemilitary/Assets/MMOModule/Scripts/MMODataSyncManager.cs

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;
}
}
}