Пример #1
0
//---ファイルからメッセージを表示
void CrMesManager::FileMessage(eistr *name,int number,int scene /*= 1*/,int window /*= 0*/)
{
	crfieldDrawField(1);
	CreateNewMessage(window);

	OpenMessage(name,number,window);
	SeekScene(scene,window);
	ReadMessageAll(window);
//	Draw();
//	WaitKey();

	CloseMessage(window);
}
Пример #2
0
void CASW_VGUI_Info_Message::OnCommand(char const* command)
{
	if (!Q_strcmp(command, "OkayButton"))
	{
		CloseMessage();
		return;
	}
	else if (!Q_strcmp(command, "MessageLog"))
	{
		C_ASW_Player *pPlayer = C_ASW_Player::GetLocalASWPlayer();
		if (pPlayer)
			pPlayer->ShowMessageLog();
		return;
	}
	BaseClass::OnCommand(command);
}
Пример #3
0
bool CASW_VGUI_Info_Message::MouseClick(int x, int y, bool bRightClick, bool bDown)
{
	if (bDown)
		return true;

	if (m_pOkayButton->IsCursorOver())
	{
		CloseMessage();
	}
	else if (m_pLogButton && m_pLogButton->IsCursorOver())
	{
		C_ASW_Player *pPlayer = C_ASW_Player::GetLocalASWPlayer();
		if (pPlayer)
			pPlayer->ShowMessageLog();
	}
	
	return true;	// always swallow clicks in our window
}
Пример #4
0
void msgDisplay(MessageManager* MM, sf::RenderWindow& win, float ViewX, float ViewY, float ViewWidth, float ViewHeight)
{
	mnSetHide(MM->Messages, FALSE);

	glPushMatrix();

	//sf::Clock cl;
	//cl.restart();
	sf::Texture Screenshot; Texture Screeny; sf::Image img;
	Screenshot.create(win.getSize().x, win.getSize().y);
	Screenshot.update(win);
	float MouseX, MouseY;
	MouseX = sf::Mouse::getPosition(win).x;
	MouseY = sf::Mouse::getPosition(win).y;


	MM->CloseMessage = FALSE;
	mnSetPosition(MM->Messages, vec2(ViewWidth/2.f-moiGetSize(mnGetCurrentMenu(MM->Messages)).x/2.f, -100.f));
	mnSetItemNormalZoomFactor(MM->Messages, 0.75f);

	//écran de fond
	img = Screenshot.copyToImage();
	glEnable(GL_TEXTURE_2D);
	glGenTextures(1, &Screeny);
	glBindTexture(GL_TEXTURE_2D, Screeny);


	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Screenshot.getSize().x, Screenshot.getSize().y, 0, GL_RGBA, GL_UNSIGNED_BYTE, img.getPixelsPtr());
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);


	//c'est un peu lent... 0.03s
	//printf("time: %f\n", cl.getElapsedTime().asSeconds());
	if (mnGetType(MM->Messages) == MENU_TYPE_DEFAULT)
		mnSetPosition(MM->Messages, vec2(win.getSize().x/2.f - moiGetSize(mnGetCurrentMenu(MM->Messages)).x/2.f, -100.f));
	else
		mnSetPosition(MM->Messages, vec2(MouseX, MouseY));

	win.setKeyRepeatEnabled(1);
	
	while (mnIsVisible(MM->Messages) || !MM->CloseMessage)
	{

		sf::Event event;
		while (win.pollEvent(event))
		{
			if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
			{
				CloseMessage(MM);
				MM->LastChoice = INVALID_ITEM_ID;
				break; // ça évite de doubler l'event avec les bouttons
			}
			
			if (event.type == sf::Event::MouseButtonPressed && mnGetCurrentItem(MM->Messages) == NULL)
			{
				CloseMessage(MM);
				MM->LastChoice = INVALID_ITEM_ID;
				break;
			}


			mnHandleEvent(MM->Messages, event);


		}

		float menuPosx = win.getSize().x/2.f - moiGetSize(mnGetCurrentMenu(MM->Messages)).x/2.f;
		if (mnGetType(MM->Messages) == MENU_TYPE_DEFAULT)
			mnUpdate(MM->Messages, vec2(menuPosx, 100.f), vec2(menuPosx, -mnGetHeight(MM->Messages) - 100.f));
		else
		{
			mnUpdate(MM->Messages, vec2(0.f, 0.f), vec2(0.f, 0.f));
			if (mnGetHeight(MM->Messages)+MouseY+22.f > win.getSize().y)
				mnSetPosition(MM->Messages, vec2(mnGetPosition(MM->Messages).x, win.getSize().y-mnGetHeight(MM->Messages)-22.f));
			
			if (moiGetSize(mnGetCurrentMenu(MM->Messages)).x+MouseX+22.f > win.getSize().x)
				mnSetPosition(MM->Messages, vec2(win.getSize().x-moiGetSize(mnGetCurrentMenu(MM->Messages)).x-22.f, mnGetPosition(MM->Messages).y));
		}


		glClear(GL_COLOR_BUFFER_BIT);
		//glClearColor(0.f, 0.f, 0.f, 0.2f);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		//glViewport(0.f, 0.f, win.getSize().x, win.getSize().y);
		glOrtho(ViewX, ViewX + ViewWidth, ViewY + ViewHeight, ViewY, 0.0, 100.0);


		glColor4f(1.f, 1.f, 1.f, 1.f);
		glEnable(GL_TEXTURE_2D);
		glBindTexture(GL_TEXTURE_2D, Screeny);
		glPushMatrix();
		glTranslatef(ViewX, ViewY, 0.f);
		//glScalef(ViewWidth/win.getSize().x, ViewHeight/win.getSize().y, 1.f);
		glBegin(GL_QUADS);
		glTexCoord2i(0, 0);
		glVertex2f(0.f, 0.f);
		glTexCoord2i(1, 0);
		glVertex2f(ViewWidth, 0.f);
		glTexCoord2i(1, 1);
		glVertex2f(ViewWidth, ViewHeight);
		glTexCoord2i(0, 1);
		glVertex2f(0.f, ViewHeight);
		glEnd();
		glDisable(GL_TEXTURE_2D);

		glPopMatrix();


		glDrawMenuBox(MM->SR, win, MM->Messages, ViewX, ViewY, ViewWidth, ViewHeight);


		glDrawMenuItems(MM->SR, win, MM->Messages, ViewX, ViewY, ViewWidth, ViewHeight);

		if (!mnGetHide(MM->Messages))
		{
			if (mnIsItemSelectedWithCursor(MM->Messages))
				glDrawCursor(win, ViewWidth, ViewHeight, sf::Mouse::getPosition(win).x, sf::Mouse::getPosition(win).y, shGetCursorSprite(MM->SR, SPR_CURSOR_HAND));
			else
				glDrawCursor(win, ViewWidth, ViewHeight, sf::Mouse::getPosition(win).x, sf::Mouse::getPosition(win).y, shGetCursorSprite(MM->SR, SPR_CURSOR));
		}
		

		win.display();

	}

	//On libère le menu
	mnRemoveMenu(MM->Messages, (MenuID)0);
	glTexFree(Screeny);

	glPopMatrix();
	win.setKeyRepeatEnabled(0);

}