Пример #1
0
void CNOutBarCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	if (GetFocus() != this) SetFocus();

	OnMouseMove(nFlags, point);

	int obj = HITOBJ(lastHit);
	int index = HITINDEX(lastHit);

	CClientDC dc(this);

	pressedHit = lastHit;

	if (obj == HT_FOLDER)
		drawFolder(&dc, index, TRUE);
	else if (obj == HT_ITEM) {
		dragItem = index;
		hilightItem(&dc, index, TRUE);
	} else if (obj == HT_SCROLL) {
		SetTimer(IDT_SCROLL, 50, NULL);
		drawScroll(&dc, index, TRUE);
	}

	CWnd::OnLButtonDown(nFlags, point);
}
Пример #2
0
// Scroll down
void Menu::scrollDown() {
	if(mNumItems == 0) return;

	dimItem(mSelection);
	mSelection++;
	if(mSelection > mNumItems-1) mSelection = 0;
	hilightItem(mSelection);

	SoundSystem::getSingleton().playSound("menumove");
}
Пример #3
0
// Scroll up
void Menu::scrollUp() {
	if(mNumItems == 0) return;

	dimItem(mSelection);
	mSelection--;
	if(mSelection < 0) mSelection = mNumItems-1;
	hilightItem(mSelection);

	SoundSystem::getSingleton().playSound("menumove");
}
Пример #4
0
// Load a menu
void Menu::setMenu(const String &menu, int selection) {
	static bool firstTime = true;

	mMenuName = menu;
	mNumItems = findMenuItems();
	mSelection = selection;
	mNewState = -1;

	// Set the colors
	MaterialPtr mat = MaterialManager::getSingleton().getByName("BlockCenter");
	mat->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setAlphaOperation(LBX_MODULATE, LBS_TEXTURE, LBS_MANUAL, 1.0f, 0.5f);
	mat = MaterialManager::getSingleton().getByName("BlockBorder");
	mat->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setAlphaOperation(LBX_MODULATE, LBS_TEXTURE, LBS_MANUAL, 1.0f, 0.5f);

	for(int f=0; f<mNumItems; f++)
		dimItem(f);
	hilightItem(mSelection);

	// Black and White on
	Viewport *vp = gameApp->getRenderWindow()->getViewport(0);
	CompositorManager::getSingleton().setCompositorEnabled(vp, "B&W", true);

	// Scroller on
	OverlayManager::getSingleton().getByName("MenuScroller")->show();

	// Show the menu
	show();

	// Load the background
	if(firstTime && menu == "MainMenu") {
		gameApp->loadLevel("menubg.lua");

		// Load the high scores
		hiscoreList.load(getHiscoreLocation(true));
		firstTime = false;
		
		// Update the version string
		TextAreaOverlayElement *ver = static_cast<TextAreaOverlayElement*>(OverlayManager::getSingleton().getOverlayElement("VersionText"));
		ver->setCaption("v" VERSION);
	}

	// Update the options menu
	if(menu == "GameOptions")
		prepareOptionsItems();
	else if(menu == "HighScores")
		hiscoreList.updateOverlay();
	else if(menu == "TitleScreen")
		titleAlpha = 0.0f;
	else if(menu == "MainMenu")
		OverlayManager::getSingleton().getByName("Version")->show();
}
Пример #5
0
void CNOutBarCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	HIT hit = hitTest(point);

	if (hit != lastHit) {
		int newObj = HITOBJ(hit);
		int newIndex = HITINDEX(hit);

		if (!editCtrl) {
			CClientDC dc(this);

			int obj = HITOBJ(lastHit);
			int index = HITINDEX(lastHit);

			if (obj == HT_FOLDER)
				drawFolder(&dc, index, FALSE, FALSE);
			else if (obj == HT_ITEM)
				drawItem(&dc, index, TRUE);
			else if (obj == HT_SCROLL && HITOBJ(pressedHit) == HT_SCROLL) {
				drawScroll(&dc, index);
				KillTimer(IDT_SCROLL);
			}

			if (newObj == HT_FOLDER)
				drawFolder(&dc, newIndex, hit == pressedHit, TRUE);
			else {
				if (newObj == HT_ITEM)
					hilightItem(&dc, newIndex, hit == pressedHit);
			}
		}

		lastHit = hit;

		if (dragItem >= 0) {
			if (newObj == HT_FOLDER && selFolder != newIndex)
				currentCursor = dragCursor;
			else
				currentCursor = forbiddenCursor;
		} else if (newObj == HT_FOLDER)
			currentCursor = handCursor;
		else
			currentCursor = NULL;
	}
	
	CWnd::OnMouseMove(nFlags, point);
}
Пример #6
0
void CNOutBarCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	OnMouseMove(nFlags, point);
	
	int obj = HITOBJ(lastHit);
	int index = HITINDEX(lastHit);

	if (dragItem >= 0) {
		if (obj == HT_FOLDER) {
			currentCursor = handCursor;
			if (listener && selFolder != index)
				listener->itemDragged(dragItem, index);
		} else
			currentCursor = NULL;
		dragItem = -1;
	}

	CClientDC dc(this);
	
	if (pressedHit == lastHit) {
		if (obj == HT_FOLDER) {
			if (index == selFolder)
				drawFolder(&dc, index);
			else {
				if (listener) {
					listener->selFolderChanged(selFolder);
					animateFolder(selFolder, index);
				}
			}
		} else if (obj == HT_ITEM) {
			hilightItem(&dc, index, FALSE);
			clickedItem = index;
			SetTimer(IDT_DBLCLK, 300, NULL);
		} else if (obj == HT_SCROLL) {
			drawScroll(&dc, index);
			KillTimer(IDT_SCROLL);
		}
	}

	pressedHit = HITNONE;
	
	CWnd::OnLButtonUp(nFlags, point);
}
Пример #7
0
void CNOutBarCtrl::drawAll(CDC *pDC)
{
	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	CRect rcClient;
	GetClientRect(rcClient);
	CBitmap bm;
	bm.CreateCompatibleBitmap(pDC, rcClient.Width(), rcClient.Height());
	CBitmap *oldBitmap = memDC.SelectObject(&bm);

	int obj = HITOBJ(lastHit);
	int index = HITINDEX(lastHit);

	int i;
	for (i = folders.size() - 1; i >= 0; i--)
		drawFolder(&memDC, i, FALSE, (obj == HT_FOLDER && index == i));

	CRect rc;
	getInsideRect(rc);
	drawBackground(&memDC, rc);

	CRgn rgn;
	rgn.CreateRectRgnIndirect(rc);
	memDC.SelectClipRgn(&rgn);

	int max = getMaxVisibleItem();
	for (i = scrollPos(); i <= max; i++)
		drawItem(&memDC, i);

	if (obj == HT_ITEM)
		hilightItem(&memDC, index, FALSE);

	for (i = 1; i >= 0; i--) {
		if (canScroll(i))
			drawScroll(&memDC, i, pressedHit == MAKEHIT(HT_SCROLL, i));
	}

	pDC->BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &memDC, 0, 0, SRCCOPY);

	memDC.SelectObject(oldBitmap);
}