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; }