Game::~Game(){ delete fps_counter; delete game_state; closeSystems(); }
/* * Process an event from the message queue. */ void processEvent() { MSG message; if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) { // There was a message. Check if it's eventProcessor() asking to leave this loop. if (message.message == WM_QUIT) { // It was; quit. extern void closeSystems(); closeSystems(); exit(message.wParam); } else { // Change ascii keys and the like to virtual keys. TranslateMessage(&message); // Send the message to the event processor. DispatchMessage(&message); } } }
/* * Run the cursor map and return the chose option, * with zero as the first index. */ int CCursorMap::run() { extern int g_resX, g_resY; extern CDirectDraw *g_pDirectDraw; extern CCanvas *g_cnvCursor; extern void closeSystems(); CCanvas cnv; cnv.CreateBlank(NULL, g_resX, g_resY, TRUE); g_pDirectDraw->CopyScreenToCanvas(&cnv); int toRet = 0, pos = -1; MSG message; while (true) { const DWORD time = GetTickCount() + 50; while (GetTickCount() < time) { if (PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) { if (message.message == WM_QUIT) { closeSystems(); exit(message.wParam); } else { TranslateMessage(&message); DispatchMessage(&message); } } } BYTE keys[256]; extern IDirectInputDevice8A *g_lpdiKeyboard; if (FAILED(g_lpdiKeyboard->GetDeviceState(256, keys))) { continue; } if ((keys[DIK_UP] & 0x80) || (keys[DIK_LEFT] & 0x80)) { if (toRet) --toRet; else toRet = m_points.size() - 1; } else if ((keys[DIK_DOWN] & 0x80) || (keys[DIK_RIGHT] & 0x80)) { if (toRet != (m_points.size() - 1)) ++toRet; else toRet = 0; } else if ((keys[DIK_RETURN] & 0x80) || (keys[DIK_SPACE] & 0x80)) { break; } if (toRet != pos) { g_pDirectDraw->DrawCanvas(&cnv, 0, 0); g_pDirectDraw->DrawCanvasTransparent(g_cnvCursor, m_points[toRet].x - 40, m_points[toRet].y - 10, RGB(255, 0, 0)); g_pDirectDraw->Refresh(); Sleep(80); } pos = toRet; } g_pDirectDraw->DrawCanvas(&cnv, 0, 0); g_pDirectDraw->Refresh(); return toRet; }