コード例 #1
0
PieceSolutions::PieceSolutions()
{
	createStates();
    resetStates();
	remove("pieceSolutions.txt");
	solutions = 0;
}
コード例 #2
0
void PieceSolutions::find(bool (*mem)[10], int linesToClear)
{
	lines = linesToClear;
	wellMem = mem;
    resetStates();
	search();
}
コード例 #3
0
void PieceSolutions::getLocks(int tetriminoType, std::vector<State*> *locks) {
	resetStates();
	int maxRotation = numOfRot[tetriminoType] - 1;
	for(int rot = 0; rot < numOfRot[tetriminoType]; rot++){
		for(int x = bounds[tetriminoType][rot][0]; x <= bounds[tetriminoType][rot][1]; x++){
			addChild(tetriminoType, x, 0, rot);
		}
	}
	while(!queue.empty()) {
		State *state = queue.front();
		queue.pop();
		if (!addChild(tetriminoType, state->x, state->y + 1, state->rotation)) {
			locked[state->x+1][state->rotation] = true;
			if(pieceClear(tetriminoType, state->rotation, state->x, state->y)){
				locks->push_back(state);
			}
		}

		if (maxRotation != 0) {
			int rotation = state->rotation == 0 ? maxRotation : state->rotation - 1;
			if (locked[state->x+1][rotation]) {
				addChild(tetriminoType, state->x, state->y, rotation);
			}
			if (maxRotation != 1) {
				rotation = state->rotation == maxRotation ? 0 : state->rotation + 1;
				if (locked[state->x+1][rotation]) {
					addChild(tetriminoType, state->x, state->y, rotation);
				}
			}
		}
		if (locked[state->x][state->rotation]) {
			addChild(tetriminoType, state->x - 1, state->y, state->rotation);
		}
		if (locked[state->x+2][state->rotation]) {
			addChild(tetriminoType, state->x + 1, state->y, state->rotation);
		}
	}
	std::reverse(locks->begin(),locks->end());
}
コード例 #4
0
ファイル: egRendererBase.cpp プロジェクト: dreamsxin/nawia
bool RenderDevice::init()
{
	bool failed = false;

	char *vendor = (char *)glGetString( GL_VENDOR );
	char *renderer = (char *)glGetString( GL_RENDERER );
	char *version = (char *)glGetString( GL_VERSION );
	
	Modules::log().writeInfo( "Initializing GL2 backend using OpenGL driver '%s' by '%s' on '%s'",
	                          version, vendor, renderer );
	
	// Init extensions
	if( !initOpenGLExtensions() )
	{	
		Modules::log().writeError( "Could not find all required OpenGL function entry points" );
		failed = true;
	}

	// Check that OpenGL 2.0 is available
	if( glExt::majorVersion * 10 + glExt::minorVersion < 20 )
	{
		Modules::log().writeError( "OpenGL 2.0 not available" );
		failed = true;
	}
	
	// Check that required extensions are supported
	if( !glExt::EXT_framebuffer_object )
	{
		Modules::log().writeError( "Extension EXT_framebuffer_object not supported" );
		failed = true;
	}
	if( !glExt::EXT_texture_filter_anisotropic )
	{
		Modules::log().writeError( "Extension EXT_texture_filter_anisotropic not supported" );
		failed = true;
	}
	if( !glExt::EXT_texture_compression_s3tc )
	{
		Modules::log().writeError( "Extension EXT_texture_compression_s3tc not supported" );
		failed = true;
	}
	if( !glExt::EXT_texture_sRGB )
	{
		Modules::log().writeError( "Extension EXT_texture_sRGB not supported" );
		failed = true;
	}
	
	if( failed )
	{
		Modules::log().writeError( "Failed to init renderer backend, debug info following" );
		char *exts = (char *)glGetString( GL_EXTENSIONS );
		Modules::log().writeInfo( "Supported extensions: '%s'", exts );

		return false;
	}
	
	// Get capabilities
	_caps.texFloat = glExt::ARB_texture_float ? 1 : 0;
	_caps.texNPOT = glExt::ARB_texture_non_power_of_two ? 1 : 0;
	_caps.rtMultisampling = glExt::EXT_framebuffer_multisample ? 1 : 0;

	// Find supported depth format (some old ATI cards only support 16 bit depth for FBOs)
	_depthFormat = GL_DEPTH_COMPONENT24;
	uint32 testBuf = createRenderBuffer( 32, 32, TextureFormats::BGRA8, true, 1, 0 ); 
	if( testBuf == 0 )
	{	
		_depthFormat = GL_DEPTH_COMPONENT16;
		Modules::log().writeWarning( "Render target depth precision limited to 16 bit" );
	}
	else
		destroyRenderBuffer( testBuf );
	
	initStates();
	resetStates();

	return true;
}
コード例 #5
0
ファイル: Game.cpp プロジェクト: DrJonki/I-want-it-back
bool Game::runAndDontCrashPls()
{
	if (mainMenu.getEngineSettings().debug){
		ns::debug = new DebugConsole;
		ns::debug->draw();
	}
	else{
		HWND hwnd = GetConsoleWindow();
		ShowWindow(hwnd, SW_HIDE);
	}
	
	while (ns::reloadState || ns::restartState || (mainMenu.showMenu() && !ns::exitState)){
		if (!ns::restartState)
			init();
		else
			resetStates();

		while (ns::runningState){
			if (mainMenu.getEngineSettings().vSync){
				if (updateClock.getElapsedTime().asSeconds() > ns::g_updateTimerValue){
					if (!paused && !ns::deathState){
						update();
						pollEvents();
					}
					render();
					if (paused){
						player[0]->resetClocks();
						player[1]->resetClocks();
					}
					if (pauseMenu->showMenu(paused))
						paused = false;
					deathMenu.showMenu();
					endMenu.showMenu(gameTime.getElapsedTime().asSeconds() + (ns::dirtyRun * ns::checkPointTime.asSeconds()));
				}
			}
			else {
				if (updateClock.getElapsedTime().asSeconds() > ns::g_updateTimerValue && !paused && !ns::deathState){
					update();
					pollEvents();
				}
				render();
				if (paused){
					player[0]->resetClocks();
					player[1]->resetClocks();
				}
				if (pauseMenu->showMenu(paused))
					paused = false;
				deathMenu.showMenu();
				endMenu.showMenu(gameTime.getElapsedTime().asSeconds() + (ns::dirtyRun * ns::checkPointTime.asSeconds()));
			}
			if (!paused && !ns::endOfLevelState && !ns::deathState)
				gameTime.start();
			else
				gameTime.stop();
		}
		if (!ns::restartState)
			deInit();
		if (ns::exitState)
			return true;
	}

	if (ns::debug != nullptr) delete ns::debug;
	
	return true;
}
コード例 #6
0
void StateManager::unloadContent()
{
	resetStates();
}
コード例 #7
0
ファイル: Events.cpp プロジェクト: TheNinthFox/foxbox
void Events::processEvents(sf::RenderWindow& window, sf::Event& event)
{
    // Calculate coordinate adjustment factors
    int viewShiftX = window.getSize().x/2 - window.getView().getCenter().x;
    int viewShiftY = window.getSize().y/2 - window.getView().getCenter().y;

    resetStates();

    while(window.pollEvent(event))
    {
        // Close Event
        if(event.type == sf::Event::Closed)
        {
            window.close();
        }

        // Mouse
        if(event.type == sf::Event::MouseButtonPressed)
        {
            if(event.mouseButton.button == sf::Mouse::Left)
            {
                lastMouseLeft.x = sf::Mouse::getPosition(window).x - viewShiftX;
                lastMouseLeft.y = sf::Mouse::getPosition(window).y - viewShiftY;
                mouseLeftClicked = true;
                mouseLeftHeld = true;
            }

            if(event.mouseButton.button == sf::Mouse::Right)
            {
                lastMouseRight.x = sf::Mouse::getPosition(window).x - viewShiftX;
                lastMouseRight.y = sf::Mouse::getPosition(window).y - viewShiftY;
                mouseRightClicked = true;
                mouseRightHeld = true;
            }
        }

        if(event.type == sf::Event::MouseButtonReleased)
        {
            if(event.mouseButton.button == sf::Mouse::Left)
            {
                mouseLeftHeld = false;
            }

            if(event.mouseButton.button == sf::Mouse::Right)
            {
                mouseRightHeld = false;
            }
        }

        // Get last mouse coordinates
        lastMouse.x = sf::Mouse::getPosition(window).x - viewShiftX;
        lastMouse.y = sf::Mouse::getPosition(window).y - viewShiftY;

        // Get last mouse coordinates relative to window
        lastMouseWindow.x = sf::Mouse::getPosition(window).x;
        lastMouseWindow.y = sf::Mouse::getPosition(window).y;

        // Keyboard
        if(event.type == sf::Event::KeyPressed)
        {
            switch(event.key.code)
            {
                case sf::Keyboard::A :
                    isA = true;
                    isAHeld = true;
                    break;
                case sf::Keyboard::D :
                    isD = true;
                    isDHeld = true;
                    break;
                case sf::Keyboard::E :
                    isE = true;
                    isEHeld = true;
                    break;
                case sf::Keyboard::F :
                    isF = true;
                    isFHeld = true;
                    break;
                case sf::Keyboard::G :
                    isG = true;
                    isGHeld = true;
                    break;
                case sf::Keyboard::H :
                    isH = true;
                    isHHeld = true;
                    break;
                case sf::Keyboard::I :
                    isI = true;
                    isIHeld = true;
                    break;
                case sf::Keyboard::J :
                    isJ = true;
                    isJHeld = true;
                    break;
                case sf::Keyboard::K :
                    isK = true;
                    isKHeld = true;
                    break;
                case sf::Keyboard::L :
                    isL = true;
                    isLHeld = true;
                    break;
                case sf::Keyboard::O :
                    isO = true;
                    isOHeld = true;
                    break;
                case sf::Keyboard::P :
                    isP = true;
                    isPHeld = true;
                    break;
                case sf::Keyboard::Q :
                    isQ = true;
                    isQHeld = true;
                    break;
                case sf::Keyboard::R :
                    isR = true;
                    isRHeld = true;
                    break;
                case sf::Keyboard::S :
                    isS = true;
                    isSHeld = true;
                    break;
                case sf::Keyboard::T :
                    isT = true;
                    isTHeld = true;
                    break;
                case sf::Keyboard::U :
                    isU = true;
                    isUHeld = true;
                    break;
                case sf::Keyboard::W :
                    isW = true;
                    isWHeld = true;
                    break;
                case sf::Keyboard::Y :
                    isY = true;
                    isYHeld = true;
                    break;
                case sf::Keyboard::Z :
                    isZ = true;
                    isZHeld = true;
                    break;
                case sf::Keyboard::Space :
                    isSpace = true;
                    isSpaceHeld = true;
                    break;
                case sf::Keyboard::LControl :
                    isLCTRL = true;
                    isLCTRLHeld = true;
                    break;
                case sf::Keyboard::LAlt :
                    isALT = true;
                    isALTHeld = true;
                    break;
                case sf::Keyboard::Num1 :
                    isNum1 = true;
                    isNum1Held = true;
                    break;
                case sf::Keyboard::Num2 :
                    isNum2 = true;
                    isNum2Held = true;
                    break;
                case sf::Keyboard::Num3 :
                    isNum3 = true;
                    isNum3Held = true;
                    break;
                case sf::Keyboard::Num4 :
                    isNum4 = true;
                    isNum4Held = true;
                    break;
                case sf::Keyboard::Num5 :
                    isNum5 = true;
                    isNum5Held = true;
                    break;
                case sf::Keyboard::Numpad1 :
                    isNumPad1 = true;
                    isNumPad1Held = true;
                    break;
                case sf::Keyboard::Numpad2 :
                    isNumPad2 = true;
                    isNumPad2Held = true;
                    break;
                case sf::Keyboard::Numpad3 :
                    isNumPad3 = true;
                    isNumPad3Held = true;
                    break;
                case sf::Keyboard::Numpad4 :
                    isNumPad4 = true;
                    isNumPad4Held = true;
                    break;
                case sf::Keyboard::Escape :
                    isEsc = true;
                    break;
            }
        }

        if(event.type == sf::Event::KeyReleased)
        {
            switch(event.key.code)
            {
                case sf::Keyboard::A :
                    isAHeld = false;
                    break;
                case sf::Keyboard::D :
                    isDHeld = false;
                    break;
                case sf::Keyboard::E :
                    isEHeld = false;
                    break;
                case sf::Keyboard::F :
                    isFHeld = false;
                    break;
                case sf::Keyboard::G :
                    isGHeld = false;
                    break;
                case sf::Keyboard::H :
                    isHHeld = false;
                    break;
                case sf::Keyboard::I :
                    isIHeld = false;
                    break;
                case sf::Keyboard::J :
                    isJHeld = false;
                    break;
                case sf::Keyboard::K :
                    isKHeld = false;
                    break;
                case sf::Keyboard::L :
                    isLHeld = false;
                    break;
                case sf::Keyboard::O :
                    isOHeld = false;
                    break;
                case sf::Keyboard::P :
                    isPHeld = false;
                    break;
                case sf::Keyboard::Q :
                    isQHeld = false;
                    break;
                case sf::Keyboard::R :
                    isRHeld = false;
                    break;
                case sf::Keyboard::S :
                    isSHeld = false;
                    break;
                case sf::Keyboard::T :
                    isTHeld = false;
                    break;
                case sf::Keyboard::U :
                    isUHeld = false;
                    break;
                case sf::Keyboard::W :
                    isWHeld = false;
                    break;
                case sf::Keyboard::Y :
                    isYHeld = false;
                    break;
                case sf::Keyboard::Z :
                    isZHeld = false;
                    break;
                case sf::Keyboard::Space :
                    isSpaceHeld = false;
                    break;
                case sf::Keyboard::LControl :
                    isLCTRLHeld = false;
                    break;
                case sf::Keyboard::LAlt :
                    isALTHeld = false;
                    break;
                case sf::Keyboard::Num1 :
                    isNum1Held = false;
                    break;
                case sf::Keyboard::Num2 :
                    isNum2Held = false;
                    break;
                case sf::Keyboard::Num3 :
                    isNum3Held = false;
                    break;
                case sf::Keyboard::Num4 :
                    isNum4Held = false;
                    break;
                case sf::Keyboard::Num5 :
                    isNum5Held = false;
                    break;
                case sf::Keyboard::Numpad1 :
                    isNumPad1Held = false;
                    break;
                case sf::Keyboard::Numpad2 :
                    isNumPad2Held = false;
                    break;
                case sf::Keyboard::Numpad3 :
                    isNumPad3Held = false;
                    break;
                case sf::Keyboard::Numpad4 :
                    isNumPad4Held = false;
                    break;
            }
        }

        if(event.type == sf::Event::LostFocus || event.type == sf::Event::MouseLeft)
        {
            resetHeldStates();
        }
    }
}
コード例 #8
0
ファイル: egRendererBaseGL.cpp プロジェクト: CZdravko/Horde
void RenderDevice::beginRendering()
{	
	//	Get the currently bound frame buffer object. 
	glGetIntegerv( GL_FRAMEBUFFER_BINDING_EXT, &_defaultFBO );
	resetStates();
}