protected override void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { bool bSuccess = false; offsetFromFigureLeftTopCorner = Coordinates(e); oldCoordinates = offsetFromFigureLeftTopCorner; IFigure found = Drawing.Figures.HitTest(offsetFromFigureLeftTopCorner); 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) { sourcePlayer.Assignment = targetPlayer.Name; Drawing.SetDefaultBehavior(); bSuccess = true; } } } } if (!bSuccess) { MessageBox.Show("You must select a player of opposing team !"); } }
protected override void MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { bool bSuccess = false; var coordinates = Coordinates(e); IEnumerable <IFigure> selectedFigures = Drawing.GetSelectedFigures(); if (selectedFigures != null && selectedFigures.Count() > 0) { PBPlayer player = selectedFigures.ElementAt(0) as PBPlayer; if (player != null && player.ScoutType == 1) { IFigure found = Drawing.Figures.HitTest(coordinates); if (found != null && found is PBPlayer) { PBPlayer setPlayer = found as PBPlayer; if (setPlayer.ScoutType == 0) { player.ManPress = setPlayer.Name; player.ManCoverage = string.Empty; Drawing.SetDefaultBehavior(); bSuccess = true; } } } } if (!bSuccess) { MessageBox.Show("You must select a player of opposing team!"); } }
protected override void MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { bool bSuccess = false; var coordinates = Coordinates(e); IEnumerable <IFigure> selectedFigures = Drawing.GetSelectedFigures(); if (selectedFigures != null && selectedFigures.Count() > 0) { PBPlayer qbPlayer = selectedFigures.ElementAt(0) as PBPlayer; if (qbPlayer != null && qbPlayer.Name == "QB") { IFigure found = Drawing.Figures.HitTest(coordinates); if (found != null && found is PBPlayer) { PBPlayer setPlayer = found as PBPlayer; if (setPlayer.ScoutType == 0 && setPlayer != qbPlayer) { qbPlayer.AssignArray.Clear(); qbPlayer.SetArray.Clear(); qbPlayer.SetArray.Add(setPlayer.Name); Drawing.SetDefaultBehavior(); bSuccess = true; } } } } if (!bSuccess) { MessageBox.Show("You must select a teammate !"); } }
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(); } } } }
protected override void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { base.MouseLeftButtonDown(sender, e); if (e.Handled) { return; } offsetFromFigureLeftTopCorner = Coordinates(e); oldCoordinates = offsetFromFigureLeftTopCorner; moving = new List <IMovable>(); IEnumerable <IFigure> roots = null; IFigure found = Drawing.Figures.HitTest(offsetFromFigureLeftTopCorner); IEnumerable <IFigure> selection = null; // 11-12-2010 Scott if (IsCtrlPressed()) { if (found != null) { found.Selected = !found.Selected; } selection = Drawing.GetSelectedFigures(); } else { if (found == null || !found.Selected) { Drawing.ClearSelectedFigures(); if (found != null && (found is Game.PBPlayer || found is LabelBase || found is LineBase)) // 11-19-2010 Scott { found.Selected = true; selection = found.AsEnumerable(); } } } Drawing.RaiseSelectionChanged(new Drawing.SelectionChangedEventArgs(Drawing.GetSelectedFigures())); IMovable oneMovable = found as IMovable; if (oneMovable != null) { offsetFromFigureLeftTopCorner = offsetFromFigureLeftTopCorner.Minus(oneMovable.Coordinates); moving.Add(oneMovable); roots = found.AsEnumerable(); } else if (found != null) { if (!(found is Game.Zone) && !(found is LineBase)) // 11-19-2010 Scott { roots = DependencyAlgorithms.FindRoots(f => f.Dependencies, found); if (roots.All(root => root is IMovable)) { moving.AddRange(roots.Cast <IMovable>()); } } } if (roots != null) { toRecalculate = DependencyAlgorithms.FindDescendants(f => f.Dependents, roots).Reverse(); } else { toRecalculate = null; } if (moving.IsEmpty()) { toRecalculate = null; } //if (found == null) //{ // if (!Drawing.Canvas.Children.Contains(SelectRect)) // { // Drawing.Canvas.Children.Add(SelectRect); // } // System.Windows.Controls.Canvas.SetLeft(SelectRect, e.GetPosition(Drawing.Canvas).X); // System.Windows.Controls.Canvas.SetTop(SelectRect, e.GetPosition(Drawing.Canvas).Y); // SelectRect.Visibility = Visibility.Visible; //} Drawing.Figures.UpdateVisual(); }
/// <summary> /// Assumes coordinates are logical already /// </summary> /// <param name="coordinates">Logical coordinates of the click point</param> protected override void MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { // 11-18-2010 Scott if (e.ClickCount == 2) { Drawing.SetDefaultBehavior(); return; } IEnumerable <IFigure> selectedFigures = Drawing.GetSelectedFigures(); PBPlayer player = null; if (selectedFigures != null && selectedFigures.Count() > 0) { player = selectedFigures.ElementAt(0) as PBPlayer; if (player == null) { return; } } else { return; } //Type expectedType = ExpectedDependency; System.Windows.Point coordinates = Coordinates(e); IFigure underMouse = null; underMouse = Drawing.Figures.HitTest(coordinates); if (underMouse == player) { Drawing.SetDefaultBehavior(); return; } IFigure endFigure = player.GetEndFigure(); if (endFigure is Game.Zone) { return; } player.ChangeLineType(CapType.Arrow); FreePoint pp = CreatePointAtCurrentPosition(coordinates, false); FigureList fl = new FigureList(); if (endFigure != null) { if (endFigure is Game.PBPlayer) { player.ClearEndPath(); endFigure = player.GetEndFigure(); if (endFigure != null) { fl.Add(endFigure); } else { fl.Add(player); } } else { fl.Add(endFigure); } } else { fl.Add(player); } fl.Add(pp); PBLine line = Factory.CreateArrowLine(Drawing, fl); if (!Drawing.DrawingMode) { line.StrokeColor = Webb.Playbook.Data.ColorSetting.Instance.RouteColor; } FigureList figureList = new FigureList(); figureList.Add(line); figureList.Add(pp); Drawing.Add(figureList as IEnumerable <IFigure>); Drawing.Figures.CheckConsistency(); Drawing.Figures.UpdateVisual(); //if (TempPoint != null) //{ // underMouse = Drawing.Figures.HitTest( // coordinates, // typeof(IPoint)); //} //else if (expectedType != null) //{ // underMouse = Drawing.Figures.HitTest(coordinates, expectedType); //} //else //{ // underMouse = Drawing.Figures.HitTest(coordinates); //} //if (underMouse != null // && underMouse != TempPoint // && ((FoundDependencies.Contains(underMouse) && !CanReuseDependency()) // || underMouse == TempResult)) //{ // return; //} //IFigure endPointFigure = player.GetEndFigure(); //if (TempPoint == null && underMouse != player && underMouse != endPointFigure) //{ // return; //} //if (ExpectingAPoint()) //{ // if (underMouse == null) // { // underMouse = CreatePointAtCurrentPosition(coordinates, true); // FigureList fl = new FigureList(); // fl.Add(player); // if (underMouse != null) // { // fl.Add(underMouse); // } // PBLine line = Factory.CreateArrowLine(Drawing, fl); // FigureList figureList = new FigureList(); // figureList.Add(line); // figureList.Add(underMouse); // Drawing.Add(figureList as IEnumerable<IFigure>); // return; // } // else // { // // one branch only // if (underMouse is Webb.Playbook.Geometry.Game.PBPlayer && underMouse.Dependents.Count > 0) // { // foreach (IFigure dep in underMouse.Dependents) // { // if (dep.Dependencies != null && dep.Dependencies.Count() > 1 && dep.Dependencies.ElementAt(0) == underMouse) // { // return; // } // } // if (underMouse != player) // { // return; // } // } // // at most two branch // else if (underMouse is IPoint && underMouse.Dependents.Count > 1) // { // return; // } // else if (underMouse is Zone) // { // return; // } // } //} //RemoveIntermediateFigureIfNecessary(); //if (TempPoint != null) //{ // //if (underMouse == TempPoint || underMouse == TempResult || underMouse == null) // //{ // underMouse = CreatePointAtCurrentPosition(coordinates, true); // //} // TempPoint.SubstituteWith(underMouse); // FoundDependencies.Remove(TempPoint); // Drawing.Figures.Remove(TempPoint); // TempPoint = null; //} //if (ExpectedDependency != null) //{ // AddFoundDependency(underMouse); //} //if (ExpectedDependency != null) //{ // if (ExpectingAPoint()) // { // player.ChangeLineType(CapType.Arrow); // 01-07-2010 Scott // TempPoint = CreateTempPoint(coordinates); // AddFoundDependency(TempPoint); // if (ExpectedDependency == null) // { // CreateAndAddFigure(); // Drawing.Figures.UpdateVisual(); // } // } // AddIntermediateFigureIfNecessary(); // AdvertiseNextDependency(); //} //else //{ // Finish(); // //07-22-2009 scott // if (IsMouseButtonDown) // {// click mode // IFigure endFigure = Drawing.Figures.HitTest(coordinates, typeof(Webb.Playbook.Geometry.Game.PBPlayer)); // if (endFigure is Webb.Playbook.Geometry.Game.PBPlayer) // { // Drawing.ActionManager.Undo(); // } // else // { // MouseLeftButtonDown(sender, e as System.Windows.Input.MouseButtonEventArgs); // } // } // else // {// drag mode // } //} //Drawing.Figures.CheckConsistency(); //Drawing.Figures.UpdateVisual(); }
/// <summary> /// Assumes coordinates are logical already /// </summary> /// <param name="coordinates">Logical coordinates of the click point</param> protected override void Click(object sender, System.Windows.Input.MouseButtonEventArgs e) { IEnumerable <IFigure> selectedFigures = Drawing.GetSelectedFigures(); PBPlayer player = null; if (selectedFigures != null && selectedFigures.Count() > 0) { player = selectedFigures.ElementAt(0) as PBPlayer; if (player == null) { return; } } else { return; } System.Windows.Point coordinates = Coordinates(e); IFigure underMouse = null; Type expectedType = ExpectedDependency; if (TempPoint != null) { underMouse = Drawing.Figures.HitTest( coordinates, typeof(IPoint)); } else if (expectedType != null) { underMouse = Drawing.Figures.HitTest(coordinates, expectedType); } else { underMouse = Drawing.Figures.HitTest(coordinates); } if (underMouse != null && underMouse != TempPoint && ((FoundDependencies.Contains(underMouse) && !CanReuseDependency()) || underMouse == TempResult)) { return; } IFigure endPointFigure = player.GetEndFigure(); if (TempPoint == null && underMouse != player && underMouse != endPointFigure) { return; } if (ExpectingAPoint()) { if (underMouse == null) { //underMouse = CreatePointAtCurrentPosition(coordinates, true); return; } else { // one branch only if (underMouse is Webb.Playbook.Geometry.Game.PBPlayer && underMouse.Dependents.Count > 0) { foreach (IFigure dep in underMouse.Dependents) { if (dep.Dependencies != null && dep.Dependencies.Count() > 1 && dep.Dependencies.ElementAt(0) == underMouse) { return; } } if (underMouse != player) { return; } } // at most two branch else if (underMouse is IPoint && underMouse.Dependents.Count > 1) { return; } else if (underMouse is Zone) { return; } } } RemoveIntermediateFigureIfNecessary(); if (TempPoint != null) { //if (underMouse == TempPoint || underMouse == TempResult || underMouse == null) //{ underMouse = CreatePointAtCurrentPosition(coordinates, true); //} TempPoint.SubstituteWith(underMouse); FoundDependencies.Remove(TempPoint); Drawing.Figures.Remove(TempPoint); TempPoint = null; } if (ExpectedDependency != null) { AddFoundDependency(underMouse); } if (ExpectedDependency != null) { if (ExpectingAPoint()) { TempPoint = CreateTempPoint(coordinates); AddFoundDependency(TempPoint); if (ExpectedDependency == null) { CreateAndAddFigure(); Drawing.Figures.UpdateVisual(); } } AddIntermediateFigureIfNecessary(); AdvertiseNextDependency(); } else { Finish(); //07-22-2009 scott if (IsMouseButtonDown) {// click mode IFigure endFigure = Drawing.Figures.HitTest(coordinates, typeof(Webb.Playbook.Geometry.Game.PBPlayer)); if (endFigure is Webb.Playbook.Geometry.Game.PBPlayer) { Drawing.ActionManager.Undo(); } else { MouseLeftButtonDown(sender, e as System.Windows.Input.MouseButtonEventArgs); } } else {// drag mode } } Drawing.Figures.CheckConsistency(); }
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 !"); } }
private void LButtonDown(Point pt) { offsetFromFigureLeftTopCorner = this.ToLogical(pt); oldCoordinates = offsetFromFigureLeftTopCorner; moving = new List <IMovable>(); IEnumerable <IFigure> roots = null; IFigure found = Drawing.Figures.HitTest(offsetFromFigureLeftTopCorner); IEnumerable <IFigure> selection = null; if (found is SubPoint) {// can't move sub point 01-11-10 scott return; } // remove by scott 08-25-2009 if (IsCtrlPressed()) { if (found != null) { found.Selected = !found.Selected; } selection = Drawing.GetSelectedFigures(); } else { if (found == null || !found.Selected) { Drawing.ClearSelectedFigures(); if (found != null) { found.Selected = true; selection = found.AsEnumerable(); } } } IEnumerable <IFigure> selectedFigures = Drawing.GetSelectedFigures(); Drawing.RaiseSelectionChanged(new Drawing.SelectionChangedEventArgs(selectedFigures)); IMovable oneMovable = found as IMovable; if (oneMovable != null /*&&!(oneMovable is Game.Zone)* 03-10-2011 Scott*/) { /*if (oneMovable is IPoint) * { * // when we drag a point, we want it to snap to the cursor * // so that the point center is directly under the tip of the mouse * offsetFromFigureLeftTopCorner = new Point(); * oldCoordinates = oneMovable.Coordinates; * } * else * {*/ // however when we drag other stuff (such as text labels) // we want the mouse to always touch the part of the draggable // where it first touched during MouseDown // we don't want the draggable to "snap" to the cursor like points do offsetFromFigureLeftTopCorner = offsetFromFigureLeftTopCorner.Minus(oneMovable.Coordinates); /*}*/ moving.Add(oneMovable); roots = found.AsEnumerable(); } else if (found != null) { if (!(found is Game.Zone) && !(found is LineBase)) // 11-18-2010 Scott { roots = DependencyAlgorithms.FindRoots(f => f.Dependencies, found); if (roots.All(root => root is IMovable)) { moving.AddRange(roots.Cast <IMovable>()); } } } if (roots != null) { toRecalculate = DependencyAlgorithms.FindDescendants(f => f.Dependents, roots).Reverse(); } else { toRecalculate = null; } //03-09-2010 Scott if (moving.Count > 0 && moving[0] is Game.PBBall && mode == 1) { Drawing.Figures.OfType <IMovable>().ForEach(f => { if (!(f is Game.PBBall) && !(f is SubPoint)) { moving.Add(f); } } ); } else if (found != null) { IEnumerable <IFigure> figuresSelected = Drawing.GetSelectedFigures(); if (figuresSelected.All(f => f is Game.PBPlayer || f is LabelBase || f is FreePoint || f is PrePoint || f is PBLine)) // 11-12-2010 Scott add labelbase support { moving.Clear(); IEnumerable <IFigure> fs = Drawing.GetSelectedFigures(); // 08-04-11 Scott foreach (IFigure f in fs) { if (f is PBLine) { foreach (IFigure pf in (f as PBLine).Dependencies) { if (pf is IMovable && !moving.Contains(pf as IMovable)) { moving.Add(pf as IMovable); } } } if (f is IMovable) { moving.Add(f as IMovable); } } // end } } if (moving.IsEmpty()) {// coordinate system //Drawing.Canvas.Cursor = new Cursor(AppDomain.CurrentDomain.BaseDirectory + @"\Resource\CursorHand.cur"); //01-04-2010 scott //moving.Add(Drawing.CoordinateSystem); //var allFigures = Drawing.Figures.GetAllFiguresRecursive(); // remove by scott 06-24-2009 //roots = DependencyAlgorithms.FindRoots(f => f.Dependencies, allFigures); //moving.AddRange(roots.OfType<IMovable>()); //roots = null; toRecalculate = null; // Figures; } }
/// <summary> /// Assumes coordinates are logical already /// </summary> /// <param name="coordinates">Logical coordinates of the click point</param> protected override void MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (e.ClickCount > 1) { Drawing.SetDefaultBehavior(); return; } IEnumerable <IFigure> selectedFigures = Drawing.GetSelectedFigures(); PBPlayer player = null; IFigure endFigure = null; if (selectedFigures != null && selectedFigures.Count() > 0) { player = selectedFigures.ElementAt(0) as PBPlayer; } //Type expectedType = ExpectedDependency; System.Windows.Point coordinates = Coordinates(e); IFigure underMouse = null; underMouse = Drawing.Figures.HitTest(coordinates); if (underMouse is Game.PBPlayer) { if (underMouse == player) { Drawing.SetDefaultBehavior(); return; } player = underMouse as Game.PBPlayer; Drawing.ClearSelectedFigures(); player.Selected = true; Drawing.Figures.UpdateVisual(); return; } else if (underMouse is IPoint && (underMouse as IPoint).Dependents.Count == 1) { Drawing.ClearSelectedFigures(); underMouse.Selected = true; Drawing.Figures.UpdateVisual(); return; } if (player == null) { if (selectedFigures != null && selectedFigures.Count() > 0) { IFigure figure = selectedFigures.ElementAt(0); if (figure is IPoint && (figure as IPoint).Dependents.Count == 1) { endFigure = figure; } else { return; } } else { return; } } else {// 09-26-2011 Scott endFigure = null; //endFigure = player.GetEndFigure(); //player.ChangeLineType(CapType.Arrow); //if (endFigure is Game.Zone) //{ // return; //} } FreePoint pp = CreatePointAtCurrentPosition(coordinates, false); FigureList fl = new FigureList(); if (endFigure != null) { if (endFigure is Game.PBPlayer) { player.ClearEndPath(); endFigure = player.GetEndFigure(); if (endFigure != null) { fl.Add(endFigure); } else { fl.Add(player); } } else { fl.Add(endFigure); } } else { fl.Add(player); } fl.Add(pp); PBLine line = Factory.CreateArrowLine(Drawing, fl); if (!Drawing.DrawingMode) { line.StrokeColor = Webb.Playbook.Data.ColorSetting.Instance.RouteColor; } FigureList figureList = new FigureList(); figureList.Add(line); figureList.Add(pp); Drawing.Add(figureList as IEnumerable <IFigure>); Drawing.ClearSelectedFigures(); pp.Selected = true; Drawing.Figures.CheckConsistency(); Drawing.Figures.UpdateVisual(); }