@Override
	public void buttonStateCheck(Input input) {
		int mX = input.getMouseX();
		int mY = input.getMouseY();
		int farX = getX() + getStoredImage().getImage().getWidth();
		int farY = getY() + getStoredImage().getImage().getHeight();
		if (pointContains(getX(), mX, farX) && pointContains(getY(), mY, farY)) {
			hovered = true;
			setState(STATE_HOVER);
			isRevealed = true;
			for (int i = 0; i < dList.getDisplayLength(); i++) {
				dList.getBgButton(i).setState(STATE_IDLE);
			}
		} else {
			hovered = false;
			setState(STATE_IDLE);
			if (isRevealed
					&& pointContains(farX, mX, farX
							+ dList.getBgButton().getStoredImage().getImage()
									.getWidth())
					&& pointContains(getY(), mY, getY() + dList.getBgButton()
							.getStoredImage().getImage().getHeight()
							* dList.getDisplayLength())) {

				for (int i = 0; i < dList.getDisplayLength(); i++) {
					if (pointContains(getY()
							+ dList.getBgButton().getStoredImage().getImage()
									.getHeight() * i, mY, getY()
							+ dList.getBgButton().getStoredImage().getImage()
									.getHeight() * (i + 1))) {
						if (input.isMouseButtonDown(Input.MOUSE_LEFT_BUTTON)) {
							dList.getBgButton(i).setState(STATE_PRESSED);
							dList.getBgButton(i).setClicked(true);
						} else {
							dList.getBgButton(i).setState(STATE_HOVER);
						}
					}else{
						dList.getBgButton(i).setState(STATE_IDLE);
						dList.getBgButton(i).setClicked(false);
					}
				}
			} else {
				isRevealed = false;
			}
		}

	}