Exemplo n.º 1
0
    // 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;
        }
    }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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;
            }
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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);
        }