/// <summary> /// Construct new AutoScroll object that will scroll the given target object within it's container /// by attaching to the mouse events of the container. /// </summary> /// <param name="target">The target object to scroll</param> /// <param name="zoom">The master MapZoom object that manages the actual render transform</param> public AutoScroll(FrameworkElement target, MapZoom zoom) { _container = target.Parent as Panel; _target = target; _container.MouseDown += new MouseButtonEventHandler(OnMouseDown); _container.MouseMove += new MouseEventHandler(OnMouseMove); _container.MouseWheel += new MouseWheelEventHandler(OnMouseWheel); Keyboard.AddKeyDownHandler(_container, new KeyEventHandler(OnKeyDown)); _zoom = zoom; }
/// <summary> /// Construct new Pan gesture object. /// </summary> /// <param name="target">The target to be panned, must live inside a container Panel</param> /// <param name="zoom"></param> public Pan(FrameworkElement target, MapZoom zoom) { this._target = target; this._container = target.Parent as Panel; if (this._container == null) { // todo: localization throw new ArgumentException("Target object must live in a Panel"); } this._zoom = zoom; _container.MouseLeftButtonDown += new MouseButtonEventHandler(OnMouseLeftButtonDown); _container.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeftButtonUp); _container.MouseMove += new MouseEventHandler(OnMouseMove); }
/// <summary> /// Construct new RectangleSelectionGesture object for selecting things in the given target object. /// </summary> /// <param name="target">A FrameworkElement</param> /// <param name="zoom">The MapZoom object that wraps this same target object</param> public RectangleSelectionGesture(FrameworkElement target, MapZoom zoom, ModifierKeys mods) { _mods = mods; _target = target; _container = target.Parent as Panel; if (_container == null) { throw new ArgumentException("Target object must live in a Panel"); } _zoom = zoom; _container.MouseLeftButtonDown += new MouseButtonEventHandler(OnMouseLeftButtonDown); _container.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeftButtonUp); _container.MouseMove += new MouseEventHandler(OnMouseMove); }
private InGameEngine() { #region "DrawCanvas" VirtualGameCanvas = new VirtualCanvas(); GameCanvas = VirtualGameCanvas.ContentCanvas; VirtualGameCanvas.Width = 800; VirtualGameCanvas.Height = 600; VirtualGameCanvas.SmallScrollIncrement = new Size(50 / 2, 50 / 2); //smallest scroll increment //change this later zoom = new MapZoom(GameCanvas); //set the zoom to the canvas we are drawing on. pan = new Pan(GameCanvas, zoom); //panning rectZoom = new RectangleSelectionGesture(GameCanvas, zoom, ModifierKeys.Control); rectZoom.ZoomSelection = true; autoScroll = new AutoScroll(GameCanvas, zoom); #endregion "DrawCanvas" _pathFinder = new PathFinder(); MoveList = new List<UnitMove>(); //kickstart DrawUnitMovementRangeState.Get(); }