//---ファイルからメッセージを表示 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); }
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); }
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 }
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); }