mirror of
https://github.com/sigonasr2/hamster.git
synced 2025-04-18 06:39:39 -05:00
Add countdown timer.
This commit is contained in:
parent
363ad229bb
commit
92f2b4dd85
BIN
assets/countdown.png
Normal file
BIN
assets/countdown.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 872 B |
@ -48,5 +48,6 @@ namespace AnimationState{
|
||||
CHECKPOINT_CYCLING,
|
||||
CHECKPOINT_COLLECTED,
|
||||
SIDE_VIEW,
|
||||
COUNTDOWN,
|
||||
};
|
||||
}
|
@ -669,6 +669,7 @@ const float Hamster::GetMaxSpeed()const{
|
||||
}break;
|
||||
}
|
||||
}
|
||||
if(!HamsterGame::Game().RaceCountdownCompleted())finalMaxSpd*=0.f;
|
||||
return finalMaxSpd;
|
||||
}
|
||||
const float Hamster::GetFriction()const{
|
||||
|
@ -140,6 +140,7 @@ void HamsterGame::LoadAnimations(){
|
||||
LoadAnimation(AnimationState::DEFAULT,"checkpoint.png",{{}},0.f,Animate2D::Style::OneShot,{128,128});
|
||||
LoadAnimation(AnimationState::CHECKPOINT_CYCLING,"checkpoint.png",{{},{128,0}},0.4f,Animate2D::Style::Repeat,{128,128});
|
||||
LoadAnimation(AnimationState::CHECKPOINT_COLLECTED,"checkpoint.png",{{128,0}},0.f,Animate2D::Style::OneShot,{128,128});
|
||||
LoadAnimation(AnimationState::COUNTDOWN,"countdown.png",{{0,0},{32,0},{64,0}},1.f,Animate2D::Style::OneShot,{32,32});
|
||||
}
|
||||
|
||||
void HamsterGame::LoadLevel(const std::string&mapName){
|
||||
@ -198,9 +199,11 @@ void HamsterGame::LoadLevel(const std::string&mapName){
|
||||
|
||||
audio.Play(bgm.at(currentMap.value().GetData().GetBGM()),true);
|
||||
Hamster::MoveHamstersToSpawn(currentMap.value().GetData().GetSpawnZone());
|
||||
countdownTimer=3.f;
|
||||
}
|
||||
|
||||
void HamsterGame::UpdateGame(const float fElapsedTime){
|
||||
countdownTimer=std::max(0.f,countdownTimer-fElapsedTime);
|
||||
vEye.z+=(Hamster::GetPlayer().GetZ()+zoom-vEye.z)*fLazyFollowRate*fElapsedTime;
|
||||
speedometerDisplayAmt+=(Hamster::GetPlayer().GetSpeed()-speedometerDisplayAmt)*fLazyFollowRate*fElapsedTime;
|
||||
|
||||
@ -308,6 +311,11 @@ void HamsterGame::DrawGame(){
|
||||
DrawDecal({2.f,4.f},GetGFX("radar.png").Decal());
|
||||
DrawRadar();
|
||||
DrawStringDecal({0,8.f},std::to_string(GetFPS()));
|
||||
if(countdownTimer>0.f){
|
||||
Pixel timerColor{fmod(countdownTimer,1.f)<0.5f?GREEN:WHITE};
|
||||
timerColor.a=util::lerp(0.f,1.f,fmod(countdownTimer,1.f))*255;
|
||||
DrawPartialRotatedDecal(SCREEN_FRAME.middle(),GetGFX("countdown.png").Decal(),0.f,{16.f,16.f},{int(countdownTimer)*32.f,0.f},{32,32},{4.f,4.f},timerColor);
|
||||
}
|
||||
}
|
||||
|
||||
const Terrain::TerrainType HamsterGame::GetTerrainTypeAtPos(const vf2d pos)const{
|
||||
@ -665,6 +673,10 @@ const int HamsterGame::GetRaceTime(){
|
||||
return net.GetCurrentRaceTime();
|
||||
}
|
||||
|
||||
const bool HamsterGame::RaceCountdownCompleted(){
|
||||
return countdownTimer==0.f;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
HamsterGame game("Project Hamster");
|
||||
|
@ -102,6 +102,7 @@ public:
|
||||
static void SavePB(const std::string&mapName,int ms);
|
||||
static void LoadPBs();
|
||||
const int GetRaceTime();
|
||||
const bool RaceCountdownCompleted();
|
||||
private:
|
||||
void UpdateGame(const float fElapsedTime);
|
||||
void DrawGame();
|
||||
@ -141,6 +142,7 @@ private:
|
||||
std::unordered_map<std::string,int>bgm;
|
||||
GameMode mode{GameMode::SINGLE_RACE};
|
||||
HamsterNet net;
|
||||
float countdownTimer{};
|
||||
#ifndef __EMSCRIPTEN__
|
||||
#ifndef __DEBUG__
|
||||
SplashScreen splash;
|
||||
|
@ -167,6 +167,7 @@ Hamster Jet Landing Sound
|
||||
Powerup Collection Sound
|
||||
Hamster Wheel Boost Sound
|
||||
Checkpoint Collection Sound
|
||||
Countdown Sound Effect
|
||||
|
||||
Hamster Jet Launch Command Sound
|
||||
Fail to Boost/Jet Launch command sound
|
||||
|
Loading…
x
Reference in New Issue
Block a user