#include "object/endsequence_walkright.hpp"
#include "object/level_time.hpp"
#include "object/player.hpp"
+#include "scripting/scripting.hpp"
+#include "scripting/squirrel_util.hpp"
#include "scripting/squirrel_util.hpp"
#include "supertux/gameconfig.hpp"
#include "supertux/globals.hpp"
pause_menu_frame(),
end_sequence(0),
game_pause(false),
- speed_before_pause(g_screen_manager->get_speed()),
+ speed_before_pause(ScreenManager::current()->get_speed()),
levelfile(levelfile_),
reset_sector(),
reset_pos(),
game_pause = false;
end_sequence = 0;
- g_input_manager->reset();
+ InputManager::current()->reset();
currentsector = 0;
}
} catch(std::exception& e) {
log_fatal << "Couldn't start level: " << e.what() << std::endl;
- g_screen_manager->pop_screen();
+ ScreenManager::current()->pop_screen();
return (-1);
}
- sound_manager->stop_music();
+ SoundManager::current()->stop_music();
currentsector->play_music(LEVEL_MUSIC);
if(capture_file != "") {
// pause
if (!game_pause && !MenuManager::instance().is_active())
{
- speed_before_pause = g_screen_manager->get_speed();
- g_screen_manager->set_speed(0);
+ speed_before_pause = ScreenManager::current()->get_speed();
+ ScreenManager::current()->set_speed(0);
MenuManager::instance().set_menu(MenuStorage::GAME_MENU);
+ SoundManager::current()->pause_music();
game_pause = true;
}
GameSession::abort_level()
{
MenuManager::instance().clear_menu_stack();
- g_screen_manager->pop_screen();
+ ScreenManager::current()->pop_screen();
currentsector->player->set_bonus(bonus_at_start);
PlayerStatus *currentStatus = m_savegame.get_player_status();
currentStatus->coins = coins_at_start;
}
void
-GameSession::set_editmode(bool edit_mode)
+GameSession::set_editmode(bool edit_mode_)
{
- if (this->edit_mode == edit_mode) return;
- this->edit_mode = edit_mode;
+ if (this->edit_mode == edit_mode_) return;
+ this->edit_mode = edit_mode_;
- currentsector->get_players()[0]->set_edit_mode(edit_mode);
+ currentsector->get_players()[0]->set_edit_mode(edit_mode_);
- if (edit_mode) {
+ if (edit_mode_) {
// entering edit mode
// save input for demo?
if(capture_demo_stream != 0) {
- Controller *controller = g_input_manager->get_controller();
+ Controller *controller = InputManager::current()->get_controller();
capture_demo_stream ->put(controller->hold(Controller::LEFT));
capture_demo_stream ->put(controller->hold(Controller::RIGHT));
capture_demo_stream ->put(controller->hold(Controller::UP));
int total_stats_to_be_collected = level->stats.total_coins + level->stats.total_badguys + level->stats.total_secrets;
if ((!levelintro_shown) && (total_stats_to_be_collected > 0)) {
levelintro_shown = true;
- g_screen_manager->push_screen(std::unique_ptr<Screen>(new LevelIntro(level.get(), best_level_statistics)));
+ ScreenManager::current()->push_screen(std::unique_ptr<Screen>(new LevelIntro(level.get(), best_level_statistics)));
}
}
GameSession::update(float elapsed_time)
{
// handle controller
- if(g_input_manager->get_controller()->pressed(Controller::PAUSE_MENU))
+ if(InputManager::current()->get_controller()->pressed(Controller::ESCAPE) ||
+ InputManager::current()->get_controller()->pressed(Controller::START))
{
on_escape_press();
}
- if(g_input_manager->get_controller()->pressed(Controller::CHEAT_MENU))
+ if(InputManager::current()->get_controller()->pressed(Controller::CHEAT_MENU) &&
+ g_config->developer_mode)
{
if (!MenuManager::instance().is_active())
{
// Unpause the game if the menu has been closed
if (game_pause && !MenuManager::instance().is_active()) {
- g_screen_manager->set_speed(speed_before_pause);
+ ScreenManager::current()->set_speed(speed_before_pause);
+ SoundManager::current()->resume_music();
game_pause = false;
}
}
}
+ if(currentsector == NULL)
+ return;
+
// update sounds
- if (currentsector && currentsector->camera) sound_manager->set_listener_position(currentsector->camera->get_center());
+ if (currentsector->camera) SoundManager::current()->set_listener_position(currentsector->camera->get_center());
/* Handle music: */
if (end_sequence)
}
}
- g_screen_manager->pop_screen();
+ ScreenManager::current()->pop_screen();
}
void
if (sequencename == "endsequence") {
if (currentsector->get_players()[0]->get_physic().get_velocity_x() < 0) {
- end_sequence = new EndSequenceWalkLeft();
+ end_sequence = std::make_shared<EndSequenceWalkLeft>();
} else {
- end_sequence = new EndSequenceWalkRight();
+ end_sequence = std::make_shared<EndSequenceWalkRight>();
}
} else if (sequencename == "fireworks") {
- end_sequence = new EndSequenceFireworks();
+ end_sequence = std::make_shared<EndSequenceFireworks>();
} else {
log_warning << "Unknown sequence '" << sequencename << "'. Ignoring." << std::endl;
return;
}
/* slow down the game for end-sequence */
- g_screen_manager->set_speed(0.5f);
+ ScreenManager::current()->set_speed(0.5f);
currentsector->add_object(end_sequence);
end_sequence->start();
- sound_manager->play_music("music/leveldone.ogg", false);
+ SoundManager::current()->play_music("music/leveldone.ogg", false);
currentsector->player->set_winning();
// Stop all clocks.
- for(std::vector<GameObject*>::iterator i = currentsector->gameobjects.begin();
+ for(auto i = currentsector->gameobjects.begin();
i != currentsector->gameobjects.end(); ++i)
{
- GameObject* obj = *i;
+ GameObjectPtr obj = *i;
- LevelTime* lt = dynamic_cast<LevelTime*> (obj);
+ auto lt = std::dynamic_pointer_cast<LevelTime>(obj);
if(lt)
lt->stop();
}