Пример #1
0
        public async Task<User> CreateUser()
        {
            if (((App)Application.Current).OFFLINE_MODE)
            {
                return new User() { Email = "*****@*****.**", Name = "Nick Heiner" };
            }

            LiveConnectClient connection = await ensureConnection();

            if (connection == null)
            {
                return null;
            }
            LiveOperationResult meResult = await connection.GetAsync("me");
            
            dynamic userData = meResult.Result;
            User user = new User();
            if (userData != null)
            {
                user.Name = userData.name;
                user.Email = userData.emails.preferred; // assume this will always be populated
            }

            LiveOperationResult picResult = await connection.GetAsync("me/picture");
            dynamic picData = picResult.Result;
            if (picData != null)
            {
                user.ProfilePicSource = picData.location;
            }

            return user;
        }
Пример #2
0
        public void DataManager_WithUserData_NoFlip()
        {
            Game game = new Game() { InitiatingPlayerEmail = "*****@*****.**", RecepientPlayerEmail = "*****@*****.**" };
            User user = new User() { Email = "*****@*****.**" };
            new DataManager().updateWithUserData(game, user);

            Assert.AreEqual(BoardCoord.Transformation.NO_FLIP, game.Transformation);
        }
Пример #3
0
        public void ToRelativePlayer_Opponent_OpponentInitiator()
        {
            string friendlyEmail = "[email protected]";
            string opponentEmail = "[email protected]";
            Game game = GameController.WithStartingPieces(new Game() { InitiatingPlayerEmail = opponentEmail, RecepientPlayerEmail = friendlyEmail, WaitingOn = AbsolutePlayer.Initiator });
            User user = new User() { Email = friendlyEmail };

            Assert.AreEqual(RelativePlayer.Friendly, AbsolutePlayer.Recepient.ToRelativePlayer(user, game));
        }
Пример #4
0
        public void IsValidMoveForUser_True()
        {
            string friendlyEmail = "[email protected]";
            string opponentEmail = "[email protected]";
            Game game = GameController.WithStartingPieces(new Game() { InitiatingPlayerEmail = friendlyEmail, RecepientPlayerEmail = opponentEmail, WaitingOn = AbsolutePlayer.Initiator });
            User user = new User() { Email = friendlyEmail };

            Coord space = Coord.Create(0, 0);

            game.SetPieceLocation(space, BoardSpaceState.FriendlyPieceShort);

            Assert.IsTrue(GameValidator.IsValidMoveFor(user, game, space));
        }
Пример #5
0
        public void GameValidator_IsValidMove_Flip()
        {
            string initEmail = "[email protected]";
            string recepEmail = "*****@*****.**";

            User user = new User() { Email = recepEmail };
            Game game = GameController.WithStartingPieces(new Game() { InitiatingPlayerEmail = initEmail, RecepientPlayerEmail = recepEmail, WaitingOn = AbsolutePlayer.Recepient });

            Coord coord = Coord.Create(0, 0);

            game.SetPieceLocation(coord, BoardSpaceState.OpponentPieceShort);

            Assert.IsTrue(GameValidator.IsValidMoveFor(user, game, coord));
        }
