using System; using System.Text; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace MMO { public class MMODataSyncManager : MMOSingleton { 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(); 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(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; } } }