Example #1
0
        public Task Heartbeat(byte[] data)
        {
            HeartbeatData heartbeatData = HeartbeatDataDotNetSerializer.Deserialize(data);
            IGameGrain    game          = GameGrainFactory.GetGrain(heartbeatData.Game);

            return(game.UpdateGameStatus(heartbeatData.Status));
        }
Example #2
0
        public async Task <ActionResult> QueryGame(Guid id)
        {
            var game  = GameGrainFactory.GetGrain(id);
            var state = await game.GetState();

            return(Json(state, JsonRequestBehavior.AllowGet));
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        // 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);
        }
Example #6
0
        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());
        }
Example #7
0
        // 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);
        }