From 3575f029a60e20e1a49f8aae3d57dd7c9c36ad64 Mon Sep 17 00:00:00 2001 From: HMVocaloid <66088611+HMVocaloid@users.noreply.github.com> Date: Mon, 20 May 2024 09:01:51 -0400 Subject: [PATCH] Update blupi.cpp --- blupi.cpp | 232 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 231 insertions(+), 1 deletion(-) diff --git a/blupi.cpp b/blupi.cpp index d65ca4a..21aea1a 100644 --- a/blupi.cpp +++ b/blupi.cpp @@ -151,5 +151,235 @@ BOOL ReadConfig (LPSTR lpCmdLine) if ( g_mouseType > 9 ) g_mouseType = 9; } + pText = strstr(buffer, "TrueColor="); + if ( pText != NULL ) + { + i = GetNum(pText + 10); + if (i == 8) g_bTrueColor = 0; + if (i == 16) g_bTrueColor = 1; + g_bTrueColorDecor = g_bTrueColor; + } + + pText = strstr(buffer, "TrueColorBack="); + if ( pText != NULL ) + { + i = GetNum(pText+14); + if (i == 8) g_bTrueColor = 0; + + if (i == 16) g_bTrueColor = 1; + } + return TRUE; -} \ No newline at end of file +} + +// Rewrite Variables + +void UpdateFrame(void) +{ + RECT clip, rcRect; + UINT phase; + POINT posMouse; + int i, term, speed; + + g_pPixmap->MouseBackClear(); // enl�ve la souris dans "back" + posMouse = g_pEvent->GetLastMousePos(); + + phase = g_pEvent->GetPhase(); + + if ( phase == g_lastPhase && + phase == WM_PHASE_PLAY ) + { +//? rcRect.left = POSDRAWX; +//? rcRect.top = POSDRAWY; +//? rcRect.right = POSDRAWX+DIMDRAWX; +//? rcRect.bottom = POSDRAWY+DIMDRAWY; +//? g_pPixmap->DrawImage(-1, CHBACK, rcRect, 1); // dessine le fond + } + else + { + rcRect.left = 0; + rcRect.top = 0; + rcRect.right = LXIMAGE; + rcRect.bottom = LYIMAGE; + g_pPixmap->DrawImage(-1, CHBACK, rcRect, 1); // dessine le fond + } + + if ( phase == WM_PHASE_INTRO1 || + phase == WM_PHASE_INTRO2 ) + { + g_pEvent->IntroStep(); + } + + if ( phase == WM_PHASE_PLAY ) + { + clip.left = POSDRAWX; + clip.top = POSDRAWY+g_pDecor->GetInfoHeight(); + clip.right = POSDRAWX+DIMDRAWX; + clip.bottom = POSDRAWY+DIMDRAWY; + + if ( g_pEvent->IsShift() ) // shift en cours ? + { + g_pEvent->DecorAutoShift(posMouse); + g_pDecor->Build(clip, posMouse); // construit juste le d�cor + } + else + { + if ( !g_pEvent->GetPause() ) + { + speed = g_pEvent->GetSpeed() * g_speedRate; + for ( i=0 ; iBlupiStep(i==0); // avance tous les blupi + g_pDecor->MoveStep(i==0); // avance tous les d�cors + g_pEvent->DemoStep(); // avance enregistrement/reproduction + } + } + + g_pEvent->DecorAutoShift(posMouse); + g_pDecor->Build(clip, posMouse); // construit le d�cor + g_pDecor->NextPhase(1); // refait la carte de temps en temps + } + } + + if ( phase == WM_PHASE_BUILD ) + { + clip.left = POSDRAWX; + clip.top = POSDRAWY; + clip.right = POSDRAWX+DIMDRAWX; + clip.bottom = POSDRAWY+DIMDRAWY; + g_pEvent->DecorAutoShift(posMouse); + g_pDecor->Build(clip, posMouse); // construit le d�cor + g_pDecor->NextPhase(-1); // refait la carte chaque fois + } + + if ( phase == WM_PHASE_INIT ) + { + g_pEvent->DemoStep(); // d�marre �v. d�mo automatique + } + + g_pEvent->DrawButtons(); + + g_lastPhase = phase; + + if ( phase == WM_PHASE_H0MOVIE || + phase == WM_PHASE_H1MOVIE || + phase == WM_PHASE_H2MOVIE || + phase == WM_PHASE_PLAYMOVIE || + phase == WM_PHASE_WINMOVIE ) + { + g_pEvent->MovieToStart(); // fait d�marrer un film si n�cessaire + } + + if ( phase == WM_PHASE_INSERT ) + { + g_pEvent->TryInsert(); + } + + if ( phase == WM_PHASE_PLAY ) + { + term = g_pDecor->IsTerminated(); + if ( term == 1 ) g_pEvent->ChangePhase(WM_PHASE_LOST); // perdu + if ( term == 2 ) g_pEvent->ChangePhase(WM_PHASE_WINMOVIE); // gagn� + } + + g_pPixmap->MouseBackDraw(); // remet la souris dans "back" +} + +BOOL RestoreGame() +{ + if ( g_pPixmap == NULL ) return FALSE; + + g_pEvent->RestoreGame(); + return g_pPixmap->Restore(); +} + +BOOL FlushGame() +{ + if ( g_pPixmap == NULL ) return FALSE; + + return g_pPixmap->Flush(); +} + +static void FinishObjects(void) +{ + if ( g_pMovie != NULL ) + { + g_pEvent->StopMovie(); + + delete g_pMovie; + g_pMovie = NULL; + } + + if ( g_pEvent != NULL ) + { + delete g_pEvent; + g_pEvent = NULL; + } + + if ( g_pDecor != NULL ) + { + delete g_pDecor; + g_pDecor = NULL; + } + + if (g_pSound != NULL ) + { + g_pSound->StopMusic(); + + delete g_pSound; + g_pSound = NULL; + } + + if ( g_pPixmap != NULL ) + { + delete g_pPixmap; + g_pPixmap = NULL; + } +} + +BOOL InitFail(char *msg, BOOL bDirectX) +{ + char buffer[100]; + + if ( bDirectX ) strcpy(buffer, "DirectX Init FAILED\n(while "); + else strcpy(buffer, "Error ("); + strcat(buffer, msg); + strcat(buffer, ")"); + MessageBox(g_hWnd, buffer, TITLE, MB_OK); + + FinishObjects(); + DestroyWindow(g_hWnd); + return FALSE; +} + +int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPSTR lpCmdLine, int nCmdShow) +{ + MSG msg; + + if ( !DoInit(hInstance, lpCmdLine, nCmdShow) ) + { + return FALSE; + } + + SetTimer(g_hWnd, 1, g_timerInterval, NULL); + + while ( TRUE ) + { + if ( PeekMessage(&msg, NULL, 0,0, PM_NOREMOVE) ) + { + if ( !GetMessage(&msg, NULL, 0, 0) ) + { + return msg.wParam; + } + TranslateMessage(&msg); + DispatchMessage(&msg); + } + else + { + if ( !g_bActive ) WaitMessage(); + } + } + + return msg.wParam; +}