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