public void UpdateModel() { var model = DataContext as TwoSidesCardChoiceViewModel; if (model == null) { return; } spCardPicks1.Children.Clear(); foreach (var card in model.CardsPicked1) { var cv = CardView.CreateCard(card, spCardPicks1, Settings.TwoSidesCardChoiceBox.CardWidth, Settings.TwoSidesCardChoiceBox.CardHeight); cv.Opacity = 1.0d; cv.Margin = new Thickness(5.0d); } spCardPicks2.Children.Clear(); foreach (var card in model.CardsPicked2) { var cv = CardView.CreateCard(card, spCardPicks2, Settings.TwoSidesCardChoiceBox.CardWidth, Settings.TwoSidesCardChoiceBox.CardHeight); cv.Opacity = 1.0d; cv.Margin = new Thickness(5.0d); } ugCardsRepo.Children.Clear(); foreach (var card in model.CardsToPick) { var cv = CardView.CreateCard(card, ugCardsRepo, Settings.TwoSidesCardChoiceBox.CardWidth, Settings.TwoSidesCardChoiceBox.CardHeight); cv.Opacity = 1.0d; cv.Margin = new Thickness(5.0d); cv.OffsetOnSelect = false; } }
protected override CardView RemoveDelayedTool(Card card, bool isCopy) { SmallDelayedToolView dtv = null; foreach (var tmpDtv in delayedToolsDock.Children) { dtv = tmpDtv as SmallDelayedToolView; Trace.Assert(dtv != null); CardViewModel model = dtv.DataContext as CardViewModel; Trace.Assert(model != null); if (model.Card == card) { break; } dtv = null; } Trace.Assert(dtv != null); Point dest = dtv.TranslatePoint(new Point(0, 0), ParentGameView.GlobalCanvas); if (!isCopy) { delayedToolsDock.Children.Remove(dtv); } CardView result = CardView.CreateCard(card); ParentGameView.GlobalCanvas.Children.Add(result); result.Opacity = 0; result.SetCurrentPosition(dest); return(result); }
/// <summary> /// Pick a card from card repo to the row on the specified player's side. /// </summary> /// <param name="isMainPlayer"></param> /// <param name="cardIndex"></param> public void PickCard(bool isMainPlayer, int cardIndex) { var model = DataContext as TwoSidesCardChoiceViewModel; Trace.Assert(model != null); Trace.Assert(cardIndex >= 0 && cardIndex < ugCardsRepo.Children.Count); CardView card = ugCardsRepo.Children[cardIndex] as CardView; Trace.Assert(card != null); Point p = card.TranslatePoint(new Point(0, 0), canvasCards); var copy = CardView.CreateCard(card.CardModel, canvasCards, Settings.TwoSidesCardChoiceBox.CardWidth, Settings.TwoSidesCardChoiceBox.CardHeight); copy.SetCurrentPosition(p); copy.Opacity = 1.0d; int num; CardView cv; if (isMainPlayer) { num = model.NumCardsPicked1 - 1; Trace.Assert(num >= 0 && num < spCardPicks1.Children.Count); cv = spCardPicks1.Children[num] as CardView; } else { num = model.NumCardsPicked2 - 1; Trace.Assert(num >= 0 && num < spCardPicks1.Children.Count); cv = spCardPicks2.Children[num] as CardView; } p = cv.TranslatePoint(new Point(0, 0), canvasCards); copy.Position = p; copy.Rebase(); card.DataContext = new CardSlotViewModel(); }
protected override CardView RemoveRoleCard(Card card) { CardView result = CardView.CreateCard(card); ParentGameView.GlobalCanvas.Children.Add(result); result.Opacity = 0; result.SetCurrentPosition(ComputeCardCenterPos(result, cbRoleBox)); return(result); }
protected override CardView RemoveEquipment(Card card, bool isCopy) { Trace.Assert(card.Id >= 0, "Cannot remove unknown card from equip area."); Equipment equip = GameEngine.CardSet[card.Id].Type as Equipment; if (equip == null) { throw new ArgumentException("Cannot add non-equip to equip area."); } Border targetArea = null; switch (equip.Category) { case CardCategory.Weapon: targetArea = weaponArea; break; case CardCategory.Armor: targetArea = armorArea; break; case CardCategory.DefensiveHorse: targetArea = horse1Area; break; case CardCategory.OffensiveHorse: targetArea = horse2Area; break; default: throw new ArgumentException("Cannot install non-equips to equip area."); } if (targetArea.Child == null) { throw new ArgumentException("No equip is found."); } SmallEquipView equipLabel = targetArea.Child as SmallEquipView; if (!isCopy) { targetArea.Child = null; } CardView result = CardView.CreateCard(card); ParentGameView.GlobalCanvas.Children.Add(result); result.Opacity = 0; result.SetCurrentPosition(ComputeCardCenterPos(result, targetArea)); return(result); }
protected override IList <CardView> RemoveHandCards(IList <Card> cards, bool isCopy) { var cardsToRemove = new List <CardView>(); foreach (var card in cards) { cardsToRemove.Add(CardView.CreateCard(card)); } Trace.Assert(cardsToRemove.Count == cards.Count); handCardArea.RemoveCards(cardsToRemove); return(cardsToRemove); }
protected override IEnumerable <CardView> RemovePrivateCards(IList <Card> cards) { var cardsToRemove = new List <CardView>(); foreach (var card in cards) { cardsToRemove.Add(CardView.CreateCard(card)); } Trace.Assert(cardsToRemove.Count == cards.Count); privateCardArea.RemoveCards(cardsToRemove); return(cardsToRemove); }
internal override void UpdateCards() { var oldHandCards = handCardArea.Cards; foreach (var card in oldHandCards) { card.Disappear(0); } handCardArea.Cards.Clear(); weaponArea.Children.Clear(); armorArea.Children.Clear(); horse1Area.Children.Clear(); horse2Area.Children.Clear(); delayedToolsDock.Children.Clear(); equipmentArea.Visibility = System.Windows.Visibility.Collapsed; base.UpdateCards(); if (PlayerModel == null) { return; } var player = PlayerModel.Player; if (player == null) { return; } EquipCommand[] commands = { PlayerModel.WeaponCommand, PlayerModel.ArmorCommand, PlayerModel.DefensiveHorseCommand, PlayerModel.OffensiveHorseCommand }; foreach (var equip in commands) { if (equip != null) { AddEquipment(CardView.CreateCard(equip, ParentGameView.GlobalCanvas), true); } } foreach (var dt in player.DelayedTools()) { AddDelayedTool(CardView.CreateCard(dt, ParentGameView.GlobalCanvas), true); } // Add hand cards last because adding equipment may result in layout change of hand card area. AddHandCards(CardView.CreateCards(PlayerModel.HandCards, ParentGameView.GlobalCanvas), true); }
protected override IList <CardView> RemoveHandCards(IList <Card> cards, bool isCopy) { var cardsToRemove = new List <CardView>(); foreach (var card in cards) { bool found = false; foreach (var cardView in handCardArea.Cards) { CardViewModel viewModel = cardView.DataContext as CardViewModel; Trace.Assert(viewModel != null); if (viewModel.Card == card) { if (isCopy) { var copy = CardView.CreateCard(cardView.Card); ParentGameView.GlobalCanvas.Children.Add(copy); copy.SetCurrentPosition(cardView.Position); copy.Opacity = 100; cardsToRemove.Add(copy); } else { cardsToRemove.Add(cardView); cardView.CardModel.IsSelected = false; cardView.DragDirection = DragDirection.None; } found = true; break; } } if (!found) { cardsToRemove.Add(CardView.CreateCard(card)); } } Trace.Assert(cardsToRemove.Count == cards.Count); if (!isCopy) { handCardArea.RemoveCards(cardsToRemove); } return(cardsToRemove); }
public IList <CardView> RemoveCards(DeckType deck, IList <Card> cards, bool isCopy) { IList <CardView> result = new List <CardView>(); IList <CardView> remaining = new List <CardView>(); foreach (var card in cards) { var oldCardView = Cards.FirstOrDefault( c => ((card.Id > 0 && c.Card.Id == card.Id) || (card.Id <= 0 && c.Card == card))); var cardView = CardView.CreateCard(card); if (oldCardView != null) { ParentCanvas.Children.Add(cardView); cardView.SetCurrentPosition(oldCardView.Position); } else { remaining.Add(cardView); } result.Add(cardView); } RemoveCards(remaining); return(result); }
internal override void UpdateCards() { weaponArea.Child = null; armorArea.Child = null; horse1Area.Child = null; horse2Area.Child = null; delayedToolsDock.Children.Clear(); base.UpdateCards(); if (PlayerModel == null) { return; } var player = PlayerModel.Player; if (player == null) { return; } EquipCommand[] commands = { PlayerModel.WeaponCommand, PlayerModel.ArmorCommand, PlayerModel.DefensiveHorseCommand, PlayerModel.OffensiveHorseCommand }; foreach (var equip in commands) { if (equip != null) { AddEquipment(CardView.CreateCard(equip, ParentGameView.GlobalCanvas), true); } } foreach (var dt in player.DelayedTools()) { AddDelayedTool(CardView.CreateCard(dt, ParentGameView.GlobalCanvas), true); } }
protected override CardView RemoveEquipment(Card card, bool isCopy) { Trace.Assert(card.Id >= 0, "Cannot remove unknown card from equip area."); Equipment equip = GameEngine.CardSet[card.Id].Type as Equipment; if (equip == null) { throw new ArgumentException("Cannot add non-equip to equip area."); } Grid targetArea = null; switch (equip.Category) { case CardCategory.Weapon: targetArea = weaponArea; break; case CardCategory.Armor: targetArea = armorArea; break; case CardCategory.DefensiveHorse: targetArea = horse1Area; break; case CardCategory.OffensiveHorse: targetArea = horse2Area; break; default: throw new ArgumentException("Cannot install non-equips to equip area."); } if (targetArea.Children.Count == 0) { throw new ArgumentException("No equip is found."); } ToggleButton button = targetArea.Children[0] as ToggleButton; if (!isCopy) { targetArea.Children.Clear(); } if (IsEquipmentDockEmpty) { equipmentArea.Visibility = Visibility.Collapsed; handCardArea.RearrangeCards(); } CardView result = CardView.CreateCard(card); ParentGameView.GlobalCanvas.Children.Add(result); result.Opacity = 0; Point dest = targetArea.TranslatePoint(new Point(targetArea.Width / 2, targetArea.Height / 2), ParentGameView.GlobalCanvas); dest.Offset(-result.Width / 2, -result.Height / 2); result.SetCurrentPosition(dest); return(result); }