Пример #6
0
        public async Task<User> withServerData(User user)
        {
            user = user ?? new User();

            if (((App)Application.Current).OFFLINE_MODE)
            {
                user.Email = "*****@*****.**";
                user.ProfilePicSource = "https://cid-0c175b9b686f66fd.users.storage.live.com/users/0x0c175b9b686f66fd/myprofile/expressionprofile/profilephoto:UserTileStatic";

                Game againstScott = new Game() 
                { 
                    RecepientPlayerName = "Scott", 
                    InitiatingPlayerEmail = user.Email, 
                    WaitingOn = AbsolutePlayer.Recepient,
                    LastMoveSubmittedAt = DateTime.Now - TimeSpan.FromDays(1)
                };
                againstScott.SetPieceLocation(new Coord() { Row = 5, Col = 5 }, BoardSpaceState.FriendlyPieceShort);
                againstScott.SetPieceLocation(new Coord() { Row = 5, Col = 6 }, BoardSpaceState.FriendlyPieceTall);
                againstScott.SetPieceLocation(new Coord() { Row = 4, Col = 4 }, BoardSpaceState.OpponentPieceShort);
                againstScott.SetPieceLocation(new Coord() { Row = 5, Col = 8 }, BoardSpaceState.OpponentPieceTall);

                user.Games.Add(againstScott);

                var dadGame = GameController.WithStartingPieces(new Game()
                {
                    WaitingOn = AbsolutePlayer.Initiator,
                    RecepientPlayerName = "Dad",
                    InitiatingPlayerEmail = user.Email,
                    InitiaitingPlayerPicSource = user.ProfilePicSource,
                    RecepientPlayerPicSource = "https://cid-0c175b9b686f66fd.users.storage.live.com/users/0x0c175b9b686f66fd/myprofile/expressionprofile/profilephoto:UserTileStatic",
                    LastMoveSubmittedAt = DateTime.Now - TimeSpan.FromHours(2.3)
                });

                dadGame.SetPieceLocation(Coord.Create(5, 0), BoardSpaceState.FriendlyPieceTall);
                dadGame.SetPieceLocation(Coord.Create(6, 0), BoardSpaceState.FriendlyPieceShort);
                dadGame.SetPieceLocation(Coord.Create(8, 0), BoardSpaceState.OpponentPieceShort);
                dadGame.SetPieceLocation(Coord.Create(10, 0), BoardSpaceState.OpponentPieceTall);

                updateWithUserData(dadGame, user);

                user.Games.Add(dadGame);

                var wonGame = GameController.WithStartingPieces(new Game()
                {
                    WaitingOn = AbsolutePlayer.Initiator,
                    RecepientPlayerName = "Losing Guy",
                    InitiatingPlayerEmail = user.Email,
                    InitiaitingPlayerPicSource = user.ProfilePicSource,
                    RecepientPlayerPicSource = "https://cid-0c175b9b686f66fd.users.storage.live.com/users/0x0c175b9b686f66fd/myprofile/expressionprofile/profilephoto:UserTileStatic",
                    LastMoveSubmittedAt = DateTime.Now - TimeSpan.FromDays(15.4)
                });

                wonGame.SetPieceLocation(Coord.Create(0, Game.ENDZONE_COL_1), BoardSpaceState.FriendlyPieceShort);
                wonGame.SetPieceLocation(Coord.Create(0, Game.ENDZONE_COL_2), BoardSpaceState.FriendlyPieceShort);

                updateWithUserData(wonGame, user);

                user.Games.Add(wonGame);

                var lostGame = GameController.WithStartingPieces(new Game()
                {
                    WaitingOn = AbsolutePlayer.Recepient,
                    RecepientPlayerName = "Winning Guy",
                    InitiatingPlayerEmail = user.Email,
                    InitiaitingPlayerPicSource = user.ProfilePicSource,
                    RecepientPlayerPicSource = "https://cid-0c175b9b686f66fd.users.storage.live.com/users/0x0c175b9b686f66fd/myprofile/expressionprofile/profilephoto:UserTileStatic",
                    LastMoveSubmittedAt = DateTime.Now - TimeSpan.FromDays(23.9)
                });

                lostGame.SetPieceLocation(Coord.Create(Game.BOARD_ROW_MAX, Game.ENDZONE_COL_1), BoardSpaceState.OpponentPieceShort);
                lostGame.SetPieceLocation(Coord.Create(Game.BOARD_ROW_MAX, Game.ENDZONE_COL_2), BoardSpaceState.OpponentPieceShort);

                updateWithUserData(lostGame, user);

                user.Games.Add(lostGame);

                return user;
            }

            user.Games.Clear();
            var games = await getGamesForUser(user);
            foreach (var game in games)
            {
                if (((App)Application.Current).DEMO_HACK)
                {
                    GameController.WithStartingPieces(game);
                    foreach (var _ in Enumerable.Range(0, 10))
                    {
                        game.CapturePiece(BoardSpaceState.OpponentPieceShort);
                        game.CapturePiece(BoardSpaceState.FriendlyPieceShort);
                    }
                    foreach (var _ in Enumerable.Range(0, 4))
                    {
                        game.CapturePiece(BoardSpaceState.OpponentPieceTall);
                        game.CapturePiece(BoardSpaceState.FriendlyPieceTall);
                    }
                }
                updateWithUserData(game, user);
                GameController.SetOtherPlayerInfo(user, game);
                user.Games.Add(game);
            }

            return user;
        }
Пример #7
0
        internal void SaveGame(Game game, User user)
        {
            if (((App)App.Current).OFFLINE_MODE)
            {
                return;
            }

            if (user.ToAbsolutePlayer(game) == AbsolutePlayer.Initiator)
            {
                game.InitiatorChannelId = App.CurrentChannel.Uri;
            } else 
            {
                game.RecepientPlayerPicSource = user.ProfilePicSource;
                game.RecepientChannelId = App.CurrentChannel.Uri;
            }
            gameTable.UpdateAsync(game);
        }
Пример #8
0
        internal async void AddNewGame(User user, string recepientUserName, string recepientUserEmail)
        {
            Game game = new Game()
            {
                InitiatingPlayerName = user.Name,
                InitiatingPlayerEmail = user.Email,
                InitiaitingPlayerPicSource = user.ProfilePicSource,
                RecepientPlayerName = recepientUserName,
                RecepientPlayerEmail = recepientUserEmail,
                LastMoveSubmittedAt = DateTime.Now,

                // TODO http://stackoverflow.com/questions/14677744/get-contact-thumbnail
                RecepientPlayerPicSource = ""
            };

            // Since the initiator is the only one who will call this method, 
            // we only want to set the InitiatorChannelId
            game.InitiatorChannelId = App.CurrentChannel.Uri;

            await gameTable.InsertAsync(GameController.WithStartingPieces(game));
        }
Пример #9
0
 // visible for testing
 public void updateWithUserData(Game game, User user)
 {
     game.Transformation = game.RecepientPlayerEmail == user.Email ? BoardCoord.Transformation.FLIP : BoardCoord.Transformation.NO_FLIP;
 }
Пример #10
0
 private async Task<List<Game>> getGamesForUser(User user)
 {
     var games = await
         gameTable
         .Where(game => game.InitiatingPlayerEmail == user.Email || game.RecepientPlayerEmail == user.Email)
         .ToListAsync();
     return games;
 }