/* ================================================================== // This is winmain, the main entry point for Windows applications ================================================================== */ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) { // Initialize the window if ( !initWindow( hInstance ) ) return false; // called after creating the window if ( !d3dMgr->initD3DManager(wndHandle) ) return false; if ( !d3dxSRMgr->initD3DXSpriteMgr(d3dMgr->getTheD3DDevice())) return false; __int64 freq = 0; // measured in counts per second; QueryPerformanceFrequency((LARGE_INTEGER*)&freq); float sPC = 1.0f / (float)freq; // number of seconds per count __int64 currentTime = 0; // current time measured in counts per second; __int64 previousTime = 0; // previous time measured in counts per second; float numFrames = 0.0f; // Used to hold the number of frames float timeElapsed = 0.0f; // cumulative elapsed time GetClientRect(wndHandle,&clientBounds); float fpsRate = 1.0f/25.0f; LPDIRECT3DSURFACE9 roomSurface; // the Direct3D surface LPDIRECT3DSURFACE9 gameOverSurface; LPDIRECT3DSURFACE9 theBackbuffer = NULL; // This will hold the back buffer // Create the background surface gameOverSurface = d3dMgr->getD3DSurfaceFromFile("Images\\GameOver.png"); roomSurface = d3dMgr->getD3DSurfaceFromFile("Images\\RoomBackGround.png"); /* bool roomArray[5][5]= { {0,0,0,0,0}, {0,0,1,0,0}, {0,1,1,1,0}, {0,0,1,0,0}, {0,0,0,0,0}, }; int posX = 3; int posY = 3; cRoom room1(posX,posY,roomArray[posX][posY-1],roomArray[posX][posY+1],roomArray[posX-1][posY],roomArray[posX+1][posY],0); posX = 2; posY = 3; cRoom room2(posX,posY,roomArray[posX][posY-1],roomArray[posX][posY+1],roomArray[posX-1][posY],roomArray[posX+1][posY],1); posX = 3; posY = 4; cRoom room3(posX,posY,roomArray[posX][posY-1],roomArray[posX][posY+1],roomArray[posX-1][posY],roomArray[posX+1][posY],2); posX = 4; posY = 3; cRoom room4(posX,posY,roomArray[posX][posY-1],roomArray[posX][posY+1],roomArray[posX-1][posY],roomArray[posX+1][posY],3); posX = 3; posY = 2; cRoom room5(posX,posY,roomArray[posX][posY-1],roomArray[posX][posY+1],roomArray[posX-1][posY],roomArray[posX+1][posY],4); cRoom rooms[4]; rooms[0]=room1; rooms[1]=room2; rooms[2]=room3; rooms[3]=room4; rooms[4]=room5; cRoom currentRoom = room1; */ D3DXVECTOR3 healthBarPos = D3DXVECTOR3(100,100,0); cSprite healthBar(healthBarPos,d3dMgr->getTheD3DDevice(),"Images\\HealthBar.png"); /* D3DXVECTOR3 upDoorPos = D3DXVECTOR3(400,25,0); cSprite upDoor(upDoorPos,d3dMgr->getTheD3DDevice(),"Images\\door.png"); D3DXVECTOR3 downDoorPos = D3DXVECTOR3(400,125,0); cSprite downDoor(downDoorPos,d3dMgr->getTheD3DDevice(),"Images\\door.png"); D3DXVECTOR3 leftDoorPos = D3DXVECTOR3(25,125,0); cSprite leftDoor(leftDoorPos,d3dMgr->getTheD3DDevice(),"Images\\door.png"); D3DXVECTOR3 rightDoorPos = D3DXVECTOR3(400,125,0); cSprite rightDoor(rightDoorPos,d3dMgr->getTheD3DDevice(),"Images\\door.png"); */ cSprite thePlayer(playerPos,d3dMgr->getTheD3DDevice(),"Images\\WizardDown.png"); D3DXVECTOR3 enemyPos1 = D3DXVECTOR3(700,100,0); cHealth* gooHealth1 = new cHealth(10); cSprite* gooSprite1 = new cSprite(enemyPos1,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); D3DXVECTOR3 enemyPos2 = D3DXVECTOR3(100,300,0); cHealth* gooHealth2 = new cHealth(10); cSprite* gooSprite2 = new cSprite(enemyPos2,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); D3DXVECTOR3 enemyPos3 = D3DXVECTOR3(650,300,0); cHealth* gooHealth3 = new cHealth(10); cSprite* gooSprite3 = new cSprite(enemyPos3,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); D3DXVECTOR3 enemyPos4 = D3DXVECTOR3(200,100,0); cHealth* gooHealth4 = new cHealth(10); cSprite* gooSprite4 = new cSprite(enemyPos4,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); /* if (projectileStart == true) { cSprite* projectile = new cSprite(thePlayer.getSpritePos(),d3dMgr->getTheD3DDevice(),"Images\\goo.png"); projectile->setTranslation(D3DXVECTOR2(projectileVeloc.x,projectileVeloc.y)); projectileStart = false; } */ // Build our matrix to rotate, scale and position our sprite D3DXMATRIX playerTransformMatrix; MSG msg; ZeroMemory( &msg, sizeof( msg ) ); while( msg.message!=WM_QUIT ) { // Check the message queue if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { // Game code goes here QueryPerformanceCounter((LARGE_INTEGER*)¤tTime); float dt = (currentTime - previousTime)*sPC; // Accumulate how much time has passed. timeElapsed += dt; if(timeElapsed > fpsRate) { if(playerHealth.deathCheck()) { d3dMgr->beginRender(); theBackbuffer = d3dMgr->getTheBackBuffer(); d3dMgr->updateTheSurface(gameOverSurface, theBackbuffer); d3dMgr->releaseTheBackbuffer(theBackbuffer); d3dxSRMgr->beginDraw(); // d3dxSRMgr->endDraw(); d3dMgr->endRender(); previousTime = currentTime; } else { /* if (roomSpawned == false) { D3DXVECTOR2 playerPos = D3DXVECTOR2(200,400); thePlayer.setSpriteTransformMatrix(playerTransformMatrix, thePlayer.getSpriteCentre(),0.0f,playerScale,thePlayer.getSpriteCentre(),0.0f,playerPos); roomSpawned = true; } */ if (gooHealth1->deathCheck()) { delete gooSprite1; delete gooHealth1; Sleep(1000); gooHealth1 = new cHealth(10); gooSprite1 = new cSprite(enemyPos1,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); } if (gooHealth2->deathCheck()) { delete gooSprite2; delete gooHealth2; Sleep(1000); gooHealth2 = new cHealth(10); gooSprite2 = new cSprite(enemyPos2,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); } if (gooHealth3->deathCheck()) { delete gooSprite3; delete gooHealth3; Sleep(1000); gooHealth3 = new cHealth(10); gooSprite3 = new cSprite(enemyPos3,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); } if (gooHealth4->deathCheck()) { delete gooSprite4; delete gooHealth4; Sleep(1000); gooHealth4 = new cHealth(10); gooSprite4 = new cSprite(enemyPos4,d3dMgr->getTheD3DDevice(),"Images\\goo.png"); } if(playerVeloc.x != 0 && playerVeloc.y != 0 && controlDiagonalCheckCooldown == false) { playerVeloc.x *= 0.75f; playerVeloc.y *= 0.75f; controlDiagonalCheckCooldown = true; } playerTrans += playerVeloc; if (playerTrans.x < (clientBounds.left +25)) { playerTrans.x = clientBounds.left +26; } if (playerTrans.y < (clientBounds.top +25)) { playerTrans.y = clientBounds.top +26; } if (playerTrans.x > (clientBounds.right - (25 + 75))) { playerTrans.x = clientBounds.right -(26 + 75); } if (playerTrans.y > (clientBounds.bottom -(154 + 75))) { playerTrans.y = clientBounds.bottom -(155 +75); } if(playerVeloc.x > 0) { thePlayer.setTexture(d3dMgr->getTheD3DDevice(),"Images\\WizardRight.png"); playerScale = D3DXVECTOR2(1.0f,1.0f); } if(playerVeloc.x < 0) { thePlayer.setTexture(d3dMgr->getTheD3DDevice(),"Images\\WizardRight.png"); playerScale = D3DXVECTOR2(-1.0f,1.0f); } if(playerVeloc.y < 0) { thePlayer.setTexture(d3dMgr->getTheD3DDevice(),"Images\\WizardUp.png"); } if(playerVeloc.y > 0) { thePlayer.setTexture(d3dMgr->getTheD3DDevice(),"Images\\WizardDown.png"); } healthBarScale.x = (FLOAT)playerHealth.getHealth()/100; thePlayer.setSpritePos(D3DXVECTOR3(playerTrans.x,playerTrans.y,0)); thePlayer.setSpriteScaling(playerScale.x,playerScale.y); healthBar.setSpritePos(D3DXVECTOR3(healthBarTrans.x,healthBarTrans.y,0)); healthBar.setSpriteScaling(healthBarScale.x,healthBarScale.y); /* upDoor.setSpritePos(D3DXVECTOR3(upDoorTrans.x,upDoorTrans.y,0)); downDoor.setSpritePos(D3DXVECTOR3(downDoorTrans.x,downDoorTrans.y,0)); leftDoor.setSpritePos(D3DXVECTOR3(leftDoorTrans.x,leftDoorTrans.y,0)); leftDoor.setSpriteRotation(90.0f); rightDoor.setSpritePos(D3DXVECTOR3(rightDoorTrans.x,rightDoorTrans.y,0)); rightDoor.setSpriteRotation(90.0f); */ thePlayer.update(); healthBar.update(); /* upDoor.update(); downDoor.update(); leftDoor.update(); rightDoor.update(); */ /* if (thePlayer.collidedWith(thePlayer.getBoundingRect(),upDoor.getBoundingRect())) { //if a collision occurs change the room OutputDebugString("Collision!!"); for(int i=0; i<=4; i++) { if(rooms[i].getPosY() == (currentRoom.getPosY())+1) { currentRoom = rooms[i]; roomSpawned = false; } } } */ d3dMgr->beginRender(); theBackbuffer = d3dMgr->getTheBackBuffer(); d3dMgr->updateTheSurface(roomSurface, theBackbuffer); d3dMgr->releaseTheBackbuffer(theBackbuffer); d3dxSRMgr->beginDraw(); d3dxSRMgr->setTheTransform(thePlayer.getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(thePlayer.getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(healthBar.getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(healthBar.getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(gooSprite1->getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(gooSprite1->getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(gooSprite2->getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(gooSprite2->getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(gooSprite3->getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(gooSprite3->getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(gooSprite4->getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(gooSprite4->getTexture(),NULL,NULL,NULL,0xFFFFFFFF); //d3dxSRMgr->setTheTransform(projectile->getSpriteTransformMatrix()); //d3dxSRMgr->drawSprite(projectile->getTexture(),NULL,NULL,NULL,0xFFFFFFFF); /* d3dxSRMgr->setTheTransform(upDoor.getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(upDoor.getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(downDoor.getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(downDoor.getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(leftDoor.getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(leftDoor.getTexture(),NULL,NULL,NULL,0xFFFFFFFF); d3dxSRMgr->setTheTransform(rightDoor.getSpriteTransformMatrix()); d3dxSRMgr->drawSprite(rightDoor.getTexture(),NULL,NULL,NULL,0xFFFFFFFF); */ d3dxSRMgr->endDraw(); d3dMgr->endRender(); previousTime = currentTime; } } } } d3dxSRMgr->cleanUp(); d3dMgr->clean(); return (int) msg.wParam; }