PieceSolutions::PieceSolutions() { createStates(); resetStates(); remove("pieceSolutions.txt"); solutions = 0; }
void PieceSolutions::find(bool (*mem)[10], int linesToClear) { lines = linesToClear; wellMem = mem; resetStates(); search(); }
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()); }
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; }
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; }
void StateManager::unloadContent() { resetStates(); }
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(); } } }
void RenderDevice::beginRendering() { // Get the currently bound frame buffer object. glGetIntegerv( GL_FRAMEBUFFER_BINDING_EXT, &_defaultFBO ); resetStates(); }