Esempio n. 1
0
GPG_Application::~GPG_Application(void)
{
	if (m_pyGlobalDictString) {
		delete [] m_pyGlobalDictString;
		m_pyGlobalDictString = 0;
		m_pyGlobalDictString_Length = 0;
	}

	exitEngine();
	fSystem->disposeWindow(m_mainWindow);
}
Esempio n. 2
0
void GPG_Application::StopGameEngine()
{
	exitEngine();
}
Esempio n. 3
0
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);
}