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; }
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); }
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)); }
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)); }
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)); }
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; }
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); }
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)); }
// visible for testing public void updateWithUserData(Game game, User user) { game.Transformation = game.RecepientPlayerEmail == user.Email ? BoardCoord.Transformation.FLIP : BoardCoord.Transformation.NO_FLIP; }
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; }