예제 #1
0
    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);
        }
    }
예제 #2
0
        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();
            }
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
    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);
            }
        }
    }
예제 #5
0
    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");
        }
    }
예제 #6
0
    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 { }
            }
        }
    }
예제 #7
0
        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;
        }
예제 #8
0
        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();
            }
        }
예제 #9
0
    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);
            }
        }
    }
예제 #10
0
    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);
            }
        }
    }