public void AddSlave(PokeBoxControl boxControl) { boxControl.master = this; slaves.Add(boxControl); }
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); } }