Пример #1
0
        protected virtual List <Control> CreateCardMenuItems(DataNew.Entities.Group def)
        {
            var tempActions  = def.CardActions.ToArray();
            int nCardActions = def.CardActions == null ? 0 : tempActions.Length;
            var items        = new List <Control>();

            if (nCardActions > 0 || group.Controller == null)
            {
                _cardHeader = new MenuItem();
                _cardHeader.SetResourceReference(StyleProperty, "MenuHeader");
                items.Add(_cardHeader);
            }
            if (nCardActions > 0)
            {
                for (int i = 0; i < nCardActions; i++)
                {
                    items.Add(CreateCardMenuItem(tempActions[i]));
                }
                if (group.Controller == null)
                {
                    items.Add(new Separator());
                }
            }
            if (group.Controller == null)
            {
                items.Add(CreateCardPassToItem());
            }

            return(items);
        }
Пример #2
0
 internal Group(Player owner, DataNew.Entities.Group def)
     : base(owner)
 {
     Def = def;
     ResetVisibility();
     GroupShortcuts = CreateShortcuts(def.GroupActions);
     CardShortcuts  = CreateShortcuts(def.CardActions);
     if (def.Shortcut != null)
     {
         MoveToShortcut = (KeyGesture)KeyConverter.ConvertFromInvariantString(def.Shortcut);
     }
 }
Пример #3
0
        protected virtual List <Control> CreateGroupMenuItems(DataNew.Entities.Group def)
        {
            var tempActions   = def.GroupActions.ToArray();
            int nGroupActions = def.GroupActions == null ? 0 : tempActions.Length;
            var items         = new List <Control> {
                CreateGroupHeader()
            };

            for (int i = 0; i < nGroupActions; i++)
            {
                items.Add(CreateGroupMenuItem(tempActions[i]));
            }

            if (nGroupActions > 0)
            {
                items.Add(new Separator());
            }

            if (group.Controller != null)
            {
                items.Add(CreateGroupPassToItem());
            }
            if (group.Visibility != GroupVisibility.Undefined)
            {
                items.Add(CreateVisibilityItem());
            }
            MenuItem item = CreateLookAtCardsMenuItem();

            if (item != null)
            {
                items.Add(item);
            }
            if (def.Id == Program.GameEngine.Definition.Table.Id)
            {
                if (!(items.Last() is Separator))
                {
                    items.Add(new Separator());
                }
                var noteItem = new MenuItem()
                {
                    Header = "Create Note"
                };
                noteItem.Click += NoteItemOnClick;
                items.Add(noteItem);
            }

            if (items.Last() is Separator)
            {
                items.RemoveAt(items.Count - 1);
            }

            return(items);
        }
Пример #4
0
        private void SetBoard(DataNew.Entities.Group tableDef)
        {
            Rect pos = new Rect(tableDef.BoardPosition.X, tableDef.BoardPosition.Y, tableDef.BoardPosition.Width, tableDef.BoardPosition.Height);
            var  img = new Image
            {
                Source = ExtensionMethods.BitmapFromUri(new Uri(tableDef.Board)),
                Width  = pos.Width,
                Height = pos.Height,
                HorizontalAlignment = HorizontalAlignment.Left,
                VerticalAlignment   = VerticalAlignment.Top,
                Margin = new Thickness(pos.Left, pos.Top, 0, 0)
            };

            boardContainer.Children.Insert(0, img);
        }
Пример #5
0
        private void SetBackground(DataNew.Entities.Group tableDef)
        {
            var bim = new BitmapImage();

            bim.BeginInit();
            bim.CacheOption = BitmapCacheOption.OnLoad;
            bim.UriSource   = new Uri(tableDef.Background);
            if (Program.GameEngine.IsTableBackgroundFlipped)
            {
                bim.Rotation = Rotation.Rotate180;
            }
            bim.EndInit();

            var backBrush = new ImageBrush(bim);

            if (tableDef.BackgroundStyle != null)
            {
                switch (tableDef.BackgroundStyle)
                {
                case "tile":
                    backBrush.TileMode      = TileMode.Tile;
                    backBrush.Viewport      = new Rect(0, 0, backBrush.ImageSource.Width, backBrush.ImageSource.Height);
                    backBrush.ViewportUnits = BrushMappingMode.Absolute;
                    break;

                case "uniform":
                    backBrush.Stretch = Stretch.Uniform;
                    break;

                case "uniformToFill":
                    backBrush.Stretch = Stretch.UniformToFill;
                    break;

                case "stretch":
                    backBrush.Stretch = Stretch.Fill;
                    break;
                }
            }
            Background = backBrush;
        }
