Пример #1
0
        private void AddRoundsToGame(ScoreTrackerDatabase database)
        {
            for (var i = 1; i <= Game.TotalRounds; i++)
            {
                var round = new Round
                {
                    RoundCount = i,
                    IsCurrent  = i == 1,
                    Game       = Game,
                    GameId     = Game.Id
                };
                database.Insert(round);

                foreach (var player in Game.Players)
                {
                    var turn = new Turn
                    {
                        Player       = player,
                        Round        = round,
                        RoundId      = round.Id,
                        PlayerId     = player.Id,
                        CurrentRange = round.IsCurrent ? 10 : 0
                    };
                    round.Turns.Add(turn);
                    database.Insert(turn);
                }
                Game.Rounds.Add(round);
            }
        }
Пример #2
0
        private void StartScoreTrackerGame_OnClicked(object sender, EventArgs e)
        {
            var count = int.Parse(PlayerCount.Text);
            var game  = new Game();

            var database = new ScoreTrackerDatabase();


            var defaultPlayer = database.GetDefaultPlayer() ?? new Player
            {
                NickName  = "Player1",
                IsDefault = true
            };

            database.Insert(defaultPlayer);
            game.Players.Add(defaultPlayer);
            for (var i = 1; i < count; i++)
            {
                var name   = "Player" + (i + 1);
                var player = new Player
                {
                    NickName = name
                };
                game.Players.Add(player);
                database.Insert(player);
            }
            game.IsCurrent   = true;
            game.TotalRounds = int.Parse(RoundCount.Text);
            var addPlayerPage = new AddPlayersX {
                BindingContext = game
            };

            Navigation.PushModalAsync(addPlayerPage);
        }
Пример #3
0
        private void FinishTurnButton_OnClicked(object sender, EventArgs e)
        {
            Round.IsRoundOver = true;
            Round.IsCurrent   = false;
            var database = new ScoreTrackerDatabase();

            database.Save(Round);
            foreach (var turn in Round.Turns)
            {
                database.Save(turn);
            }
            var game = database.GetItem <Game>(Round.GameId);

            if (!game.Rounds.All(r => r.IsRoundOver))
            {
                var roundCount = Round.RoundCount + 1;
                var nextRound  = game.Rounds.FirstOrDefault(r => r.RoundCount == roundCount);
                nextRound.IsCurrent = true;
                var nextRoundX = new GameRoundsX {
                    BindingContext = nextRound
                };
                Navigation.PushModalAsync(nextRoundX);
            }
            else
            {
                var turns        = game.Rounds.SelectMany(r => r.Turns).ToList();
                var playerScores = new Dictionary <int, int>();

                foreach (var player in game.Players)
                {
                    if (!playerScores.ContainsKey(player.Id))
                    {
                        playerScores.Add(player.Id, 0);
                    }
                }

                foreach (var turn in turns)
                {
                    playerScores[turn.PlayerId] += turn.Score;
                }

                foreach (var player in game.Players)
                {
                    if (playerScores[player.Id] <= game.WinningScore)
                    {
                        continue;
                    }
                    game.WinningPlayer = player;
                    game.WinningScore  = playerScores[player.Id];
                }

                var winnerNewGame = new WinnerNewGame {
                    BindingContext = game
                };
                Navigation.PushModalAsync(winnerNewGame);
            }
        }
Пример #4
0
        private void StartButton_OnClicked(object sender, EventArgs e)
        {
            var database = new ScoreTrackerDatabase();

            if (Game.Id <= 0)
            {
                database.Insert(Game);
            }
            if (!Game.Rounds.Any())
            {
                AddRoundsToGame(database);
            }
            database.Save(Game);
            var firstRound = Game.Rounds.FirstOrDefault(r => r.IsCurrent);
            var gameRounds = new GameRoundsX {
                BindingContext = firstRound
            };

            Navigation.PushModalAsync(gameRounds);
        }