public static Game ToGame(GameTransport game) { Game result = new Game(); result.Building = new Building(); result.Building.Floors = game.floors.Select(x => FloorData.ToFloor(x.d)).ToArray(); result.Building.TotalValue = game.game.d.buildingScore; result.Floors = game.game.d.floors; result.RoomsPerFloor = game.game.d.roomsPerFloor; result.PlayerVersions = new Dictionary<string, int>(); result.Players = game.game.d.players.Select(x => PlayerMetaData.ToPlayer(x)).ToList(); result.PlayerIds = game.game.d.players.Select(x => x.id).ToList(); result.Id = game.id; if (game.me != null && game.me.d != null) { result.PlayerScore.Add(game.me.d.id, game.me.d.score); } // set versions result.FloorVersions = game.floors.Select(x => x.v).ToArray(); result.GameMetaVersion = game.game.v; result.PlayerVersions.Add(game.me.d.id, game.me.v); result.StartUTC = game.game.d.start; result.RunningState = game.game.d.state; return result; }
public void UpdateFrom(GameTransport data, bool checkVersions) { if (this.Building == null) return; if (data.floors != null) { foreach(var f in data.floors) { if ((checkVersions && ( f.d.i < this.FloorVersions.Length && this.FloorVersions[f.d.i] < f.v)) || !checkVersions) // if data has higher version { this.FloorVersions[f.d.i] = f.v; this.Building.Floors[f.d.i] = FloorData.ToFloor(f.d); } } } if (data.game != null) { if ((checkVersions && GameMetaVersion < data.game.v) || !checkVersions) // if data has higher version { GameMetaVersion = data.game.v; Winner = PlayerMetaData.ToPlayer(data.game.d.winner); Building.TotalValue = data.game.d.buildingScore; } } if (data.me != null) { var player = data.me.d; if (player != null) { if (!PlayerVersions.ContainsKey(player.id)) { PlayerVersions.Add(player.id, 0); } if ((checkVersions && PlayerVersions[player.id] < data.me.v) || !checkVersions) // if data has higher version { PlayerVersions[player.id] = data.me.v; if (!PlayerScore.ContainsKey(player.id)) { PlayerScore.Add(player.id, 0); } PlayerScore[player.id] = player.score; } } } }
public void UpdateFrom(GameTransport data) { UpdateFrom(data, true); }