Exemplo n.º 1
0
        private void OnMouseButtonPressed(object sender, MouseButtonEventArgs e)
        {
            if (e.Button != Mouse.Button.Left)
            {
                return;
            }

            var  window = (Window)sender;
            var  mp     = GetGridPosition(window, NodeSize);
            Int2 mmp    = new Int2(mp.X, mp.Y);

            mLatestP = mmp;

            if (mmp == mBoard.StartP)
            {
                mState = E_ClickState.MoveStartNode;
                return;
            }

            if (mmp == mBoard.GoalP)
            {
                mState = E_ClickState.MoveGoalNode;
                return;
            }

            if (mBoard.IsWall(mmp))
            {
                mState = E_ClickState.EraseWall;
                return;
            }

            mState = E_ClickState.MakeWall;
        }
Exemplo n.º 2
0
        private void OnMouseButtonReleased(object sender, MouseButtonEventArgs e)
        {
            if (e.Button != Mouse.Button.Left)
            {
                return;
            }

            if (mState == E_ClickState.EraseWall || mState == E_ClickState.MakeWall)
            {
                var  window = (Window)sender;
                var  mp     = GetGridPosition(window, NodeSize);
                Int2 mmp    = new Int2(mp.X, mp.Y);
                if (mLatestP == mmp)
                {
                    if (mState == E_ClickState.EraseWall)
                    {
                        mBoard.RemoveWall(mmp);
                    }
                    else
                    {
                        mBoard.CreateWall(mmp);
                    }
                }
                mBoard.Update();
            }
            mLatestP = null;
            mState   = E_ClickState.None;
        }