Example #1
0
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);
}
Example #2
0
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;
            }
        }
    }