void PinballHost::init() { PinballBridgeInterface *bi = new PinballBridgeInterface(); bi->setGameName("Flipperfall"); bi->init(); Playfield *f = new Playfield(); f->setBridgeInterface(bi); f->init(); Physics *p = new Physics(); p->setBridgeInterface(bi); p->setPlayfield(f); p->init(); Camera *c = new Camera(); c->setBridgeInterface(bi); c->setPlayfield(f); c->init(); Editor *t = new Editor(); t->setBridgeInterface(bi); t->setPlayfield(f); t->setCamera(c); t->setPhysics(p); t->init(); GlutEngine *e = new GlutEngine(); e->init(); Renderer *r = new Renderer(); r->setBridgeInterface(bi); r->setPlayfield(f); r->setPhysics(p); r->setCamera(c); r->setEditor(t); r->init(); Game *g = new Game(); g->setBridgeInterface(bi); g->setPhysics(p); g->setRenderer(r); g->init(); // TODO: find factoring error/s e->setPhysics(p); e->setRenderer(r); e->setGame(g); e->setEditor(t); _glutEngine = e; }
void PinballHost::init(const char *gameName) { std::cout << "starting " << gameName << std::endl; PinballBridgeInterface *bi = new PinballBridgeInterface(); bi->setGameName(gameName); Playfield *f = new Playfield(); f->setBridgeInterface(bi); f->init(); Physics *p = new Physics(); p->setBridgeInterface(bi); p->setPlayfield(f); p->init(); Camera *c = new Camera(); c->setBridgeInterface(bi); c->setPlayfield(f); c->init(); Editor *t = new Editor(); t->setBridgeInterface(bi); t->setPlayfield(f); t->setCamera(c); t->setPhysics(p); t->init(); GlutEngine *e = new GlutEngine(); e->init(); Renderer *r = new Renderer(); r->setBridgeInterface(bi); r->setPlayfield(f); r->setPhysics(p); r->setCamera(c); r->setEditor(t); r->init(); Game *g = new Game(); g->setBridgeInterface(bi); g->setPhysics(p); g->setRenderer(r); g->init(); // TODO: find factoring error/s e->setPhysics(p); e->setRenderer(r); e->setGame(g); e->setEditor(t); _engine = e; }
EXPORT int startGUInity() { int notOK = GraphicsSystem::getInstance()->init(1024,768); if (notOK) return 1; AssetDatabase::init(); Input input(GraphicsSystem::getInstance()->getWindow()); SoundSystem::getInstance()->init(); Physics physics; physics.init(); EngineMode engineMode = EngineMode::editor; shared_ptr<Editor> editor = make_shared<Editor>(); editor->init(); shared_ptr<Game> game = make_shared<Game>(); game->init(); shared_ptr<MyGame> myGame = make_shared<SpaceShipGame>(); myGame->setupInitialScene(); editor->world->awake(); game->world->awake(); while (!glfwWindowShouldClose(GraphicsSystem::getInstance()->getWindow().get())) { Time::frameStart(); Input::updateInputState(); switch (engineMode) { case EngineMode::editor: editor->update(Time::deltaTime,game->world); break; case EngineMode::game: game->update(Time::deltaTime); break; default: break; } if (Input::getKeyPressed(GLFW_KEY_1)) engineMode = EngineMode::editor; if (Input::getKeyPressed(GLFW_KEY_2)) engineMode = EngineMode::game; float fps = Time::frameEnd(); cout << "FPS:" << 1.0f/fps << endl; } physics.shutdown(); editor->shutdown(); game->shutdown(); // close GL context and any other GLFW resources SoundSystem::getInstance()->shutdown(); GraphicsSystem::getInstance()->shutdown(); return 0; }