Пример #6
0
        protected virtual List <Control> CreateGroupMenuItems(DataNew.Entities.Group def)
        {
            var tempActions   = def.GroupActions.ToArray();
            int nGroupActions = def.GroupActions == null ? 0 : tempActions.Length;
            var items         = new List <Control> {
                CreateGroupHeader()
            };

            for (int i = 0; i < nGroupActions; i++)
            {
                items.Add(CreateGroupMenuItem(tempActions[i]));
            }

            if (nGroupActions > 0)
            {
                items.Add(new Separator());
            }

            if (group.Controller != null)
            {
                items.Add(CreateGroupPassToItem());
            }
            if (group.Visibility != GroupVisibility.Undefined)
            {
                items.Add(CreateVisibilityItem());
            }
            MenuItem item = CreateLookAtCardsMenuItem();

            if (item != null)
            {
                items.Add(item);
            }

            if (items.Last() is Separator)
            {
                items.RemoveAt(items.Count - 1);
            }

            return(items);
        }
Пример #7
0
        protected override List <Control> CreateCardMenuItems(DataNew.Entities.Group def)
        {
            List <Control> items = base.CreateCardMenuItems(def);

            var item = new MenuItem {
                Header = "Move to"
            };
            var subItem = new MenuItem
            {
                Header           = Program.GameEngine.Definition.Player.Hand.Name,
                InputGestureText = Program.GameEngine.Definition.Player.Hand.Shortcut
            };

            subItem.Click += delegate { Selection.Do(c => c.MoveTo(Player.LocalPlayer.Hand, true, false), ContextCard); };
            item.Items.Add(subItem);
            var groupDefs         = Program.GameEngine.Definition.Player.Groups.ToArray();
            var moveToBottomItems = new List <MenuItem>();

            for (int i = 0; i < groupDefs.Length; ++i)
            {
                var   groupDef     = groupDefs[i];
                Group indexedGroup = Player.LocalPlayer.IndexedGroups[i + 1]; // 0 is hand
                subItem = new MenuItem {
                    Header = groupDef.Name, InputGestureText = groupDef.Shortcut
                };
                subItem.Click += delegate { Selection.Do(c => c.MoveTo(indexedGroup, true, false), ContextCard); };
                item.Items.Add(subItem);
                subItem = new MenuItem
                {
                    Header           = string.Format("Bottom of {0}", groupDef.Name),
                    InputGestureText =
                        string.IsNullOrEmpty(groupDef.Shortcut) ? null : "Alt+" + groupDef.Shortcut
                };
                subItem.Click +=
                    delegate { Selection.Do(c => c.MoveTo(indexedGroup, true, indexedGroup.Count, false), ContextCard); };
                moveToBottomItems.Add(subItem);
            }
            if (moveToBottomItems.Count > 0)
            {
                item.Items.Add(new Separator());
            }
            foreach (MenuItem x in moveToBottomItems)
            {
                item.Items.Add(x);
            }
            items.Add(item);

            item = new MenuItem {
                Header = "Bring to front", InputGestureText = "PgUp"
            };
            item.Click += delegate { Selection.Do(c => Program.GameEngine.Table.BringToFront(c), ContextCard); };
            items.Add(item);

            item = new MenuItem {
                Header = "Send to back", InputGestureText = "PgDn"
            };
            item.Click += delegate { Selection.Do(c => Program.GameEngine.Table.SendToBack(c), ContextCard); };
            items.Add(item);

            return(items);
        }
Пример #8
0
 internal void SetBackground(DataNew.Entities.Group tableDef)
 {
     SetBackground(tableDef.Background, tableDef.BackgroundStyle);
 }
Пример #9
0
 public Table(DataNew.Entities.Group def)
     : base(null, def)
 {
 }
Пример #10
0
        protected virtual List <Control> CreateCardMenuItems(Card card, DataNew.Entities.Group def)
        {
            var items = new List <Control>();

            if (!card.CanManipulate())
            {
                var item = new MenuItem {
                    Header = card.Name, Background = card.Controller.TransparentBrush
                };
                item.SetResourceReference(StyleProperty, "MenuHeader");
                items.Add(item);

                item = new MenuItem {
                    Header = "Take control"
                };
                item.Click += delegate { card.TakeControl(); };
                items.Add(item);
                return(items);
            }
            else
            {
                var actions      = def.CardActions.ToList();
                var nCardActions = actions.ToArray().Length;

                if (nCardActions > 0 || group.Controller == null)
                {
                    var cardHeader = new MenuItem();
                    cardHeader.SetResourceReference(StyleProperty, "MenuHeader");
                    cardHeader.Header     = card.Name;
                    cardHeader.Background = card.Controller.TransparentBrush;
                    items.Add(cardHeader);
                }
                if (nCardActions > 0)
                {
                    items.AddRange(actions.Select(action => CreateActionMenuItem(action, CardActionClicked, card)).Where(x => x.Visibility == Visibility.Visible));
                    if (group.Controller == null)
                    {
                        items.Add(new Separator());
                    }
                }
                if (group.Controller == null)
                {
                    items.Add(CreateCardPassToItem());
                }
            }
            if (def.Id == Program.GameEngine.Definition.Table.Id)
            {
                var ami = new MenuItem()
                {
                    Header = card.Anchored ? "Unanchor" : "Anchor"
                };
                ami.Click += (sender, args) => ContextCard.SetAnchored(false, card.Anchored == false);
                items.Add(ami);
            }
            if (!card.FaceUp)
            {
                var peekItem = new MenuItem {
                    Header = "Peek", InputGestureText = "Ctrl+P"
                };
                peekItem.Click += delegate { ContextCard.Peek(); };
                items.Add(peekItem);
            }
            return(items);
        }
