private GameJson MapGameToJson(Game game) { GameJson gameJson = new GameJson { GameId = game.GameId.ToString(), MatchId = game.MatchId, ChallengeId = game.ChallengeId, Fen = game.CurrentFen, ChallengeUrl = game.ChallengeUrl, Moves = game.ChallengeMoves.Split(" ").ToList(), Status = game.ChallengeStatus, BlackPlayerId = game.BoardPosition % 2 == 1 ? game.HomePlayer.User.LichessId : game.AwayPlayer.User.LichessId, WhitePlayerId = game.BoardPosition % 2 == 0 ? game.HomePlayer.User.LichessId : game.AwayPlayer.User.LichessId, LastMoveAt = game.LastMove, IsStarted = game.IsStarted, Completed = game.Completed, HomePlayerRating = game.Completed ? $"{game.HomePlayerRatingBefore} -> {game.HomePlayerRatingAfter}" : $"{game.HomePlayerRatingAfter}", AwayPlayerRating = game.Completed ? $"{game.AwayPlayerRatingBefore} -> {game.AwayPlayerRatingAfter}" : $"{game.AwayPlayerRatingAfter}", HomePoints = game.HomePoints.ToString(), AwayPoints = game.AwayPoints.ToString() }; // If JV, colors are swapped if (game.BoardPosition > 7) { string temp = gameJson.BlackPlayerId; gameJson.BlackPlayerId = gameJson.WhitePlayerId; gameJson.WhitePlayerId = temp; } return(gameJson); }
private async Task <Game> GamesMapper(GameJson arg) { var subRegion = await Context.SubRegions.FindAsync(arg.SubRegionId); if (subRegion == null) { Logger.Warning("Game {name} ({id}) has subregion {subregion}, which is not exists", arg.Name, arg.Id, arg.SubRegionId); return(null); } Polygon polygon; if (arg.Polygon == 29 || arg.Polygon == 0) { polygon = null; } else { polygon = await Context.Polygons.FindAsync(arg.Polygon); if (polygon == null) { Logger.Warning("Game {name} ({id}) has polygon {polygon}, which is not exists", arg.Name, arg.Id, arg.Polygon); return(null); } } return(new Game() { Polygon = polygon, SubRegion = subRegion, Active = !arg.DeletedFlag, Email = arg.Email, GameUrl = arg.Uri, FacebookLink = arg.FbComm, LivejournalLink = arg.LjComm, VkontakteLink = arg.VkClub, TelegramLink = null, GameId = arg.Id, GameName = arg.Name, GameStatus = ConvertStatus(arg.Status), GameType = ConvertType(arg.Type), Organizers = arg.Mg, PlayersCount = arg.PlayersCount, }); }
public async Task <ActionResult <GameJson> > GetGame(long id) { var game = await _context.Games.FindAsync(id); if (game == null) { return(NotFound()); } List <BoardJson> boardStates = _boardController.GetBoardByGame(game.Id); GameJson gameJson = new GameJson(game, boardStates); return(gameJson); }
void parseGame(GameJson game) { foreach (SceneJson scene in game.scenes) { if (sb.scenes.ContainsKey(scene.id)) { sb.scenes[scene.id] = jsonToScene(scene); } else { sb.scenes.Add(scene.id, jsonToScene(scene)); } } sb.currentScene = jsonToScene(game.scenes[0]); sb.SceneID = game.scenes[0].id; }
public async Task <ActionResult <GameJson> > PostGame(Game game) { _context.Games.Add(game); await _context.SaveChangesAsync(); var boardPlayer1 = new Board(_boardController.GetUniqueId(), game.Id, "player1"); var boardPlayer2 = new Board(_boardController.GetUniqueId() + 1, game.Id, "player2"); await _boardController.CreateBoard(boardPlayer1, false); await _boardController.CreateBoard(boardPlayer2); List <BoardJson> boardStates = _boardController.GetBoardByGame(game.Id); GameJson gameJson = new GameJson(game, boardStates); return(gameJson); }
public void Init() { sb = GetComponent <SceneBrancher>(); if (sb.scenes == null) { sb.scenes = new Dictionary <string, SceneObj>(); } if (sb.writing == null) { sb.writing = new Dictionary <string, string>(); } GameJson game = JsonUtility.FromJson <GameJson>(Game.ToString()); parseGame(game); WritingJson language = JsonUtility.FromJson <WritingJson>(Language.ToString()); parseLanguage(language); }
public async Task SendMessage(string user, string message) { GameJson game = new GameJson(); await Clients.All.SendAsync("UpdateMatches", game); }
public async Task <IActionResult> IssueChallenge(int?id) { if (id is null) { return(NotFound()); } var user = await _userManager.GetUserAsync(User); var game = await _context.Game.Include(g => g.HomePlayer.User) .Include(g => g.AwayPlayer.User) .Include(g => g.Match) .FirstOrDefaultAsync(g => g.GameId == id); if (game.HomePlayer == null || game.AwayPlayer == null || game.HomePlayer.User.Id != user.Id) { return(NotFound()); } var awayUser = await _userManager.FindByIdAsync(game.AwayPlayer.UserId + ""); bool userRefreshed = false, awayRefreshed = false; userRefreshed = await _tokenRefresher.RefreshTokens(user, false); awayRefreshed = await _tokenRefresher.RefreshTokens(awayUser, false); if (!userRefreshed) { Log.Information("User access token expired"); await _signInManager.SignOutAsync(); return(RedirectToAction(nameof(AdminController.Index), "Home")); } GameJson gameJson = new GameJson { GameId = game.GameId.ToString(), ChallengeId = game.ChallengeId, Fen = game.CurrentFen, ChallengeUrl = game.ChallengeUrl, MatchId = game.MatchId, Moves = new List <string>(), Completed = false, Result = "", BlackPlayerId = game.BoardPosition % 2 == 1 ? game.HomePlayer.User.LichessId : game.AwayPlayer.User.LichessId, WhitePlayerId = game.BoardPosition % 2 == 0 ? game.HomePlayer.User.LichessId : game.AwayPlayer.User.LichessId, HomePlayerRating = game.Completed ? $"{game.HomePlayerRatingBefore} -> {game.HomePlayerRatingAfter}" : $"{game.HomePlayerRatingAfter}", AwayPlayerRating = game.Completed ? $"{game.AwayPlayerRatingBefore} -> {game.AwayPlayerRatingAfter}" : $"{game.AwayPlayerRatingAfter}", HomePoints = game.HomePoints.ToString(), AwayPoints = game.AwayPoints.ToString() }; // If JV, colors are swapped if (game.BoardPosition > 7) { string temp = gameJson.BlackPlayerId; gameJson.BlackPlayerId = gameJson.WhitePlayerId; gameJson.WhitePlayerId = temp; } bool challengeCreated = false; LichessApi.LichessApiClient client = new LichessApiClient(user.AccessToken); if (awayRefreshed) { CreateGameRequest request = new CreateGameRequest { Rated = true, ClockLimit = game.Match.ClockTimeLimit, ClockIncrement = game.Match.ClockIncrement, Color = game.BoardPosition % 2 == 0 ? Color.White : Color.Black, Variant = GameVariant.Standard, Fen = game.CurrentFen, Message = "Your EPC team game with {opponent} is ready: {game}." }; // Jv board colors are swapped if (game.BoardPosition > 7) { if (request.Color == Color.White) { request.Color = Color.Black; } else { request.Color = Color.White; } } try { var response = await client.Challenges.CreateGame(awayUser.LichessId, awayUser.AccessToken, request); game.CurrentFen = response.Game.InitialFen; game.ChallengeUrl = response.Game.Url; game.ChallengeId = response.Game.Id; game.ChallengeJson = JsonConvert.SerializeObject(response); game.IsStarted = true; gameJson.Status = response.Game.Status.Name; gameJson.IsStarted = true; challengeCreated = true; } catch (Exception e) { Log.Error(e, "Unable to create challenge"); } } else // This has to be a pure challenge request { ChallengeRequest request = new ChallengeRequest { Rated = true, ClockLimit = game.Match.ClockTimeLimit, ClockIncrement = game.Match.ClockIncrement, Color = game.BoardPosition % 2 == 0 ? Color.White : Color.Black, Variant = GameVariant.Standard, Fen = game.CurrentFen, Message = "Your EPC team game with {opponent} is ready: {game}." }; // Jv board colors are swapped if (game.BoardPosition > 7) { if (request.Color == Color.White) { request.Color = Color.Black; } else { request.Color = Color.White; } } try { var response = await client.Challenges.CreateChallenge(awayUser.LichessId, request); game.ChallengeUrl = response.Challenge.Url; game.ChallengeId = response.Challenge.Id; game.ChallengeJson = JsonConvert.SerializeObject(response); game.IsStarted = true; gameJson.Status = response.Challenge.Status; gameJson.IsStarted = true; challengeCreated = true; } catch (Exception e) { Log.Error(e, "Unable to create challenge"); } } if (challengeCreated) { MatchUpdateViewModel vm = new MatchUpdateViewModel { MatchId = game.MatchId, Games = new List <GameJson>(new GameJson[] { gameJson }) }; // Issue an immediate match update await _hubContext.Clients.Groups("match_" + game.Match.MatchId).SendAsync("UpdateMatches", vm); _context.Game.Update(game); await _context.SaveChangesAsync(); } else { Log.Information("Challenge Url was empty"); // This likely happens if the user AccessToken expires and Refresh fails await _signInManager.SignOutAsync(); return(RedirectToAction(nameof(AdminController.Index), "Home")); } return(Redirect(game.ChallengeUrl)); }