示例#1
0
        protected override void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            offsetFromFigureLeftTopCorner = Coordinates(e);
            oldCoordinates = offsetFromFigureLeftTopCorner;

            IEnumerable <IFigure> figures = Drawing.GetSelectedFigures();

            if (figures != null && figures.Count() > 0)
            {
                IFigure source = figures.ElementAt(0);

                if (source is Game.PBPlayer)
                {
                    Game.PBPlayer sourcePlayer = source as Game.PBPlayer;

                    IFigure endFigure = sourcePlayer.GetEndFigure();

                    if (endFigure == null)
                    {
                        endFigure = source;
                    }

                    if (!(endFigure is Game.PBPlayer) && !(endFigure is Game.Zone) && (endFigure is FreePoint))
                    {
                        if (endFigure.Dependents.Count > 0)
                        {
                            PBLine endline = endFigure.Dependents.ElementAt(0) as PBLine;

                            if (endline != null && endline.CapType == CapType.Arrow)
                            {
                                IFigure underMouse = CreatePointAtCurrentPosition(offsetFromFigureLeftTopCorner, false);

                                PBLine line = new PBLine();

                                List <IFigure> dependencies = new List <IFigure>();
                                dependencies.Add(endFigure);
                                dependencies.Add(underMouse);
                                line.Dependencies = dependencies;

                                Drawing.Add(line);

                                if (!Drawing.DrawingMode)
                                {
                                    line.CapType     = CapType.BlockArea;
                                    line.StrokeColor = Webb.Playbook.Data.ColorSetting.Instance.BlockColor;
                                }

                                Drawing.Figures.UpdateVisual();
                            }
                        }
                    }
                    else if (endFigure == source)
                    {
                        IFigure underMouse = CreatePointAtCurrentPosition(offsetFromFigureLeftTopCorner, false);

                        PBLine line = new PBLine();

                        List <IFigure> dependencies = new List <IFigure>();
                        dependencies.Add(endFigure);
                        dependencies.Add(underMouse);
                        line.Dependencies = dependencies;

                        Drawing.Add(line);

                        if (!Drawing.DrawingMode)
                        {
                            line.CapType     = CapType.BlockArea;
                            line.StrokeColor = Webb.Playbook.Data.ColorSetting.Instance.BlockColor;
                        }

                        Drawing.Figures.UpdateVisual();
                    }
                }
            }
        }
示例#2
0
        protected override void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            bool bSuccess = false;

            offsetFromFigureLeftTopCorner = Coordinates(e);
            oldCoordinates = offsetFromFigureLeftTopCorner;

            IFigure found = Drawing.Figures.HitTest(offsetFromFigureLeftTopCorner, typeof(Game.PBPlayer));

            if (found != null && found is Game.PBPlayer)
            {
                Game.PBPlayer targetPlayer = found as Game.PBPlayer;

                IEnumerable <IFigure> figures = Drawing.GetSelectedFigures();

                if (figures != null && figures.Count() > 0)
                {
                    IFigure source = figures.ElementAt(0);

                    if (source is Game.PBPlayer)
                    {
                        Game.PBPlayer sourcePlayer = source as Game.PBPlayer;

                        if (sourcePlayer.ScoutType != targetPlayer.ScoutType)
                        {
                            IFigure endfigure = sourcePlayer.GetEndFigure();

                            if (endfigure == null)
                            {
                                endfigure = source;
                            }

                            if (!(endfigure is Game.PBPlayer) && !(endfigure is Game.Zone) && (endfigure is FreePoint))
                            {
                                if (endfigure.Dependents.Count > 0)
                                {
                                    PBLine endline = endfigure.Dependents.ElementAt(0) as PBLine;

                                    if (endline != null /*&& endline.CapType == CapType.Arrow*/)
                                    {
                                        PBLine line = new PBLine();

                                        List <IFigure> dependencies = new List <IFigure>();
                                        dependencies.Add(endfigure);
                                        dependencies.Add(found);
                                        line.Dependencies = dependencies;

                                        sourcePlayer.ChangeLineType(CapType.Arrow);

                                        Drawing.Add(line);

                                        if (!Drawing.DrawingMode)
                                        {
                                            line.CapType = CapType.Block;

                                            line.StrokeColor = Webb.Playbook.Data.ColorSetting.Instance.BlockColor;
                                        }

                                        Drawing.Figures.UpdateVisual();

                                        Drawing.SetDefaultBehavior();

                                        bSuccess = true;
                                    }
                                }
                            }
                            else if (endfigure == source)
                            {
                                PBLine line = new PBLine();

                                List <IFigure> dependencies = new List <IFigure>();
                                dependencies.Add(endfigure);
                                dependencies.Add(found);
                                line.Dependencies = dependencies;

                                sourcePlayer.ChangeLineType(CapType.Arrow);

                                Drawing.Add(line);

                                if (!Drawing.DrawingMode)
                                {
                                    line.CapType = CapType.Block;

                                    line.StrokeColor = Webb.Playbook.Data.ColorSetting.Instance.BlockColor;
                                }

                                Drawing.Figures.UpdateVisual();

                                Drawing.SetDefaultBehavior();

                                bSuccess = true;
                            }
                        }
                    }
                }
            }

            if (!bSuccess)
            {
                MessageBox.Show("You must select a player of opposing team !");
            }
        }