72 lines
2.8 KiB
72 lines
2.8 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using AX.NetworkSystem; |
|
using AX.Network.Protocols; |
|
using AX.Serialization; |
|
using System; |
|
using System.IO; |
|
using UnityEngine.SceneManagement; |
|
|
|
public class DISASTER_METADATA_SAVE_REPLY : NetworkMessageBehaviour |
|
{ |
|
protected override void Execute(BinaryMessage message) |
|
{ |
|
var info = message.Body.Deserialize<DisasterLibrary>(); |
|
|
|
//保存灾情数据文件到本地 |
|
SaveDisasterLibrary(info.Id); |
|
|
|
//设置上传路径:上传时在此路径下的 相对目录("DisasterLibrary/" + info.Id.ToString() + ".disaster") 读取文件 |
|
FileTransfer.SetUploadPath(Application.streamingAssetsPath); |
|
|
|
//上传灾情文件到服务器:服务器会把文件写在服务器某个路径下的 相对目录(DisasterLibrary/" + info.Id.ToString() + ".disaster) 下 |
|
NetworkManager.Default.UploadFileAsync("DisasterLibrary/" + info.Id.ToString() + ".disaster", OnProgressChanged, OnCompleted); |
|
} |
|
|
|
public void SaveDisasterLibrary(long id) |
|
{ |
|
var disaster = DisasterLibraryFile.Instance.CompressedTypelessSerialize(); |
|
|
|
var directory = Application.streamingAssetsPath + "/" + "DisasterLibrary"; |
|
if (!Directory.Exists(directory)) |
|
Directory.CreateDirectory(directory); |
|
|
|
var fileName = id + ".disaster"; |
|
var filePath = directory + "/" + fileName; |
|
|
|
using (var filestream = new FileStream(filePath, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.ReadWrite)) |
|
{ |
|
filestream.Write(disaster, 0, disaster.Length); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 上传文件成功 |
|
/// </summary> |
|
/// <param name="fullname">文件的路径</param> |
|
private void OnCompleted(string fullname) |
|
{ |
|
gameObject.SetActive(false); |
|
//清空实体管理器,以免返回到DisasterLibraryManage场景直接选中灾情加载进主场景报实体管理器已有该实体的错误 |
|
EntitiesManager.Instance.Reset(); |
|
//保存后清空灾情库灾情列表,以免返回到DisasterLibraryManage场景直接选中灾情通过编辑加载进主场景, |
|
//然后不操作什么再保存,灾情列表数据重复;然后再查看或编辑进入主场景加载灾情时,会报对象Id重复 |
|
DisasterLibraryFile.Instance.Reset(); |
|
|
|
GameSettings.disasterSetting.isCteateDisaster = false; |
|
|
|
//灾情文件上传成功 |
|
SceneManager.LoadScene("DisasterLibraryManage"); |
|
} |
|
|
|
/// <summary> |
|
/// 上传文件进度 |
|
/// </summary> |
|
/// <param name="fullname">文件路径</param> |
|
/// <param name="progress">上传进度</param> |
|
private void OnProgressChanged(string fullname, float progress) |
|
{ |
|
//灾情数据文件很小,暂不处理进度显示 |
|
} |
|
}
|
|
|