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)); }
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"); }