X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsupertux%2Fplayer_status.cpp;h=2c95b8f9334799a98589e7bfacb0cbea16a6ef06;hb=394aff4351bc13e8118482621926e95328fbea71;hp=e2d1155d964b790b4c2370b5ef5e0d27d4ec27ca;hpb=75fc1b8f0bd2cc8ba9f448678d46db1e882b40a9;p=supertux.git diff --git a/src/supertux/player_status.cpp b/src/supertux/player_status.cpp index e2d1155d9..2c95b8f93 100644 --- a/src/supertux/player_status.cpp +++ b/src/supertux/player_status.cpp @@ -40,6 +40,8 @@ PlayerStatus::PlayerStatus() : bonus(NO_BONUS), max_fire_bullets(0), max_ice_bullets(0), + max_air_time(0), + max_earth_time(0), displayed_coins(DISPLAYED_COINS_UNSET), displayed_coins_frame(0), coin_surface() @@ -65,15 +67,17 @@ void PlayerStatus::reset() void PlayerStatus::add_coins(int count, bool play_sound) { - static float sound_played_time = 0; coins = std::min(coins + count, MAX_COINS); - if(play_sound) { - if(count >= 100) - SoundManager::current()->play("sounds/lifeup.wav"); - else if (real_time > sound_played_time + 0.010) { - SoundManager::current()->play("sounds/coin.wav"); - sound_played_time = real_time; - } + + if(!play_sound) + return; + + static float sound_played_time = 0; + if(count >= 100) + SoundManager::current()->play("sounds/lifeup.wav"); + else if (real_time > sound_played_time + 0.010) { + SoundManager::current()->play("sounds/coin.wav"); + sound_played_time = real_time; } } @@ -93,12 +97,20 @@ PlayerStatus::write(lisp::Writer& writer) case ICE_BONUS: writer.write("bonus", "iceflower"); break; + case AIR_BONUS: + writer.write("bonus", "airflower"); + break; + case EARTH_BONUS: + writer.write("bonus", "earthflower"); + break; default: log_warning << "Unknown bonus type." << std::endl; writer.write("bonus", "none"); } writer.write("fireflowers", max_fire_bullets); writer.write("iceflowers", max_ice_bullets); + writer.write("airflowers", max_air_time); + writer.write("earthflowers", max_earth_time); writer.write("coins", coins); } @@ -118,6 +130,10 @@ PlayerStatus::read(const Reader& lisp) bonus = FIRE_BONUS; } else if(bonusname == "iceflower") { bonus = ICE_BONUS; + } else if(bonusname == "airflower") { + bonus = AIR_BONUS; + } else if(bonusname == "earthflower") { + bonus = EARTH_BONUS; } else { log_warning << "Unknown bonus '" << bonusname << "' in savefile" << std::endl; bonus = NO_BONUS; @@ -125,6 +141,8 @@ PlayerStatus::read(const Reader& lisp) } lisp.get("fireflowers", max_fire_bullets); lisp.get("iceflowers", max_ice_bullets); + lisp.get("airflowers", max_air_time); + lisp.get("earthflowers", max_earth_time); lisp.get("coins", coins); }