Пример #1
0
        public async Task <IActionResult> PatchArea([FromRoute] Guid id, [FromBody] GameAreaPatchRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            logger.LogInformation("Paching Area {}: {}", id, request);
            id = Guid.Empty; //FIXME
            IGameAreaGrain area           = clusterClient.GetGrain <IGameAreaGrain>(id);
            var            resultingState = await area.PatchArea(request);

            return(Ok(resultingState));
        }
Пример #2
0
        private async Task PublishInitialAreaState()
        {
            IGameAreaGrain area  = clusterClient.GetGrain <IGameAreaGrain>(Guid.Empty);
            var            state = await area.GetAreaState();

            var patchOps = new JsonPatchDocument <GameAreaState>();

            patchOps.Replace(ex => ex, state);
            await webSocket.SendObject(new GameAreaEvent
            {
                TimelineMessage     = @"Welcome! You are now **connected**",
                AreaPatchOperations = patchOps
            });

            logger.LogInformation("published initial state");
        }