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;
        }
Example #2
0
        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;
                    }
                }
            }
        }
Example #3
0
 public void UpdateFrom(GameTransport data)
 {
     UpdateFrom(data, true);
 }