From c3fc8ec00a3fc20b0d31f07fe9ac60ee4de1be70 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 25 Aug 2024 02:47:36 -0500 Subject: [PATCH] Fix string parsing emscripten side when loading data. Hamster color choice added. --- assets/PBData | 2 +- assets/smallbutton.png | Bin 0 -> 760 bytes assets/smallhighlight_button.png | Bin 0 -> 756 bytes src/Hamster.cpp | 4 +-- src/HamsterGame.cpp | 16 ++++++++---- src/HamsterGame.h | 21 ++++++++------- src/Menu.cpp | 43 +++++++++++++++++++++++++++++++ 7 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 assets/smallbutton.png create mode 100644 assets/smallhighlight_button.png diff --git a/assets/PBData b/assets/PBData index 5e75890..bc5a9bb 100644 --- a/assets/PBData +++ b/assets/PBData @@ -1 +1 @@ -2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 0.7 0.6 OneLoneHam Yellow \ No newline at end of file +2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 0.7 0.6 OneLoneHam Black \ No newline at end of file diff --git a/assets/smallbutton.png b/assets/smallbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..92e903d798a61e2870401b93d9cc906c9aca241f GIT binary patch literal 760 zcmVEX>4Tx04R}tkv&MmKpe$iQ^lec2P=p;WT;Mdu_BJ8ibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZn%I2w(&Qh$1L4Q%`0Vv+x{W_we!cF2b|C&;29%C|}6A ztZ?4qtXAu+eNXeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{007WQL_t(Y$75t*VEE5KL%;%K6y+`^N<-h|SfbSSO^#(? zU|?WiqJ`neW-`Kps3>l-KvbN|2w24xv#xQ|(|DLSz8D_Mp+xN~EOF)`2>(8K~*_|wb+KiByC)lBto3(9K{Wwp66J%0zbo%&Wxs3SZ@fQsGdu%7m$B qLM~pBi&EX>4Tx04R}tkv&MmKpe$iQ^lec2P=p;WT;Mdu_BJ8ibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0HIlBs@W3*RLwHd ziMW`{uZn%I2w(&Qh$1L4Q%`0Vv+x{W_we!cF2b|C&;29%C|}6A ztZ?4qtXAu+eNXeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{007KML_t(Y$75t*VEE5KL%;%KoT_MAX_HAMSTER_COUNT)throw std::runtime_error{std::format("WARNING! Max hamster count is too high! Please expand the MAX_HAMSTER_COUNT if you want more hamsters. Requested {} hamsters.",MAX_HAMSTER_COUNT)}; - playerHamster=&HAMSTER_LIST.emplace_back(vf2d{},PLAYER_HAMSTER_IMAGE,PLAYER_CONTROLLED); + playerHamster=&HAMSTER_LIST.emplace_back(vf2d{},HamsterGame::Game().GetPlayerHamsterImage(),PLAYER_CONTROLLED); std::vectorhamsterColorChoices{NPC_HAMSTER_IMAGES}; - std::erase(hamsterColorChoices,PLAYER_HAMSTER_IMAGE); + std::erase(hamsterColorChoices,HamsterGame::Game().GetPlayerHamsterImage()); for(int i:std::ranges::iota_view(0U,NPC_HAMSTER_COUNT)){ std::string colorChoice{hamsterColorChoices.at(util::random()%hamsterColorChoices.size())}; std::erase(hamsterColorChoices,colorChoice); diff --git a/src/HamsterGame.cpp b/src/HamsterGame.cpp index 5622687..b232359 100644 --- a/src/HamsterGame.cpp +++ b/src/HamsterGame.cpp @@ -34,7 +34,7 @@ bool HamsterGame::OnUserCreate(){ emscripten_idb_async_load("hamster",Game().bgmVolLabel.c_str(),&Game().bgmVol,[](void*arg,void*data,int length){ std::string rawMetadata=(char*)data; std::cout<hamsterColorNames{ + "Yellow", + "Pink", + "Cyan", + "Black", + "Green", + "Purple" + "Red", + "Blue", + }; std::vectormapNameList{ "StageI.tmx", "StageII.tmx", @@ -178,16 +189,6 @@ private: "Marathon", }; std::string emscripten_temp_val{"123456"}; - std::vectorhamsterColorNames{ - "Yellow", - "Pink", - "Cyan", - "Black", - "Green", - "Purple" - "Red", - "Blue", - }; HamsterLeaderboard leaderboard; std::queuemapSetList{}; Menu menu; diff --git a/src/Menu.cpp b/src/Menu.cpp index c59acf9..b581704 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -171,6 +171,28 @@ std::vectorMenu::GetMenuButtons(const MenuType type){ buttons.emplace_back(HamsterGame::SCREEN_FRAME.size/2+vf2d{0.f,32.f},std::format("Player Name: {}",HamsterGame::Game().playerName),"longbutton2.png","longhighlight_button2.png",Pixel{114,109,163},Pixel{79,81,128},[this](Button&self){ HamsterGame::Game().TextEntryEnable(true,HamsterGame::Game().playerName); }); + buttons.emplace_back(HamsterGame::SCREEN_FRAME.size/2+vf2d{0.f,64.f},"","smallbutton.png","smallhighlight_button.png",Pixel{114,109,163},Pixel{79,81,128},[this](Button&self){ + int colorInd{0}; + for(int ind{0};const std::string&color:HamsterGame::Game().hamsterColorNames){ + if(color==HamsterGame::Game().hamsterColor){ + colorInd=ind; + break; + } + ind++; + } + HamsterGame::Game().hamsterColor=HamsterGame::Game().hamsterColorNames[(colorInd+1)%HamsterGame::Game().hamsterColorNames.size()]; + HamsterGame::Game().emscripten_temp_val=HamsterGame::Game().hamsterColor; + #ifdef __EMSCRIPTEN__ + emscripten_idb_async_store("hamster",HamsterGame::Game().hamsterColorLabel.c_str(),HamsterGame::Game().emscripten_temp_val.data(),HamsterGame::Game().emscripten_temp_val.length(),0,[](void*args){ + std::cout<<"Success!"< or to finish name entry."}; const vf2d helpTextSize{game.GetTextSizeProp(helpText)}; game.DrawShadowRotatedStringPropDecal(pos+offset+vf2d{0,12.f},helpText,0.f,helpTextSize/2); + }else if(buttonImg=="smallbutton.png"){ + int colorInd{0}; + for(int ind{0};const std::string&color:game.hamsterColorNames){ + if(color==game.hamsterColor){ + colorInd=ind; + break; + } + ind++; + } + game.DrawPartialRotatedDecal(pos+offset,game.GetGFX(std::format("hamster{}.png",colorInd+1)).Decal(),0.f,{8.f,6.f},{64.f,64.f},{16.f,12.f}); }else game.DrawRotatedStringPropDecal(pos+offset,buttonText,0.f,game.GetTextSizeProp(buttonText)/2,highlightTextCol); + }else if(buttonImg=="smallbutton.png"){ + game.DrawRotatedDecal(pos+offset,game.GetGFX(buttonImg).Decal(),0.f,game.GetGFX(buttonImg).Sprite()->Size()/2); + int colorInd{0}; + for(int ind{0};const std::string&color:game.hamsterColorNames){ + if(color==game.hamsterColor){ + colorInd=ind; + break; + } + ind++; + } + game.DrawPartialRotatedDecal(pos+offset,game.GetGFX(std::format("hamster{}.png",colorInd+1)).Decal(),0.f,{8.f,6.f},{64.f,64.f},{16.f,12.f}); }else{ game.DrawRotatedDecal(pos+offset,game.GetGFX(buttonImg).Decal(),0.f,game.GetGFX(buttonImg).Sprite()->Size()/2); game.DrawRotatedStringPropDecal(pos+offset,buttonText,0.f,game.GetTextSizeProp(buttonText)/2,textCol);