int CreditsProc(PASSPROCVARS Params){ int r=0; r+=ccbOK.ProcFunction(Params); if(r){ //we have to flip the screen Flip(Pass.DDFront); Blit(Pass.DDBack, ddsCredits, 0, 0, 640, 480, 0, 0); } //now handle some messages switch(Params.uMsg){ case WM_CLOSE: Pass.ProgramFlow=PF_EXIT; CreditsInfo=CREDITS_EXIT; break; case WM_PAINT: ddsCredits->Restore(); ddsCreditsh->Restore(); DDReLoadBitmap(ddsCredits,BMP_CREDITS); DDReLoadBitmap(ddsCreditsh,BMP_CREDITSH); Blit(Pass.DDFront, ddsCredits, 0, 0, 640, 480, 0, 0); Blit(Pass.DDBack, ddsCredits, 0, 0, 640, 480, 0, 0); break; case WM_KEYDOWN: switch(Params.wParam){ case VK_ESCAPE: CreditsInfo=CREDITS_EXIT; break; } break; } return 0; }
void settingsRedrawScreen(){ ScreenHighlighted->Restore(); ScreenUnhighlighted->Restore(); DDReLoadBitmap(ScreenHighlighted,BMP_SETTINGSH); DDReLoadBitmap(ScreenUnhighlighted,BMP_SETTINGS); DrawString("Setting up alpha table/@", 0, 0, 8); Blit(Pass.DDFront, ScreenUnhighlighted, 0, 0, 640, 480, 0, 0); Blit(Pass.DDBack, ScreenUnhighlighted, 0, 0, 640, 480, 0, 0); }
Dynamite::Dynamite(LPCSTR BitmapDir, const char *text, int Startx, int Starty, int Startz, int Time) { DeleteThis = false; ObjString = text; //Direct Draw Initialization DDSURFACEDESC2 ddsd; INITIALIZE_DDRAW(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT; ddsd.dwWidth = 64; ddsd.dwHeight = 64; ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = _RGB16BIT565(255, 0, 255); ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = _RGB16BIT565(255, 0, 255); ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; if(FAILED(lpdd->CreateSurface(&ddsd, &TheBitmap, NULL))) { // Failed making surface } INITIALIZE_DDRAW(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT; ddsd.dwWidth = 640; ddsd.dwHeight = 64; ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = _RGB16BIT565(255, 0, 255); ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = _RGB16BIT565(255, 0, 255); ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; if(FAILED(lpdd->CreateSurface(&ddsd, &ExplosionBitmap, NULL))) { // Failed making surface } mysz = BitmapDir; DDReLoadBitmap(TheBitmap, BitmapDir); DDReLoadBitmap(ExplosionBitmap, "gfx/Explosions.bmp"); SourceRect.left = 0; SourceRect.top = 0; SourceRect.bottom = 63; SourceRect.right = 63; RenderThis = true; DoCount = false; x = Startx; y = Starty; z = Startz; FramesCounter = 0; Timer = Time; StartTime = Time; char temp[2]; _itoa(Timer, temp, 10); thestring = temp; TimeDisplay = new Text(18,"Dynamite Text", thestring, x + 25, y + 25, z, 200, 80,false); }
Cart::Cart(LPCSTR BitmapDir, int StartWeight, int Startx, int Starty, int Startz) { DeleteThis = false; //Direct Draw Initialization DDSURFACEDESC2 ddsd; INITIALIZE_DDRAW(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT; ddsd.dwWidth = 3520; ddsd.dwHeight = 64; ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = _RGB16BIT565(255, 0, 255); ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = _RGB16BIT565(255, 0, 255); ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; if(FAILED(lpdd->CreateSurface(&ddsd, &TheBitmap, NULL))) { // Failed making surface } mysz = BitmapDir; DDReLoadBitmap(TheBitmap, BitmapDir); //Setup the source Rectangle for animations SourceRect.top = 0; SourceRect.left = 0; SourceRect.right = 64; SourceRect.bottom = 64; // Default settings for Cart RenderThis = true; Weight = StartWeight; Current = Finished; CurrentStatus = None; NumberOfPowerups = 0; x = Startx; y = Starty; x = Startz; Animating = false; CollBox.left = x + 32; CollBox.top = y + 32; CollBox.right = x + 32; CollBox.bottom = y + 32; Speed = 20; Skipframe = 0; //Start positions of all the animations LeftU2Start = 64; RightU2Start = 64; LeftUStart = 704; RightUStart = 704; UpStart = 704; LeftD2Start = 768; RightD2Start = 768; LeftDStart = 1408; RightDStart = 1408; JumpStart = 1408; JumpFallStart = 3520; }
////added for search by text functions. Leigh Track::Track(LPCSTR BitmapDir, const char *text, int Startx, int Starty, int Startz, TrackType TheType, int SpeedAmount) { DeleteThis = false; ObjString = text; //Direct Draw Initialization DDSURFACEDESC2 ddsd; INITIALIZE_DDRAW(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT; ddsd.dwWidth = 64; ddsd.dwHeight = 64; ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = _RGB16BIT565(255, 0, 255); ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = _RGB16BIT565(255, 0, 255); ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; if(FAILED(lpdd->CreateSurface(&ddsd, &TheBitmap, NULL))) { // Failed making surface } x = Startx; y = Starty; z = Startz; mysz = BitmapDir; DDReLoadBitmap(TheBitmap, BitmapDir); //Setup the source Rectangle for drawing SourceRect.top = 0; SourceRect.left = 0; SourceRect.right = 64; SourceRect.bottom = 64; //Other variables used for Track objects SpeedOffset = SpeedAmount; CollBox.top = Starty; CollBox.bottom = (Starty + 63); CollBox.left = Startx; CollBox.right = (Startx + 63); Type = TheType; RenderThis = true; Reverse = false; if (Type == Normal || Type == Start || Type == Finish || Type == SpeedUp || Type == SpeedDown) Vector = Right; else Vector = Down; string temp; temp = BitmapDir; if (temp == "gfx/TD.bmp") { Vector = Down; } }
BOOL InitDDraw() { DDSURFACEDESC ddsd; HRESULT ddrval; DirectDrawCreate(NULL, &lpDD, NULL);//产生一个DDRAW对象。 /*第一个参数是要创建的驱动类型,设为NULL,表示使用当前的显示驱动 第三个参数用于今后与COM对象兼容,目前都设为NULL*/ lpDD->SetCooperativeLevel (hWnd, DDSCL_NORMAL);//设置协作级别 ZeroMemory( &ddsd, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS; /*主页面的大小和像素格式都是由当前的显示模式决定的, 所以不能指定,否则发生错误*/ ddsd.ddsCaps .dwCaps = DDSCAPS_PRIMARYSURFACE; ddrval = lpDD->CreateSurface (&ddsd, &lpDDSPrimary, NULL); /*第三个参数也是用于与COM对象兼容,目前只能设为NULL*/ if(ddrval != DD_OK) { return FALSE; } ZeroMemory( &ddsd, sizeof(ddsd)); ddsd.dwSize = sizeof(ddsd); ddsd.dwFlags = DDSD_CAPS| DDSD_HEIGHT| DDSD_WIDTH; ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; ddsd.dwHeight = 600; ddsd.dwWidth = 800; /*页面的大小可以和实际图片大小不一样,但会产生失真*/ RectTemp.left = 0; RectTemp.top = 0; RectTemp.right = ddsd.dwWidth; RectTemp.bottom = ddsd.dwHeight; lpDD->CreateSurface (&ddsd, &lpDDSTemp, NULL); if(ddrval != DD_OK) { return FALSE; } DDReLoadBitmap( lpDDSTemp, "gameover.bmp"); return TRUE; }
int TEXTEDITBOX::ProcFunction(PASSPROCVARS Params){ TCHAR Char; // switch(Params.uMsg){ case WM_PAINT: RestoreFonts(); Pass.DDFront->Restore(); Pass.DDBack->Restore(); this->EditBoxSurface->Restore(); DDReLoadBitmap(this->EditBoxSurface, BMP_TEXTEDITBOX); this->StorageSurface->Restore(); break; case WM_CHAR: switch(Params.wParam){ case 0x08: /* backspace */ DeleteChar(); break; case 0x0A: /* linefeed */ case 0x0D: /* carriage return */ Info=TEBI_DONE; break; case 0x1B: /* escape */ case 0x09: /* tab */ break; default: //normal character: Char=(TCHAR) Params.wParam; AddChar(Char); break; } break; case WM_KEYDOWN: ///put it in the box. switch(Params.wParam){ case VK_RETURN: break; case VK_ESCAPE: break; case VK_LEFT: break; case VK_RIGHT: break; } break; } UpdateBox(); return 0; }
////////constructor for differing height/width animated tracks AnimatedTrack::AnimatedTrack(LPCSTR BitmapDir, const char *text, int Startx, int Starty, int Startz,int width, int height, int NumberFrames, RECT Collision) { DeleteThis = false; ObjString = text; Width = width; Height = height; //Direct Draw Initialization DDSURFACEDESC2 ddsd; INITIALIZE_DDRAW(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT; ddsd.dwWidth = (NumberFrames * Width); ddsd.dwHeight = Height; ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = _RGB16BIT565(255, 0, 255); ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = _RGB16BIT565(255, 0, 255); if(FAILED(lpdd->CreateSurface(&ddsd, &TheBitmap, NULL))) { // Failed making surface } x = Startx; y = Starty; z = Startz; mysz = BitmapDir; DDReLoadBitmap(TheBitmap, BitmapDir); //Setup the source Rectangle for animations SourceRect.top = 0; SourceRect.left = 0; SourceRect.right = Width-1; SourceRect.bottom = Height-1; // Other variables used with animated track objects SpeedOffset = 2; CollBox = Collision; Frames = NumberFrames; RenderThis = true; AnimateReverse = false; }
////added for search by text functions. Leigh Track::Track(LPCSTR BitmapDir, const char *text, int Startx, int Starty, int Startz, RECT Collision) { DeleteThis = false; ObjString = text; //Direct Draw Initialization DDSURFACEDESC2 ddsd; INITIALIZE_DDRAW(ddsd); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT; ddsd.dwWidth = 64; ddsd.dwHeight = 64; ddsd.ddckCKSrcBlt.dwColorSpaceLowValue = _RGB16BIT565(255, 0, 255); ddsd.ddckCKSrcBlt.dwColorSpaceHighValue = _RGB16BIT565(255, 0, 255); ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; if(FAILED(lpdd->CreateSurface(&ddsd, &TheBitmap, NULL))) { // Failed making surface } x = Startx; y = Starty; z = Startz; mysz = BitmapDir; DDReLoadBitmap(TheBitmap, BitmapDir); //Setup the source Rectangle for drawing SourceRect.top = 0; SourceRect.left = 0; SourceRect.right = 64; SourceRect.bottom = 64; //Other variables used for Track objects SpeedOffset = -1; Type = Normal; CollBox = Collision; RenderThis = true; }