public Task Heartbeat(byte[] data) { HeartbeatData heartbeatData = HeartbeatDataDotNetSerializer.Deserialize(data); IGameGrain game = GameGrainFactory.GetGrain(heartbeatData.Game); return(game.UpdateGameStatus(heartbeatData.Status)); }
public async Task <ActionResult> QueryGame(Guid id) { var game = GameGrainFactory.GetGrain(id); var state = await game.GetState(); return(Json(state, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> GetMoves(Guid id) { var guid = GetGuid(); var game = GameGrainFactory.GetGrain(id); var moves = await game.GetMoves(); var summary = await game.GetSummary(guid); return(Json(new { moves = moves, summary = summary }, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> MakeMove(Guid id, int x, int y) { var guid = GetGuid(); var game = GameGrainFactory.GetGrain(id); var move = new GameMove { PlayerId = guid, X = x, Y = y }; var state = await game.MakeMove(move); return(Json(state, JsonRequestBehavior.AllowGet)); }
// join a game that is awaiting players public async Task <GameState> JoinGame(Guid gameId) { var gameGrain = GameGrainFactory.GetGrain(gameId); var state = await gameGrain.AddPlayerToGame(this.GetPrimaryKey()); this.ListOfActiveGames.Add(gameId); var pairingGrain = PairingGrainFactory.GetGrain(0); await pairingGrain.RemoveGame(gameId); return(state); }
public async Task <List <GameSummary> > GetGameSummaries() { var tasks = new List <Task <GameSummary> >(); foreach (var gameId in this.ListOfActiveGames) { var game = GameGrainFactory.GetGrain(gameId); tasks.Add(game.GetSummary(this.GetPrimaryKey())); } await Task.WhenAll(tasks); return(tasks.Select(x => x.Result).ToList()); }
// create a new game, and add oursleves to that game public async Task <Guid> CreateGame() { this.gamesStarted += 1; var gameId = Guid.NewGuid(); var gameGrain = GameGrainFactory.GetGrain(gameId); // create new game // add ourselves to the game var playerId = this.GetPrimaryKey(); // our player id await gameGrain.AddPlayerToGame(playerId); this.ListOfActiveGames.Add(gameId); var name = this.username + "'s " + AddOrdinalSuffix(this.gamesStarted.ToString()) + " game"; await gameGrain.SetName(name); var pairingGrain = PairingGrainFactory.GetGrain(0); await pairingGrain.AddGame(gameId, name); return(gameId); }