/**
         * This method is executed when the page is loaded
         * */
        protected override async void OnAppearing()
        {
            base.OnAppearing();
            Func <Club, bool> f = (c => true);

            listviewclub.ItemsSource = await GestionGolfs.getListClubsAsync(f);
        }
Exemplo n.º 2
0
        /**
         * This method is executed when the page is loaded
         */
        protected override async void OnAppearing()
        {
            base.OnAppearing();
            Func <GolfCourse, bool> f   = (c => true);
            List <GolfCourse>       res = await GestionGolfs.getListGolfsAsync(f);

            ListGolfCourse.ItemsSource = res;
        }
Exemplo n.º 3
0
        protected override async void OnAppearing()
        {
            base.OnAppearing();
            List <GolfCourse> res = await GestionGolfs.getListGolfsAsync(null);

            //Update the list of golf courses
            gclvm          = new GolfCourseListViewModel(res);
            BindingContext = gclvm;
        }
Exemplo n.º 4
0
        /*
         * Called when a golf course is picked by the user
         * This method ask the user whether he wants to load a not ended game or start a new one. Then the game is start
         */
        private async void onGolfSelection(object sender, EventArgs e)
        {
            var g = ListGolfCourse.SelectedItem as GolfCourse;

            if (p == null)//if not in game part (if in stat part)
            {
                if (this.golfCourseStatPage == null)
                {
                    this.golfCourseStatPage = new GolfCourseStatPage(g);
                }
                else
                {
                    this.golfCourseStatPage.changeGolfCourse(g);
                }
                await Navigation.PushModalAsync(this.golfCourseStatPage, true);
            }
            else
            {
                p.GolfCourse = g;
                Func <Club, bool> f            = (c => true);
                List <Club>       clubselected = await GestionGolfs.getListClubsAsync(f);

                clubselected.RemoveAll(c => c.selected == false);
                //Checks if the user has at least one club on his bag
                if (clubselected.Count == 0)
                {
                    await this.DisplayAlert("Erreur", "Vous n'avez aucun club dans votre sac. Veuillez en choisir au moins un dans le page 'Profil'", "ok");
                }
                else
                {
                    p.Clubs = clubselected;
                    List <ScorePartie> scoreParties = await StatistiquesGolf.getNotFinishedGames(g);

                    if (scoreParties.Count > 0)
                    {
                        var newGame = await this.DisplayAlert("Lancement d'une partie", "Voulez vous lancer une nouvelle partie ou charger une existante ?", "Nouvelle partie", "Charger une existante");

                        if (newGame)
                        {
                            await Navigation.PushAsync(new Game.MainGamePage(p), false);
                        }
                        else//if load a not ended game then show the list of not ended games
                        {
                            await Navigation.PushAsync(new ViewPartieListPage(2, scoreParties, p), false);
                        }
                    }
                    else  //if no not ended game then start a new one directly
                    {
                        await Navigation.PushAsync(new Game.MainGamePage(p), false);
                    }
                }
            }
        }
        /**
         * When the index is completed by the user, update the profile in the database and the average distance of each club
         */
        private async void OnIndexCompleted(object sender, EventArgs e)
        {
            LocalUser.Index = double.Parse(((Entry)sender).Text);
            DBconnection.Update(LocalUser);
            List <Club> clubs = await GestionGolfs.getListClubsAsync(null);

            List <Club> xmlClubs = GolfXMLReader.getListClubFromXMLFiles();

            foreach (Club club in clubs)
            {
                club.DistanceMoyenne = xmlClubs.Find(c => c.Name.Equals(club.Name)).DistanceMoyenne;
            }
            DBconnection.UpdateAll(clubs);
        }
Exemplo n.º 6
0
        /**
         * Updates the distances on the top right hand corner of the screen
         * OnAppearing : true if the method is called in the OnAppearing method, false otherwise
         */
        private void updateDistance(bool OnAppearing = false)
        {
            partie.updateUICircle();

            dUserTarget   = map.getDistanceUserTarget();
            distTrou.Text = string.Format("{0:0.0}", map.getDistanceUserHole()) + "m";
            var distUsertarget = map.getDistanceUserTarget();
            var distTargetHole = map.getDistanceTargetHole();

            distTarget.Text = string.Format("{0:0.0}", distUsertarget) + " + " + string.Format("{0:0.0}", distTargetHole) + "m";
            if (dUserTargetTemp == -1)
            {
                dUserTargetTemp = dUserTarget;
            }

            //if the target has moved more than 5 meters or if the page was just refreshed
            if (Math.Abs(dUserTarget - dUserTargetTemp) > 5 || OnAppearing)
            {
                dUserTargetTemp = dUserTarget;
                Club c = GestionGolfs.giveMeTheBestClubForThatDistance(partie.Clubs, dUserTarget);
                setCurrentClub(c);
            }
        }
