VInit () { # ifdef MSDOS DOSgetinfo (&LINES, &COLS, &DOSstdattr); scrool = 1; # else CapGet (outtab); if (LINES <= 6 || COLS <= 30) return (0); if (! CM) return (0); scrool = AL && DL; if (! (rscrool = SF && SR)) SF = SR = 0; if (NF) initcolor (); else if (ME) initbold (); if (G1 || G2 || GT) initgraph (); # endif if (curscr.y) delwin (&curscr); if (VScreen.y) delwin (&VScreen); if (! newwin (&curscr) || ! newwin (&VScreen)) { VClose (); return (0); } curscr.flgs = curscr.clear = 1; resetattr (0); return (1); }
void doquit() { if (! saved_batch && loaded_batch) save_batch (); VMove (LINES - 1, 0); VClearLine (); VMove (LINES - 2, 0); VSetPalette (2, 0, 7, 1, 15, 0, 15, 7, 14, 0, 15, 1); VSetBold (); VSync (); VClose (); # ifdef MSDOS _dos_setvect (0x1C, old_timer); # endif exit (0); }
bool SDLGameWindow::VRun() { /*try and initialize window*/ if (!VInit()) { DebugPrintF(VTEXT("SDLGameWindow failed to initialize")); return false; } /*LOAD ONLY NECESSARY CONTENT FOR STARTUP*/ m_parent->VOnStartup(); m_timer.Start(); //run application loop m_running = true; while (m_running) { m_timer.Tick(); SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: VClose(); break; case SDL_KEYDOWN: ((SDLKeyboardState*)Game::GetKeyboard())->KeyDown(event.key.keysym.scancode); break; case SDL_KEYUP: ((SDLKeyboardState*)Game::GetKeyboard())->KeyUp(event.key.keysym.scancode); break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: ((SDLMouseState*)Game::GetMouse())->MouseEvent(event.button); break; case SDL_MOUSEWHEEL: ((SDLMouseState*)Game::GetMouse())->MouseWheelEvent(event.wheel); break; case SDL_MOUSEMOTION: ((SDLMouseState*)Game::GetMouse())->MouseMove(event.motion.x, event.motion.y); break; } } /*CLEAR BUFFERS*/ if(m_renderer) m_renderer->VClearBuffer(ClearArgs::COLOR_DEPTH_STENCIL_BUFFER); /*update*/ m_parent->VOnUpdate(m_timer.DeltaTime()); /*render*/ m_parent->VOnRender(m_timer.DeltaTime()); /*update keyboard state for next frame*/ ((SDLKeyboardState*)Game::GetKeyboard())->UpdatePrev(); /*update mouse state for next frame*/ ((SDLMouseState*)Game::GetMouse())->UpdatePrev(); /*swap buffers*/ VSwapBuffers(); m_timer.CalculateFPS(); } m_parent->VOnShutdown(); return true; }
void SDLGameWindow::VPollEvents() { /*std::stringstream ss; ss << "FPS: " << Time::FPS(); SDL_SetWindowTitle(m_windowHandle, ss.str().c_str());*/ SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: VClose(); break; case SDL_KEYDOWN: { ((SDLKeyboardState*)m_keyboardState)->KeyDown(event.key.keysym.scancode); if (m_captureText && event.key.keysym.scancode == SDL_SCANCODE_BACKSPACE) { if(m_inputBuffer.size() > 0) m_inputBuffer.pop_back(); } } break; case SDL_KEYUP: ((SDLKeyboardState*)m_keyboardState)->KeyUp(event.key.keysym.scancode); break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: ((SDLMouseState*)m_mouseState)->MouseEvent(event.button); break; case SDL_MOUSEWHEEL: ((SDLMouseState*)m_mouseState)->MouseWheelEvent(event.wheel); break; case SDL_MOUSEMOTION: ((SDLMouseState*)m_mouseState)->MouseMove(event.motion.x, event.motion.y); break; case SDL_CONTROLLERDEVICEADDED: { for (int i = 0; i < 4; i++) { if (m_controllerIndeces[i] == -1) { m_controllers[i] = SDL_GameControllerOpen(event.cdevice.which); m_controllerIndeces[i] = SDL_JoystickInstanceID(SDL_GameControllerGetJoystick(m_controllers[i])); m_controllerState->Connected(true, i); break; } } } break; case SDL_CONTROLLERDEVICEREMOVED: { int cont = GetPlayerFromControllerIndex(event.cdevice.which); SDL_GameControllerClose(m_controllers[cont]); m_controllerState->Connected(false, cont); m_controllerIndeces[cont] = -1; } break; case SDL_CONTROLLERBUTTONDOWN: m_controllerState->ButtonDown((SDL_GameControllerButton)event.cbutton.button, GetPlayerFromControllerIndex(event.cdevice.which)); break; case SDL_CONTROLLERBUTTONUP: m_controllerState->ButtonUp((SDL_GameControllerButton)event.cbutton.button, GetPlayerFromControllerIndex(event.cdevice.which)); break; case SDL_CONTROLLERAXISMOTION: m_controllerState->Axis((SDL_GameControllerAxis)event.caxis.axis, event.caxis.value, GetPlayerFromControllerIndex(event.cdevice.which)); break; case SDL_TEXTINPUT: m_inputBuffer += event.text.text; break; //HANDLE SDL WINDOW EVENTS case SDL_WINDOWEVENT: { switch (event.window.event) { case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_HIDDEN: case SDL_WINDOWEVENT_EXPOSED: case SDL_WINDOWEVENT_MOVED: case SDL_WINDOWEVENT_SIZE_CHANGED: case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_MAXIMIZED: case SDL_WINDOWEVENT_RESTORED: case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_LEAVE: case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_LOST: case SDL_WINDOWEVENT_CLOSE: break; case SDL_WINDOWEVENT_RESIZED: { //HANDLE WINDOW RESIZE Renderer::ResizeBuffers(event.window.data1, event.window.data2); SceneManager::UpdateCameraViewports(event.window.data1, event.window.data2); } break; default: break; } } break; } } }