int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MSG msg; if ( !_GameMode(hInstance, nCmdShow, 640, 480, 32) ) return FALSE; SpriteImage = DDLoadBitmap( DirectOBJ, "sprite_char.BMP", 0, 0 ); BackGround = DDLoadBitmap( DirectOBJ, "sprite_back.BMP", 0, 0 ); DDSetColorKey( SpriteImage, RGB(0,0,0) ); SetTimer(MainHwnd, 1, 5, _GameProc); while ( !_GetKeyState(VK_ESCAPE) ) { if ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) { if ( !GetMessage(&msg, NULL, 0, 0) ) return msg.wParam; TranslateMessage( &msg ); DispatchMessage( &msg ); } } DestroyWindow( MainHwnd ); return TRUE; }
/* * LoadIntroGFX: * Loads the intro bmp's onto their surfaces */ void LoadIntroGFX(void) { lpDDSXG = DDLoadBitmap(".\\Gfx\\xgames.hwg", 0, 0); lpDDSPP = DDLoadBitmap(".\\Gfx\\perpprod.hwg", 0, 0); lpDDSMR = DDLoadBitmap(".\\Gfx\\mystreal.hwg", 0 , 0); lpDDSHW = DDLoadBitmap(".\\Gfx\\hajiworld.hwg", 0, 0); }
///////////////////////////////////////////////////////////////////////////////////////////// //We'll need placement on screen, and that's it, I guess. int ONOFF::Initialize(RECT rect, IDirectDrawSurface ** ddS, LPDIRECTDRAW * lpDD){ this->Value=false;//initialize the vlaue this->Bounds=rect;//set the screeen boundaries; this->dds=ddS;//set the display surface. //create the surfaces/load teh images this->ddsOff=DDLoadBitmap(*lpDD, BMP_ONOFFOFF, 0,0); this->ddsOn =DDLoadBitmap(*lpDD, BMP_ONOFFON , 0,0); DDSetColorKey(this->ddsOn, CLR_INVALID); DDSetColorKey(this->ddsOff, CLR_INVALID); //now fill in values for the srect member; DDSURFACEDESC ddsd; ZeroMemory(&ddsd, sizeof(ddsd)); ddsd.dwSize=sizeof(ddsd); ddsd.dwFlags=DDSD_ALL; this->ddsOff->GetSurfaceDesc(&ddsd); this->srect.top=0; this->srect.left=0; this->srect.right=ddsd.dwWidth; this->srect.bottom=ddsd.dwHeight; this->Valid=true; return 0; }
int SettingsMain(){ Pass.SettingsInfo=SETTINGS_NOTHING; Pass.ProgramFlow=PF_SETTINGS; MSG Msg; LRESULT Result; ScreenHighlighted= DDLoadBitmap(Pass.DDObject,BMP_SETTINGSH, 0, 0); ScreenUnhighlighted=DDLoadBitmap(Pass.DDObject,BMP_SETTINGS, 0, 0); cbOptions.Initialize(&ScreenHighlighted, &ScreenUnhighlighted, &Pass.DDBack, GetRect( 340,236,557,309), cbOptionsProc); cbHighScores.Initialize(&ScreenHighlighted, &ScreenUnhighlighted, &Pass.DDBack, GetRect(129,134,431,215), cbHighScoresProc); cbPlay.Initialize(&ScreenHighlighted, &ScreenUnhighlighted, &Pass.DDBack, GetRect( 465,343,600,422), cbPlayProc); cbExit.Initialize(&ScreenHighlighted, &ScreenUnhighlighted, &Pass.DDBack, GetRect( 6, 72,129,142), cbExitProc); cbCredits.Initialize(&ScreenHighlighted, &ScreenUnhighlighted, &Pass.DDBack, GetRect( 6,341,215,422), cbCreditsProc); Result=FadeIn(Pass.DDObject, &Pass.DDFront, &ScreenUnhighlighted, 0); settingsRedrawScreen(); Result=Blit(Pass.DDBack, ScreenUnhighlighted, 0,0,640,480,0,0); //message loop now. while(Pass.SettingsInfo==SETTINGS_NOTHING){ if(!GetMessage(&Msg, NULL, 0, 0)){ Pass.SettingsInfo=SETTINGS_EXIT; Pass.ProgramFlow=PF_EXIT; } TranslateMessage(&Msg); DispatchMessage(&Msg); } //destroy the surfaces if(ScreenHighlighted!=NULL){ ScreenHighlighted->Release(); ScreenHighlighted=NULL; ScreenUnhighlighted->Release(); ScreenUnhighlighted=NULL; } return 0; }
TEXTEDITBOX::TEXTEDITBOX(){ //copy the desktop surface into a buffer (storage) surface. MakeOffScreenSurface(Pass.DDObject, StorageSurface, TEXTENTRYBOX_WIDTH, TEXTENTRYBOX_HEIGHT); Blit(StorageSurface, Pass.DDFront, TEXTENTRYBOX_LEFT, TEXTENTRYBOX_TOP, TEXTENTRYBOX_BOTTOM, TEXTENTRYBOX_RIGHT, 0,0); //load the image of the text box EditBoxSurface=DDLoadBitmap(Pass.DDObject, BMP_TEXTEDITBOX, 0,0); //set up the data for the input string. ZeroMemory(String, sizeof(String)); CursorPosition=0; StringLength=0; }
void CreditsMain(){ CreditsInfo=CREDITS_NORMAL; ddsCredits=DDLoadBitmap(Pass.DDObject, BMP_CREDITS, 0, 0); ddsCreditsh=DDLoadBitmap(Pass.DDObject, BMP_CREDITSH, 0, 0); RECT rect; SetRect(&rect, 237, 336, 385, 417); ccbOK.Initialize(&ddsCreditsh, &ddsCredits, &Pass.DDBack, rect, ccbOKProc); int OldPF=Pass.ProgramFlow; Pass.ProgramFlow=PF_CREDITS; FadeIn(Pass.DDObject, &Pass.DDFront, &ddsCredits, 0); Blit(Pass.DDBack, ddsCredits, 0, 0, 640, 480, 0, 0); MSG Msg; //messageloop while(CreditsInfo != CREDITS_EXIT){ if(!GetMessage(&Msg, NULL, 0, 0)){ //trying to quit Pass.ProgramFlow=PF_EXIT; CreditsInfo=CREDITS_EXIT; } else{ TranslateMessage(&Msg); DispatchMessage(&Msg); } } FadeOut(Pass.DDObject, &Pass.DDFront, &ddsCredits, 0); if(Pass.ProgramFlow != PF_EXIT) Pass.ProgramFlow=OldPF; //destroy the surfaces if(ddsCredits != NULL){ ddsCredits->Release(); ddsCredits=NULL; ddsCreditsh->Release(); ddsCreditsh=NULL; } return; }
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; if (!_GameMode(hInstance, nCmdShow, 1280, 720, 32, false)) return FALSE; CommInit(NULL, NULL); //±×·¡ÇÈ ÃʱâÈ ResourceImage[0] = DDLoadBitmap(DirectOBJ, "DATA//end1.BMP", 0, 0, SYSTEM); ResourceImage[1] = DDLoadBitmap(DirectOBJ, "DATA//win.BMP", 0, 0, SYSTEM); ResourceImage[2] = DDLoadBitmap(DirectOBJ, "DATA//Choice.BMP", 0, 0, SYSTEM); ResourceImage[3] = DDLoadBitmap(DirectOBJ, "DATA//Money.BMP", 0, 0,SYSTEM); ResourceImage[4] = DDLoadBitmap(DirectOBJ, "DATA//Sonmogazi.BMP", 0, 0, SYSTEM); ResourceImage[5] = DDLoadBitmap(DirectOBJ, "DATA//Button.BMP", 0, 0, SYSTEM); ResourceImage[6] = DDLoadBitmap(DirectOBJ, "DATA//ZokBo.BMP", 0, 0, SYSTEM); ResourceImage[7] = DDLoadBitmap(DirectOBJ, "DATA//Texts.BMP", 0, 0, SYSTEM); ResourceImage[8] = DDLoadBitmap(DirectOBJ, "DATA//Stop.BMP", 0, 0, SYSTEM); ResourceImage[9] = DDLoadBitmap(DirectOBJ, "DATA//Back.BMP", 0, 0, SYSTEM); ResourceImage[10] = DDLoadBitmap(DirectOBJ, "DATA//main.bmp", 0, 0, SYSTEM); DDSetColorKey(ResourceImage[0], BLACK); DDSetColorKey(ResourceImage[1], BLACK); DDSetColorKey(ResourceImage[2], BLACK); DDSetColorKey(ResourceImage[3], BLACK); DDSetColorKey(ResourceImage[4], BLACK); DDSetColorKey(ResourceImage[5], BLACK); DDSetColorKey(ResourceImage[6], BLACK); DDSetColorKey(ResourceImage[7], BLACK); DDSetColorKey(ResourceImage[8], BLACK); DDSetColorKey(ResourceImage[9], BLACK); DDSetColorKey(ResourceImage[10], BLACK); //À½Çâ ÃʱâÈ if (SoundCard) { Sound[0] = SndObjCreate(SoundOBJ, "Sound//OST.WAV", 1); Sound[1] = SndObjCreate(SoundOBJ, "Sound//¹ØÀ廩±â.WAV", 1); Sound[2] = SndObjCreate(SoundOBJ, "Sound//Select3.WAV", 1); //Sound[3] = SndObjCreate(SoundOBJ, "Sound//Check.WAV", 1); //Sound[4] = SndObjCreate(SoundOBJ, "Sound//Start.WAV", 1); //3,4¹ø Àç»ýÀÌ ¾ÈµÊ. ÀÌÀ¯´Â ¸ð¸§.. } turn = 0; randomize(); Pae(); CommSend(); PlaySound("Sound//OST.WAV", NULL, SND_ASYNC); SetTimer(MainHwnd, 1, 10, NULL); // Main message loop while (GetMessage(&msg, NULL, 0, 0)){ TranslateMessage(&msg); DispatchMessage(&msg); } DestroyWindow(MainHwnd); return TRUE; }
/// <summary> Initializes surfaces for direct draw</summary> void CDDraw::LoadSurfaces() { // Initialize text metric, basic structure for a physical font // http://msdn.microsoft.com/en-us/library/windows/desktop/dd145132(v=vs.85).aspx TEXTMETRIC tm; // Initialize device context handler HDC surfDC; // Populate surfDC with GDI-compatible handle of device context for the surface Back->GetDC(&surfDC); // Populate tm structure with text metrics from device context // http://msdn.microsoft.com/en-us/library/windows/desktop/dd144941(v=vs.85).aspx GetTextMetrics(surfDC, &tm); // Set TextWidth to average character width value TextWidth = tm.tmAveCharWidth; // Release the surfDC device context Back->ReleaseDC(surfDC); // // Loading resources into surface objects // // Load imgArrowsRed.bmp as surface imgArrowsRed = DDLoadBitmap(DirectDraw, "imgArrowsRed.bmp", 0, 0); // Set the color key to be transparent DDSetColorKey(imgArrowsRed, COLOR_TRANSPARENCY); imgArrows = DDLoadBitmap(DirectDraw, "imgArrows.bmp", 0, 0); DDSetColorKey(imgArrows, COLOR_TRANSPARENCY); imgBCLogo = DDLoadBitmap(DirectDraw, "imgBCLogo.bmp", 0, 0); // Set the color key to black DDSetColorKey(imgBCLogo, 0); imgBlackNumbers = DDLoadBitmap(DirectDraw, "imgBlackNumbers.bmp", 0, 0); DDSetColorKey(imgBlackNumbers, COLOR_TRANSPARENCY); imgBtnStaff = DDLoadBitmap(DirectDraw, "imgBtnStaff.bmp", 0, 0); DDSetColorKey(imgBtnStaff, 0); imgBuildIcons = DDLoadBitmap(DirectDraw, "imgBuildIcons.bmp", 0, 0); DDSetColorKey(imgBuildIcons, 0); imgBuildings = DDLoadBitmap(DirectDraw, "imgBuildings.bmp", 0, 0); DDSetColorKey(imgBuildings, COLOR_TRANSPARENCY); imgBullets = DDLoadBitmap(DirectDraw, "imgBullets.bmp", 0, 0); DDSetColorKey(imgBullets, COLOR_TRANSPARENCY); imgCompany = DDLoadBitmap(DirectDraw, "imgCompany.bmp", 0, 0); DDSetColorKey(imgCompany, 0); imgCursor = DDLoadBitmap(DirectDraw, "imgCursor.bmp", 0, 0); DDSetColorKey(imgCursor, COLOR_TRANSPARENCY); imgDemolish = DDLoadBitmap(DirectDraw, "imgDemolish.bmp", 0, 0); DDSetColorKey(imgDemolish, COLOR_TRANSPARENCY); imgGround = DDLoadBitmap(DirectDraw, "imgGround.bmp", 0, 0); DDSetColorKey(imgGround, 0); imgHealth = DDLoadBitmap(DirectDraw, "imgHealth.bmp", 0, 0); DDSetColorKey(imgHealth, 0); imgInterface = DDLoadBitmap(DirectDraw, "imgInterface.bmp", 0, 0); DDSetColorKey(imgInterface, COLOR_TRANSPARENCY); imgInterfaceBottom = DDLoadBitmap(DirectDraw, "imgInterfaceBottom.bmp", 0, 0); DDSetColorKey(imgInterfaceBottom, COLOR_TRANSPARENCY); imgInventorySelection = DDLoadBitmap(DirectDraw, "imgInventorySelection.bmp", 0, 0); DDSetColorKey(imgInventorySelection, 0); imgItems = DDLoadBitmap(DirectDraw, "imgItems.bmp", 0, 0); DDSetColorKey(imgItems, COLOR_TRANSPARENCY); imgLava = DDLoadBitmap(DirectDraw, "imgLava.bmp", 0, 0); DDSetColorKey(imgLava, COLOR_TRANSPARENCY); imgLoading = DDLoadBitmap(DirectDraw, "imgLoading.bmp", 0, 0); DDSetColorKey(imgLoading, COLOR_TRANSPARENCY); imgLExplosion = DDLoadBitmap(DirectDraw, "imgLExplosion.bmp", 0, 0); DDSetColorKey(imgLExplosion, COLOR_TRANSPARENCY); imgMiniMapColors = DDLoadBitmap(DirectDraw, "imgMiniMapColors.bmp", 0, 0); DDSetColorKey(imgMiniMapColors, 0); imgMoneyBox = DDLoadBitmap(DirectDraw, "imgMoneyBox.bmp", 0, 0); DDSetColorKey(imgMoneyBox, COLOR_TRANSPARENCY); imgMoneyDown = DDLoadBitmap(DirectDraw, "imgMoneyDown.bmp", 0, 0); DDSetColorKey(imgMoneyDown, COLOR_TRANSPARENCY); imgMoneyUp = DDLoadBitmap(DirectDraw, "imgMoneyUp.bmp", 0, 0); DDSetColorKey(imgMoneyUp, COLOR_TRANSPARENCY); imgMuzzleFlash = DDLoadBitmap(DirectDraw, "imgMuzzleFlash.bmp", 0, 0); DDSetColorKey(imgMuzzleFlash, COLOR_TRANSPARENCY); imgPopulation = DDLoadBitmap(DirectDraw, "imgPopulation.bmp", 0, 0); DDSetColorKey(imgPopulation, COLOR_TRANSPARENCY); imgRadarColors = DDLoadBitmap(DirectDraw, "imgRadarColors.bmp", 0, 0); DDSetColorKey(imgRadarColors, 0); imgResearch = DDLoadBitmap(DirectDraw, "imgResearch.bmp", 0, 0); DDSetColorKey(imgResearch, COLOR_TRANSPARENCY); imgResearchComplete = DDLoadBitmap(DirectDraw, "imgResearchComplete.bmp", 0, 0); DDSetColorKey(imgResearchComplete, COLOR_TRANSPARENCY); imgRocks = DDLoadBitmap(DirectDraw, "imgRocks.bmp", 0, 0); DDSetColorKey(imgRocks, COLOR_TRANSPARENCY); imgSExplosion = DDLoadBitmap(DirectDraw, "imgSExplosion.bmp", 0, 0); DDSetColorKey(imgSExplosion, COLOR_TRANSPARENCY); imgSmoke = DDLoadBitmap(DirectDraw, "imgSmoke.bmp", 0, 0); DDSetColorKey(imgSmoke, COLOR_TRANSPARENCY); imgStar = DDLoadBitmap(DirectDraw, "imgStar.bmp", 0, 0); DDSetColorKey(imgStar, COLOR_TRANSPARENCY); imgTanks = DDLoadBitmap(DirectDraw, "imgTanks.bmp", 0, 0); DDSetColorKey(imgTanks, COLOR_TRANSPARENCY); imgTurretBase = DDLoadBitmap(DirectDraw, "imgTurretBase.bmp", 0, 0); DDSetColorKey(imgTurretBase, COLOR_TRANSPARENCY); imgTurretHead = DDLoadBitmap(DirectDraw, "imgTurretHead.bmp", 0, 0); DDSetColorKey(imgTurretHead, COLOR_TRANSPARENCY); }
IDirectDrawSurface7 * cls_sprite_surface::getSpriteSurface(IDirectDrawSurface7 * lpdds,char * srcname,char * spritename,\ LPCSTR szBitmap,int frame_num,bool debugflag){ //IDirectDrawSurface7 * templpdds; int loaded=0; //往素材队列放结构对象 int current_index=this->get_max_sprite_surface(0); #if 0 //查询画面管理列表,如果已经载入了,更新对应数据 this->iter=this->sprite_handler_list.begin(); while(iter!=this->sprite_handler_list.end()){ if ((*iter)->source_pic_name==szBitmap){ // MessageBox(hwnd,"loaded!","info",MB_OK); loaded=1; return (*iter)->lpdds;//如果读入了直接返回画面 break; } ++iter; } #endif if (!loaded) lpdds=DDLoadBitmap(lpdd,szBitmap); //往精灵画面数组递增1个元素 if(current_index==1000){ MessageBox(hwnd,"already have 100 sprite surfaces!","bug",MB_OK); } else{//如果是-1就是第一次了,加上就是下标0 // char buf[30]; // sprintf(buf,"当前最大画面管理器元素下标%d",current_index); // MessageBox(hwnd,buf,"",MB_OK); this->sprite_surface[current_index+1].used=1; this->sprite_surface[current_index+1].lpddsrc=lpdds; this->sprite_surface[current_index+1].srcname=srcname; this->sprite_surface[current_index+1].sprite_numframe=frame_num; //this->sprite_surface[current_index+1].used=1; } this->sfmgrtemp->sprite_group_name=spritename; this->sfmgrtemp->source_pic_name=szBitmap; this->sfmgrtemp->lpdds=lpdds; int hasaname=0;//是不是已经有了组名 #if 0 char itoabuf[6]; itoa(current_index+1,itoabuf,10); this->sfmgrtemp->sprite_surface_array_indexes=itoabuf;//?? /* char buf[20]; sprintf(buf,"%s", this->sfmgrtemp->sprite_surface_array_indexes); MessageBox(this->hwnd,buf,"the info",MB_OK);*/ //往画面管理链表里添加1个节点,如果之前有节点的组名和当前spritename是一样的,就更新成这样1|2 //list<SF_MGR * >::iterator iter; iter=this->sprite_handler_list.begin(); while(iter!=this->sprite_handler_list.end()){ if((*iter)->sprite_group_name==spritename){ std::string a,b; a=(*iter)->sprite_surface_array_indexes; itoa(current_index+1,itoabuf,10); b=itoabuf; a+="|"; a+=b; (*iter)->sprite_surface_array_indexes=(LPCSTR)a.c_str(); hasaname=1; break; } ++iter; } if(!hasaname) this->sprite_handler_list.push_back(sfmgrtemp); #endif //查询szBitmap位图的长宽信息。 HBITMAP hbm; BITMAP bm; // LoadImage has some added functionality in Windows 95 that allows // you to load a bitmap from a file on disk. hbm = (HBITMAP)LoadImage(NULL, szBitmap, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); if (hbm == NULL){ MessageBox(this->hwnd,"无法获取位图句柄","bug",MB_OK); return NULL;// } GetObject(hbm, sizeof(bm), &bm); // get size of bitmap //创建指定数量的精灵动作画面 int width=bm.bmWidth/frame_num;//横向依次读取n个精灵 //alertme((int)bm.bmWidth); //alertme(frame_num); //alertme(width); int height=bm.bmHeight; //照搬windows GMP的精灵结构sprite,我把他封装到了我的SPRITE_SURFACE结构里了,再加2个成员以判断每一帧的长宽 this->sprite_surface[0].spritename=spritename; int i=current_index+1; this->sprite_surface[i].sprite.current_frame=0; this->sprite_surface[i].used=1; this->sprite_surface[i].sprite.x=0; this->sprite_surface[i].sprite.y=0; //this->sprite_surface[i].used=1; //必须加1,但创建画面的时候不要,不知道为什么?否则右面1像素显示不出! this->sprite_surface[i].sprite.theframe_width=width;//之后可以去修改,比如动作游戏,先默认为切出来的大小。 this->sprite_surface[i].sprite.theframe_height=height; #if 0 if (debugflag){//debug alertme(i); this->sprite_surface[i].sprite.theframe_width=44; this->sprite_surface[i].sprite.theframe_height=38; } #endif for (int j=0;j<frame_num;j++){ this->sprite_surface[i].sprite.frames[j]=DDraw_Create_Surface(width,height,3,1);//标记3是指使用系统内存 } #if 0 if (debugflag) alertme(i);//debug if (debugflag){//debug alertme(this->sprite_surface[i].sprite.theframe_width); alertme(width); alertme(this->sprite_surface[i].sprite.theframe_height); alertme(height); //this->sprite_surface[i].sprite.theframe_width=44; //this->sprite_surface[i].sprite.theframe_height=38; } #endif //然后读入位图到各个精灵动作画面 RECT DestRect;RECT SrcRect; DestRect.top=0;DestRect.left=0;DestRect.right=width;DestRect.bottom=height; for (j=0;j<frame_num;j++){ //alertme("j是"); //alertme(j); SrcRect.top=0; SrcRect.left=0+j*width; //alertme("SrcRect.left是"); //alertme(SrcRect.left); SrcRect.right=SrcRect.left+width; //alertme("SrcRect.right是"); //alertme(SrcRect.right); SrcRect.bottom=height; //alertme("SrcRect.bottom是"); //alertme(SrcRect.bottom); if(FAILED(this->sprite_surface[i].sprite.frames[j]->Blt(&DestRect, // pointer to dest RECT lpdds, // pointer to source surface &SrcRect, // pointer to source RECT DDBLT_WAIT, &ddbltfx)))// pointer to DDBLTFX holding info { MessageBox(this->hwnd,"copy sprite surface failed!","info",MB_OK); } } //删除GDI对象 if(!DeleteObject(hbm)){ MessageBox(hwnd,"删除位图对象失败","",MB_OK); } return sprite_surface[current_index+1].lpddsrc; }
void SelectSong(void) { DWORD count,i; static DWORD current; static DWORD SelectCurrent; static int Selected, zoom,toggle,speed; RECT lRect; int ModeTemp1p, ModeTemp2p; static time_t t; static int a,b,c; static int iMove; RECT DiscSize,Screen; char s[50]; if(First==0) { startTimer=timeGetTime(); if(Start1p==FALSE) { HighSpeed1p=1; bModeMirror1p=FALSE; bModeNonstep1p=FALSE; bModeSynchro=FALSE; bModeUnion1p=FALSE; bModeRandom1p=FALSE; b4dMix1p=FALSE; HighSpeed1p_1=1; HighSpeed1p_3=1; HighSpeed1p_5=1; HighSpeed1p_7=1; HighSpeed1p_9=1; bModeVanish1p=FALSE; bModeSuddenR1p=FALSE; bModeRandomS1p=FALSE; } if(Start2p==FALSE) { HighSpeed2p=1; bModeMirror2p=FALSE; bModeNonstep2p=FALSE; bModeUnion2p=FALSE; bModeRandom2p=FALSE; b4dMix2p=FALSE; HighSpeed2p_1=1; HighSpeed2p_3=1; HighSpeed2p_5=1; HighSpeed2p_7=1; HighSpeed2p_9=1; bModeVanish2p=FALSE; bModeSuddenR1p=FALSE; bModeRandomS1p=FALSE; } DDFillSurface(g_pDDSPrimary,0); DDFillSurface(g_pDDSBack,0); //FadeToSurface(SelectBack); g_pDDSBack->BltFast(0,0, SelectBack, NULL, DDBLTFAST_NOCOLORKEY); a=Start1p;b=Start2p; First++; if(g_dsSelectSong)g_dsSelectSong->Play(0,0,DSBPLAY_LOOPING); } DiscSize.top=0; DiscSize.left=0; DiscSize.right=300; DiscSize.bottom=200; for(count=0;;count++) { if(count!=0)CSONG[count].Prev=count-1; CSONG[count].Next=count+1; if(CSONG[count].bpm==0) { CSONG[count].Prev=0; count--; CSONG[count].Next=0; CSONG[0].Prev=count; break; } } if(speed==1) //일단은 변수를 이용합니다. 곧 타이머 형식으로 바꾸도록 합시다. { speed=0; if(toggle==0) { if(zoom==10)toggle=1; else zoom++; } else if(toggle==1) { if(zoom==0)toggle=0; else zoom--; } } else speed++; ReadGameInput(); if(PressedKey1p[5]==TRUE) { if(Start1p==FALSE) { Start1p=TRUE; } } if(PressedKey2p[5]==TRUE) { if(Start2p==FALSE) { Start2p=TRUE; } } ModeTemp1p=ScanHiddenMode1p(); if(ModeTemp1p)if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} switch(ModeTemp1p) { case HMODE_SUDDENR: bModeSuddenR1p=TRUE; bModeVanish1p=FALSE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_RANDOMS: bModeRandomS1p=TRUE; HighSpeed1p=1; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_2X: HighSpeed1p=2; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_4X: HighSpeed1p=4; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_8X: HighSpeed1p=8; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_MIRROR: bModeMirror1p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_NONSTEP: bModeNonstep1p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_SYNCHRO: bModeSynchro=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_UNION: bModeUnion1p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_RANDOM: bModeRandom1p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_4DMIX: srand((unsigned) time(&t)); HighSpeed1p_1=1+rand()%8; HighSpeed1p_3=1+rand()%8; HighSpeed1p_5=1+rand()%8; HighSpeed1p_7=1+rand()%8; HighSpeed1p_9=1+rand()%8; b4dMix1p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_VANISH: bModeVanish1p=TRUE; bModeSuddenR2p=FALSE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; /* case HMODE_NONSTOPDOUBLE: if(Start1p&&Start2p)break; Double=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break;*/ case HMODE_CANCEL: if(g_dsCancel)g_dsCancel->Play(0,0,0); HighSpeed1p=1; bModeMirror1p=FALSE; bModeNonstep1p=FALSE; bModeSynchro=FALSE; bModeUnion1p=FALSE; bModeRandom1p=FALSE; b4dMix1p=FALSE; HighSpeed1p_1=1; HighSpeed1p_3=1; HighSpeed1p_5=1; HighSpeed1p_7=1; HighSpeed1p_9=1; bModeVanish1p=FALSE; bModeSuddenR1p=FALSE; bModeRandomS1p=FALSE; Double=FALSE; break; } ModeTemp2p=ScanHiddenMode2p(); if(ModeTemp2p)if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} switch(ModeTemp2p) { case HMODE_SUDDENR: bModeSuddenR2p=TRUE; bModeVanish2p=FALSE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_RANDOMS: bModeRandomS2p=TRUE; HighSpeed2p=1; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_2X: HighSpeed2p=2; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_4X: HighSpeed2p=4; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_8X: HighSpeed2p=8; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_MIRROR: bModeMirror2p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_NONSTEP: bModeNonstep2p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_SYNCHRO: bModeSynchro=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_UNION: bModeUnion2p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_RANDOM: bModeRandom2p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_4DMIX: srand((unsigned) time(&t)); HighSpeed2p_1=1+rand()%8; HighSpeed2p_3=1+rand()%8; HighSpeed2p_5=1+rand()%8; HighSpeed2p_7=1+rand()%8; HighSpeed2p_9=1+rand()%8; b4dMix2p=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; case HMODE_VANISH: bModeVanish2p=TRUE; bModeSuddenR2p=FALSE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} break; /* case HMODE_NONSTOPDOUBLE: if(Start1p&&Start2p)break; Double=TRUE; if(g_dsMode){g_dsMode->Stop();g_dsMode->SetCurrentPosition(0);g_dsMode->Play(0,0,0);} */ break; case HMODE_CANCEL: if(g_dsCancel)g_dsCancel->Play(0,0,0); HighSpeed2p=1; bModeMirror2p=FALSE; bModeNonstep2p=FALSE; bModeUnion2p=FALSE; bModeRandom2p=FALSE; b4dMix2p=FALSE; HighSpeed2p_1=1; HighSpeed2p_3=1; HighSpeed2p_5=1; HighSpeed2p_7=1; HighSpeed2p_9=1; bModeVanish2p=FALSE; bModeSuddenR2p=FALSE; bModeRandomS2p=FALSE; Double=FALSE; break; } if((Start1p && PressedKey1p[1]) || (Start2p && PressedKey2p[1])) { if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);} Selected=0; iMove=1; current=CSONG[CSONG[current].Prev].Prev; } if((Start1p && PressedKey1p[3]) || (Start2p && PressedKey2p[3])) { if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);} Selected=0; iMove=-1; current=CSONG[CSONG[current].Next].Next; } if((Start1p && PressedKey1p[7]) || (Start2p && PressedKey2p[7])) { if(Selected==7) { SelectCurrent=current; PressedKey1p[0]=3; } else { if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);} /* if(CSONG[current].Int_Song) { if(g_dsSelectSong)g_dsSelectSong->Stop(); g_Cur_Song=CSONG[current].Int_Song; g_Cur_Song->SetCurrentPosition(0); g_Cur_Song->Play(0,0,0); } else*/ if(access(CSONG[current].WavsName,04)==0) { IntroFlag=TRUE; intro= new CMedia; intro->OpenMediaFile(CSONG[current].WavsName); intro->OnMediaPlay(); } else if(access(CSONG[current].Wavs3Name,04)==0) { IntroFlag=TRUE; intro= new CMedia; intro->OpenMediaFile(CSONG[current].Wavs3Name); intro->OnMediaPlay(); } Selected=7; } } if((Start1p && PressedKey1p[9]) || (Start2p && PressedKey2p[9])) { if(Selected==9) { SelectCurrent=CSONG[current].Next; PressedKey1p[0]=3; } else { if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} if(g_dsMove){g_dsMove->Stop();g_dsMove->SetCurrentPosition(0);g_dsMove->Play(0,0,0);} /* if(CSONG[CSONG[current].Next].Int_Song) { if(g_dsSelectSong)g_dsSelectSong->Stop(); g_Cur_Song=CSONG[CSONG[current].Next].Int_Song; g_Cur_Song->SetCurrentPosition(0); g_Cur_Song->Play(0,0,0); } else */if(access(CSONG[CSONG[current].Next].WavsName,04)==0) { IntroFlag=TRUE; intro= new CMedia; intro->OpenMediaFile(CSONG[CSONG[current].Next].WavsName); intro->OnMediaPlay(); } else if(access(CSONG[CSONG[current].Next].Wavs3Name,04)==0) { IntroFlag=TRUE; intro= new CMedia; intro->OpenMediaFile(CSONG[CSONG[current].Next].Wavs3Name); intro->OnMediaPlay(); } Selected=9; } } if(PressedKey1p[0]==3) { PressedKey1p[0]=0; if(CSONG[SelectCurrent].HaveCrazy==TRUE)GameMode=MODE_CRAZY,Double=FALSE; else if(CSONG[SelectCurrent].HaveDouble==TRUE)GameMode=MODE_DOUBLE,Double=TRUE; else if(CSONG[SelectCurrent].HaveEasy==TRUE)GameMode=MODE_EASY,Double=FALSE; else if(CSONG[SelectCurrent].HaveHard==TRUE)GameMode=MODE_HARD,Double=FALSE; else return; if(Start1p && Start2p) { Couple=TRUE; if(CSONG[SelectCurrent].HaveCouple==FALSE)bModeSynchro=TRUE; } else Couple=FALSE; if(SongBack) { SongBack->Release(); SongBack=NULL; } if(g_dsCancel) { g_dsCancel->Stop(); g_dsCancel->Play(0,0,0); } if(SongTitle) { SongTitle->Release(); SongTitle=NULL; } SongTitle = DDLoadBitmap(g_pDD,CSONG[SelectCurrent].TitlePath,0,0); SongBack = DDLoadBitmap(g_pDD,CSONG[SelectCurrent].BMPPath,0,0); if(SongBack == NULL) { if(SongTitle)SongBack=DDLoadBitmap(g_pDD,CSONG[SelectCurrent].TitlePath,0,0); else SongBack=DDLoadBitmap(g_pDD, "Images\\Back.bmp",0,0); } if(SongTitle == NULL) { SongTitle=DDLoadBitmap(g_pDD,"Images\\NoTitle.bmp",0,0); if(SongTitle)g_pDDSPrimary->BltFast(0,0,SongTitle,NULL,DDBLTFAST_NOCOLORKEY); } else g_pDDSPrimary->BltFast(0,0,SongTitle,NULL,DDBLTFAST_NOCOLORKEY); if(GameMode == MODE_DOUBLE) { memcpy(&Data_Double,&CSONG[SelectCurrent].Data_Double,sizeof(CSONG[SelectCurrent].Data_Double)); } else if(Couple==TRUE) { switch(GameMode) { case MODE_CRAZY: if(bModeSynchro) { memcpy(&Data,&CSONG[SelectCurrent].Data_Crazy,sizeof(CSONG[SelectCurrent].Data_Crazy)); memcpy(&Data1,&CSONG[SelectCurrent].Data_Crazy,sizeof(CSONG[SelectCurrent].Data_Crazy)); for(i=0;i<MAX_DATA;i++) { Data1[i][5]=Data1[i][0]; Data1[i][6]=Data1[i][1]; Data1[i][7]=Data1[i][2]; Data1[i][8]=Data1[i][3]; Data1[i][9]=Data1[i][4]; } } else { memcpy(&Data,&CSONG[SelectCurrent].Data_Crazy1,sizeof(CSONG[SelectCurrent].Data_Crazy1)); memcpy(&Data1,&CSONG[SelectCurrent].Data_Crazy1,sizeof(CSONG[SelectCurrent].Data_Crazy1)); } break; case MODE_EASY: if(bModeSynchro) { memcpy(&Data,&CSONG[SelectCurrent].Data_Easy,sizeof(CSONG[SelectCurrent].Data_Easy)); memcpy(&Data1,&CSONG[SelectCurrent].Data_Easy,sizeof(CSONG[SelectCurrent].Data_Easy)); for(i=0;i<MAX_DATA;i++) { Data1[i][5]=Data1[i][0]; Data1[i][6]=Data1[i][1]; Data1[i][7]=Data1[i][2]; Data1[i][8]=Data1[i][3]; Data1[i][9]=Data1[i][4]; } } else { memcpy(&Data,&CSONG[SelectCurrent].Data_Easy1,sizeof(CSONG[SelectCurrent].Data_Easy1)); memcpy(&Data1,&CSONG[SelectCurrent].Data_Easy1,sizeof(CSONG[SelectCurrent].Data_Easy1)); } break; case MODE_HARD: if(bModeSynchro) { memcpy(&Data,&CSONG[SelectCurrent].Data_Hard,sizeof(CSONG[SelectCurrent].Data_Hard)); memcpy(&Data1,&CSONG[SelectCurrent].Data_Hard,sizeof(CSONG[SelectCurrent].Data_Hard)); for(i=0;i<MAX_DATA;i++) { Data1[i][5]=Data1[i][0]; Data1[i][6]=Data1[i][1]; Data1[i][7]=Data1[i][2]; Data1[i][8]=Data1[i][3]; Data1[i][9]=Data1[i][4]; } } else { memcpy(&Data,&CSONG[SelectCurrent].Data_Hard1,sizeof(CSONG[SelectCurrent].Data_Hard1)); memcpy(&Data1,&CSONG[SelectCurrent].Data_Hard1,sizeof(CSONG[SelectCurrent].Data_Hard1)); } break; } } else { switch(GameMode) { case MODE_CRAZY: if(Start1p)memcpy(&Data,CSONG[SelectCurrent].Data_Crazy,sizeof(Data)); else { memcpy(&Data,CSONG[SelectCurrent].Data_Crazy,sizeof(Data)); memcpy(&Data1,CSONG[SelectCurrent].Data_Crazy,sizeof(Data)); for(i=0;i<MAX_DATA;i++) { Data1[i][5]=Data[i][0]; Data1[i][6]=Data[i][1]; Data1[i][7]=Data[i][2]; Data1[i][8]=Data[i][3]; Data1[i][9]=Data[i][4]; } } break; case MODE_EASY: if(Start1p)memcpy(&Data,CSONG[SelectCurrent].Data_Easy,sizeof(Data)); else { memcpy(&Data,CSONG[SelectCurrent].Data_Easy,sizeof(Data)); memcpy(&Data1,CSONG[SelectCurrent].Data_Easy,sizeof(Data)); for(i=0;i<MAX_DATA;i++) { Data1[i][5]=Data[i][0]; Data1[i][6]=Data[i][1]; Data1[i][7]=Data[i][2]; Data1[i][8]=Data[i][3]; Data1[i][9]=Data[i][4]; } } break; case MODE_HARD: if(Start1p)memcpy(&Data,CSONG[SelectCurrent].Data_Hard,sizeof(Data)); else { memcpy(&Data,CSONG[SelectCurrent].Data_Hard,sizeof(Data)); memcpy(&Data1,CSONG[SelectCurrent].Data_Hard,sizeof(Data)); for(i=0;i<MAX_DATA;i++) { Data1[i][5]=Data[i][0]; Data1[i][6]=Data[i][1]; Data1[i][7]=Data[i][2]; Data1[i][8]=Data[i][3]; Data1[i][9]=Data[i][4]; } } break; } } bpm=CSONG[SelectCurrent].bpm; bpm2=CSONG[SelectCurrent].bpm2; bpm3=CSONG[SelectCurrent].bpm3; bunki=CSONG[SelectCurrent].Bunki; bunki2=CSONG[SelectCurrent].Bunki2; switch(GameMode) { case MODE_CRAZY: start=CSONG[SelectCurrent].Crazy_Start; start2=CSONG[SelectCurrent].Crazy_Start2; start3=CSONG[SelectCurrent].Crazy_Start3; tick=CSONG[SelectCurrent].Crazy_Tick; break; case MODE_HARD: start=CSONG[SelectCurrent].Hard_Start; start2=CSONG[SelectCurrent].Hard_Start2; start3=CSONG[SelectCurrent].Hard_Start3; tick=CSONG[SelectCurrent].Hard_Tick; break; case MODE_EASY: start=CSONG[SelectCurrent].Easy_Start; start2=CSONG[SelectCurrent].Easy_Start2; start3=CSONG[SelectCurrent].Easy_Start3; tick=CSONG[SelectCurrent].Easy_Tick; break; case MODE_DOUBLE: start=CSONG[SelectCurrent].Double_Start; start2=CSONG[SelectCurrent].Double_Start2; start3=CSONG[SelectCurrent].Double_Start3; tick=CSONG[SelectCurrent].Double_Tick; break; } strcpy(SongName,CSONG[SelectCurrent].WavName); strcpy(SongName2,CSONG[SelectCurrent].MP3Name); strcpy(SongName3,CSONG[SelectCurrent].MPGName); strcpy(Title,CSONG[SelectCurrent].SongTitle); Judgement1p=NONE; Judgement2p=NONE; if(GameMode==MODE_DOUBLE)ProgramState=DOUBLE; // else if(Couple)ProgramState=COUPLE; else ProgramState=STAGE1; if(GameMode==MODE_DOUBLE) { if(Start1p && Start2p) Start2p=FALSE; } Selected=0; if(g_dsSelectSong)g_dsSelectSong->Stop(); if(IntroFlag){intro->OnMediaStop();delete intro;IntroFlag=FALSE;} if(access(SongName,04)==0) { SongFlag=TRUE; song=new CMedia; song->OpenMediaFile(SongName); } else if(access(SongName2,04)==0) { SongFlag=TRUE; song=new CMedia; song->OpenMediaFile(SongName2); } else SongFlag=FALSE; DDFillSurface(g_pDDSBack, 0); // ???? First=0; Combo1p=0; Combo2p=0; cPerfect1p=0; cGreat1p=0; cGood1p=0; cBad1p=0; cMiss1p=0; cMaxCombo1p=0; cPerfect2p=0; cGreat2p=0; cGood2p=0; cBad2p=0; cMiss2p=0; cMaxCombo2p=0; dwState=0; dwState2=0; start1=0; PressedKey1p[0]=0; PressedKey2p[0]=0; SelectCurrent=0; return; } g_pDDSBack->BltFast(0,0,SelectBack,NULL,DDBLTFAST_NOCOLORKEY); curTimer=timeGetTime(); int i2; i2=(int)(curTimer-startTimer)/1000; sprintf(s,"%02d", (40 - i2)); //sprintf(s, "99"); if(0>=(40-i2)) { if(Selected==7)SelectCurrent=current,PressedKey1p[0]=3; else if(Selected==9)SelectCurrent=CSONG[current].Next, PressedKey1p[0]=3; else SelectCurrent=current,PressedKey1p[0]=3; } DisplayNumber(560,8,s); if(Selected==7) { Screen.top=50-zoom; Screen.bottom=50+DISCSIZE_Y+zoom; Screen.left=10-zoom; Screen.right=10+DISCSIZE_X+zoom; } else { Screen.top=50; Screen.bottom=50+DISCSIZE_Y; Screen.left=10; Screen.right=10+DISCSIZE_X; } if(iMove<0) { if(iMove<=-640)iMove=0; else { iMove-=8; ClpBlt3(10+iMove,50,CSONG[CSONG[CSONG[current].Prev].Prev].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY); ClpBlt3(650+iMove,50,CSONG[current].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY); } } else if(iMove>0) { if(iMove>=640)iMove=0; else { iMove+=8; ClpBlt3(-630+iMove,50,CSONG[current].DiskImage, &DiscSize, DDBLTFAST_SRCCOLORKEY); ClpBlt3(10+iMove,50,CSONG[CSONG[CSONG[current].Next].Next].DiskImage, &DiscSize, DDBLTFAST_SRCCOLORKEY); } } else if(iMove==0)g_pDDSBack->Blt(&Screen,CSONG[current].DiskImage, &DiscSize, DDBLT_KEYSRC,NULL); if(Selected==9) { Screen.top=50-zoom; Screen.bottom=50+DISCSIZE_Y+zoom; Screen.left=330-zoom; Screen.right=330+DISCSIZE_X+zoom; } else { Screen.top=50; Screen.bottom=50+DISCSIZE_Y; Screen.left=330; Screen.right=330+DISCSIZE_X; } if(iMove<0) { if(iMove<=-640)iMove=0; else { iMove-=8; ClpBlt3(330+iMove,50,CSONG[CSONG[CSONG[CSONG[current].Prev].Prev].Next].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY); ClpBlt3(970+iMove,50,CSONG[CSONG[current].Next].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY); } } else if(iMove>0) { if(iMove>=640)iMove=0; else { iMove+=8; ClpBlt3(-310+iMove,50,CSONG[CSONG[current].Next].DiskImage, &DiscSize, DDBLTFAST_SRCCOLORKEY); ClpBlt3(330+iMove,50,CSONG[CSONG[CSONG[CSONG[current].Next].Next].Next].DiskImage, &DiscSize,DDBLTFAST_SRCCOLORKEY); } } else if(iMove==0)g_pDDSBack->Blt(&Screen,CSONG[CSONG[current].Next].DiskImage, &DiscSize, DDBLT_KEYSRC,NULL); g_pDDSBack->BltFast(0,250,ShiftLeft,NULL,DDBLTFAST_SRCCOLORKEY); g_pDDSBack->BltFast(320,250,ShiftRight,NULL,DDBLTFAST_SRCCOLORKEY); /* if(PressedKey2p[0]==6) { switch(GameMode) { case MODE_EASY:GameMode=MODE_HARD; break; case MODE_HARD:GameMode=MODE_EASY; break; } PressedKey2p[0]=0; } else if(PressedKey2p[0]==4) { switch(GameMode) { case MODE_EASY:GameMode=MODE_HARD; break; case MODE_HARD:GameMode=MODE_EASY; break; } PressedKey2p[0]=0; } */ /* switch(GameMode) { case MODE_EASY:DisplayMessage(200,460,"EASY");break; case MODE_HARD:DisplayMessage(200,460,"HARD");break; } switch(Couple) { case TRUE:DisplayMessage(100,460,"COUPLE MODE");break; case FALSE:DisplayMessage(100,460,"SINGLE MODE");break; } */ if(Selected==7)DisplayMessage(200,300,CSONG[current].SongTitle); else if(Selected==9)DisplayMessage(200,300,CSONG[CSONG[current].Next].SongTitle); if(bModeMirror1p)DrawMode(0,200,HMODE_MIRROR); if(bModeNonstep1p)DrawMode(0,240,HMODE_NONSTEP); if(bModeSynchro)DrawMode(0,280,HMODE_SYNCHRO); if(bModeUnion1p)DrawMode(0,320,HMODE_UNION); if(bModeRandom1p)DrawMode(0,360,HMODE_RANDOM); if(bModeVanish1p)DrawMode(0,400,HMODE_VANISH); if(HighSpeed1p>1)DrawMode(0,160,HMODE_2X); if(bModeMirror2p)DrawMode(600,200,HMODE_MIRROR); if(bModeNonstep2p)DrawMode(600,240,HMODE_NONSTEP); if(bModeUnion2p)DrawMode(600,320,HMODE_UNION); if(bModeRandom2p)DrawMode(600,360,HMODE_RANDOM); if(bModeVanish2p)DrawMode(600,400,HMODE_VANISH); if(HighSpeed2p>1)DrawMode(600,160,HMODE_2X); if(CSONG[current].HaveDouble && iMove==0 )g_pDDSBack->BltFast(0,50, DoubleIcon,NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[CSONG[current].Next].HaveDouble && iMove==0 )g_pDDSBack->BltFast(320,50, DoubleIcon, NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[current].HaveCrazy && iMove==0 )g_pDDSBack->BltFast(0,50, CrazyIcon,NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[CSONG[current].Next].HaveCrazy && iMove==0 )g_pDDSBack->BltFast(320,50, CrazyIcon, NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[current].HaveHard && iMove==0 )g_pDDSBack->BltFast(0,50, HardIcon,NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[CSONG[current].Next].HaveHard && iMove==0 )g_pDDSBack->BltFast(320,50, HardIcon, NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[current].HaveEasy && iMove==0 )g_pDDSBack->BltFast(0,50, EasyIcon,NULL, DDBLTFAST_SRCCOLORKEY); if(CSONG[CSONG[current].Next].HaveEasy && iMove==0 )g_pDDSBack->BltFast(320,50, EasyIcon, NULL, DDBLTFAST_SRCCOLORKEY); /* int DiffL,DiffR; DiffL=0,DiffR=0; if(CSONG[current].Double_Diff)DiffL=CSONG[current].Double_Diff; else if(CSONG[current].Easy_Diff)DiffL=CSONG[current].Easy_Diff; else if(CSONG[current].Hard_Diff)DiffL=CSONG[current].Hard_Diff; else if(CSONG[current].Crazy_Diff)DiffL=CSONG[current].Crazy_Diff; if(CSONG[CSONG[current].Next].Double_Diff)DiffR=CSONG[CSONG[current].Next].Double_Diff; else if(CSONG[CSONG[current].Next].Easy_Diff)DiffR=CSONG[CSONG[current].Next].Easy_Diff; else if(CSONG[CSONG[current].Next].Hard_Diff)DiffR=CSONG[CSONG[current].Next].Hard_Diff; else if(CSONG[CSONG[current].Next].Crazy_Diff)DiffR=CSONG[CSONG[current].Next].Crazy_Diff; if(iMove==0) for(i=DiffL;;i--) { if(i==0)break; if(i==1)g_pDDSBack->BltFast(285,145,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==2)g_pDDSBack->BltFast(283,125,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==3)g_pDDSBack->BltFast(283,165,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==4)g_pDDSBack->BltFast(281,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==5)g_pDDSBack->BltFast(281,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==6)g_pDDSBack->BltFast(279,85,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==7)g_pDDSBack->BltFast(279,185,Diff,NULL,DDBLTFAST_SRCCOLORKEY); } if(iMove==0) for(i=DiffR;;i--) { if(i==0)break; if(i==1)g_pDDSBack->BltFast(330,145,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==2)g_pDDSBack->BltFast(332,125,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==3)g_pDDSBack->BltFast(332,165,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==4)g_pDDSBack->BltFast(334,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==5)g_pDDSBack->BltFast(334,105,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==6)g_pDDSBack->BltFast(336,85,Diff,NULL,DDBLTFAST_SRCCOLORKEY); if(i==7)g_pDDSBack->BltFast(336,185,Diff,NULL,DDBLTFAST_SRCCOLORKEY); } */ // DrawMode(0,0,HMODE_UNION); g_pDDSBack->BltFast(210,450,CFont, &lRect, DDBLTFAST_SRCCOLORKEY); if(Start1p) { if(a==0) { a++; if(Start1p && Start2p)Couple=TRUE; else Couple=FALSE; } } if(Start2p) { if(b==0) { b++; if(Start1p && Start2p)Couple=TRUE; else Couple=FALSE; } } if(Start1p==FALSE) { lRect.top=0; lRect.left=0; lRect.right=220; lRect.bottom=23; TransAlphaImproved(CFont, g_pDDSBack, 10, 450, lRect, ALPHA, CKey_CFont, 16); } if(Start2p==FALSE)//DisplayMessageC(320,480-20,"PRESS CENTER STEP"); { lRect.top=0; lRect.left=0; lRect.right=220; lRect.bottom=23; TransAlphaImproved(CFont, g_pDDSBack, 410, 450, lRect, ALPHA, CKey_CFont, 16); } ALPHA += inc; if (ALPHA > 256) { ALPHA = 256; inc = -10; } else if (ALPHA < 0) { ALPHA = 0; inc = 10; } Flipp(); }