You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
266 lines
10 KiB
266 lines
10 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using OrderStacks.IO;
|
|
using OrderStacks.Resx;
|
|
using Xamarin.Forms;
|
|
|
|
namespace OrderStacks.view
|
|
{
|
|
public partial class GamePreparationPage : ContentPage
|
|
{
|
|
|
|
public List<string> listGameMode = new List<string> { AppResources.TypeValueWhole, AppResources.TypeValueRelative, AppResources.TypeValueTenthFract, AppResources.TypeValueHundredthFract, AppResources.TypeValueThousandthFract, AppResources.TypeValuefractionated, AppResources.TypeValueTenth, AppResources.TypeValueHundredth };
|
|
|
|
/**
|
|
* Constructeur de la page *
|
|
* Charge les derniers paramètres de l'utilisateur sur le nom, le nombre de joueur, le nombre de pile, le valeur en jeu ainsi que le nombre de cartes *
|
|
* Bind les valeurs des slider sur les labels pour rendre un retour des valeurs choisis à l'utilisateur **/
|
|
public GamePreparationPage()
|
|
{
|
|
InitializeComponent();
|
|
|
|
NavigationPage.SetHasNavigationBar(this, false);
|
|
|
|
LoadParameterName();
|
|
|
|
nbPlayersChoose.SetBinding(Label.TextProperty, new Binding("Value", source: PlayerSelecter));
|
|
nbstacks.SetBinding(Label.TextProperty, new Binding("Value", source: SelectNbStack));
|
|
nbCard.SetBinding(Label.TextProperty, new Binding("Value", source: SelectNbCard));
|
|
|
|
LoadParameterNbPlayerGamePreparation();
|
|
|
|
SelectMode.ItemsSource = listGameMode;
|
|
LoadParameterGameModeValueGamePreparation();
|
|
|
|
|
|
LoadParameterNbStacksGamePreparation();
|
|
|
|
|
|
LoadParameterNbCardsGamePreparation();
|
|
|
|
}
|
|
|
|
/**
|
|
* Permet de retourner sur la page d'accueil grâce à l'image de la flèche et sauvegarde les choix de l'utilisateur lorsqu'il reviendra sur la page GamePreparationPage *
|
|
**/
|
|
private async void Back(object sender, EventArgs e)
|
|
{
|
|
IOGamePreparation.SaveParamaterGamePreparationNbPlayers((int)PlayerSelecter.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationGameModeValue(SelectMode.SelectedIndex);
|
|
IOGamePreparation.SaveParameterGamePreparationNbStacks((int)SelectNbStack.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationNbCards((int)SelectNbCard.Value);
|
|
if ((int)PlayerSelecter.Value == 1)
|
|
{
|
|
IOGamePreparation.SaveParameterGamePreparationName(FirstEntry.Text);
|
|
}
|
|
await Navigation.PopToRootAsync();
|
|
}
|
|
|
|
/**
|
|
* Permet de retourner sur la page d'accueil grâce au bouton back sur android et sauvegarde les choix de l'utilisateur lorsqu'il reviendra sur la page GamePreparationPage *
|
|
**/
|
|
protected override bool OnBackButtonPressed()
|
|
{
|
|
IOGamePreparation.SaveParamaterGamePreparationNbPlayers((int)PlayerSelecter.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationGameModeValue(SelectMode.SelectedIndex);
|
|
IOGamePreparation.SaveParameterGamePreparationNbStacks((int)SelectNbStack.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationNbCards((int)SelectNbCard.Value);
|
|
if ((int)PlayerSelecter.Value == 1)
|
|
{
|
|
IOGamePreparation.SaveParameterGamePreparationName(FirstEntry.Text);
|
|
}
|
|
return base.OnBackButtonPressed();
|
|
}
|
|
|
|
|
|
/**
|
|
* Permet d'aller sur la page de jeu et de commencer une partie avec les valeurs choisis *
|
|
* Sauavegarde les valeurs choisis lors du retour sur la page GamePreparationPage *
|
|
*
|
|
* Return un message si le pseudo définit par l'utilisateur est incorrecte *
|
|
**/
|
|
private async void Play(object sender, EventArgs args)
|
|
{
|
|
List<string> playersNames = new List<string>();
|
|
|
|
|
|
for (int i = 1; i < NameList.Children.Count; i++)
|
|
{
|
|
playersNames.Add(((Entry)NameList.Children[i]).Text);
|
|
if (string.IsNullOrWhiteSpace(playersNames[playersNames.Count - 1]))
|
|
{
|
|
await DisplayAlert(AppResources.WrongPseudo, AppResources.StrEnterPseudo, AppResources.StrCloseWind);
|
|
return;
|
|
}
|
|
}
|
|
IOGamePreparation.SaveParamaterGamePreparationNbPlayers((int)PlayerSelecter.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationGameModeValue(SelectMode.SelectedIndex);
|
|
IOGamePreparation.SaveParameterGamePreparationNbStacks((int)SelectNbStack.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationNbCards((int)SelectNbCard.Value);
|
|
IOGamePreparation.SaveParameterGamePreparationName(FirstEntry.Text);
|
|
await Navigation.PushAsync(new MainPage(playersNames, (int)SelectNbStack.Value, (int)SelectMode.SelectedIndex, (int)SelectNbCard.Value));
|
|
}
|
|
|
|
private bool canModif = true;
|
|
|
|
/**
|
|
* Charge le nom du dernier joueur si le nombre de joueur choisi est égale à 1 *
|
|
* Si le nombre de joueur choisi est supérieur à 1, alors ouvre un nombre d'entrées égale au à la valeur du slider du nombre de joueur *
|
|
**/
|
|
private void ChangedPseudo(object sender, EventArgs args)
|
|
{
|
|
if (canModif)
|
|
{
|
|
canModif = false;
|
|
PlayerSelecter.Value = Math.Round(PlayerSelecter.Value);
|
|
|
|
if ((int)PlayerSelecter.Value == 1)
|
|
{
|
|
LoadParameterName();
|
|
}
|
|
else
|
|
{
|
|
FirstEntry.Text = "";
|
|
}
|
|
|
|
while (NameList.Children.Count - 1 != (int)PlayerSelecter.Value)
|
|
{
|
|
if (NameList.Children.Count - 1 < (int)PlayerSelecter.Value)
|
|
{
|
|
|
|
Entry e = new Entry
|
|
{
|
|
Placeholder = "Pseudo",
|
|
BackgroundColor = (Color)Application.Current.Resources["Gold"],
|
|
WidthRequest = 200,
|
|
MinimumWidthRequest = 50,
|
|
HorizontalOptions = LayoutOptions.Center,
|
|
MaxLength = 18,
|
|
IsTextPredictionEnabled = false,
|
|
TextColor = Color.Black
|
|
};
|
|
|
|
NameList.Children.Add(e);
|
|
|
|
}
|
|
else
|
|
{
|
|
NameList.Children.RemoveAt(NameList.Children.Count - 1);
|
|
}
|
|
|
|
}
|
|
canModif = true;
|
|
}
|
|
}
|
|
/**
|
|
* Permet de choisir un nombre de pile à travers le slider *
|
|
* Si la valeur du slider est égale à 5 ou 7 alors le slider prendra la valeur soit de 4 soit de 6 *
|
|
**/
|
|
|
|
private void ChangedStacks(object sender, EventArgs args)
|
|
{
|
|
if (canModif)
|
|
{
|
|
canModif = false;
|
|
|
|
if (SelectNbStack.Value < 5)
|
|
{
|
|
SelectNbStack.Value = 4;
|
|
}
|
|
else if (SelectNbStack.Value < 7)
|
|
{
|
|
SelectNbStack.Value = 6;
|
|
}
|
|
else
|
|
{
|
|
SelectNbStack.Value = 8;
|
|
}
|
|
|
|
canModif = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Permet de choisir un nombre de carte à travers le slider *
|
|
* Si la valeur du slider est égale à 50 ou 70 ou 90 alors le slider prendra la valeur soit de 40 soit de 60 soit de 80 *
|
|
**/
|
|
private void ChangedNbCards(object sender, EventArgs args)
|
|
{
|
|
if (canModif)
|
|
{
|
|
canModif = false;
|
|
|
|
if (SelectNbCard.Value < 50)
|
|
{
|
|
SelectNbCard.Value = 40;
|
|
}
|
|
else if (SelectNbCard.Value < 70)
|
|
{
|
|
SelectNbCard.Value = 60;
|
|
}
|
|
else if (SelectNbCard.Value < 90)
|
|
{
|
|
SelectNbCard.Value = 80;
|
|
}
|
|
else
|
|
{
|
|
SelectNbCard.Value = 100;
|
|
}
|
|
canModif = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Méthode qui charge les paramètres de l'utilisateur sur le nombre de joueurs qui etait définit la dernière fois *
|
|
* Appel de la méthode LoadParameterGamePreparationNbPlayers de la classe IOGamePreparation *
|
|
**/
|
|
public void LoadParameterNbPlayerGamePreparation()
|
|
{
|
|
int nbJoueurs = IOGamePreparation.LoadParameterGamePreparationNbPlayers();
|
|
PlayerSelecter.Value = nbJoueurs;
|
|
}
|
|
|
|
/**
|
|
* Méthode qui charge les paramètres de l'utilisateur sur le mode de jeu qui etait définit la dernière fois *
|
|
* Appel de la méthode LoadParameterGamePreparationGameModeValue de la classe IOGamePreparation *
|
|
**/
|
|
public void LoadParameterGameModeValueGamePreparation()
|
|
{
|
|
int gameModeValue = IOGamePreparation.LoadParameterGamePreparationGameModeValue();
|
|
SelectMode.SelectedIndex = gameModeValue;
|
|
}
|
|
|
|
/**
|
|
* Méthode qui charge les paramètres de l'utilisateur sur le nombre de piles qui etait définit la dernière fois *
|
|
* Appel de la méthode LoadParamaterGamePreparationNbStacks de la classe IOGamePreparation *
|
|
**/
|
|
public void LoadParameterNbStacksGamePreparation()
|
|
{
|
|
int nbStackSer = IOGamePreparation.LoadParamaterGamePreparationNbStacks();
|
|
SelectNbStack.Value = nbStackSer;
|
|
}
|
|
/**
|
|
* Méthode qui charge les paramètres de l'utilisateur sur le nombre de cartes qui etait définit la dernière fois *
|
|
* Appel de la méthode LoadParameterGamePreparationNbCards de la classe IOGamePreparation *
|
|
**/
|
|
public void LoadParameterNbCardsGamePreparation()
|
|
{
|
|
int nbCards = IOGamePreparation.LoadParameterGamePreparationNbCards();
|
|
SelectNbCard.Value = nbCards;
|
|
}
|
|
|
|
/**
|
|
* Méthode qui charge les paramètres de l'utilisateur sur le dernier pseudo saisie définit la dernière fois *
|
|
* Appel de la méthode LoadNameFromGamePrepararion de la classe IOGamePreparation *
|
|
**/
|
|
public void LoadParameterName()
|
|
{
|
|
string pseudo = IOGamePreparation.LoadNameFromGamePrepararion();
|
|
FirstEntry.Text = pseudo;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|