void FieldBrowser::OnPaint(wxPaintEvent& event) { wxBufferedPaintDC dc(this); PrepareDC(dc); auto& config = CalChartConfiguration::GetGlobalConfig(); dc.SetBackgroundMode(wxTRANSPARENT); dc.Clear(); // let's draw the boxes auto offset_x = 0; auto offset_y = 0; for (auto sheet = mDoc->GetSheetBegin(); sheet != mDoc->GetSheetEnd(); ++sheet) { dc.SetUserScale(1, 1); dc.SetBrush((config.Get_CalChartBrushAndPen(COLOR_FIELD).first)); dc.DrawText(sheet->GetName(), offset_x + x_left_padding, offset_y + y_upper_padding); offset_y += y_upper_padding + y_name_size + y_name_padding; auto mode_size = mDoc->GetMode().Size(); auto current_size_x = GetSize().x - x_left_padding - x_right_padding; auto box_size_y = mode_size.y * (current_size_x / double(mode_size.x)); dc.SetPen(*wxBLACK_PEN); if (mDoc->GetCurrentSheet() == sheet) { auto copy_of_pen = *wxYELLOW_PEN; copy_of_pen.SetWidth(5); dc.SetPen(copy_of_pen); } dc.DrawRectangle(offset_x + x_left_padding, offset_y, current_size_x, box_size_y); dc.SetPen(*wxBLACK_PEN); auto origin = dc.GetDeviceOrigin(); auto userScale = CalcUserScale({ current_size_x, int(box_size_y) }, mode_size); dc.SetUserScale(userScale, userScale); dc.SetDeviceOrigin(origin.x + offset_x + x_left_padding, origin.y + offset_y); dc.SetPen(config.Get_CalChartBrushAndPen(COLOR_FIELD_DETAIL).second); DrawMode(dc, config, mDoc->GetMode(), ShowMode_kAnimation); for (auto i = 0; i < mDoc->GetNumPoints(); ++i) { auto brushAndPen = config.Get_CalChartBrushAndPen(COLOR_POINT_ANIM_FRONT); dc.SetBrush(brushAndPen.first); dc.SetPen(brushAndPen.second); auto position = sheet->GetPoint(i).GetPos(); auto x = position.x + mDoc->GetMode().Offset().x; auto y = position.y + mDoc->GetMode().Offset().y; dc.DrawRectangle(x - Int2CoordUnits(1) / 2, y - Int2CoordUnits(1) / 2, Int2CoordUnits(1), Int2CoordUnits(1)); } dc.SetDeviceOrigin(origin.x, origin.y); offset_y += box_size_y; } }
//--------------------------------------------------------------------------- void __fastcall TRxViewDlg::StatusBarDrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel, const TRect &Rect) { if( !m_pRxSet ) return; if( Panel == StatusBar->Panels->Items[sbMODE] ){ m_rcBar[sbMODE] = Rect; DrawMode(); } else if( Panel == StatusBar->Panels->Items[sbSN] ){ m_rcBar[sbSN] = Rect; DrawSN(); } else if( Panel == StatusBar->Panels->Items[sbFREQ] ){ m_rcBar[sbFREQ] = Rect; DrawFREQ(); } else if( Panel == StatusBar->Panels->Items[sbLEVEL] ){ if( !m_pBitmapLevel || ((Rect.Right-Rect.Left) != m_pBitmapLevel->Width) ){ m_rcBar[sbLEVEL] = Rect; m_levelXW = Rect.Right - Rect.Left; m_levelYW = Rect.Bottom - Rect.Top; if( !m_pBitmapLevel ){ m_pBitmapLevel = new Graphics::TBitmap; } m_pBitmapLevel->Width = m_levelXW; m_pBitmapLevel->Height = m_levelYW; } StatusBar->Canvas->Draw(m_rcBar[sbLEVEL].Left, m_rcBar[sbLEVEL].Top, m_pBitmapLevel); } else if( Panel == StatusBar->Panels->Items[sbWATER] ){ if( !m_pBitmapFFT || ((Rect.Right-Rect.Left) != m_pBitmapFFT->Width) ){ m_rcBar[sbWATER] = Rect; m_fftXW = Rect.Right - Rect.Left; m_fftYW = Rect.Bottom - Rect.Top; if( !m_pBitmapFFT ){ m_pBitmapFFT = new Graphics::TBitmap; } m_pBitmapFFT->Width = m_fftXW; m_pBitmapFFT->Height = m_fftYW; DrawWater(TRUE); } StatusBar->Canvas->Draw(m_rcBar[sbWATER].Left, m_rcBar[sbWATER].Top, m_pBitmapFFT); DrawWaterCursor(); } else if( Panel == StatusBar->Panels->Items[sbEND] ){ AnsiString as = PC->Font->Name; // TFontStyles fs = PC->Font->Style; // AddStyle(as, PC->Font->Charset, FontStyle2Code(fs)); AddStyle(as, PC->Font->Charset, 0); StatusBar->Canvas->TextRect(Rect, Rect.Left + 1, Rect.Top + 1, as.c_str()); } }
wxImage GetOmniLinesImage(const CalChartConfiguration& config, const ShowMode& mode) { auto fieldsize = mode.FieldSize(); wxBitmap bmp(fieldsize.x, fieldsize.y, 32); wxMemoryDC dc; dc.SelectObject(bmp); dc.SetBackground(*wxTRANSPARENT_BRUSH); dc.Clear(); DrawMode(dc, config, mode, ShowMode_kOmniView); return bmp.ConvertToImage(); }
//--------------------------------------------------------------------------- void __fastcall TRxViewDlg::UpdateStatus(void) { if( !m_pRxSet ) return; DrawMode(); DrawSN(); DrawFREQ(); if( m_pBitmapLevel ){ DrawLevel(); StatusBar->Canvas->Draw(m_rcBar[sbLEVEL].Left, m_rcBar[sbLEVEL].Top, m_pBitmapLevel); } if( m_pBitmapFFT ){ DrawWater(FALSE); StatusBar->Canvas->Draw(m_rcBar[sbWATER].Left, m_rcBar[sbWATER].Top, m_pBitmapFFT); DrawWaterCursor(); } }
void DrawForPrintingHelper(wxDC& dc, const CalChartConfiguration& config, const CalChartDoc& show, const CC_sheet& sheet, unsigned ref, bool landscape) { // set up everything to be restored after we print SaveAndRestore_DeviceOrigin orig_dev(dc); SaveAndRestore_UserScale orig_scale(dc); SaveAndRestore_Font orig_font(dc); // get the page dimensions int pageW, pageH; dc.GetSize(&pageW, &pageH); dc.Clear(); dc.SetLogicalFunction(wxCOPY); // Print the field: // create a field for drawing: const auto pts = sheet.GetPoints(); auto boundingBox = GetMarcherBoundingBox(pts); auto mode = CreateFieldForPrinting(Coord2Int(boundingBox.first.x), Coord2Int(boundingBox.second.x), landscape); // set the origin and scaling for drawing the field dc.SetDeviceOrigin(kFieldBorderOffset*pageW, kFieldTop*pageH); auto scale = (pageW-2*kFieldBorderOffset*pageW)/(double)mode->Size().x; dc.SetUserScale(scale, scale); // draw the field. DrawMode(dc, config, *mode, ShowMode_kPrinting); wxFont *pointLabelFont = wxTheFontList->FindOrCreateFont((int)Float2Coord(config.Get_DotRatio() * config.Get_NumRatio()), wxSWISS, wxNORMAL, wxNORMAL); dc.SetFont(*pointLabelFont); for (auto i = 0u; i < pts.size(); i++) { const auto point = pts.at(i); const auto pos = point.GetPos(ref) + mode->Offset(); dc.SetBrush(*wxBLACK_BRUSH); DrawPointHelper(dc, config, pos, point, show.GetPointLabel(i)); } // now reset everything to draw the rest of the text dc.SetDeviceOrigin(Int2Coord(0), Int2Coord(0)); dc.SetBrush(*wxTRANSPARENT_BRUSH); // set the page for drawing: dc.GetSize(&pageW, &pageH); if (landscape) { dc.SetUserScale(pageW/kSizeXLandscape, pageH/kSizeYLandscape); pageW = kSizeXLandscape; pageH = kSizeYLandscape; } else { dc.SetUserScale(pageW/kSizeX, pageH/kSizeY); pageW = kSizeX; pageH = kSizeY; } // draw the header dc.SetFont(*wxTheFontList->FindOrCreateFont(16, wxROMAN, wxNORMAL, wxBOLD)); dc.SetPen(*wxThePenList->FindOrCreatePen(*wxBLACK, 1, wxSOLID)); DrawCenteredText(dc, kHeader, wxPoint(pageW*kHeaderLocation[landscape][0], pageH*kHeaderLocation[landscape][1])); DrawCenteredText(dc, sheet.GetNumber(), wxPoint(pageW*kUpperNumberPosition[landscape][0], pageH*kUpperNumberPosition[landscape][1])); DrawCenteredText(dc, sheet.GetNumber(), wxPoint(pageW*kLowerNumberPosition[landscape][0], pageH*kLowerNumberPosition[landscape][1])); dc.DrawRectangle(pageW*kLowerNumberBox[landscape][0], pageH*kLowerNumberBox[landscape][1], pageW*kLowerNumberBox[landscape][2], pageH*kLowerNumberBox[landscape][3]); dc.SetFont(*wxTheFontList->FindOrCreateFont(8, wxSWISS, wxNORMAL, wxNORMAL)); DrawLineOverText(dc, kMusicLabel, wxPoint(pageW*kMusicLabelPosition[landscape][0], pageH*kMusicLabelPosition[landscape][1]), pageW*kMusicLabelPosition[landscape][2]); DrawLineOverText(dc, kFormationLabel, wxPoint(pageW*kFormationLabelPosition[landscape][0], pageH*kFormationLabelPosition[landscape][1]), pageW*kFormationLabelPosition[landscape][2]); DrawLineOverText(dc, kGameLabel, wxPoint(pageW*kGameLabelPosition[landscape][0], pageH*kGameLabelPosition[landscape][1]), pageW*kGameLabelPosition[landscape][2]); DrawLineOverText(dc, kPageLabel, wxPoint(pageW*kPageLabelPosition[landscape][0], pageH*kPageLabelPosition[landscape][1]), pageW*kPageLabelPosition[landscape][2]); DrawCenteredText(dc, kSideLabel, wxPoint(pageW*kSideLabelPosition[landscape][0], pageH*kSideLabelPosition[landscape][1])); // draw arrows DrawCenteredText(dc, kUpperSouthLabel, wxPoint(pageW*kUpperSouthPosition[landscape][0], pageH*kUpperSouthPosition[landscape][1])); DrawArrow(dc, wxPoint(pageW*kUpperSouthArrow[landscape][0], pageH*kUpperSouthArrow[landscape][1]), pageW*kUpperSouthArrow[landscape][2], false); DrawCenteredText(dc, kUpperNorthLabel, wxPoint(pageW*kUpperNorthPosition[landscape][0], pageH*kUpperNorthPosition[landscape][1])); DrawArrow(dc, wxPoint(pageW*kUpperNorthArrow[landscape][0], pageH*kUpperNorthArrow[landscape][1]), pageW*kUpperNorthArrow[landscape][2], true); DrawCenteredText(dc, kLowerSouthLabel, wxPoint(pageW*kLowerSouthPosition[landscape][0], pageH*kLowerSouthPosition[landscape][1])); DrawArrow(dc, wxPoint(pageW*kLowerSouthArrow[landscape][0], pageH*kLowerSouthArrow[landscape][1]), pageW*kLowerSouthArrow[landscape][2], false); DrawCenteredText(dc, kLowerNorthLabel, wxPoint(pageW*kLowerNorthPosition[landscape][0], pageH*kLowerNorthPosition[landscape][1])); DrawArrow(dc, wxPoint(pageW*kLowerNorthArrow[landscape][0], pageH*kLowerNorthArrow[landscape][1]), pageW*kLowerNorthArrow[landscape][2], true); DrawCont(dc, sheet.GetPrintableContinuity(), wxRect(wxPoint(10, pageH*kContinuityStart[landscape]), wxSize(pageW-20, pageH-pageH*kContinuityStart[landscape])), landscape); }
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(); }