// public GameObject doorClosed; // public GameObject doorOpened; //private Transform transform; void Start() { instance = this; thePlayer = FindObjectOfType <PlayerManager>(); thisBox = GetComponent <BoxCollider2D>(); theUnknown = FindObjectOfType <UnknownScript>(); //transform = GetComponent<Transform>(); //this.gameObject.GetComponent<BoxCollider2D>().isTrigger = true; thisBox.isTrigger = true; theFade = FadeManager.instance; theOrder = OrderManager.instance; theDB = DatabaseManager.instance; theDM = DialogueManager.instance; theAudio = AudioManager.instance; if (theDB.doorEnabledList.Contains(doorNum))//DB list에 있으면 문 열린 상태. { Enabled = true; } if (theDB.doorLockedList.Contains(doorNum))//DB lockedlist에 있으면 문 잠김. { locked = true; } if (dialogue_1 == null) { dialogue_1.names[0] = "나"; dialogue_1.sentences[0] = "아직 이곳을 잘 살펴보지 못했다.\n 아무것도 모른채로 다른 곳으로는 갈 수 없다."; } //if(!lockedDoor.GetComponent<TransferMap>().Enabled) // locked = true; //else if(!theDB.doorList.Contains(doorNum)){ // Enabled = false; //theDB.doorList.Add(doorNum); //} if (!thePlayer.isChased) { onWaitingFlag = true; } if (MapManager.instance.ForceEnableDoors) { Enabled = true; } }
public JsonAction Execute(HttpRequest httpRequest, JsonPacket jsonRequest, SessionComponent session) { Clear(); // Connect NetworkChannel channel = new NetworkChannel(Connection); // Request JsonAction jsonAction = JsonAction.None; JsonDownloadRequestMessage jsonRequestMessage = JsonDownloadRequestMessage.Parse(jsonRequest.Message); string jsonId = jsonRequestMessage.Id; if (jsonId != null) { // Data Entity entity = TransferMap.Get(jsonId); if (entity == null) { channel.SendNotFound(); return(jsonAction); } ChunkComponent transfer = entity.Get <ChunkComponent>(); if (transfer == null) { channel.SendNotFound(); return(jsonAction); } JsonTransfer jsonTransfer = transfer.PopData(); if (!transfer.Finished) { jsonAction = JsonAction.Request; entity.Update(); } else { TransferMap.Remove(jsonId); } string jsonData = null; JsonChunk jsonChunk = null; if (jsonTransfer != null) { jsonData = jsonTransfer.Data; jsonChunk = jsonTransfer.Chunk; } // Response JsonDownloadResponseMessage jsonResponseMessage = new JsonDownloadResponseMessage(jsonId) { Chunk = jsonChunk }; JsonPacket jsonResponse = new JsonPacket(jsonResponseMessage, jsonData); HttpResponse httpResponse = new HttpResponse() { Data = session.Encrypt(jsonResponse) }; channel.Send(httpResponse); #if DEBUG jsonResponse.Data = null; Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse); #endif } else { // Data Entity entity = session.Owner; SearchListComponent search = entity.Get <SearchListComponent>(); JsonClient jsonClient = jsonRequestMessage.Client; // Request if (jsonClient == null && search.Empty) { channel.SendNotFound(); return(jsonAction); } // Response jsonId = SecurityUtil.CreateKeyString(); JsonDownloadResponseMessage jsonResponseMessage = new JsonDownloadResponseMessage(jsonId); JsonPacket jsonResponse = new JsonPacket(jsonResponseMessage); HttpResponse httpResponse = new HttpResponse() { Data = session.Encrypt(jsonResponse) }; channel.Send(httpResponse); #if DEBUG Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse); #endif // Data entity = new Entity(jsonId); EntityIdleComponent idle = new EntityIdleComponent(); entity.Add(idle); JsonChunk jsonChunk = jsonRequestMessage.Chunk; ChunkComponent transfer = new ChunkComponent(jsonChunk.Size, Options.ChunkSize, Options.MaxChunks); entity.Add(transfer); TransferMap.Add(entity); // Command string jsonData = jsonRequest.Data; jsonChunk = transfer.PopChunk(); if (jsonClient == null) { foreach (Entity e in search) { CommandState state = new CommandState() { Id = jsonId, Data = jsonData, Chunk = jsonChunk, Entity = e }; Thread thread = new Thread(new ParameterizedThreadStart(ExecuteThread)) { Priority = ThreadPriority.BelowNormal, IsBackground = true }; thread.Start(state); } } else { Entity e = ClientMap.Get(jsonClient.Id); if (e == null) { channel.SendNotFound(); return(jsonAction); } CommandState state = new CommandState() { Id = jsonId, Data = jsonData, Chunk = jsonChunk, Entity = e }; Thread thread = new Thread(new ParameterizedThreadStart(ExecuteThread)) { Priority = ThreadPriority.BelowNormal, IsBackground = true }; thread.Start(state); } jsonAction = JsonAction.Request; } return(jsonAction); }
private void UploadMap(TransferMap transferMap) { if (transferMap.ExistsOnTarget == true) return; var sourceMapInfo = transferMap.MapInfo; var mapInfo = new MapInfo { ID = 0, // Blank value to get new Id on target server UserID = UserId, CategoryID = transferMap.TargetCategory.ID, Date = sourceMapInfo.Date, Name = sourceMapInfo.Name, Organiser = sourceMapInfo.Organiser, Country = sourceMapInfo.Country, Discipline = sourceMapInfo.Discipline, RelayLeg = sourceMapInfo.RelayLeg, MapName = sourceMapInfo.MapName, ResultListUrl = sourceMapInfo.ResultListUrl, Comment = transferMap.MapInfo.Comment }; transferMap.DownloadImages(); if (transferMap.MapImage == null) { transferMap.TransferStatus = "Map download failed."; } if (transferMap.HasBlankMapImage && SupportsPublishWithPreUpload) { PublishWithPreUpload(transferMap, mapInfo); } else { PublishMap(transferMap, mapInfo); } }
private void PublishWithPreUpload(TransferMap transferMap, MapInfo mapInfo) { try { var doma = CreateDomaClient(); mapInfo.MapImageFileExtension = transferMap.FileExtension; transferMap.TransferStatus = "Uploading..."; var uploadMapTask = UploadPartialFile(transferMap.MapImage, transferMap.FileExtension, doma); var uploadBlankMapTask = UploadPartialFile(transferMap.BlankImage, transferMap.FileExtension, doma); var uploadThumbnailTask = UploadPartialFile(transferMap.ThumbnailImage, transferMap.FileExtension, doma); var tasks = new Task[] { uploadMapTask, uploadBlankMapTask, uploadThumbnailTask }; Task.WaitAll(tasks); if (tasks.OfType<Task<UploadPartialFileResponse>>().Any(x => !x.Result.Success)) { transferMap.TransferStatus = "Image upload failed"; return; } transferMap.TransferStatus = "Publishing..."; var publishRequest = new PublishPreUploadedMapRequest { MapInfo = mapInfo, PreUploadedMapImageFileName = uploadMapTask.Result.FileName, PreUploadedBlankMapImageFileName = uploadBlankMapTask.Result.FileName, PreUploadedThumbnailImageFileName = uploadThumbnailTask.Result.FileName, Username = Username, Password = Password }; var publishMapTask = Task<PublishPreUploadedMapResponse>.Factory.FromAsync(doma.BeginPublishPreUploadedMap, doma.EndPublishPreUploadedMap, publishRequest, null); publishMapTask.Wait(); if (publishMapTask.Result.Success) { transferMap.TransferStatus = "Complete"; transferMap.ExistsOnTarget = true; Interlocked.Increment(ref _transferSuccessCount); Interlocked.Decrement(ref _transferFailedCount); } else { transferMap.TransferStatus = publishMapTask.Result.ErrorMessage; } } catch (AggregateException ae) { var innerExceptions = ae.Flatten().InnerExceptions; foreach (var innerException in innerExceptions) { _transferExceptions.Add(innerException); } transferMap.TransferStatus = "Publishing failed badly: " + string.Join(", ", innerExceptions.Select(x => x.Message)); } catch (Exception e) { _transferExceptions.Add(e); transferMap.TransferStatus = "Publishing failed badly: " + e.Message; } }
private void PublishMap(TransferMap transferMap, MapInfo mapInfo) { try { var doma = CreateDomaClient(); mapInfo.MapImageFileExtension = transferMap.FileExtension; mapInfo.MapImageData = transferMap.MapImage; transferMap.TransferStatus = "Publishing..."; var publishMapRequest = new PublishMapRequest { MapInfo = mapInfo, Username = Username, Password = Password }; var publishMapTask = Task<PublishMapResponse>.Factory.FromAsync(doma.BeginPublishMap, doma.EndPublishMap, publishMapRequest, null); publishMapTask.Wait(); if (publishMapTask.Status == TaskStatus.Faulted) { _transferExceptions.Add(publishMapTask.Exception); transferMap.TransferStatus = publishMapTask.Exception != null ? publishMapTask.Exception.Message : "Failed"; return; } var response = publishMapTask.Result; if (response.Success) { transferMap.TransferStatus = "Complete"; transferMap.ExistsOnTarget = true; } else { transferMap.TransferStatus = response.ErrorMessage; } } catch (AggregateException ae) { var innerExceptions = ae.Flatten().InnerExceptions; foreach (var innerException in innerExceptions) { _transferExceptions.Add(innerException); } transferMap.TransferStatus = "Publishing failed badly: " + string.Join(", ", innerExceptions.Select(x => x.Message)); } catch (Exception e) { _transferExceptions.Add(e); transferMap.TransferStatus = "Publishing failed badly: " + e.Message; } }
public JsonAction Execute(HttpRequest httpRequest, JsonPacket jsonRequest, SessionComponent session) { Clear(); // Connect NetworkChannel channel = new NetworkChannel(Connection); // Request JsonUploadRequestMessage jsonRequestMessage = JsonUploadRequestMessage.Parse(jsonRequest.Message); // Data string jsonId = jsonRequestMessage.Id; Entity entity = TransferMap.Get(jsonId); if (entity == null) { channel.SendNotFound(); return(JsonAction.None); } JsonChunk jsonChunk = jsonRequestMessage.Chunk; ChunkComponent transfer = entity.Get <ChunkComponent>(); if (jsonChunk != null) { JsonTransfer jsonTransfer = new JsonTransfer() { Chunk = jsonChunk, Data = jsonRequest.Data }; transfer.PushData(jsonTransfer); } if (!transfer.HasChunk()) { channel.SendNotFound(); return(JsonAction.None); } int delay = 0; jsonChunk = null; if (transfer.HasDataCapacity()) { jsonChunk = transfer.PopChunk(); } else { delay = (int)DemonTimeout.File.TotalMilliseconds; } // Response JsonUploadResponseMessage jsonResponseMessage = new JsonUploadResponseMessage(jsonId) { Chunk = jsonChunk, Delay = delay }; JsonPacket jsonResponse = new JsonPacket(jsonResponseMessage); HttpResponse httpResponse = new HttpResponse() { Data = session.Encrypt(jsonResponse) }; channel.Send(httpResponse); #if DEBUG jsonRequest.Data = null; Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse); #endif return(JsonAction.Request); }