void Game::Init() { GameInstance::instance()->setGame(this); Body* b; for(int i=0; i<512; i++) { Mine* m = new Mine(vec2(rand()%W_WIDTH, rand()%W_HEIGHT)); } for(int i=0; i<400; i++) { b = PhysicsManager::instance()->getFromPool(); b->fromConvexSet(createConvexSet(4+rand()%2, 180+rand()%50, vec2(rand()%W_WIDTH, rand()%W_HEIGHT))); b->setCollisionCallback(&dcallback); b->getShape().setColor(0x74BBFB); float area = getSetArea(b->getShape().getVertices()); if(area == area) {} else { PhysicsManager::instance()->releaseToPool(b); continue; } float mass = area/100000.f; if(mass < 1.f) mass = 1.f; if(mass > 3.f) mass = 3.f; b->setMass(mass); renderQueue.push_back(b); } ctime = 0; ltime = 0; desired_fps = 240.f; debug = new DebugConsole(this, 16, 10, 10, 400); status = new StatusConsole(this, 4, 500, 10, 260); // status->addMsg("StatusConsole v0.1"); state_pg = new PreGameState(); state_ig =new InGameState(); state_go =new GameOverState(); StateManager::instance()->registerState("pregame", state_pg); StateManager::instance()->registerState("ingame", state_ig); StateManager::instance()->registerState("gameover", state_go); shiftDown = false; ConstraintSolver::instance()->setIterations(6); Rasterizer::instance()->setScreen(m_Screen); }