Пример #1
0
 public List<Move> GetNextMoves(string gameId, List<string> existingIds)
 {
     Article game = new Article(Schemas.Game, gameId);
     var moveArticleIds = game.GetAllConnectedArticles(Relations.GameMove, null, null,new[] {"__id"});
     var moveIds = moveArticleIds.Select(m => m.Id).ToList();
     moveIds = moveIds.Except(existingIds).ToList();
     List<Move> moves = new List<Move>();
     if (moveIds.Count > 0)
     {
         var graphMoves = Graph.Project("get_next_moves", moveIds, null).Result;
         moves = graphMoves.Select(node => node.Article).ToList().ToModelMoves();
     }
     return moves;
 }
Пример #2
0
 public bool StartGame(string gameId, string userId, GameStatus status, bool isActive, List<string> tiles, List<string> gameTiles)
 {
     var game = new Article(Schemas.Game, gameId);
     var players = game.GetAllConnectedArticles(Relations.GamePlayer, null, null, new[] {"__id"});
     if (players != null && players.Count == 1)
     {
         game.Set("status", status.ToString());
         game.Set("tiles", string.Join(",", gameTiles));
         var conn = Connection.New(Relations.GamePlayer)
             .FromExistingArticle("player", userId)
             .ToExistingArticle("game", gameId);
         conn.Set("ishost", false);
         conn.Set("isactive", isActive);
         conn.Set("tiles", string.Join("|", tiles));
         conn.Set("tiles_remaining", AppConfigurations.MaxTilesPerPlayer);
         conn.SaveAsync().Wait();
         game.SaveAsync().Wait();
         return true;
     }
     return false;
 }