private void UpdateWeaponGrid(WeaponGrid weaponGrid, CharacterSheet.WeaponItem item, int itemIndex) { var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } MainPage.SetTapHandler(weaponGrid.container, (s, e) => Weapon_DoubleTap(item), 2); #if EXPAND_SELECTED #if EXPAND_CHECKBOX if (weaponGrid.selectedHandler != null) { weaponGrid.selected.CheckedChanged -= weaponGrid.selectedHandler; } weaponGrid.selectedHandler = (s, e) => Weapon_CheckedChanged(item, e.Value); UpdateValue(weaponGrid.selected, item.selected); weaponGrid.selected.CheckedChanged += weaponGrid.selectedHandler; #if EXPAND_WITH_TAP MainPage.AddTapHandler(weaponGrid.container, (s, e) => Weapon_Tap(weaponGrid.selected), 1); #endif #else #if EXPAND_WITH_TAP MainPage.AddTapHandler(weaponGrid.container, (s, e) => Weapon_Tap(item), 1); #endif #endif #endif weaponGrid.name.FontAttributes = item.active ? FontAttributes.Bold : FontAttributes.None; UpdateValue(weaponGrid.name, item.AsString(sheet)); }
public void Weapon_Tap(CharacterSheet.WeaponItem weapon) { if (weapon == null) { return; } weapon.selected = !weapon.selected; CharacterSheetStorage.Instance.SaveCharacter(); UpdateView(); }
public void WeaponActive_CheckedChanged(CharacterSheet.WeaponItem item, bool value) { if (item == null) { return; } if (item.active == value) { return; } item.active = value; CharacterSheetStorage.Instance.SaveCharacter(); UpdateView(); }
public void Weapon_CheckedChanged(CharacterSheet.WeaponItem weapon, bool value) { if (weapon == null) { return; } if (weapon.selected == value) { return; } weapon.selected = value; CharacterSheetStorage.Instance.SaveCharacter(); UpdateView(); }
private void UpdateWeaponGrid(SelectedWeaponGrid weaponGrid, CharacterSheet.WeaponItem item, int itemIndex) { var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } #if EXPAND_CHECKBOX if (weaponGrid.selectedHandler != null) { weaponGrid.selected.CheckedChanged -= weaponGrid.selectedHandler; } weaponGrid.selectedHandler = (s, e) => Weapon_CheckedChanged(item, e.Value); UpdateValue(weaponGrid.selected, item.selected); weaponGrid.selected.IsChecked = item.selected; weaponGrid.selected.CheckedChanged += weaponGrid.selectedHandler; #endif if (weaponGrid.activeHandler != null) { weaponGrid.active.CheckedChanged -= weaponGrid.activeHandler; } weaponGrid.activeHandler = (s, e) => WeaponActive_CheckedChanged(item, e.Value); UpdateValue(weaponGrid.active, item.active); weaponGrid.active.IsChecked = item.active; weaponGrid.active.CheckedChanged += weaponGrid.activeHandler; UpdateValue(weaponGrid.name, item.name); UpdateValue(weaponGrid.attackBonus, item.AttackBonus(sheet)); UpdateValue(weaponGrid.critical, item.critical.AsString(sheet)); UpdateValue(weaponGrid.damage, item.Damage(sheet)); UpdateValue(weaponGrid.damageBonus, item.DamageBonus(sheet)); UpdateValue(weaponGrid.type, item.type); UpdateValue(weaponGrid.range, item.Range(sheet)); UpdateValue(weaponGrid.ammunition, item.ammunition.GetTotal(sheet).ToString()); UpdateValue(weaponGrid.special, item.special); UpdateValue(weaponGrid.weight, item.weight.GetTotal(sheet).ToString()); UpdateValue(weaponGrid.description, item.description); MainPage.SetTapHandler(weaponGrid.container, (s, e) => Weapon_DoubleTap(item), 2); #if EXPAND_WITH_TAP #if EXPAND_CHECKBOX MainPage.AddTapHandler(weaponGrid.container, (s, e) => Weapon_Tap(weaponGrid.selected), 1); #else MainPage.AddTapHandler(weaponGrid.container, (s, e) => Weapon_Tap(item), 1); #endif #endif }
public void Weapon_DoubleTap(CharacterSheet.WeaponItem item = null) { if (pushedPage != null) { return; } var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } var ew = new EditWeapon(); ew.InitEditor(item); pushedPage = ew; Navigation.PushAsync(pushedPage); }
public void InitEditor(ItemType item = null) { source = item; if (item == null) { this.item = new ItemType(); } else { this.item = item.Clone as ItemType; } ArmorActive.IsChecked = this.item.active; WeaponName.Text = this.item.name; WeaponType.Text = this.item.type; Special.Text = this.item.special; Description.Text = this.item.description; Delete.IsEnabled = source != null; UpdateView(); }
private void CreateWeaponGrid(CharacterSheet.WeaponItem item, int itemIndex) { if (item == null) { return; } var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } if (weaponGridsPool.Count > 0) { var weaponGrid = weaponGridsPool[0]; weaponGridsPool.RemoveAt(0); UpdateWeaponGrid(weaponGrid, item, itemIndex); var pos = #if EXPAND_SELECTED selectedWeaponGrids.Count + #endif weaponGrids.Count; weaponGrids.Add(weaponGrid); Weapon.Children.Insert(pos, weaponGrid.container); return; } #if USE_GRID var container = new Grid() { ColumnSpacing = 5, RowSpacing = 5, BackgroundColor = Color.LightGray, }; container.ColumnDefinitions = new ColumnDefinitionCollection() { new ColumnDefinition() { Width = GridLength.Auto }, new ColumnDefinition() { Width = GridLength.Star }, }; container.RowDefinitions = new RowDefinitionCollection() { new RowDefinition() { Height = GridLength.Auto }, }; #else var container = new StackLayout() { Orientation = StackOrientation.Horizontal, BackgroundColor = Color.LightGray, }; #endif var weaponNameFrame = CreateFrame(item.AsString(sheet)); weaponNameFrame.HorizontalOptions = LayoutOptions.FillAndExpand; var weaponName = weaponNameFrame.Content as Label; weaponName.FontAttributes = item.active ? FontAttributes.Bold : FontAttributes.None; MainPage.AddTapHandler(container, (s, e) => Weapon_DoubleTap(item), 2); #if EXPAND_SELECTED #if EXPAND_CHECKBOX var selectedcb = new CheckBox() { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, IsChecked = item.selected, }; EventHandler <CheckedChangedEventArgs> handler = (s, e) => Weapon_CheckedChanged(item, e.Value); selectedcb.CheckedChanged += handler; #if EXPAND_WITH_TAP MainPage.AddTapHandler(container, (s, e) => Weapon_Tap(selectedcb), 1); #endif #if USE_GRID container.Children.Add(selectedcb, 0, 0); #else container.Children.Add(selectedcb); #endif #else #if EXPAND_WITH_TAP MainPage.AddTapHandler(container, (s, e) => Weapon_Tap(item), 1); #endif #endif #endif #if USE_GRID container.Children.Add(weaponNameFrame, 1, 0); #else container.Children.Add(weaponNameFrame); #endif var newWeaponGrid = new WeaponGrid() { container = container, #if EXPAND_SELECTED && EXPAND_CHECKBOX selectedHandler = handler, selected = selectedcb, #endif name = weaponName, nameFrame = weaponNameFrame, }; var newpos = #if EXPAND_SELECTED selectedWeaponGrids.Count + #endif weaponGrids.Count; weaponGrids.Add(newWeaponGrid); Weapon.Children.Insert(newpos, newWeaponGrid.container); }
private void CreateSelectedWeaponGrid(CharacterSheet.WeaponItem item, int itemIndex) { if (item == null) { return; } var sheet = CharacterSheetStorage.Instance.selectedCharacter; if (sheet == null) { return; } if (selectedWeaponGridsPool.Count > 0) { var weaponGrid = selectedWeaponGridsPool[0]; selectedWeaponGridsPool.RemoveAt(0); UpdateWeaponGrid(weaponGrid, item, itemIndex); var pos = selectedWeaponGrids.Count; selectedWeaponGrids.Add(weaponGrid); Weapon.Children.Insert(pos, weaponGrid.container); return; } var grid = new Grid() { ColumnSpacing = 5, RowSpacing = 5, BackgroundColor = Color.LightGray, }; grid.ColumnDefinitions = new ColumnDefinitionCollection() { new ColumnDefinition() { Width = GridLength.Auto }, new ColumnDefinition() { Width = GridLength.Star }, }; const int count = 14; var rowDefinitions = new RowDefinitionCollection(); for (var i = 0; i < count; i++) { rowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); } grid.RowDefinitions = rowDefinitions; #if EXPAND_CHECKBOX var selectedcb = new CheckBox() { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, IsChecked = item.selected, }; EventHandler <CheckedChangedEventArgs> handler = (s, e) => Weapon_CheckedChanged(item, e.Value); selectedcb.CheckedChanged += handler; #endif var nameTitle = CreateLabel("Name:"); var nameStack = new StackLayout() { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Start, VerticalOptions = LayoutOptions.Center, }; #if EXPAND_CHECKBOX nameStack.Children.Add(selectedcb); #endif nameStack.Children.Add(nameTitle); var row = 0; var nameValue = CreateFrame(item.name); grid.Children.Add(nameStack, 0, row); grid.Children.Add(nameValue, 1, row); row += 1; var activeTitle = CreateLabel("Active:"); var activecb = new CheckBox() { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, IsChecked = item.active, IsEnabled = false, }; EventHandler <CheckedChangedEventArgs> activeHandler = (s, e) => WeaponActive_CheckedChanged(item, e.Value); activecb.CheckedChanged += activeHandler; grid.Children.Add(activeTitle, 0, row); grid.Children.Add(activecb, 1, row); row += 1; var attackBonusTitle = CreateLabel("Attack Bonus:"); var attackBonusValue = CreateFrame(item.AttackBonus(sheet)); grid.Children.Add(attackBonusTitle, 0, row); grid.Children.Add(attackBonusValue, 1, row); row += 1; var criticalTitle = CreateLabel("Critical:"); var criticalValue = CreateFrame(item.critical.AsString(sheet)); grid.Children.Add(criticalTitle, 0, row); grid.Children.Add(criticalValue, 1, row); row += 1; var damageTitle = CreateLabel("Damage:"); var damageValue = CreateFrame(item.Damage(sheet)); grid.Children.Add(damageTitle, 0, row); grid.Children.Add(damageValue, 1, row); row += 1; var damageBonusTitle = CreateLabel("Damage Bonus:"); var damageBonusValue = CreateFrame(item.DamageBonus(sheet)); grid.Children.Add(damageBonusTitle, 0, row); grid.Children.Add(damageBonusValue, 1, row); row += 1; var typeTitle = CreateLabel("Type:"); var typeValue = CreateFrame(item.type); grid.Children.Add(typeTitle, 0, row); grid.Children.Add(typeValue, 1, row); row += 1; var rangeTitle = CreateLabel("Range:"); var rangeValue = CreateFrame(item.Range(sheet)); grid.Children.Add(rangeTitle, 0, row); grid.Children.Add(rangeValue, 1, row); row += 1; var ammunitionTitle = CreateLabel("Ammunition:"); var ammunitionValue = CreateFrame(item.ammunition.GetTotal(sheet).ToString()); grid.Children.Add(ammunitionTitle, 0, row); grid.Children.Add(ammunitionValue, 1, row); row += 1; var specialTitle = CreateLabel("Special:"); var specialValue = CreateFrame(item.special); grid.Children.Add(specialTitle, 0, row); grid.Children.Add(specialValue, 1, row); row += 1; var weightTitle = CreateLabel("Weight:"); var weightValue = CreateFrame(item.weight.GetTotal(sheet).ToString()); grid.Children.Add(weightTitle, 0, row); grid.Children.Add(weightValue, 1, row); row += 1; var descriptionTitle = CreateLabel("Description:"); grid.Children.Add(descriptionTitle, 0, 2, row, row + 1); row += 1; var descriptionValue = CreateFrame(item.description); grid.Children.Add(descriptionValue, 0, 2, row, row + 1); row += 1; MainPage.AddTapHandler(grid, (s, e) => Weapon_DoubleTap(item), 2); #if EXPAND_CHECKBOX MainPage.AddTapHandler(grid, (s, e) => Weapon_Tap(selectedcb), 1); #else MainPage.AddTapHandler(grid, (s, e) => Weapon_Tap(item), 1); #endif var newWeaponGrid = new SelectedWeaponGrid() { container = grid, #if EXPAND_CHECKBOX selectedHandler = handler, selected = selectedcb, #endif activeHandler = activeHandler, active = activecb, nameTitle = nameTitle, nameFrame = nameValue, name = nameValue.Content as Label, attackBonusTitle = attackBonusTitle, attackBonus = attackBonusValue.Content as Label, criticalTitle = criticalTitle, critical = criticalValue.Content as Label, damageTitle = damageTitle, damage = damageValue.Content as Label, damageBonusTitle = damageBonusTitle, damageBonus = damageBonusValue.Content as Label, typeTitle = typeTitle, type = typeValue.Content as Label, rangeTitle = rangeTitle, range = rangeValue.Content as Label, ammunitionTitle = ammunitionTitle, ammunition = ammunitionValue.Content as Label, specialTitle = specialTitle, special = specialValue.Content as Label, weightTitle = weightTitle, weight = weightValue.Content as Label, descriptionTitle = descriptionTitle, description = descriptionValue.Content as Label, }; var newpos = selectedWeaponGrids.Count; selectedWeaponGrids.Add(newWeaponGrid); Weapon.Children.Insert(newpos, newWeaponGrid.container); }