Exemplo n.º 1
0
        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);
        }