/// <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)); }
/// <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; }
/// <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(); }
/// <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); } }); }
/// <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); }
/// <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(); }
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); }