public ReplayParsedDto ParseFile(Stream replayFile) { var result = GetJsonPart(replayFile); var replayObject = JObject.Parse(result); var gameSection = replayObject.SelectToken("game").ToString(); ReplayParsedDto parsedReplayParsedDto = JsonConvert.DeserializeObject <ReplayParsedDto>(gameSection); var properties = replayObject.Properties(); foreach (var property in properties) { if (property.Name.Contains("player_")) { var playerSection = replayObject.SelectToken(property.Name).ToString(); PlayerParsedDto parsedPlayerParsedDto = JsonConvert.DeserializeObject <PlayerParsedDto>(playerSection); parsedPlayerParsedDto.PlayerNumber = int.Parse(property.Name.Substring(7)); parsedReplayParsedDto.Players.Add(parsedPlayerParsedDto); } } return(parsedReplayParsedDto); }
public Replay GetEntity(ReplayParsedDto replayParsedDto) { var replay = new Replay { IsNetworkMode = Convert.ToBoolean(replayParsedDto.IsNetworkMode), Version = replayParsedDto.Version, GameMode = _gameModeRepository.GetByPublicCode(replayParsedDto.GameMode), GameMap = _gameMapRepository.GetByPublicCode(replayParsedDto.Map), MaxPlayers = replayParsedDto.NbMaxPlayer, AI = Convert.ToBoolean(replayParsedDto.NbAI), GameType = _gameTypeRepository.GetByPublicCode(replayParsedDto.GameType), Private = Convert.ToBoolean(replayParsedDto.Private), InitMoney = replayParsedDto.InitMoney, ScoreLimit = replayParsedDto.ScoreLimit, ServerName = replayParsedDto.ServerName, VictoryCondition = _victoryConditionRepository.GetByPublicCode(replayParsedDto.VictoryCond), NationConstraint = replayParsedDto.NationConstraint ?? "0", ThematicConstraint = replayParsedDto.ThematicConstraint ?? "0", DateConstraint = replayParsedDto.DateConstraint ?? "0", IncomeRate = int.Parse(replayParsedDto.IncomeRate), AllowObservers = Convert.ToBoolean(replayParsedDto.AllowNbObs), Seed = replayParsedDto.Seed }; if (replay.GameMode == null) { replay.GameMode = _gameModeRepository.CreateByPublicCode(replayParsedDto.GameMode); } if (replay.GameMap == null) { replay.GameMap = _gameMapRepository.CreateByPublicCode(replayParsedDto.Map); } if (replay.GameType == null) { replay.GameType = _gameTypeRepository.CreateByPublicCode(replayParsedDto.GameType); } if (replay.VictoryCondition == null) { replay.VictoryCondition = _victoryConditionRepository.CreateByPublicCode(replayParsedDto.VictoryCond); } replay.Players = new List <Player>(); foreach (var playerDto in replayParsedDto.Players) { var player = GetPlayer(playerDto); player.Replay = replay; replay.Players.Add(player); } return(replay); }