GPG_Application::~GPG_Application(void) { if (m_pyGlobalDictString) { delete [] m_pyGlobalDictString; m_pyGlobalDictString = 0; m_pyGlobalDictString_Length = 0; } exitEngine(); fSystem->disposeWindow(m_mainWindow); }
void GPG_Application::StopGameEngine() { exitEngine(); }
int main(int argc, char* argv[]) { logger = new Logger(); // parse options; set some defaults; control required ones parseOptions(argc, argv, options); if (options.printHelpAndExit) { printHelp(); return(0); } if (options.effectX == 0) options.effectX = options.winWidth / 2; if (options.effectY == 0) options.effectY = options.winHeight / 2; if (options.effectFile.empty()) { logger->error("Please, specify particle effect definition file."); return(1); } PHYSFS_init(argv[0]); logger->log("-> initialize engine"); initEngine(); effectViewer->setEffectPosition(options.effectX, options.effectY); effectViewer->setBackgroundColour(options.backgroundColour); startEffect(); logger->log("-> game loop"); SDL_Event event; bool quit = false; // event loop while (true) { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { quit = true; } else if (event.type == SDL_KEYDOWN) { switch (event.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_q: quit = true; case SDLK_r: // start new effect startEffect(); break; case SDLK_n: // delete all particles and start new effect effectViewer->cleanParticles(); startEffect(); break; } } } // std::cout << m->getNumSprites() << std::endl; gui->logic(); gui->draw(); graphics->updateScreen(); // end if particle effect has ended if (effectViewer->isEffectOver()) { if (options.quitOnEffectEnd) { quit = true; } else if (options.loop) { startEffect(); } } if (quit) { break; } SDL_Delay(10); } logger->log("-> game loop ended"); logger->log("-> exit engine"); exitEngine(); logger->log("-> done."); delete logger; PHYSFS_deinit(); return(0); }