コード例 #1
0
 public void AddSlave(PokeBoxControl boxControl)
 {
     boxControl.master = this;
     slaves.Add(boxControl);
 }
コード例 #2
0
        private void UpdateSlaves(double newWidth)
        {
            double sizeAvailable  = newWidth - 104;
            double boxWidth       = 156;
            double spacing        = 6;
            int    boxesAvailable = Math.Max(1, Math.Min(pokePC != null ? (int)pokePC.NumBoxes : 1, (int)Math.Floor((sizeAvailable + spacing) / (boxWidth + spacing))));

            if (boxesVisible != boxesAvailable)
            {
                stackPanelBoxes.Width = boxesAvailable * (boxWidth + spacing) - spacing;

                if (boxesVisible < boxesAvailable)
                {
                    for (int i = boxesVisible; i < boxesAvailable; i++)
                    {
                        PokeBoxControl slave = new PokeBoxControl();
                        slave.Margin        = new Thickness(spacing, 0, 0, 0);
                        slave.PokemonViewer = pokemonViewer;
                        slaves.Add(slave);
                        stackPanelBoxes.Children.Add(slave);
                        if (pokeBoxControlMaster.Master != null)
                        {
                            pokeBoxControlMaster.Master.AddSlave(slave);
                        }
                        else
                        {
                            pokeBoxControlMaster.AddSlave(slave);
                        }
                        slave.MouseMoveTarget = ((FrameworkElement)this.Parent).Parent as UIElement;
                    }
                }
                else if (boxesVisible > boxesAvailable)
                {
                    for (int i = boxesVisible - 1; i >= boxesAvailable; i--)
                    {
                        if (pokeBoxControlMaster.Master != null)
                        {
                            pokeBoxControlMaster.Master.RemoveSlave(slaves[i - 1]);
                        }
                        else
                        {
                            pokeBoxControlMaster.RemoveSlave(slaves[i - 1]);
                        }
                        slaves.RemoveAt(i - 1);
                        stackPanelBoxes.Children.RemoveAt(i);
                    }
                }
                boxesVisible = boxesAvailable;
            }

            if (pokePC != null)
            {
                pokeBoxControlMaster.LoadBox(GetWrappedBox(boxIndex + BoxOffset), gameIndex);
                for (int i = 0; i < slaves.Count; i++)
                {
                    slaves[i].LoadBox(GetWrappedBox(boxIndex + i + 1 + BoxOffset), gameIndex);
                }
                pokeBoxControlMaster.UnhighlightPokemon();
                if (gotoPokemon != null)
                {
                    GotoPokemon(gotoPokemon);
                }
                //if (partyMode)
                //	pokeBoxControlParty.LoadBox(pokePC.Party, gameIndex);
            }
        }