bool MaudioButton::fullClicked(int &x, int &y) { bool buttonClick = false; if ( dbMouseClick() == 1 ) { x = dbMouseX(); y = dbMouseY(); while ( dbMouseClick() == 1) { } buttonClick = true; } return buttonClick; }
//鼠标判断 bool mouseFullClick(int &x, int &y) { bool buttonClick = false; if ( dbMouseClick() == 1 ) { // 获得鼠标指针的坐标 x = dbMouseX(); y = dbMouseY(); while ( dbMouseClick() == 1) { } buttonClick = true; } return buttonClick; }
bool DBBitmapHelper::IsButtonClicked(int buttonID) { int mouseX = dbMouseX(); int mouseY = dbMouseY(); int width = dbSpriteWidth(buttonID); int height = dbSpriteHeight(buttonID); int x = dbSpriteX(buttonID); int y = dbSpriteY(buttonID); bool result = false; bool inButtonArea = false; if (mouseX > x && mouseX < (x + width)) { if (mouseY > y && mouseY < (y + height)) { inButtonArea = true; // The mouse is inside the button. // Now check for mouse clicks. if(dbMouseClick()==1) { //WindowsHelper::SetActiveCursor(LoadCursorFromFile("aero_arrow.cur")); return true; } } } if(inButtonArea) { WindowsHelper::SetActiveCursor(LoadCursorFromFile("aero_link.cur")); } //else //{ // WindowsHelper::SetActiveCursor(LoadCursorFromFile("aero_arrow.cur")); //} return false; }
void world::passGuess(char triggerName[], void *classPointer) { int *currentXCord = static_cast<world*>(classPointer)->currentX; int *currentYCord = static_cast<world*>(classPointer)->currentY; int numbers = 0; char messageTotal[150] = "Well you seem to have the\nurge to leave. Why not stay\nfor a bit though? If you\ntruly want to go, then\nsimply guess the password:"******""; int spaceBar = 0; int correctPassword = 0; dbSyncOn ( ); dbSyncRate ( 60 ); dbLoadImage("textBackground.png",numberOfImages+1); dbLoadImage("passwordBackground.png",numberOfImages+2); while(LoopGDK() && numbers <= 6){ //Now we have to sustain our environment again. dbWait(10); //How quick the message is typed //dbCenterText(30,90,dbStr(dbMouseX())); //dbCenterText(30,120,dbStr(dbMouseY())); static_cast<world*>(classPointer)->updateWorld(*currentXCord,*currentYCord); //Let's send our xCord and yCord that we got to our class. dbPasteImage((numberOfImages+1),385,0); dbPasteImage((numberOfImages+2),405,200); if(messageCharLength < totalLength) { //Just like in our printText function messageTemp[messageCharLength] = messageTotal[messageCharLength]; messageTemp[messageCharLength+1] = '\0'; messageCharLength++; } if(dbMouseClick() == 1) { if((dbMouseX() >= 449) && (dbMouseX() <= 472) && (dbMouseY() >= 273) && (dbMouseY() <= 297)) { //If our mouse is over the 1 button strncat(passwordInput,"1",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 500) && (dbMouseX() <= 523) && (dbMouseY() >= 273) && (dbMouseY() <= 297)) { //If our mouse is over the 2 button strncat(passwordInput,"2",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 552) && (dbMouseX() <= 575) && (dbMouseY() >= 273) && (dbMouseY() <= 297)) { //If our mouse is over the 3 button strncat(passwordInput,"3",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 449) && (dbMouseX() <= 472) && (dbMouseY() >= 306) && (dbMouseY() <= 330)) { //If our mouse is over the 4 button strncat(passwordInput,"4",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 500) && (dbMouseX() <= 523) && (dbMouseY() >= 306) && (dbMouseY() <= 330)) { //If our mouse is over the 5 button strncat(passwordInput,"5",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 552) && (dbMouseX() <= 575) && (dbMouseY() >= 306) && (dbMouseY() <= 330)) { //If our mouse is over the 6 button strncat(passwordInput,"6",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 449) && (dbMouseX() <= 472) && (dbMouseY() >= 339) && (dbMouseY() <= 363)) { //If our mouse is over the 7 button strncat(passwordInput,"7",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 500) && (dbMouseX() <= 523) && (dbMouseY() >= 339) && (dbMouseY() <= 363)) { //If our mouse is over the 8 button strncat(passwordInput,"8",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 552) && (dbMouseX() <= 575) && (dbMouseY() >= 339) && (dbMouseY() <= 363)) { //If our mouse is over the 9 button strncat(passwordInput,"9",1); numbers++; dbPlaySound(12); } else if((dbMouseX() >= 500) && (dbMouseX() <= 523) && (dbMouseY() >= 372) && (dbMouseY() <= 396)) { //If our mouse is over the 0 button strncat(passwordInput,"0",1); numbers++; dbPlaySound(12); } dbWait(300); } if(numbers == 7) { //Now let's create a local instance of our world for the new mesage strcpy(messageTemp,""); if(strcmp(passwordInput,"1433434") == 0) {//Now let's check to see if they got the password correct strcpy(messageTotal,"Congratulations! That's\nthe right password!"); correctPassword++; dbInk(dbRGB(0,255,0),dbRGB(0,0,0)); dbPlaySound(14); } else { strcpy(messageTotal,"Sorry, but that's not the\npassword. Please try again."); dbInk(dbRGB(255,0,0),dbRGB(0,0,0)); dbPlaySound(13); } totalLength = strlen(messageTotal); messageCharLength = 0; while(LoopGDK() && spaceBar == 0) { dbWait(10); static_cast<world*>(classPointer)->updateWorld(*currentXCord,*currentYCord); //Let's send our xCord and yCord that we got to our class. dbPasteImage((numberOfImages+1),385,0); dbPasteImage((numberOfImages+2),405,200); if(messageCharLength < totalLength) { //Lets loop through our message again. messageTemp[messageCharLength] = messageTotal[messageCharLength]; messageTemp[messageCharLength+1] = '\0'; messageCharLength++; } if(dbKeyState(57) == 1) { spaceBar++; } dbSetTextSize(36); if(correctPassword == 1) { dbCenterText(512,12,"Correct"); dbCenterText(512,42,"Password!:"); } else { dbCenterText(512,12,"Incorrect"); dbCenterText(512,42,"Password:"******"Guess The"); dbCenterText(512,42,"Password:"); dbSetTextSize(12); dbText(395,85,messageTemp); dbSetTextSize(36); dbText(455,220,passwordInput); dbSync(); } } if(correctPassword == 1){ for(int i = 0; i <= 100; i++) { dbDeleteSprite(i); dbSync(); } endingScreen(classPointer); //Go to the ending screen, since you won! } dbWait(300); }
// Main entry point for the application void DarkGDK ( void ) { dbSyncOn ( ); dbSyncRate ( FRAMES_PER_SECOND ); dbSetWindowOff(); dbSetDisplayMode( SCREEN_WIDTH, SCREEN_HEIGHT, 16 ); dbDisableEscapeKey ( ); dbHideMouse(); dbSetImageColorKey ( 255, 0, 255 ); // Set transparency key for images dbDrawSpritesFirst(); // So that we can draw and write over sprites // Probably not necessary now since we don't actually use DGDK sprite objects dbLoadSound("bullet.wav",1); dbLoadSound("explosion.wav",2); // Load a new map Map *map = new Map(); bool gotmap = map->loadFromFile( "testmap.txt" ); assert( gotmap && "Loading map failed" ); // Set up a camera looking at our map Camera camera; camera.setMap( map ); camera.setScreenPosition( 10, 10 ); camera.setSize( 380, 480 ); // Camera2 Camera camera2; camera2.setMap( map ); camera2.setScreenPosition( 410, 10 ); camera2.setSize( 380, 480 ); camera2.getStateMachine()->changeState( CameraFollowWASDKeysState::getInstance() ); // Set up some enemies for( int i=0; i<NUM_TEST_ENEMIES; i++ ) { Enemy *enemy = new Enemy(); enemy->setPosition( Vector2D(rand()%SCREEN_WIDTH,rand()%SCREEN_HEIGHT) ); // Set up a test path Path *path = new Path(); path->addWaypoint( Vector2D(200.0,200.0) ); path->addWaypoint( Vector2D(400.0,300.0) ); path->addWaypoint( Vector2D(700.0,-30.0) ); path->setLooped(true); enemy->setPath( path ); // Create a new enemy using that path enemy->getStateMachine()->changeState( EnemyFollowPathThenDieState::getInstance() ); //enemy->getStateMachine()->changeState( EnemyCollideWithPlayerState::getInstance() ); //entityManager.registerEntity( enemy ); MessageManager::getInstance()->dispatchMessage(0,0,messageCreateEntity,(i+1)*3,enemy); } dbPerformChecklistControlDevices(); if( dbChecklistString(1) ) dbSetControlDevice( dbChecklistString(1) ); char debugText[100]; // Set up variables to keep track of elapsed time double previousTime = (double)dbTimer(); double currentTime; double elapsedTime; // Set up the target Vector2D target; target.x = 400; target.y = 300; double timeSinceLastSpawn = 10.0; double timeBetweenSpawns = 2.0; bool spacePressedLastFrame = false; Vector2D testPosition(1.0,3.0); Vector2D testHeading(1.0,0.0); Vector2D testSide = testHeading.Perp(); Vector2D testPoint(-1.0,4.0); Vector2D testVector = TransformFromWorldToLocalSpace(testPoint,testHeading,testSide,testPosition); // main loop while ( LoopGDK ( ) ) { // Calculate elapsed time currentTime = (double)dbTimer(); elapsedTime = (currentTime - previousTime)/1000; previousTime = currentTime; MessageManager::getInstance()->update(elapsedTime); // Clear the screen white dbCLS( RGB( 0, 0, 0 ) ); camera.update( 0.0 ); //camera.draw(); camera2.update( 0.0 ); //camera2.draw(); // Spawn a new enemy for testing timeSinceLastSpawn += elapsedTime; if( timeSinceLastSpawn > timeBetweenSpawns ) { timeSinceLastSpawn = 0.0; entityManager.spawnRandomWave(); /* Enemy *enemy = new Enemy(Vector2D(100.0,-10.0)); // Set up a test path Path *path = new Path(); path->addWaypoint( Vector2D(200.0,200.0) ); path->addWaypoint( Vector2D(400.0,300.0) ); path->addWaypoint( Vector2D(700.0,-10.0) ); path->setLooped(false); enemy->setPath( path ); enemy->getStateMachine()->changeState( EnemyFollowPathThenDieState::getInstance() ); entityManager.registerEntity( enemy ); */ } // Update and draw the enemies entityManager.updateAllEntities( elapsedTime ); entityManager.drawAllEntities(); // Reset the first entities position if( dbMouseClick() == 2 ) { Vector2D position( dbMouseX(), dbMouseY() ); Vector2D velocity( 0.0, -20.0 ); //Vector2D velocity = target - position; //velocity.Normalize(); //velocity *= 20.0; Bullet *bullet = new Bullet(position,velocity); entityManager.registerEntity( bullet ); } // Reset the enemies randomly if space pressed if( dbSpaceKey() && spacePressedLastFrame == false ) { spacePressedLastFrame = true; Enemy *enemy = new Enemy(); enemy->setPosition(Vector2D(100.0,-30.0)); // Set up a test path Path *path = new Path(); path->addWaypoint( Vector2D(200.0,200.0) ); path->addWaypoint( Vector2D(400.0,300.0) ); path->addWaypoint( Vector2D(700.0,-30.0) ); path->setLooped(false); enemy->setPath( path ); enemy->getStateMachine()->changeState( EnemyFollowPathThenDieState::getInstance() ); entityManager.registerEntity( enemy ); } if( !dbSpaceKey() ) spacePressedLastFrame = false; // Update the target if( dbMouseClick() == 1 ) { target.x = dbMouseX(); target.y = dbMouseY(); } // Draw the target //DrawTarget( target ); // Put any debugging messages here //sprintf( debugText, "Key code: %d", dbScanCode() ); // For finding keyboard scan codes //sprintf( debugText, "Elapsed time: %f", elapsedTime ); //sprintf( debugText, "Entities: %d FPS: %d", entityManager.getSize(), dbScreenFPS() ); //sprintf( debugText, "%s", dbChecklistString (1) ); //sprintf( debugText, "JoystickY: %d", joystickY ); //sprintf( debugText, "FPS: %d", dbScreenFPS() ); sprintf( debugText, "Score: %d", entityManager.getPlayer()->getScore() ); //sprintf( debugText, "Player Position: %f,%f", entityManager.getPlayer()->getPosition().x, entityManager.getPlayer()->getPosition().y ); //sprintf( debugText, "VectorX: %f VectorY: %f", testVector.x, testVector.y ); //sprintf( debugText, "screenWidth: %d screenHeight: %d", dbScreenWidth(), dbScreenHeight() ); // Print out the debug text dbInk( RGB(0,0,255), RGB(255,255,255) ); dbText( 0, SCREEN_HEIGHT-20, debugText ); // Draw scanlines //drawScanlines(3); // break out if escape has been pressed if ( dbEscapeKey ( ) ) break; // update the contents of the screen dbSync ( ); } // and now everything is ready to return back to Windows return; }
void Control::SetMouseIn() { Point* position = this->GetAbsoluteScreenPosition(); this->mouseIn = this->clientArea->IsInside(dbMouseX(), dbMouseY(), position->GetX(), position->GetY()); }