Exemplo n.º 7
0
        private double dUserTargetTemp;//used to chose a club when the target moved more than 10 meters

        public MainGamePage(Partie partie)
        {
            InitializeComponent();

            forceVent.Margin          = new Thickness(35, 10, 0, 0);
            windImg.Margin            = new Thickness(35, 5, 0, 0);
            windImg.HeightRequest     = MainPage.responsiveDesign(25);
            ball.HeightRequest        = MainPage.responsiveDesign(91);
            ball.Margin               = MainPage.responsiveDesign(10);
            radar.HeightRequest       = MainPage.responsiveDesign(92);
            radar.Margin              = MainPage.responsiveDesign(10);
            load.HeightRequest        = MainPage.responsiveDesign(92);
            load.Margin               = MainPage.responsiveDesign(10);
            backToRadar.HeightRequest = MainPage.responsiveDesign(30);
            backToRadar.Margin        = new Thickness(MainPage.responsiveDesign(215), 0, 0, MainPage.responsiveDesign(10));
            backToBall.HeightRequest  = MainPage.responsiveDesign(30);
            backToBall.Margin         = new Thickness(MainPage.responsiveDesign(215), 0, 0, MainPage.responsiveDesign(10));
            clubs.HeightRequest       = MainPage.responsiveDesign(45);
            clubs.Margin              = new Thickness(MainPage.responsiveDesign(15), 0, 0, 0);
            ball_in.HeightRequest     = MainPage.responsiveDesign(45);
            ball_in.Margin            = new Thickness(0, 0, MainPage.responsiveDesign(14), MainPage.responsiveDesign(7));
            numclub.TextColor         = Color.FromHex("009245");
            numclub.Margin            = new Thickness(MainPage.responsiveDesign(34), 0, 0, MainPage.responsiveDesign(17));
            numclub.FontSize          = MainPage.responsiveDesign(20);

            numcoup.FontSize      = MainPage.responsiveDesign(40);
            numcoup.Margin        = MainPage.responsiveDesign(-5);
            parTrou.FontSize      = MainPage.responsiveDesign(15);
            parTrou.Margin        = MainPage.responsiveDesign(38);
            distTrou.FontSize     = MainPage.responsiveDesign(13);
            distTrou.Margin       = new Thickness(MainPage.responsiveDesign(7), 0, 0, 0);
            distTarget.FontSize   = MainPage.responsiveDesign(10);
            distTarget.Margin     = new Thickness(0, MainPage.responsiveDesign(-4), 0, 0);
            distGrid.Margin       = new Thickness(0, MainPage.responsiveDesign(3), MainPage.responsiveDesign(15), 0);
            forceVent.FontSize    = MainPage.responsiveDesign(12);
            forceVent.Margin      = new Thickness(MainPage.responsiveDesign(28), MainPage.responsiveDesign(23), 0, 0);
            windImg.Margin        = new Thickness(MainPage.responsiveDesign(42), MainPage.responsiveDesign(8), 0, 0);
            windImg.HeightRequest = MainPage.responsiveDesign(15);
            numclub.IsEnabled     = false;

            clubselection.BackgroundColor   = Color.FromRgba(0, 0, 0, 0.6);
            clubselection.HeightRequest     = MainPage.responsiveDesign(300);
            clubselection.WidthRequest      = MainPage.responsiveDesign(300);
            clubselection.CornerRadius      = MainPage.responsiveDesign(25);
            clubselection.Margin            = new Thickness(MainPage.responsiveDesign(10), 0, 0, MainPage.responsiveDesign(135));
            ListClubsPartie.BackgroundColor = Color.Transparent;
            ListClubsPartie.HeightRequest   = MainPage.responsiveDesign(165);
            ListClubsPartie.WidthRequest    = MainPage.responsiveDesign(300);
            ListClubsPartie.Margin          = new Thickness(MainPage.responsiveDesign(10), MainPage.responsiveDesign(167), MainPage.responsiveDesign(42), MainPage.responsiveDesign(135));

            ListHole.BackgroundColor = Color.Transparent;
            ListHole.HeightRequest   = MainPage.responsiveDesign(300);
            ListHole.WidthRequest    = MainPage.responsiveDesign(100);
            ListHole.Margin          = new Thickness(MainPage.responsiveDesign(225), MainPage.responsiveDesign(74), MainPage.responsiveDesign(10), MainPage.responsiveDesign(120));
            ListHole.RowHeight       = 40;

            cardBackground.HeightRequest   = MainPage.responsiveDesign(50);
            cardBackground.WidthRequest    = MainPage.responsiveDesign(50);
            cardBackground.CornerRadius    = 100;
            cardBackground.BackgroundColor = Color.FromRgba(0, 0, 0, 0.5);
            score.HeightRequest            = MainPage.responsiveDesign(100);
            score.WidthRequest             = MainPage.responsiveDesign(100);

            GestionGolfs.calculAverageAsync(partie.Clubs);//Load average club distances

            dUserTargetTemp = -1;
            hideCard();
            hideClubs();
            showBall();
            backToRadar.IsVisible = false;
            backToBall.IsVisible  = false;

            holFini     = 1;
            this.partie = partie;
            map.MoveToRegion(
                MapSpan.FromCenterAndRadius(
                    new Position(48.1116654, -1.6843768), Distance.FromMiles(30)));

            BindingContext     = partie;
            partie.CurrentClub = partie.Clubs.First();
            LoadClubIcon(partie.CurrentClub);
            //message which come from the markerListenerDrag,
            //when the target pin is moved => update the display of the distance
            MessagingCenter.Subscribe <CustomPin>(this, CustomPin.UPDATEDMESSAGE, (sender) => {
                updateDistance();
            });
            MessagingCenter.Subscribe <System.Object>(this, CustomPin.UPDATEDMESSAGE_CIRCLE, (sender) => {
                updateDistance();
            });
            //this message details the state of the game 0 if hole isn't finished, 1 otherwise and 2 if the game is finished
            MessagingCenter.Subscribe <HoleFinishedPage, int>(this, "ReallyFinit", (sender, val) => {
                holFini = val;
            });
            updateScore();
            loadCard();
        }