#include "howto.hpp" #include "game.hpp" #include "gfx.hpp" #include "sprite.hpp" #include "tonccpy.h" #include #include #include void howtoMenu(bool slowFade) { // Change to howto menu background and hide letterSprites game->data().howtoTop().decompressAll(BG(0)); game->data().howtoBottom().decompressAll(BG_SUB(0)); for(Sprite &sprite : game->letterSprites()) sprite.visible(false); Sprite::update(true); std::vector howtoSprites; for(size_t i = 0; i < game->data().howtoWords().size(); i++) { for(size_t j = 0; j < game->data().howtoWords(i).size(); j++) { howtoSprites.emplace_back(false, SpriteSize_32x32, SpriteColorFormat_16Color); howtoSprites.back() .move(1 + j * 26, 22 + i * 60) .gfx(game->data().letterGfxSub(game->kbd().letterIndex(game->data().howtoWords(i)[j]) + 1)) .palette(TilePalette::whiteDark); } } Sprite::update(false); Gfx::fadeIn(slowFade ? FADE_SLOW : FADE_FAST, FADE_TOP | FADE_BOTTOM); std::vector toFlip; std::vector flipColors; for(size_t i = 0; i < game->data().howtoColors().size(); i++) { if(game->data().howtoColors(i) != TilePalette::whiteDark) { toFlip.push_back(howtoSprites[i]); flipColors.push_back(game->data().howtoColors(i)); } } Gfx::flipSprites(toFlip.data(), toFlip.size(), flipColors); u16 pressed; touchPosition touch; do { swiWaitForVBlank(); scanKeys(); pressed = keysDown(); touchRead(&touch); } while(pmMainLoop() && (!((pressed & (KEY_A | KEY_B)) || ((pressed & KEY_TOUCH) && (touch.px > 232 && touch.py < 24))))); Gfx::fadeOut(FADE_FAST, FADE_TOP | FADE_BOTTOM); // Restore letterSprites for(Sprite &sprite : game->letterSprites()) sprite.visible(true); Sprite::update(true); }