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);
        }
示例#2
0
        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);
        }
示例#3
0
 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);
 }
示例#7
0
        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);
            }
        }