X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fscripting%2Ffunctions.cpp;h=2c906ffb4da83f4575b6f04e2e76ec9108555c54;hb=c0b5cfa3eadebef8101f87cd593eb221bdef9280;hp=5e2aace38efe58831b99361d3671ca0a2f26215c;hpb=c81b842f4880cd7b4958e03e983e50bff95d02ef;p=supertux.git diff --git a/src/scripting/functions.cpp b/src/scripting/functions.cpp index 5e2aace38..2c906ffb4 100644 --- a/src/scripting/functions.cpp +++ b/src/scripting/functions.cpp @@ -20,7 +20,7 @@ #include "math/random_generator.hpp" #include "object/camera.hpp" #include "object/player.hpp" -#include "physfs/ifile_stream.hpp" +#include "physfs/buffered_ifile_stream.hpp" #include "supertux/fadeout.hpp" #include "supertux/game_session.hpp" #include "supertux/gameconfig.hpp" @@ -33,7 +33,9 @@ #include "supertux/world.hpp" #include "util/gettext.hpp" #include "video/renderer.hpp" +#include "video/video_system.hpp" #include "worldmap/tux.hpp" +#include "worldmap/worldmap.hpp" #include "scripting/squirrel_util.hpp" #include "scripting/time_scheduler.hpp" @@ -42,7 +44,7 @@ namespace scripting { SQInteger display(HSQUIRRELVM vm) { - Console::output << squirrel2string(vm, -1) << std::endl; + ConsoleBuffer::output << squirrel2string(vm, -1) << std::endl; return 0; } @@ -64,42 +66,69 @@ void wait(HSQUIRRELVM vm, float seconds) void wait_for_screenswitch(HSQUIRRELVM vm) { - g_screen_manager->m_waiting_threads.add(vm); + ScreenManager::current()->m_waiting_threads.add(vm); } void exit_screen() { - g_screen_manager->pop_screen(); + ScreenManager::current()->pop_screen(); } void fadeout_screen(float seconds) { - g_screen_manager->set_screen_fade(std::unique_ptr(new FadeOut(seconds))); + ScreenManager::current()->set_screen_fade(std::unique_ptr(new FadeOut(seconds))); } void shrink_screen(float dest_x, float dest_y, float seconds) { - g_screen_manager->set_screen_fade(std::unique_ptr(new ShrinkFade(Vector(dest_x, dest_y), seconds))); + ScreenManager::current()->set_screen_fade(std::unique_ptr(new ShrinkFade(Vector(dest_x, dest_y), seconds))); } void abort_screenfade() { - g_screen_manager->set_screen_fade(std::unique_ptr()); + ScreenManager::current()->set_screen_fade(std::unique_ptr()); } std::string translate(const std::string& text) { - return dictionary_manager->get_dictionary().translate(text); + return g_dictionary_manager->get_dictionary().translate(text); } void display_text_file(const std::string& filename) { - g_screen_manager->push_screen(std::unique_ptr(new TextScroller(filename))); + ScreenManager::current()->push_screen(std::unique_ptr(new TextScroller(filename))); +} + +void load_worldmap(const std::string& filename) +{ + using namespace worldmap; + + if (!WorldMap::current()) + { + throw std::runtime_error("Can't start Worldmap without active WorldMap"); + } + else + { + ScreenManager::current()->push_screen(std::unique_ptr(new WorldMap(filename, WorldMap::current()->get_savegame()))); + } +} + +void load_level(const std::string& filename) +{ + if (!GameSession::current()) + { + throw std::runtime_error("Can't start level without active level."); + } + else + { + ScreenManager::current()->push_screen(std::unique_ptr(new GameSession(filename, GameSession::current()->get_savegame()))); + } } void import(HSQUIRRELVM vm, const std::string& filename) { - IFileStream in(filename); + BufferedIFileStream* stream = new BufferedIFileStream(filename); + IFileStream* in = stream->get_stream(); if(SQ_FAILED(sq_compile(vm, squirrel_read_char, &in, filename.c_str(), SQTrue))) @@ -143,6 +172,20 @@ void debug_worldmap_ghost(bool enable) WorldMap::current()->get_tux()->set_ghost_mode(enable); } +void save_state() +{ + using worldmap::WorldMap; + + if (!WorldMap::current()) + { + throw std::runtime_error("Can't save state without active Worldmap"); + } + else + { + WorldMap::current()->save_state(); + } +} + // not added to header, function to only be used by others // in this file bool validate_sector_player() @@ -163,12 +206,12 @@ bool validate_sector_player() void play_music(const std::string& filename) { - sound_manager->play_music(filename); + SoundManager::current()->play_music(filename); } void play_sound(const std::string& filename) { - sound_manager->play(filename); + SoundManager::current()->play(filename); } void grease() @@ -235,12 +278,12 @@ void camera() void set_gamma(float gamma) { - Renderer::instance()->set_gamma(gamma); + VideoSystem::current()->get_renderer().set_gamma(gamma); } void quit() { - g_screen_manager->quit(); + ScreenManager::current()->quit(); } int rand()