private void HandleOptionsMouse(GameTime gameTime, InputManager inputManager) { if (Transition <= 0) { return; } int lineHeight = (int)menuFont.MeasureString("Sample").Y; foreach (MenuItem item in menuItems) { int optionWidth = (int)(item.optionPos.X - item.position.X) + 96; Rectangle itemRect = new Rectangle( (int)item.position.X, (int)item.position.Y - lineHeight / 2, optionWidth, lineHeight); itemRect.Inflate(32, 0); if (itemRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { if (inputManager.mouseHasMoved) { selectedItem = item; } bool slideLeft = false; bool slideRight = false; if (item.itemType == MenuItem.menuItemType.slider) { int sliderButtonWidth = sprite.arrow.Width * 2; int itemValueWidth = (int)FrameworkCore.SerifBig.MeasureString(item.optionText).X; if (inputManager.mousePos.X > item.optionPos.X + itemValueWidth) { slideRight = true; } if (inputManager.mousePos.X > item.optionPos.X - sliderButtonWidth && inputManager.mousePos.X < item.optionPos.X) { slideLeft = true; } } if (inputManager.mouseLeftClick) { if (slideLeft) { item.onSliderDecrease(); } else if (slideRight) { item.onSliderIncrease(); } else { ActivateItem(inputManager); } } } } }