private void ReorderModifiers(CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> modifiers) { if (pushedPage != null) { return; } var ri = new ReorderIntModifiers(); pushedPage = ri; var items = new CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum>(); foreach (var item in modifiers) { items.Add(item); } ri.Init(items, (reordered) => { modifiers.Clear(); foreach (var item in reordered) { modifiers.Add(item as CharacterSheet.IntModifier); } }); Navigation.PushAsync(pushedPage); }
private void EditModifier(CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> modifiers, CharacterSheet.IntModifier modifier) { if (pushedPage != null) { return; } var page = new EditIntModifier(); page.Init(sheet, modifiers, modifier, allowUseAbilities); pushedPage = page; Navigation.PushAsync(page); }
public void Init(CharacterSheet sheet, CharacterSheet.ValueWithIntModifiers source, string title, string valueName, bool saveCharacter, bool allowUseAbilities = true) { Title = title; ValueName.Text = valueName; this.allowUseAbilities = allowUseAbilities; if (source == null) { return; } this.sheet = sheet; this.source = source; this.saveCharacter = saveCharacter; modifiers = source.modifiers.Clone as CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum>; Value.Text = source.baseValue.ToString(); UpdateView(); }
private void EditModifier(CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> modifiers, CharacterSheet.IntModifier modifier) { if (pushedPage != null) { return; } var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } var page = new EditIntModifier(); page.Init(sheet, modifiers, modifier); pushedPage = page; Navigation.PushAsync(page); }
public void Init(CharacterSheet sheet, CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> modifiersList, CharacterSheet.IntModifier modifier, bool allowUseAbilities = true) { this.sheet = sheet; this.modifiersList = modifiersList; source = modifier; if (modifier != null) { this.modifier = modifier.Clone as CharacterSheet.IntModifier; } else { this.modifier = new CharacterSheet.IntModifier(); } InitControls(allowUseAbilities); IsActive.IsChecked = this.modifier.IsActive; ItemMustBeActive.IsChecked = this.modifier.mustBeActive; ModifierValue.Text = this.modifier.value.ToString(); ModifierName.Text = this.modifier.Name; Delete.IsEnabled = source != null; UpdateView(); }
private void EditModifier(CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> modifiers) { EditModifier(modifiers, null); }
public static void FillIntMLGrid(Grid grid, CharacterSheet sheet, CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> modifiers, string title, Action <CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> > addModifier, Action <CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum>, CharacterSheet.IntModifier> editModifier, Action <CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum> > reorderModifiers, Action <CharacterSheet.ModifiersList <CharacterSheet.IntModifier, int, CharacterSheet.IntSum>, CharacterSheet.IntModifier> activateModifier) { grid.Children.Clear(); var stack = new StackLayout() { Orientation = StackOrientation.Horizontal, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, }; if ((reorderModifiers != null) && modifiers.Count > 1) { var reorderModifiersButton = new Button() { FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), TextColor = Color.Black, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.Start, Text = "Reorder", }; reorderModifiersButton.Clicked += (s, e) => reorderModifiers(modifiers); stack.Children.Add(reorderModifiersButton); } var stackTitle = CreateLabel(title, TextAlignment.Center); stack.Children.Add(stackTitle); if (addModifier != null) { var addModifierButton = new Button() { FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), TextColor = Color.Black, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.End, Text = "Add", }; addModifierButton.Clicked += (s, e) => addModifier(modifiers); stack.Children.Add(addModifierButton); } grid.Children.Add(stack, 0, 3, 0, 1); var count = modifiers.Count; if (count <= 0) { return; } grid.Children.Add(CreateLabel("Active", TextAlignment.Center), 0, 1); grid.Children.Add(CreateLabel("Value", TextAlignment.Center), 1, 1); grid.Children.Add(CreateLabel("Name", TextAlignment.Center), 2, 1); for (var i = 0; i < count; i++) { var index = i + 2; var t = modifiers[i]; var active = new CheckBox() { HorizontalOptions = LayoutOptions.CenterAndExpand, IsChecked = t.IsActive, }; active.CheckedChanged += (s, e) => { t.active = active.IsChecked; if (activateModifier != null) { activateModifier.Invoke(modifiers, t); } }; grid.Children.Add(active, 0, index); var value = CreateFrame(t.GetValue(sheet).ToString()); if (editModifier != null) { var valueTapped = new TapGestureRecognizer(); valueTapped.Tapped += (s, e) => editModifier.Invoke(modifiers, t); value.GestureRecognizers.Add(valueTapped); } grid.Children.Add(value, 1, index); var name = CreateFrame(t.AsString(sheet)); if (editModifier != null) { var nameTapped = new TapGestureRecognizer(); nameTapped.Tapped += (s, e) => editModifier.Invoke(modifiers, t); name.GestureRecognizers.Add(nameTapped); } grid.Children.Add(name, 2, index); } }