diff --git a/assets/border.png b/assets/border.png index e916c43..55aa2aa 100644 Binary files a/assets/border.png and b/assets/border.png differ diff --git a/assets/border.xcf b/assets/border.xcf index a8dd3da..5d65e75 100644 Binary files a/assets/border.xcf and b/assets/border.xcf differ diff --git a/src/HamsterGame.cpp b/src/HamsterGame.cpp index df4f946..85f71b8 100644 --- a/src/HamsterGame.cpp +++ b/src/HamsterGame.cpp @@ -194,13 +194,25 @@ void HamsterGame::DrawGame(){ const float drawY{y*32.f+12.f+96.f}; const Powerup::PowerupType powerupType{Powerup::PowerupType(powerupInd)}; const geom2d::rectpowerupSubimageRect{Powerup::GetPowerupSubimageRect(powerupType)}; + const Powerup tempPowerup{{},powerupType}; + const std::string powerupName{tempPowerup.GetName()}; + const vf2d powerupTextSize{GetTextSize(powerupName)}; if(Hamster::GetPlayer().HasPowerup(powerupType)){ SetDecalMode(DecalMode::ADDITIVE); DrawPartialRotatedDecal(vf2d{drawX,drawY}+16,GetGFX("gametiles.png").Decal(),0.f,{16.f,16.f},powerupSubimageRect.pos,powerupSubimageRect.size,{1.1f,1.1f}); SetDecalMode(DecalMode::NORMAL); DrawPartialDecal({drawX,drawY},GetGFX("gametiles.png").Decal(),powerupSubimageRect.pos,powerupSubimageRect.size); + SetDecalMode(DecalMode::ADDITIVE); + for(int y:std::ranges::iota_view(-1,2)){ + for(int x:std::ranges::iota_view(-1,2)){ + DrawRotatedStringDecal(vf2d{drawX+16.f,drawY+32.f}+vi2d{x,y},powerupName,0.f,powerupTextSize/2,CYAN,{0.5f,1.f}); + } + } + SetDecalMode(DecalMode::NORMAL); + DrawRotatedStringDecal({drawX+16.f,drawY+32.f},powerupName,0.f,powerupTextSize/2,VERY_DARK_BLUE,{0.5f,1.f}); }else{ DrawPartialDecal({drawX,drawY},GetGFX("gametiles.png").Decal(),powerupSubimageRect.pos,powerupSubimageRect.size,{1.f,1.f},VERY_DARK_GREY); + DrawRotatedStringDecal({drawX+16.f,drawY+32.f},powerupName,0.f,powerupTextSize/2,DARK_GREY,{0.5f,1.f}); } } } diff --git a/src/Powerup.cpp b/src/Powerup.cpp index 85cc9be..b61a4df 100644 --- a/src/Powerup.cpp +++ b/src/Powerup.cpp @@ -43,6 +43,16 @@ All rights reserved. std::vectorPowerup::powerupList; std::unordered_map>Powerup::powerupIds; const vf2d Powerup::POWERUP_TILESET_STARTING_POS{144.f,816.f}; +std::unordered_mapPowerup::powerupNames{ + {WHEEL,"WHEEL"}, + {GRASS,"GRASS"}, + {SAND,"SAND"}, + {SWAMP,"SWAMP"}, + {LAVA,"LAVA"}, + {FOREST,"FOREST"}, + {ICE,"ICE"}, + {JET,"JET"}, +}; Powerup::Powerup(const vf2d pos,const PowerupType type) :pos(pos),type(type){} @@ -116,4 +126,8 @@ const geom2d::rectPowerup::GetPowerupSubimageRect(const PowerupType power void Powerup::OnPowerupObtain(Hamster&pickupHamster){ spinSpd=0.3f; if(type==JET)pickupHamster.SetJetFuel(1.f); +} + +const std::string&Powerup::GetName()const{ + return powerupNames.at(type); } \ No newline at end of file diff --git a/src/Powerup.h b/src/Powerup.h index 69107a2..4f00c0c 100644 --- a/src/Powerup.h +++ b/src/Powerup.h @@ -63,6 +63,7 @@ private: static std::vectorpowerupList; static std::unordered_map>powerupIds; static const vf2d POWERUP_TILESET_STARTING_POS; + static std::unordered_mappowerupNames; vf2d pos; float z{5.f}; float spinSpd{}; @@ -72,6 +73,7 @@ public: static void Initialize(const std::vector&powerupList); const vf2d&GetPos()const; const PowerupType&GetType()const; + const std::string&GetName()const; static std::vector&GetPowerups(); static void AddOrUpdatePowerupIdList(const int powerupId,const PowerupType powerupType); static void AddOrUpdatePowerupIdList(const int powerupId,const TileType powerupTileType);