Пример #11
0
        protected virtual List <Control> CreateGroupMenuItems(DataNew.Entities.Group def)
        {
            var items = new List <Control> {
                CreateGroupHeader()
            };

            if (!group.CanManipulate())
            {
                items.Add(CreateGroupHeader());

                var item = new MenuItem {
                    Header = "Take control"
                };
                item.Click += delegate { group.TakeControl(); };
                items.Add(item);

                items.Add(new Separator());
                item = CreateLookAtCardsMenuItem();
                if (item != null)
                {
                    items.Add(item);
                }
            }
            else
            {
                var actions       = def.GroupActions;
                var nGroupActions = actions.ToArray().Length;

                if (nGroupActions > 0)
                {
                    items.AddRange(actions.Select(action => CreateActionMenuItem(action, GroupActionClicked, null)).Where(x => x.Visibility == Visibility.Visible));
                }
                items.Add(new Separator());

                if (group.Controller != null)
                {
                    items.Add(CreateGroupPassToItem());
                }
                if (group.Visibility != GroupVisibility.Undefined)
                {
                    items.Add(CreateVisibilityItem());
                }
                MenuItem item = CreateLookAtCardsMenuItem();
                if (item != null)
                {
                    items.Add(item);
                }
                if (def.Id == Program.GameEngine.Definition.Table.Id)
                {
                    if (!(items.Last() is Separator))
                    {
                        items.Add(new Separator());
                    }
                    var noteItem = new MenuItem()
                    {
                        Header = "Create Note"
                    };
                    noteItem.Click += NoteItemOnClick;
                    items.Add(noteItem);
                }

                if (items.Last() is Separator)
                {
                    items.RemoveAt(items.Count - 1);
                }
            }
            return(items);
        }
Пример #12
0
 internal Pile(Player owner, DataNew.Entities.Group def)
     : base(owner, def)
 {
     _collapsed = def.Collapsed;
 }
Пример #13
0
Файл: Pile.cs Проект: wlk0/OCTGN
 internal Pile(Player owner, DataNew.Entities.Group def)
     : base(owner, def)
 {
     _viewState = def.ViewState;
 }
Пример #14
0
        protected virtual List <Control> CreateCardMenuItems(Card card, DataNew.Entities.Group def)
        {
            var items = new List <Control>();

            if (!card.CanManipulate())
            {
                var item = new MenuItem {
                    Header = card.Name, Background = card.Controller.TransparentBrush
                };
                item.SetResourceReference(StyleProperty, "MenuHeader");
                items.Add(item);

                item = new MenuItem {
                    Header = "Take control"
                };
                item.Click += delegate { card.TakeControl(); };
                items.Add(item);
                return(items);
            }
            else
            {
                var selection = Selection.ExtendToSelection(card);
                //actionFilter showCard = async (IGroupAction a) =>
                actionFilter showCard = (IGroupAction a) =>
                {
                    if (a.ShowIf != null)
                    {
                        //return await CallActionShowIf(a.ShowIf, selection);
                        return(CallActionShowIf(a.ShowIf, selection));
                    }
                    return(true);
                };
                var visibleActionsTasks = def.CardActions.Select(item => new { Item = item, PredTask = showCard.Invoke(item) }).ToList();
                //await TaskEx.WhenAll(visibleActionsTasks.Select(x => x.PredTask));
                //var visibleActions = visibleActionsTasks.Where(x => x.PredTask.Result).Select(x => x.Item).ToArray();
                var visibleActions = visibleActionsTasks.Where(x => x.PredTask).Select(x => x.Item).ToArray();
                var nCardActions   = visibleActions.Length;

                if (nCardActions > 0 || group.Controller == null)
                {
                    var cardHeader = new MenuItem();
                    cardHeader.SetResourceReference(StyleProperty, "MenuHeader");
                    cardHeader.Header     = card.Name;
                    cardHeader.Background = card.Controller.TransparentBrush;
                    items.Add(cardHeader);
                }
                if (nCardActions > 0)
                {
                    items.AddRange(visibleActions.Select(action => CreateActionMenuItem(action, CardActionClicked)));
                    if (group.Controller == null)
                    {
                        items.Add(new Separator());
                    }
                }
                if (group.Controller == null)
                {
                    items.Add(CreateCardPassToItem());
                }
            }
            if (!card.FaceUp)
            {
                var peekItem = new MenuItem {
                    Header = "Peek", InputGestureText = "Ctrl+P"
                };
                peekItem.Click += delegate { ContextCard.Peek(); };
                items.Add(peekItem);
            }

            return(items);
        }
Пример #15
0
 public Hand(Player owner, DataNew.Entities.Group def)
     : base(owner, def)
 {
 }