using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; using ET; using FairyGUI; using GFGGame; using ICSharpCode.SharpZipLib.GZip; using UnityEngine; using UnityEngine.Networking; namespace GFGGame { public static class PoemPhotoSProxy { //获取玩家所有相册数据协议 public static async ETTask ReqAllPhotoInfos() { S2C_GetAllAlbumInfo response = null; response = (S2C_GetAllAlbumInfo)await MessageHelper.SendToServer(new C2S_GetAllAlbumInfo()); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { for (int i = 0; i < response.PictureInfosA.Count; i++) { PoemPhotoData photoData = new PoemPhotoData(); photoData.PictureId = response.PictureInfosA[i].PictureId; photoData.CreationTime = response.PictureInfosA[i].CreationTime; photoData.ToppingStatus = response.PictureInfosA[i].ToppingStatus; photoData.LockingStatus = response.PictureInfosA[i].LockingStatus; photoData.PictureTempUrl = response.PictureInfosA[i].PictureTempUrl; Timers.inst.StartCoroutine(DownloadFile(photoData)); PoemPhotoDataManager.Instance.Add(photoData, (int)PictureSourceType.PersonalAlbum); } for (int i = 0; i < response.PictureInfosB.Count; i++) { PoemPhotoData photoData = new PoemPhotoData(); photoData.PictureId = response.PictureInfosB[i].PictureId; photoData.CreationTime = response.PictureInfosB[i].CreationTime; photoData.ToppingStatus = response.PictureInfosB[i].ToppingStatus; photoData.LockingStatus = response.PictureInfosB[i].LockingStatus; photoData.TravelLocationId = response.PictureInfosB[i].TravelLocationId; photoData.QSuitId = response.PictureInfosB[i].TravelLocationId; photoData.ResourceIndex = response.PictureInfosB[i].TravelSuitResourceIndex; photoData.PositionIndex = response.PictureInfosB[i].PositionIndex; Timers.inst.StartCoroutine(DownloadFile(photoData)); PoemPhotoDataManager.Instance.Add(photoData, (int)PictureSourceType.WanShuiQianShan); } return true; } } return false; } //获取图片的临时上传地址协议 public static async ETTask ReqTempPictureUrl(int pictureType) { S2C_GetTempPictureUrl response = null; response = (S2C_GetTempPictureUrl)await MessageHelper.SendToServer(new C2S_GetTempPictureUrl() { PictureType = pictureType }); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { return new string[] { response.TempPictureUrl, response.PictureObjectPath }; } } return null; } //将图片上传到华为云 public static async ETTask PushToHWCloud(string signUrl, byte[] buffer) { HttpContent content = new ByteArrayContent(buffer); HttpClient httpClient = new HttpClient(new HttpClientHandler() { UseCookies = false }); HttpResponseMessage response = await httpClient.PutAsync(signUrl, content); response.EnsureSuccessStatusCode(); await response.Content.ReadAsStreamAsync(); if (response.StatusCode != HttpStatusCode.OK) { return false; } else { return true; } } //保存成功后,添加图片至相册 public static async ETTask ReqAddTophoto(string pictureObjectPath, int sourceType) { S2C_AddPicture response = null; response = (S2C_AddPicture)await MessageHelper.SendToServer(new C2S_AddPicture() { PictureObjectPath = pictureObjectPath, SourceType = sourceType }); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { PoemPhotoData photoData = new PoemPhotoData(); photoData.PictureId = response.PictureInfo.PictureId; photoData.CreationTime = response.PictureInfo.CreationTime; photoData.ToppingStatus = response.PictureInfo.ToppingStatus; photoData.LockingStatus = response.PictureInfo.LockingStatus; photoData.PictureTempUrl = response.PictureInfo.PictureTempUrl; PoemPhotoDataManager.Instance.Add(photoData, sourceType); EventAgent.DispatchEvent(ConstMessage.POEM_PHOTO_INFOS_CHANGE); PromptController.Instance.ShowFloatTextPrompt("已保存至相册"); return response.PictureInfo.PictureId; } } return 0; } public static IEnumerator DownloadFile(PoemPhotoData poemPhotoData) { using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(poemPhotoData.PictureTempUrl)) { yield return request.SendWebRequest(); Texture2D texture = (request.downloadHandler as DownloadHandlerTexture).texture; poemPhotoData.Bytes = texture.EncodeToJPG(); poemPhotoData.Ntexture = new NTexture(texture); } } //批量删除玩家相册 public static async ETTask ReqRemovedPhoto(List pictureIds, int sourceType) { S2C_RemovedPictures response = null; response = (S2C_RemovedPictures)await MessageHelper.SendToServer(new C2S_RemovedPictures() { PictureIds = pictureIds }); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { PoemPhotoDataManager.Instance.Remove(response.PictureIds, sourceType); EventAgent.DispatchEvent(ConstMessage.POEM_PHOTO_INFOS_CHANGE); return true; } } return false; } //修改图片锁定状态 public static async ETTask ReqChangeLockingState(long pictureId, bool state, int sourceType) { S2C_UpPictureLockingStatus response = null; response = (S2C_UpPictureLockingStatus)await MessageHelper.SendToServer(new C2S_UpPictureLockingStatus() { PictureId = pictureId, Status = state }); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { PoemPhotoDataManager.Instance.ChangeLockingState(response.PictureId, response.Status, sourceType); EventAgent.DispatchEvent(ConstMessage.POEM_PHOTO_INFOS_CHANGE); return true; } } return false; } //修改图片置顶状态 public static async ETTask ReqChangeToppingState(long pictureId, bool state, int sourceType) { S2C_UpPictureToppingStatus response = null; response = (S2C_UpPictureToppingStatus)await MessageHelper.SendToServer(new C2S_UpPictureToppingStatus() { PictureId = pictureId, Status = state }); if (response != null) { if (response.Error == ErrorCode.ERR_Success) { PoemPhotoDataManager.Instance.ChangeToppingState(response.PictureId, response.Status, sourceType); EventAgent.DispatchEvent(ConstMessage.POEM_PHOTO_INFOS_CHANGE); return true; } } return false; } } }