diff --git a/assets/done.wav b/assets/done.wav index 31d38c2..4a4f6d8 100644 Binary files a/assets/done.wav and b/assets/done.wav differ diff --git a/assets/light0.gif b/assets/light0.gif new file mode 100644 index 0000000..458053c Binary files /dev/null and b/assets/light0.gif differ diff --git a/assets/light1.gif b/assets/light1.gif new file mode 100644 index 0000000..05e2f7c Binary files /dev/null and b/assets/light1.gif differ diff --git a/src/Bitmaps.c b/src/Bitmaps.c index 296cb37..975bc7d 100644 --- a/src/Bitmaps.c +++ b/src/Bitmaps.c @@ -13,6 +13,8 @@ #define RetryButtonPictResID (NextButtonPictResID + 1) #define SoundOffPictResID (RetryButtonPictResID + 1) #define SoundOnPictResID (SoundOffPictResID + 1) +#define LightOffPictResID (SoundOnPictResID + 1) +#define LightOnPictResID (LightOffPictResID + 1) #define StarRectPadding 2 @@ -102,6 +104,20 @@ void Bitmaps_Init(Bitmaps *pBitmaps) { ShowError("\pSound on PICT resource missing!", true); } + + // Load light off + pBitmaps->LightOffPict = GetPicture(LightOffPictResID); + if (pBitmaps->LightOffPict == nil) + { + ShowError("\pLight off PICT resource missing!", true); + } + + // Load light on + pBitmaps->LightOnPict = GetPicture(LightOnPictResID); + if (pBitmaps->LightOnPict == nil) + { + ShowError("\pLight on PICT resource missing!", true); + } } void Bitmaps_GetNumberRect(const Bitmaps *pBitmaps, const uint32_t number, const uint8_t scale, Rect *pDestRect) diff --git a/src/Bitmaps.h b/src/Bitmaps.h index 5431773..8eb89ae 100644 --- a/src/Bitmaps.h +++ b/src/Bitmaps.h @@ -21,6 +21,8 @@ typedef struct sBitmaps PicHandle RetryButtonPict; PicHandle SoundOffPict; PicHandle SoundOnPict; + PicHandle LightOffPict; + PicHandle LightOnPict; } Bitmaps; void Bitmaps_Init(Bitmaps *pBitmaps); diff --git a/src/GameEndScene.c b/src/GameEndScene.c index 2252648..02ca7d6 100644 --- a/src/GameEndScene.c +++ b/src/GameEndScene.c @@ -32,9 +32,6 @@ void GameEndScene_Init(GameWindow *pGameWindow) GetBoxRect(pContentRect, Bottom, &r); GetBoxRect(&r, Top, &r); CenterRect(&r, &(pGameWindow->GameEndScene.ScoreRect)); - - // Play done sound - Sounds_PlayDoneSnd(&(pGameWindow->Sounds)); } void GameEndScene_Draw(const GameWindow *pGameWindow, bool fullRefresh) diff --git a/src/LevelEndScene.c b/src/LevelEndScene.c index 6152c8a..c28721d 100644 --- a/src/LevelEndScene.c +++ b/src/LevelEndScene.c @@ -48,9 +48,6 @@ void LevelEndScene_Init(GameWindow *pGameWindow) GetBoxRect(pContentRect, BottomRight, &r); CenterRect(&r, &(pGameWindow->LevelEndScene.NextButtonRect)); - - // Play done sound - Sounds_PlayDoneSnd(&(pGameWindow->Sounds)); } void LevelEndScene_Draw(const GameWindow *pGameWindow, bool fullRefresh) @@ -96,6 +93,15 @@ void LevelEndScene_Click(GameWindow *pGameWindow, const Point *pPosition) { Sounds_PlayClickSnd(&(pGameWindow->Sounds)); GameEngine_NextLevel(&(pGameWindow->Engine)); - GameWindow_SetScene(pGameWindow, GameEngine_IsGameOver(&(pGameWindow->Engine)) ? GameEnd : Play); + + if (GameEngine_IsGameOver(&(pGameWindow->Engine))) + { + GameWindow_SetScene(pGameWindow, GameEnd); + Sounds_PlayDoneSnd(&(pGameWindow->Sounds)); + } + else + { + GameWindow_SetScene(pGameWindow, Play); + } } } diff --git a/src/MacLO.pi.bin b/src/MacLO.pi.bin index 2bdb471..b38102f 100644 Binary files a/src/MacLO.pi.bin and b/src/MacLO.pi.bin differ diff --git a/src/MacLO.pi.rsrc.bin b/src/MacLO.pi.rsrc.bin index d7b2249..03cc204 100644 Binary files a/src/MacLO.pi.rsrc.bin and b/src/MacLO.pi.rsrc.bin differ diff --git a/src/PlayScene.c b/src/PlayScene.c index e265aee..63768db 100644 --- a/src/PlayScene.c +++ b/src/PlayScene.c @@ -104,12 +104,14 @@ void PlayScene_Draw(const GameWindow *pGameWindow, bool fullRefresh) if (GameEngine_GetLight(&(pGameWindow->Engine), c, r)) { // Draw ON light - FillRoundRect(&lightRect, LightCornerSize, LightCornerSize, white); + DrawPicture(pGameWindow->Bitmaps.LightOnPict, &lightRect); + //FillRoundRect(&lightRect, LightCornerSize, LightCornerSize, white); } else { // Draw OFF light - FillRoundRect(&lightRect, LightCornerSize, LightCornerSize, dkGray); + DrawPicture(pGameWindow->Bitmaps.LightOffPict, &lightRect); + //FillRoundRect(&lightRect, LightCornerSize, LightCornerSize, dkGray); } } } @@ -176,6 +178,7 @@ void PlayScene_Click(GameWindow *pGameWindow, const Point *pPosition) // Level was completed in the last click GameWindow_Draw(pGameWindow, false); GameWindow_SetScene(pGameWindow, LevelEnd); + Sounds_PlayDoneSnd(&(pGameWindow->Sounds)); } } else if (PtInRect(*pPosition, &(pGameWindow->PlayScene.HUDRect)))