bool Update(float dt){dt; if (isEditingSpaceship){ editor.Update(); if (editor.IsExited() || editor.IsSpaceshipReady()){ isEditingSpaceship = false; if (editor.IsSpaceshipReady()){ // ship = editor.GetSpaceship(); } editor.Reset(); } } else{ if(!isMainMenu && !isControls){ lvl.Update(dt); manager->Update(false, 0.0f, Vector2(), dt); if (lvl.IsWin() || lvl.IsGameOver()){ isMainMenu = true; } } else if (isControls){ isControls = Controls::Update(); if (!isControls){ isMainMenu = true; } } else{ menu.Update(dt); UpdateGameState(); } } if (Input::IsPressed('O')){ isEditingSpaceship = true; } bool requestedExit = (Input::IsPressed(Input::KEY_ESCAPE)); if (requestedExit){ profiler.WriteToFile(); END_LOG } return requestedExit; }
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // save off the instance handle hInst = hInstance; // Set up the application window if (!InitWindow(hInstance)) { return 0; } // Initialize Direct3D if (!dxMgr.InitDirect3D(mainhWnd)) { return 0; } if (!diMgr.initDirectInput(hInst, mainhWnd)) { MessageBox(mainhWnd, "Unable to init DirectInput", "ERROR", MB_OK); return false; } if (!diMgr.initKeyboard(hInst, mainhWnd)) { MessageBox(mainhWnd, "Unable to init Mouse", "ERROR", MB_OK); return false; } if (!dsMgr.init(mainhWnd)) { MessageBox(mainhWnd, "Unable to init Audio", "ERROR", MB_OK); return false; } // Initialize play mode if (!playMode.InitGame()) { MessageBox(mainhWnd, "Unable to init game mode.", "ERROR", MB_OK); return 0; } // Initialize post game mode if (!postGame.Init()) { MessageBox(mainhWnd, "Unable to init post game mode.", "ERROR", MB_OK); return 0; } // Initialize Main Menu if (!mainMenu.InitMenu()) { MessageBox(mainhWnd, "Unable to init main menu.", "ERROR", MB_OK); return 0; } // Main message loop MSG msg = {0}; while (WM_QUIT != msg.message) { // Process Windows messages first while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) == TRUE) { TranslateMessage(&msg); DispatchMessage(&msg); } // Render the scene if(gameState == MAINMENU) { gameState = mainMenu.Update(); mainMenu.Render(); } else if(gameState == SINGLEGAME) { playMode.setUp(false,true); gameState = PLAY; } else if(gameState == MULTIGAME) { playMode.setUp(true,true); gameState = PLAY; } else if(gameState == CONTSINGLE) { playMode.setUp(false,false); gameState = PLAY; } else if(gameState == CONTMULTI) { playMode.setUp(true,false); gameState = PLAY; } else if(gameState == PLAYERONEWIN || gameState == PLAYERTWOWIN || gameState == LOSE || gameState == WIN || gameState == MULTIDRAW || gameState == DRAW || gameState == MULTIPAUSE || gameState == PAUSE) { gameState = postGame.Update(gameState); postGame.Render(gameState); } else if(gameState == PLAY) { gameState = playMode.Update(); playMode.Render(); } } // Clean up dxMgr.ShutdownDirect3D(); diMgr.shutdown(); playMode.Shutdown(); mainMenu.Shutdown(); return (int) msg.wParam; }