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); } }
public void AddSlave(PokeBoxControl slave) { slave.master = this; slave.Mode = mode; slave.IsPickupMode = pickupMode; slave.IsSummaryMode = summaryMode; slaves.Add(slave); }
public void RemoveSlave(PokeBoxControl slave) { slaves.Remove(slave); }
public PokeBoxTagStructure(PokeBoxControl control, int boxIndex) { this.Control = control; this.BoxIndex = boxIndex; }