protected void BtnLogin_Click(object sender, EventArgs e) { try { using (var db = new JaipurEntities()) { var user = db.User.FirstOrDefault(u => u.Login.ToLower() == TxtLogin.Text.ToLower()); if (user != null && user.CheckPassword(TxtPassword.Text)) { Session["User"] = user; Response.Redirect("Default.aspx"); } else { if (user == null) { ShowMessage(Resources.Localization.InvalidUser); } else { ShowMessage(Resources.Localization.InvalidPassword); } } } } catch (Exception ex) { ShowMessage(Resources.Localization.Exception + ex.Message); } }
public void MarkAsDeleted(User player) { using (var db = new JaipurEntities()) { var toPay = IsGameFinished ? Winner : GetEnemyData(player).User; PayWinner(toPay); Game game = db.Game.FirstOrDefault((g) => g.Id == this.Id); if (game == null) { return; } if (player.Id == ChallengerData.User.Id) { game.ChallengerDeleted = ChallengerDeleted = true; } else if (player.Id == EnemyData.User.Id) { game.EnemyDeleted = EnemyDeleted = true; } if (EnemyDeleted && ChallengerDeleted) { db.Game.Remove(game); } db.SaveChanges(); } }
public void Save() { using (var db = new JaipurEntities()) { Game game = db.Game.First((g) => g.Id == this.Id); game.EnemyTurn = EnemyTurn; game.OnTable = SerializeCards(OnTable); game.OnDeck = SerializeCards(OnDeck); game.Resources = SerializeResources(Resources); game.ChallengerId = ChallengerData.User.Id; game.ChallengerHand = SerializeCards(ChallengerData.Hand); game.ChallengerCamels = ChallengerData.Camels; game.ChallengerPoints = ChallengerData.Points; game.EnemyId = EnemyData.User.Id; game.EnemyHand = SerializeCards(EnemyData.Hand); game.EnemyCamels = EnemyData.Camels; game.EnemyPoints = EnemyData.Points; game.ChallengerDeleted = ChallengerDeleted; game.EnemyDeleted = EnemyDeleted; game.Bet = Bet; game.BetAccepted = Accepted; db.SaveChanges(); } }
protected void GridUsers_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Challenge") { User user = Session["User"] as User; GridUsers.SelectedIndex = int.Parse(e.CommandArgument.ToString()); GridUsers.DataBind(); int enemyId = (int)GridUsers.SelectedDataKey.Value; if (enemyId != user.Id) { using (var db = new JaipurEntities()) { var enemy = db.User.FirstOrDefault((u) => u.Id == enemyId); var gameData = JaipurSocial.Core.GameData.CreateNewGame(user, enemy); var saved = db.Game.Add(gameData.ToGame()); db.SaveChanges(); Response.Redirect("Game.aspx?GameId=" + saved.Id); } } else { ShowMessage(Resources.Localization.CantChallengeYourself); } } }
protected void GridGames_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "ViewGame") { GridGames.SelectedIndex = int.Parse(e.CommandArgument.ToString()); GridGames.DataBind(); Response.Redirect("Game.aspx?GameId=" + GridGames.SelectedDataKey.Value); } else if (e.CommandName == "DeleteGame") { GridGames.SelectedIndex = int.Parse(e.CommandArgument.ToString()); GridGames.DataBind(); using (var db = new JaipurEntities()) { User logged = (Session["User"] as User); var gameId = int.Parse(GridGames.SelectedDataKey.Value.ToString()); var game = db.Game.FirstOrDefault(g => g.Id == gameId); var data = new GameData(game); data.MarkAsDeleted(logged); db.SaveChanges(); } Response.Redirect("Default.aspx"); } }
protected void Page_Load(object sender, EventArgs e) { using (var db = new JaipurEntities()) { User logged = (Session["User"] as User); if (logged != null) { Random rng = new Random(DateTime.Now.Millisecond); List <User> users = db.User.OrderByDescending((u) => u.Coins).ToList <User>(); GridUsers.DataSource = users; GridUsers.DataBind(); try { var dbGames = from game in db.Game.Where(g => g.EnemyId == logged.Id || g.ChallengerId == logged.Id).ToList() select new GameData(game); var games = from game in dbGames let enemy = game.GetEnemyData(logged) where !game.IsDeleted(logged) select new RunningGameInfo { GameId = game.Id, EnemyLogin = enemy.User.Name, EnemyEmail = enemy.User.Email, GameStatus = game.GetStatus(logged) }; GridGames.DataSource = games.ToList(); GridGames.DataBind(); } catch { } } } }
public GameData(Game game) { Id = game.Id; EnemyTurn = game.EnemyTurn; OnDeck = new Stack <Card>(DeserializeCards(game.OnDeck)); OnTable = DeserializeCards(game.OnTable).ToList(); Resources = DeserializeResources(game.Resources); using (var db = new JaipurEntities()) { var challenger = db.User.FirstOrDefault(u => u.Id == game.ChallengerId); var enemy = db.User.FirstOrDefault(u => u.Id == game.EnemyId); ChallengerData = new PlayerData(challenger) { Points = game.ChallengerPoints }; EnemyData = new PlayerData(enemy) { Points = game.EnemyPoints }; } foreach (var card in DeserializeCards(game.ChallengerHand)) { ChallengerData.GiveCard(card); } foreach (var card in Enumerable.Repeat(Card.Camel, game.ChallengerCamels)) { ChallengerData.GiveCard(card); } foreach (var card in DeserializeCards(game.EnemyHand)) { EnemyData.GiveCard(card); } foreach (var card in Enumerable.Repeat(Card.Camel, game.EnemyCamels)) { EnemyData.GiveCard(card); } EnemyDeleted = game.EnemyDeleted; ChallengerDeleted = game.ChallengerDeleted; }
public void PayWinner(User winner = null) { winner = winner ?? Winner; if (winner == null) { return; } using (var db = new JaipurEntities()) { var winnerId = winner.Id; var win = db.User.First(u => u.Id == winnerId); win.Coins += Bet + ChallengerData.Points + EnemyData.Points; winner.Coins = win.Coins; var gameId = Id; var gam = db.Game.First(g => g.Id == gameId); gam.Bet = Bet = 0; ChallengerData.Points = gam.ChallengerPoints = 0; EnemyData.Points = gam.EnemyPoints = 0; db.SaveChanges(); } }
protected void BtnRegister_Click(object sender, EventArgs e) { if (IsValid) { byte[] bytes = CryptoHelper.GetHash(TxtPassword.Text); try { using (var db = new JaipurEntities()) { if (!db.User.Any(u => u.Login.ToLower() == TxtLogin.Text.ToLower())) { db.User.Add(new User { Login = TxtLogin.Text, Email = TxtEmail.Text, Name = TxtName.Text, Coins = 100, Password = bytes }); db.SaveChanges(); ShowMessage(Resources.Localization.RegisterSuccess, "Login.aspx"); } else { ShowMessage(Resources.Localization.UserAlreadyExists); } } } catch (Exception ex) { ShowMessage(Resources.Localization.RegisterError + '\n' + ex.Message); } } }
protected void Page_Load(object sender, EventArgs e) { if (CurrentUser == null) { Response.Redirect("login.aspx"); return; } if (Request.QueryString["GameId"] == null) { Response.Redirect("default.aspx"); return; } #region Load Game using (var db = new JaipurEntities()) { var gameId = int.Parse(Request.QueryString["GameId"].ToString()); var game = db.Game.FirstOrDefault(g => g.Id == gameId); if (game == null) { //throw new Exception("Game not found"); Response.Redirect("Default.aspx"); return; } if (game.ChallengerId != CurrentUser.Id && game.EnemyId != CurrentUser.Id) { //throw new Exception("No permission"); Response.Redirect("Default.aspx"); } GameData = new GameData(game); if (game.ChallengerId == CurrentUser.Id) { UserData = GameData.ChallengerData; EnemyData = GameData.EnemyData; } else { UserData = GameData.EnemyData; EnemyData = GameData.ChallengerData; } } #endregion Load Game GameStatus.Text = GameData.GetStatus(CurrentUser); LblGold.Text = GameData.Resources[Card.Gold].ToString(); LblSilk.Text = GameData.Resources[Card.Silk].ToString(); LblSilver.Text = GameData.Resources[Card.Silver].ToString(); LblSpices.Text = GameData.Resources[Card.Spices].ToString(); LblRuby.Text = GameData.Resources[Card.Ruby].ToString(); LblLeather.Text = GameData.Resources[Card.Leather].ToString(); BtnBuy.Enabled = GameData.IsCurrentTurn(UserData.User); BtnTrade.Enabled = GameData.IsCurrentTurn(UserData.User); BtnBuyAllCamels.Enabled = GameData.IsCurrentTurn(UserData.User); BtnSell.Enabled = GameData.IsCurrentTurn(UserData.User); BtnBuy.Enabled = GameData.IsCurrentTurn(CurrentUser); BtnTrade.Enabled = GameData.IsCurrentTurn(CurrentUser); BtnBuyAllCamels.Enabled = GameData.IsCurrentTurn(CurrentUser); BtnSell.Enabled = GameData.IsCurrentTurn(CurrentUser); if (!GameData.IsCurrentTurn(CurrentUser)) { ClientScriptManager cs = Page.ClientScript; cs.RegisterStartupScript(GetType(), "auto_refresh", "<script type=\"text/javascript\">window.setInterval(function() { window.location.reload(); }, 10000);</script>", false); } if (!IsPostBack) { UcPlayer.LoadData(UserData, true); UcEnemy.LoadData(EnemyData, false); var container = CardContainer.GetContainer(GameData.OnTable, true); DlChecks.Items.Clear(); foreach (CardContainer c in container) { ListItem item = new ListItem("<img src='" + c.Image + "' height='121' width='97' />", ((int)c.Type).ToString()); item.Enabled = (c.Type != Card.Camel); DlChecks.Items.Add(item); } } }