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