public List <int> CreateOnTable(string modelId, int x, int y, bool persist, int quantity, bool faceDown) { var result = new List <int>(); Guid modelGuid; if (!Guid.TryParse(modelId, out modelGuid)) { return(result); // e.g. modelId may be null if the cloned card is face down. } QueueAction(() => { DataNew.Entities.Card model = Program.GameEngine.Definition.GetCardById(modelGuid); if (model == null) { } else { var ids = new int[quantity]; var keys = new ulong[quantity]; var models = new Guid[quantity]; int[] xs = new int[quantity], ys = new int[quantity]; // if (Player.LocalPlayer.InvertedTable) // { // x -= Program.GameEngine.Definition.CardWidth; // y -= Program.GameEngine.Definition.CardHeight; // } // var offset = (int)(Math.Min(Program.GameEngine.Definition.CardWidth, Program.GameEngine.Definition.CardHeight) * 0.2); // if (Program.GameSettings.UseTwoSidedTable && TableControl.IsInInvertedZone(y)) // offset = -offset; for (int i = 0; i < quantity; ++i) { ulong key = ((ulong)Crypto.PositiveRandom()) << 32 | model.Id.Condense(); int id = model.GenerateCardId(); new CreateCard(Player.LocalPlayer, id, key, faceDown != true, model, x, y, !persist).Do(); ids[i] = id; keys[i] = key; models[i] = model.Id; xs[i] = x; ys[i] = y; result.Add(id); // x += offset; // y += offset; } string pictureUri = model.GetPicture(); Dispatcher.CurrentDispatcher.BeginInvoke( new Func <string, BitmapImage>(ImageUtils.CreateFrozenBitmap), DispatcherPriority.Background, pictureUri); Program.Client.Rpc.CreateCardAt(ids, keys, models, xs, ys, faceDown != true, persist); } }); return(result); }
public CardRun(CardIdentity id) : base(id.ToString()) { _card = id.Model; if (id.Model == null) id.Revealed += new CardIdentityNamer {Target = this}.Rename; }
internal Card(Player owner, int id, DataNew.Entities.Card model, bool mySecret, string cardsize) : base(owner) { _id = id; Type = new CardIdentity(id) { Model = model.Clone() }; // var _definition = def; lock (All) { if (All.ContainsKey(id)) { All[id] = this; } else { All.Add(id, this); } } _alternateOf = null; //numberOfSwitchWithAlternatesNotPerformed = 0; //_isAlternateImage = false; _cardMoved = false; Size = Program.GameEngine.Definition.CardSizes[cardsize]; }
internal void SetModel(DataNew.Entities.Card model) { Log.Info("SetModel event happened!"); Type.Model = model; // Not sure if we should update the card size here...not sure if it's necesary. OnPropertyChanged("Picture");//This should be changed - the model is much more than just the picture. }
internal Card(Player owner, int id, ulong key, DataNew.Entities.Card model, bool mySecret) : base(owner) { _id = id; Type = new CardIdentity(id) { Key = key, Model = model.Clone(), MySecret = mySecret }; // var _definition = def; lock (All) { if (All.ContainsKey(id)) { All[id] = this; } else { All.Add(id, this); } } _alternateOf = null; numberOfSwitchWithAlternatesNotPerformed = 0; _isAlternateImage = false; _cardMoved = false; }
public void SetCardModel(DataNew.Entities.Card model) { Debug.Assert(this.Card == null, "Cannot set the CardModel of a CardRun if it is already defined"); this.Card = model; if (_updateAction != null) { _updateAction.Invoke(model, GameCard); } }
public CardRun(CardIdentity id) : base(id.ToString()) { _card = id.Model; if (id.Model == null) { id.Revealed += new CardIdentityNamer { Target = this } }
public CreateCard(Player owner, int id, bool faceUp, DataNew.Entities.Card model, int x, int y, bool deletesWhenLeavesGroup) { _owner = owner; _id = id; _faceUp = faceUp; _deletesWhenLeavesGroup = deletesWhenLeavesGroup; _model = model; _x = x; _y = y; }
public CreateCard(Player owner, int id,bool faceUp, DataNew.Entities.Card model, int x, int y, bool deletesWhenLeavesGroup) { _owner = owner; _id = id; _faceUp = faceUp; _deletesWhenLeavesGroup = deletesWhenLeavesGroup; _model = model; _x = x; _y = y; }
internal Card(Player owner, int id, ulong key, DataNew.Entities.Card model, bool mySecret) : base(owner) { _id = id; Type = new CardIdentity(id) { Alias = false, Key = key, Model = model.Clone(), MySecret = mySecret }; // var _definition = def; All.Add(id, this); _alternateOf = null; numberOfSwitchWithAlternatesNotPerformed = 0; _isAlternateImage = false; }
internal void LoadGroup(GroupSaveState g) { var group = Play.Group.Find(g.Id); group.Controller = Play.Player.Find(g.Controller); group.Viewers = g.Viewers.Select(Play.Player.Find).ToList(); group.Visibility = g.Visiblity; foreach (var c in g.Cards) { DataNew.Entities.Card model = null; if (c.Type != Guid.Empty) { model = Core.DataManagers.GameManager.Get() .GetById(Program.GameEngine.Definition.Id) .GetCardById(c.Type); } var owner = Play.Player.Find(c.Owner); var card = new Play.Card(owner, c.Id, (ulong)c.EncType, model, owner == Play.Player.LocalPlayer); if (group.Cards.Any(x => x.Id == card.Id) == false) { group.Add(card); } card.SwitchTo(owner, c.Alternate, false); card.Controller = Play.Player.Find(c.Controller); card.DeleteWhenLeavesGroup = c.DeleteWhenLeavesGroup; card.SetFaceUp(c.FaceUp); card.SetHighlight(c.HighlightColor); card.SetIndex(c.Index); card.Orientation = c.Orientation; card.SetOverrideGroupVisibility(c.OverrideGroupVisibility); card.SetTargetedBy(Play.Player.Find(c.TargetedBy)); card.TargetsOtherCards = c.TargetsOtherCards; card.X = c.X; card.Y = c.Y; foreach (var m in c.Markers) { card.SetMarker(card.Owner, m.Id, m.Name, m.Count, false); } foreach (var pp in c.PeekingPlayers.Select(Play.Player.Find)) { card.PeekingPlayers.Add(pp); } } }
public void SetCard(ICard card, bool up, bool isProxy = false) { isVisible = up; showProxy = isProxy; VisualCard = new DataNew.Entities.Card(card); if (VisualCard == null || up == false || VisualCard.PropertySets.Count < 2) { AltName.Visibility = Visibility.Collapsed; AltLabel.Visibility = Visibility.Collapsed; LeftButton.Visibility = Visibility.Collapsed; RightButton.Visibility = Visibility.Collapsed; } else { AltName.Visibility = Visibility.Visible; AltLabel.Visibility = Visibility.Visible; LeftButton.Visibility = Visibility.Visible; RightButton.Visibility = Visibility.Visible; alternates = VisualCard.PropertySets.Keys.ToList(); AltName.Text = VisualCard.Alternate; } UpdateCardImage(); }
public ChatCard(DataNew.Entities.Card model) { this.Card = model; }
private void SelectClicked(object sender, RoutedEventArgs e) { e.Handled = true; // A double-click can only select a marker in its own list // (Little bug here: double-clicking in the empty zone of a list with a selected marker adds it) if (sender is ListBox && ((ListBox)sender).SelectedIndex == -1) return; allList.ItemsSource = _allCards; if (allList.SelectedIndex != -1) SelectedCard = (DataNew.Entities.Card)allList.SelectedItem; returnIndex = allList.SelectedIndex; if (SelectedCard == null) return; DialogResult = true; }
public CardRun(DataNew.Entities.Card model) : base(model.Name) { _card = model; }
public CardModelEventArgs(DataNew.Entities.Card model, RoutedEvent routedEvent, object source) : base(routedEvent, source) { CardModel = model; }
public void SetCardModel(DataNew.Entities.Card model) { Debug.Assert(_card == null, "Cannot set the CardModel of a CardRun if it is already defined"); _card = model; Text = model.PropertyName(); }
public CardRun(DataNew.Entities.Card model) : base(model.PropertyName()) { _card = model; }
private void CreateClicked(object sender, RoutedEventArgs e) { e.Handled = true; // A double-click can only select a marker in its own list // (Little bug here: double-clicking in the empty zone of a list with a selected marker adds it) if (sender is ListBox && ((ListBox)sender).SelectedIndex == -1) return; if (recentList.SelectedIndex != -1) SelectedCard = (DataNew.Entities.Card)recentList.SelectedItem; if (allList.SelectedIndex != -1) SelectedCard = (DataNew.Entities.Card)allList.SelectedItem; if (SelectedCard == null) return; int qty; if (!int.TryParse(quantityBox.Text, out qty) || qty < 1) { var anim = new ColorAnimation(Colors.Red, new Duration(TimeSpan.FromMilliseconds(800))) { AutoReverse = true }; validationBrush.BeginAnimation(SolidColorBrush.ColorProperty, anim, HandoffBehavior.Compose); return; } Program.GameEngine.AddRecentCard(SelectedCard); DialogResult = true; }
internal void LoadGroup(GroupSaveState g, Play.Player fromPlayer, bool isTable = false) { var group = Play.Group.Find(g.Id); if (!isTable) { group.Controller = Play.Player.Find(g.Controller); } group.Viewers = g.Viewers.Select(Play.Player.Find).ToList(); group.Visibility = g.Visiblity; foreach (var c in g.Cards) { var owner = Play.Player.Find(c.Owner); DataNew.Entities.Card model = null; if (c.Type != Guid.Empty) { model = Core.DataManagers.GameManager.Get() .GetById(Program.GameEngine.Definition.Id) .GetCardById(c.Type); } var card = Play.Card.Find(c.Id); if (fromPlayer == owner && card != null) { //card.Type.Key = ulong.Parse(c.EncType); card.SetModel(model.Clone()); //card.Type = new CardIdentity(card.Id){Key=(ulong)c.EncType,Model = model.Clone(),MySecret = owner == Play.Player.LocalPlayer}; //Play.Card.Remove(card); //card = null; } if (card == null) { card = new Play.Card(owner, c.Id, model, owner == Play.Player.LocalPlayer, c.Size); } group.Remove(card); group.Add(card); card.Group = group; card.SwitchTo(owner, c.Alternate, false); card.Controller = Play.Player.Find(c.Controller); card.DeleteWhenLeavesGroup = c.DeleteWhenLeavesGroup; card.SetFaceUp(c.FaceUp); card.SetHighlight(c.HighlightColor); card.SetIndex(c.Index); card.Orientation = c.Orientation; card.SetOverrideGroupVisibility(c.OverrideGroupVisibility); card.SetTargetedBy(Play.Player.Find(c.TargetedBy)); card.TargetsOtherCards = c.TargetsOtherCards; card.X = c.X; card.Y = c.Y; card.PropertyOverrides = c.PropertyOverrides; foreach (var m in c.Markers) { card.SetMarker(card.Owner, m.Id, m.Name, m.Count, false); } foreach (var pp in c.PeekingPlayers.Select(Play.Player.Find)) { card.PeekingPlayers.Add(pp); } } group.OnCardsChanged(); }
internal void SetModel(DataNew.Entities.Card model) { Log.Info("SetModel event happened!"); Type.Model = model; OnPropertyChanged("Picture");//This should be changed - the model is much more than just the picture. }