public IEnumerator GetNewWorld(IGetNewWorldRequest request, Action <IGetNewWorldRequest, IProcessWorldResponse> callback)
        {
            var response = CaravanServer.GetNewWorld(request);

            yield return(null);

            callback(request, response);
        }
Ejemplo n.º 2
0
        public static GetNewWorldRequest Map(IGetNewWorldRequest c)
        {
            var result = new GetNewWorldRequest();

            result.UserGuid = c.UserGuid;

            return(result);
        }
Ejemplo n.º 3
0
        public IProcessWorldResponse GetNewWorld(IGetNewWorldRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.UserGuid))
            {
                throw new Exception("UserGuid is empty");
            }

            var generated = NewWorldGenerator.GenerateWorld(request.UserGuid);


            var result = new ProcessWorldResponseClientSideEntity();

            result.Player = generated.Item2;
            result.World  = generated.Item1;

            return(result);
        }
Ejemplo n.º 4
0
        public async Task <ProcessWorldResponse> Get([FromBody] GetNewWorldRequest request)
        {
            try
            {
                IGetNewWorldRequest mapped = ToClientSideMapper.Map(request);
                var result = await CaravanServer.GetNewWorldAsync(mapped);

                var response = ToDtoMapper.Map(result);
                return(response);
            }
            catch (Exception e)
            {
                var result = new ProcessWorldResponse
                {
                    Status = new ResponseStatus {
                        Code = (int)ResponseStatusEnum.InernalError, ErrorMessage = e.Message
                    }
                };
                _logger.LogError(e, $"Error InternalServerError {GetType().Name} with request='{request.ToLog()}', response='{result.ToLog()}'");
                return(result);
            }
        }
Ejemplo n.º 5
0
        public async Task <IProcessWorldResponse> GetNewWorldAsync(IGetNewWorldRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.UserGuid))
            {
                throw new Exception("UserGuid is empty");
            }

            using var context   = ContextFactory.GetContext();
            using var instances = new Instances(context, NewInstanceFactory);

            var generated = instances.NewWorldGenerator.GenerateWorld(request.UserGuid);

            await context.SaveAsync();

            return(new ProcessWorldResponseEntity {
                Player = generated.Item2, World = generated.Item1
            });
        }
Ejemplo n.º 6
0
        public IEnumerator GetNewWorld(IGetNewWorldRequest request, Action <IGetNewWorldRequest, IProcessWorldResponse> callback)
        {
            var requestBody   = ToDtoMapper.Map(request);
            var requestString = JsonConvert.SerializeObject(requestBody);

            var unityWebRequest = new UnityWebRequest("http://localhost:8066/GetNewWorld", "POST");
            var bodyRaw         = Encoding.UTF8.GetBytes(requestString);

            unityWebRequest.uploadHandler   = new UploadHandlerRaw(bodyRaw);
            unityWebRequest.downloadHandler = new DownloadHandlerBuffer();
            unityWebRequest.SetRequestHeader("Content-Type", "application/json");

            yield return(unityWebRequest.SendWebRequest());

            if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
            {
                Debug.LogError($"Ping error. isNetworkError='{unityWebRequest.isNetworkError}', isHttpError='{unityWebRequest.isHttpError}', error:'{unityWebRequest.error}'");
                callback(request, null);
            }
            else
            {
                var responseStr = unityWebRequest.downloadHandler.text;

                var response = JsonConvert.DeserializeObject <ProcessWorldResponse>(responseStr);

                if (response.Status == null || response.Status.Code != (int)ResponseStatusEnum.Success)
                {
                    Debug.LogError($"Ping error. response code='{response.Status?.Code}', error='{response.Status?.ErrorMessage}'");
                }
                else
                {
                    Debug.Log("Ping ok'");
                    var result = ToClientSideMapper.Map(response);
                    callback(request, result);
                }
            }
        }
Ejemplo n.º 7
0
        public void ProcessServerResponse(IGetNewWorldRequest request, IProcessWorldResponse response)
        {
            WaitingServerResponse = false;
            lastPingDateTimeUtc   = DateTime.UtcNow;

            if (response != null)
            {
                CommandsToSend = new List <IClientCommand>();

                foreach (var obj in AllObjects)
                {
                    obj.Value.Updated = false;
                }

                foreach (var city in response.World.Cities.Collection)
                {
                    MapCity(city, response.Player);
                }
                MapPayer(response.Player, true);

                DestroyNotMappedWorldObjects();

                World  = response.World;
                Player = response.Player;

                // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
                if (Player.IsMoving)
                {
                    MovePlayer = new MovePlayer(new Vector3(Player.X, Player.Y), new Vector3(Player.MoveToX, Player.MoveToY));
                }
                else
                {
                    MovePlayer = null;
                }
            }
        }
Ejemplo n.º 8
0
 public IProcessWorldResponse GetNewWorld(IGetNewWorldRequest request)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 9
0
 public Task <IProcessWorldResponse> GetNewWorldAsync(IGetNewWorldRequest request)
 {
     return(Task.FromResult(GetNewWorld(request)));
 }