Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        void OnOptionnellesSelected(object sender, ToggledEventArgs e)
        {
            Switch             pSwitch       = sender as Switch;
            WarGearCombination configuration = pSwitch.BindingContext as WarGearCombination;

            configuration.Selected = !configuration.Selected;

            UpdateMembre();
            OnAppearing();
        }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
        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 + ")";
        }
Пример #7
0
        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;
             * }
             */
        }