Esempio n. 1
0
        bool IMessageFilter.PreFilterMessage(ref Message m)
        {
            var hWnd = NativeMethods.WindowFromPoint(WindowsMouseInput.GetPointLParam(m.LParam));
            var ctl  = Control.FromHandle(hWnd);

            if (hWnd != IntPtr.Zero && hWnd != m.HWnd && ctl != null)
            {
                switch ((WM)m.Msg)
                {
                default:  break;

                case WM.MOUSEWHEEL:
            #if DEBUG
                    DebugTracing.Trace(TraceFlags.ScrollEvents, true, " - {0}.WM.{1}: ", Name,
                                       ((WM)m.Msg));
            #endif
                    if (ctl is HexgridPanel.HexgridPanel || ctl is HexgridExampleForm)
                    {
                        return(NativeMethods.SendMessage(hWnd, m.Msg, m.WParam, m.LParam) == IntPtr.Zero);
                    }
                    break;
                }
            }
            return(false);
        }
 /// <summary>TODO</summary>
 public void SetPanelSize()
 {
     if (DesignMode || !IsHandleCreated)
     {
         return;
     }
     DebugTracing.Trace(TraceFlags.Sizing, " - {0}.SetPanelSize; ClientSize = {1}", DataContext.Model.Name, ClientSize);
     SetScroll(PanelCenterHex);
 }
        /// <summary>Sets ScrollBars, then centres on <c>newCenterHex</c>.</summary>
        public virtual void SetScroll(HexCoords newCenterHex)
        {
            if (DesignMode || !IsHandleCreated)
            {
                return;
            }
            DebugTracing.Trace(TraceFlags.Sizing, " - {0}.SetPanelSize; Center Hex = {1}", DataContext.Model.Name, newCenterHex.ToString());

            SetScrollLimits(DataContext.Model);

            CenterOnHex(newCenterHex);
        }
        public static IFieldOfView GetFieldOfView(IBoard <IGridHex> board, ICoordsUser origin, int range,
                                                  FovTargetMode targetMode)
        {
            DebugTracing.LogTime(TraceFlag.FieldOfView, "FieldOfView - begin");
            var fov = new FieldOfView(board);

            if (board.IsPassable(origin))
            {
                Func <ICoordsCanon, int> target;
                int observer;
                switch (targetMode)
                {
                case FovTargetMode.EqualHeights:
                    observer = board[origin].ElevationASL + 1;
                    target   = canon => board[canon.User].ElevationASL + 1;
                    break;

                case FovTargetMode.TargetHeightEqualZero:
                    observer = board[origin].HeightObserver;
                    target   = canon => board[canon.User].ElevationASL;
                    break;

                default:
                case FovTargetMode.TargetHeightEqualActual:
                    observer = board[origin].HeightObserver;
                    target   = canon => board[canon.User].HeightTarget;
                    break;
                }
                ShadowCasting.ComputeFieldOfView(
                    origin.Canon,
                    range,
                    observer,
                    canon => board.IsOnBoard(canon.User),
                    target,
                    canon => board[canon.User].HeightTerrain,
                    canon => fov[canon.User] = true
                    );
            }
            DebugTracing.LogTime(TraceFlag.FieldOfView, "FieldOfView - end");
            return(fov);
        }
        public bool PreFilterMessage(ref Message m)
        {
            if ((WM)m.Msg != WM.MouseHwheel && (WM)m.Msg != WM.MouseWheel)
            {
                return(false);
            }

            var hWnd = NativeMethods.WindowFromPoint(WindowsMouseInput.GetPointLParam(m.LParam));
            var ctl  = Control.FromChildHandle(hWnd);

            if (hWnd != IntPtr.Zero && hWnd != m.HWnd && ctl != null)
            {
                switch ((WM)m.Msg)
                {
                case WM.MouseHwheel:
                case WM.MouseWheel:
                    DebugTracing.Trace(Traces.ScrollEvents, true, " - {0}.WM.{1}: ", Name, ((WM)m.Msg));
                    return(NativeMethods.SendMessage(hWnd, m.Msg, m.WParam, m.LParam) == IntPtr.Zero);

                default: break;
                }
            }
            return(false);
        }