void nGame::RestartGame() { // Clean previous game objects CleanGame(); // Initialize new game objects InitGame(); }
void StartMap(const std::string &filename, bool clean) { std::string nc, rc; gcn::Widget *oldTop = Gui->getTop(); gcn::Container *container = new gcn::Container(); Containers.push_back(container); container->setDimension(gcn::Rectangle(0, 0, Video.Width, Video.Height)); container->setOpaque(false); Gui->setTop(container); NetConnectRunning = 0; InterfaceState = IfaceStateNormal; // Create the game. DebugPrint("Creating game with map: %s\n" _C_ filename.c_str()); if (clean) { CleanPlayers(); } GetDefaultTextColors(nc, rc); CreateGame(filename.c_str(), &Map); UI.StatusLine.Set(NameLine); SetMessage("%s", _("Do it! Do it now!")); // Play the game. GameMainLoop(); // Clear screen Video.ClearScreen(); Invalidate(); CleanGame(); InterfaceState = IfaceStateMenu; SetDefaultTextColors(nc, rc); Gui->setTop(oldTop); Containers.erase(std::find(Containers.begin(), Containers.end(), container)); delete container; }
//============================================================================= int main(int argc, char *argv[]) { printf("INFO: Monster Outrage v %d\n", VERSION); try { InitSDL(); LoadMedia(); InitGame(); bool quit = false; uint ticks = SDL_GetTicks(); while(!quit) { // handle events SDL_Event e; while(SDL_PollEvent(&e) != 0) { if(e.type == SDL_QUIT) quit = true; else if(e.type == SDL_KEYDOWN) { if(e.key.state == SDL_PRESSED) ProcessKey(e.key.keysym.scancode, true); } else if(e.type == SDL_KEYUP) { if(e.key.state == SDL_RELEASED) ProcessKey(e.key.keysym.scancode, false); } else if(e.type == SDL_MOUSEMOTION || e.type == SDL_MOUSEBUTTONDOWN || e.type == SDL_MOUSEBUTTONUP) { SDL_GetMouseState(&cursor_pos.x, &cursor_pos.y); if(e.type == SDL_MOUSEBUTTONDOWN) { if(e.button.state == SDL_PRESSED && e.button.button < MAX_BUTTON) ProcessButton(e.button.button, true); } else if(e.type == SDL_MOUSEBUTTONUP) { if(e.button.state == SDL_RELEASED && e.button.button < MAX_BUTTON) ProcessButton(e.button.button, false); } } } // calculate dt uint new_ticks = SDL_GetTicks(); float dt = float(new_ticks - ticks)/1000.f; ticks = new_ticks; Draw(); Update(dt); UpdateInput(); } CleanGame(); CleanMedia(); CleanSDL(); } catch(cstring err) { printf("%s\nERROR: Read error and press any key to exit.\n", err); _getch(); return 1; } return 0; }