public bool IsInLaunchButtonRect(int x, int y)
 {
     if (launchButton.InBoundingRect(x, y))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #2
0
 public bool IsInLaunchButtonRect(int x, int y)
 {
     return(launchButton.InBoundingRect(x, y));
 }
예제 #3
0
        void HandleMouseInput(MouseControls mc)
        {
            bool   dbgtxt = true;
            string fnId   = $"[{clsName}.HandleMouseInput]";

            if (dbgtxt)
            {
                DbgFuncs.AddStr($"{fnId} mc.LeftButtonState: {mc.LeftButtonState}");
            }
            if (dbgtxt)
            {
                DbgFuncs.AddStr($"{fnId} mc.LastLeftButtonState: {mc.LastLeftButtonState}");
            }

            mousePos.Set(mc.X, mc.Y);

            // Reset game screen
            if (mc.RightButtonState == UpDownState.Down && mc.LastRightButtonState == UpDownState.Up)
            {
                Reset();
                return;
            }

            // Prevents aim and spin boxes from continuing to drag if mouse is not down
            if (mc.LeftButtonState == UpDownState.Up &&
                mc.LastLeftButtonState == UpDownState.Up &&
                (adjustingAim || adjustingSpin || adjustingPosition))
            {
                adjustingAim = adjustingSpin = adjustingPosition = false;
                return;
            }


            // Setting up the shot
            if (!launched)
            {
                // Building logic to move ball before the aim marker is placed (aimTraj.Placed)
                if (mc.LeftButtonState == UpDownState.Down &&
                    mc.LastLeftButtonState == UpDownState.Up &&
                    !aimTraj.Placed &&
                    InCircle(mc.Position.X, mc.Position.Y))
                {
                    adjustingPosition = true;
                    return;
                }

                // Place aim marker
                if (!aimTraj.Placed &&
                    mc.LeftButtonState == UpDownState.Down &&
                    mc.LastLeftButtonState == UpDownState.Up)
                {
                    aimTraj.SetStartPoint(position);
                    aimTraj.SetEndPoint(mc.Position);

                    spinTraj.SetStartPoint(position);
                    PointD spinStartPos = new PointD();
                    spinStartPos = position.HalfWayTo(mc.Position.X, mc.Position.Y);
                    spinTraj.SetEndPoint(spinStartPos);

                    return;
                }

                // Adjust aim or spin
                if (aimTraj.Placed &&
                    (!adjustingAim || !adjustingSpin) &&
                    mc.LeftButtonState == UpDownState.Down &&
                    mc.LastLeftButtonState == UpDownState.Up)
                {
                    if (aimTraj.InEndRect(mc.X, mc.Y))
                    {
                        adjustingAim = true; return;
                    }
                    if (spinTraj.InEndRect(mc.X, mc.Y))
                    {
                        adjustingSpin = true; return;
                    }
                }

                // Stop adjusting aim or spin
                if ((adjustingAim || adjustingSpin) &&
                    mc.LeftButtonState == UpDownState.Up &&
                    mc.LastLeftButtonState == UpDownState.Down)
                {
                    adjustingAim = adjustingSpin = false;
                    return;
                }

                // Launch the ball and start the timer (when launch button is clicked)
                if ((!adjustingAim && !adjustingSpin) &&
                    mc.LastLeftButtonState == UpDownState.Up &&
                    mc.LeftButtonState == UpDownState.Down
                    //&& InLaunchButtonRect(mc.X, mc.Y)
                    && btnLaunch.InBoundingRect(mc.X, mc.Y))
                {
                    launched = true;
                    gtimer.Start();
                }
            }
        }