示例#1
0
        /// <summary>
        /// Recomeça um jogo.
        /// </summary>
        private void RecomecarJogoPausado(JogoWrapperViewModel jogo)
        {
            if (jogo == null)
            {
                return;
            }

            Jogo = jogo;

            Jogo.BuracoAtual = Jogo.BuracoPausado;

            //Guardar numa lista todos os tees usados pelos jogadores para mostrar no picker.
            TeesUsados = new ObservableCollection <TeeWrapperViewModel>();
            Jogo.Jogadores.ToList().ForEach(p => TeesUsados.Add(p.Tee));

            TeeSelecionado = TeesUsados[0];

            //Atualizar posição dos pins.
            TeeBuracoDistanciaWrapperViewModel teeDistanciaInicial = TeeSelecionado.TeeBuracosDistancia.Where(p => p.Buraco.Numero.Equals(Jogo.BuracoAtual.Numero)).FirstOrDefault();

            BuracoPinPosicao = new Position(Jogo.BuracoAtual.Latitude, Jogo.BuracoAtual.Longitude);
            TeePinPosicao    = new Position(teeDistanciaInicial.Latitude, teeDistanciaInicial.Longitude);

            MeioPinPosicao = _geometriaService.ObterPosicaoMeio(BuracoPinPosicao, TeePinPosicao);

            //Atualizar as coordenadas do mapa para estarem voltadas para as coordenadas do primeiro buraco.
            CentroMapa = MapSpan.FromCenterAndRadius(new Position(MeioPinPosicao.Latitude, MeioPinPosicao.Longitude), Distance.FromMeters(80));
        }
示例#2
0
        /// <summary>
        /// Define a propriedade _jogo.
        /// </summary>
        /// <param name="jogo">jogo com o qual se vai definir a propriedade _jogo.</param>
        private void DefinirJogo(JogoWrapperViewModel jogo)
        {
            if (jogo == null)
            {
                return;
            }

            _jogo = jogo;
        }
示例#3
0
        /// <summary>
        /// Define a propriedade JogoPausado.
        /// </summary>
        /// <param name="jogo">Jogo com o qual se vai definir a propriedade JogoPausado.</param>
        private void DefinirJogoPausado(JogoWrapperViewModel jogo)
        {
            if (jogo == null)
            {
                return;
            }

            _jogoPausado = jogo;

            ((Command)VoltarParaJogoCommand).ChangeCanExecute();
        }
示例#4
0
        /// <summary>
        /// Inicializa a propriedade Jogo.
        /// </summary>
        /// <param name="jogo">Parâmetro cujo valor vai ser utilizado para inicializar a propriedade Jogo.</param>
        private void InicializarPropriedadeJogo(JogoWrapperViewModel jogo)
        {
            Jogo = jogo;

            Jogo.Jogadores.ToList().ForEach(p =>
            {
                if (!TeesUsados.Where(s => s.Nome.Equals(p.Tee.Nome)).Any())
                {
                    TeesUsados.Add(p.Tee);
                }
            });
        }
示例#5
0
        /// <summary>
        /// Abre um popup com o scorecard e um botão para enviar uma foto do mesmp.
        /// </summary>
        private async Task EnviarScores()
        {
            await base.NavigationService.IrParaScorecard();

            //Enviar jogador a enviar scorecard.
            JogoWrapperViewModel Jogo = null;

            MediadorMensagensService.Instancia.Registar(MediadorMensagensService.ViewModelMensagens.JogoAtual, p => { Jogo = p as JogoWrapperViewModel; });
            MediadorMensagensService.Instancia.Avisar(MediadorMensagensService.ViewModelMensagens.PedirPorJogo, null);
            MediadorMensagensService.Instancia.Avisar(MediadorMensagensService.ViewModelMensagens.JogoAtual, Jogo);
            MediadorMensagensService.Instancia.Avisar(MediadorMensagensService.ViewModelMensagens.JogadorAEnviarScorecard, Jogador);
        }
示例#6
0
        /// <summary>
        /// Executado quando o utilizador clica no botão "Start" após ter configurado o jogo.
        /// </summary>
        private async Task ComecarJogo()
        {
            ActivityIndicatorTool.ExecutarRoda();

            JogoWrapperViewModel novoJogo = null;

            novoJogo = await ConfigurarJogo();

            await base.NavigationService.IrParaJogo();

            MediadorMensagensService.Instancia.Avisar(MediadorMensagensService.ViewModelMensagens.NovoJogo, novoJogo);

            ActivityIndicatorTool.PararRoda();

            LimparMemoria();
        }
示例#7
0
        private async Task <JogoWrapperViewModel> ConfigurarJogo()
        {
            JogoWrapperViewModel novoJogo = null;

            //Obter os buracos do campo selecionado.
            await DefinirBuracosCampo();

            //Definir as distâncias de cada tee para cada buraco.
            await DefinirDistancias();

            //Definir as pontuações iniciais de cada jogador.
            DefinirPontuacoes();

            //Criar novo jogo.
            novoJogo = CriarNovoJogo();

            return(novoJogo);
        }