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