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) { 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 !"); } }