public override List <WarGearCombination> Evaluate(List <WarGearCombination> configs, string entry) { int indexSep = entry.IndexOf(":"); String right = entry.Substring(indexSep + 1); List <WarGearCombination> oldconfigs = new List <WarGearCombination>(); if (indexSep >= 0) { //On retire la partie de gauche String left = entry.Substring(0, indexSep); List <WarGearCombination> confGauche = new GlobalNode().Evaluate(configs, left); foreach (WarGearCombination cg in confGauche) { foreach (WarGearCombination old in configs) { WarGearCombination copy = old.Copy(); foreach (Weapon arme in cg.Weapons) { copy.Weapons.RemoveAll(a => a.Id == arme.Id); } if (copy.Weapons.Count + cg.Weapons.Count == old.Weapons.Count) { oldconfigs.Add(copy); } } } } else { //recopie sans modif foreach (WarGearCombination old in configs) { WarGearCombination copy = old.Copy(); oldconfigs.Add(copy); } } List <WarGearCombination> conf = new List <WarGearCombination>(); //On ajoute la partie droite List <WarGearCombination> confDroite = new GlobalNode().Evaluate(configs, right); foreach (WarGearCombination old in oldconfigs) { foreach (WarGearCombination droite in confDroite) { WarGearCombination copy = old.Copy(); foreach (Weapon arme in droite.Weapons) { copy.Weapons.Add(arme); } conf.Add(copy); } } return(conf); }
public override List <WarGearCombination> Evaluate(List <WarGearCombination> configs, string entry) { Weapon arme = KTContext.Db.Weapons.Find(entry); List <WarGearCombination> conf = new List <WarGearCombination>(); WarGearCombination copy = new WarGearCombination(); copy.Weapons.Add(arme); conf.Add(copy); return(conf); }
void OnOptionnellesSelected(object sender, ToggledEventArgs e) { Switch pSwitch = sender as Switch; WarGearCombination configuration = pSwitch.BindingContext as WarGearCombination; configuration.Selected = !configuration.Selected; UpdateMembre(); OnAppearing(); }
void OnConfigSelected(object sender, ToggledEventArgs e) { Switch pSwitch = sender as Switch; WarGearCombination configuration = pSwitch.BindingContext as WarGearCombination; PossibleSwap changementPossible = (PossibleSwap)BindingContext; changementPossible.WarGearCombinations.Where(c => c.Selected).ForEach(c => c.Selected = false); configuration.Selected = true; UpdateMembre(); OnAppearing(); }
public override List <WarGearCombination> Evaluate(List <WarGearCombination> configs, string entry) { int indexSep = entry.IndexOf("&"); String left = entry.Substring(0, indexSep); String right = entry.Substring(indexSep + 1); List <WarGearCombination> newconf = new List <WarGearCombination>(); List <WarGearCombination> confGauche; if (left.Length > 0) { confGauche = new GlobalNode().Evaluate(configs, left); } else { confGauche = new List <WarGearCombination>(); foreach (WarGearCombination config in configs) { confGauche.Add(config.Copy()); } } //On ajoute la partie droite List <WarGearCombination> confDroite = new GlobalNode().Evaluate(configs, right); foreach (WarGearCombination cg in confGauche) { foreach (WarGearCombination cd in confDroite) { WarGearCombination newc = new WarGearCombination(); newc.Weapons.AddRange(cd.Weapons); newc.Weapons.AddRange(cg.Weapons); newconf.Add(newc); } } return(newconf); }
protected override void OnAppearing() { base.OnAppearing(); PossibleSwap cp = PossibleSwap.Create(membreId); BindingContext = cp; if (listConfigView.Count != cp.WarGearCombinations.Count) { LayoutConfig.Children.Clear(); foreach (WarGearCombination config in cp.WarGearCombinations) { ConfigurationView configurationView = new ConfigurationView(this, OnConfigSelected); LayoutConfig.Children.Add(configurationView); configurationView.BindingContext = config; configurationView.OnAppearing(); listConfigView.Add(configurationView); } } else { for (int i = 0; i < listConfigView.Count; i++) { listConfigView[i].BindingContext = cp.WarGearCombinations[i]; listConfigView[i].OnAppearing(); } } if (listOptionnellesView.Count != cp.OptionalWeapons.Count) { LayoutOptionnelles.Children.Clear(); foreach (WarGearCombination config in cp.OptionalWeapons) { ConfigurationView configurationView = new ConfigurationView(this, OnOptionnellesSelected); LayoutOptionnelles.Children.Add(configurationView); configurationView.BindingContext = config; configurationView.OnAppearing(); listOptionnellesView.Add(configurationView); } } else { for (int i = 0; i < listOptionnellesView.Count; i++) { listOptionnellesView[i].BindingContext = cp.OptionalWeapons[i]; listOptionnellesView[i].OnAppearing(); } } if (listFixeView.Count != cp.FixedWeapons.Count) { LayoutFixe.Children.Clear(); foreach (Weapon arme in cp.FixedWeapons) { WarGearCombination configuration = new WarGearCombination(); configuration.Weapons.Add(arme); ConfigurationView configurationView = new ConfigurationView(this, null); LayoutFixe.Children.Add(configurationView); configurationView.BindingContext = configuration; configurationView.OnAppearing(); listFixeView.Add(configurationView); } } if (cp.WarGearCombinations.Count == 0) { LayoutConfig.IsVisible = false; ConfigLabel.IsVisible = false; } if (cp.OptionalWeapons.Count == 0) { LayoutOptionnelles.IsVisible = false; ArmesOptionnellesLabel.IsVisible = false; ArmesOptionnellesSep.IsVisible = false; } if (cp.FixedWeapons.Count == 0) { LayoutFixe.IsVisible = false; ArmesFixeLabel.IsVisible = false; ArmesFixeSep.IsVisible = false; } Title = cp.Member.Name + " (" + cp.Member.Cost + ")"; }
public void OnAppearing() { WarGearCombination configuration = BindingContext as WarGearCombination; if (configuration == null) { return; } Label.Text = configuration.Resume; if (OnSwitch != null) { Switch.Toggled -= OnSwitch; Switch.IsToggled = configuration.Selected; Switch.Toggled += OnSwitch; } else { Switch.IsVisible = false; } /* * * int fontSize = 15; * int line = 0; * var backgroundColor = Color.LightGray; * Configuration configuration = BindingContext as Configuration; * if (configuration == null) * { * configuration = new Configuration(); * configuration.Armes = new List<Arme>(); * configuration.Armes.Add((Arme)BindingContext); * Switch.IsVisible = false; * } * if (configuration.Armes.Count == 0) * return; * for(int i = 0; i < configuration.Armes.Count; i++) * { * configuration.Armes[i] = KTContext.Db.Armes.Where(a => a.Id == configuration.Armes[i].Id) * .Include(a => a.ProfileArmes) * .ThenInclude(pa => pa.TypeArme) * .First(); * } * * ArmeGrid.RowDefinitions.Clear(); * ArmeGrid.ColumnDefinitions.Clear(); * ArmeGrid.Children.Clear(); * * ArmeGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); * ArmeGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(2, GridUnitType.Star) }); * ArmeGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); * ArmeGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); * ArmeGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); * ArmeGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); * ArmeGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = "Arme" }, 0, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = "Portée" }, 1, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = "Type" }, 2, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = "F" }, 3, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = "PA" }, 4, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = "D" }, 5, line); * line++; * backgroundColor = ArmeGrid.BackgroundColor; * * foreach (var arme in configuration.Armes.Where(a => !a.IsEquipement())) * { * string prefix = ""; * if (arme.ProfileArmes.Count > 1) * { * ArmeGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = arme.Nom }, 0, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = arme.DescriptionAdditionnelle }, 1, 6, line, line + 1); * line++; * prefix = " - "; * } * * foreach (var pArme in arme.ProfileArmes) * { * ArmeGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = prefix + pArme.Nom }, 0, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = pArme.Portee.ToString() }, 1, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = pArme.Type }, 2, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = pArme.F }, 3, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = pArme.PA }, 4, line); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = pArme.D }, 5, line); * line++; * } * * if (backgroundColor == Color.LightGray) * backgroundColor = ArmeGrid.BackgroundColor; * else * backgroundColor = Color.LightGray; * } * * foreach (var arme in configuration.Armes.Where(a => a.IsEquipement())) * { * ArmeGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) }); * ArmeGrid.Children.Add(new Label { BackgroundColor = backgroundColor, FontSize = fontSize, Text = arme.Nom }, 0, 6, line, line + 1); * line++; * * if (backgroundColor == Color.LightGray) * backgroundColor = ArmeGrid.BackgroundColor; * else * backgroundColor = Color.LightGray; * } */ }