public override void Shown(WindowEventArgs args) { if (args == null || args.Player < 0 || args.Player > 2) { throw new ArgumentException(nameof(WindowEventArgs.Player)); } // We're already working on things if (BackgroundWorker.IsBusy) { return; } // Load newest config _player = args.Player; var teamConfig = _player == 1 ? _config.Value.Options.PlayerOne.Team : _config.Value.Options.PlayerTwo.Team; _workingConfig.MemberIds.Clear(); _workingConfig.MemberIds.AddRange(teamConfig.MemberIds); // Set New buttons if (!BackgroundWorkerTeam.IsBusy) { BackgroundWorkerTeam.RunWorkerAsync(); } BackgroundWorker.RunWorkerAsync(); }
private void ItemSelcted(object sender, ItemSelectedEventArgs args) { if (_ignoreFiredSelectionEventsFlag) { return; } var button = sender as SpriteButton; var idx = button.Index + 1; // Convert back from zero based to pokemon 1-based id if (args.Selected && _workingConfig.MemberIds.All(id => id != idx)) { if (_workingConfig.MemberIds.Count == 6) { _ignoreFiredSelectionEventsFlag = true; var popped = _selected.Pop(); popped.Checked = false; _workingConfig.MemberIds.Remove(popped.Index + 1); // Convert back from zero based to pokemon 1-based id _ignoreFiredSelectionEventsFlag = false; } _workingConfig.MemberIds.Add(idx); _selected.Push(button); } else if (!args.Selected && _workingConfig.MemberIds.Any(id => id == idx)) { _workingConfig.MemberIds.Remove(idx); } if (!BackgroundWorkerTeam.IsBusy) { BackgroundWorkerTeam.RunWorkerAsync(); } }