X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fscripting%2Ffunctions.cpp;h=6c84d30027eca592fe27f536b4719ead2737b60d;hb=0b73428a8a9e9563cb196e4b13167de3ec5f6b02;hp=40c869c2015e96d33c742e9cf56990cd82840cea;hpb=08813a74da6ac1fd045a105e4e8105f1d7f716f0;p=supertux.git diff --git a/src/scripting/functions.cpp b/src/scripting/functions.cpp index 40c869c20..6c84d3002 100644 --- a/src/scripting/functions.cpp +++ b/src/scripting/functions.cpp @@ -20,12 +20,12 @@ #include "math/random_generator.hpp" #include "object/camera.hpp" #include "object/player.hpp" -#include "physfs/physfs_stream.hpp" +#include "physfs/ifile_stream.hpp" #include "supertux/fadeout.hpp" #include "supertux/game_session.hpp" #include "supertux/gameconfig.hpp" -#include "supertux/main.hpp" -#include "supertux/mainloop.hpp" +#include "supertux/globals.hpp" +#include "supertux/screen_manager.hpp" #include "supertux/sector.hpp" #include "supertux/shrinkfade.hpp" #include "supertux/textscroller.hpp" @@ -36,9 +36,7 @@ #include "scripting/squirrel_util.hpp" #include "scripting/time_scheduler.hpp" -extern float g_game_speed; - -namespace Scripting { +namespace scripting { SQInteger display(HSQUIRRELVM vm) { @@ -64,59 +62,55 @@ void wait(HSQUIRRELVM vm, float seconds) void wait_for_screenswitch(HSQUIRRELVM vm) { - g_main_loop->waiting_threads.add(vm); + g_screen_manager->waiting_threads.add(vm); } void exit_screen() { - g_main_loop->exit_screen(); + g_screen_manager->exit_screen(); } void fadeout_screen(float seconds) { - g_main_loop->set_screen_fade(new FadeOut(seconds)); + g_screen_manager->set_screen_fade(new FadeOut(seconds)); } void shrink_screen(float dest_x, float dest_y, float seconds) { - g_main_loop->set_screen_fade(new ShrinkFade(Vector(dest_x, dest_y), seconds)); + g_screen_manager->set_screen_fade(new ShrinkFade(Vector(dest_x, dest_y), seconds)); } void abort_screenfade() { - g_main_loop->set_screen_fade(NULL); + g_screen_manager->set_screen_fade(NULL); } std::string translate(const std::string& text) { - return dictionary_manager.get_dictionary().translate(text); + return dictionary_manager->get_dictionary().translate(text); } void display_text_file(const std::string& filename) { - g_main_loop->push_screen(new TextScroller(filename)); + g_screen_manager->push_screen(new TextScroller(filename)); } void load_worldmap(const std::string& filename) { - using namespace WorldMapNS; + using namespace worldmap; - g_main_loop->push_screen(new WorldMap(filename)); -} + if(World::current() == NULL) + throw std::runtime_error("Can't start WorldMap without active world."); -void load_level(const std::string& filename) -{ - g_main_loop->push_screen(new GameSession(filename)); + g_screen_manager->push_screen(new WorldMap(filename, World::current()->get_player_status())); } -static SQInteger squirrel_read_char(SQUserPointer file) +void load_level(const std::string& filename) { - std::istream* in = reinterpret_cast (file); - char c = in->get(); - if(in->eof()) - return 0; + if(GameSession::current() == NULL) + throw std::runtime_error("Can't start level without active level."); - return c; + g_screen_manager->push_screen(new GameSession(filename, GameSession::current()->get_player_status())); } void import(HSQUIRRELVM vm, const std::string& filename) @@ -152,7 +146,7 @@ void debug_draw_solids_only(bool enable) void debug_worldmap_ghost(bool enable) { - using namespace WorldMapNS; + using namespace worldmap; if(WorldMap::current() == NULL) throw std::runtime_error("Can't change ghost mode without active WorldMap"); @@ -162,7 +156,7 @@ void debug_worldmap_ghost(bool enable) void save_state() { - using namespace WorldMapNS; + using namespace worldmap; if(World::current() == NULL || WorldMap::current() == NULL) throw std::runtime_error("Can't save state without active World"); @@ -173,7 +167,7 @@ void save_state() void update_worldmap() { - using namespace WorldMapNS; + using namespace worldmap; if(WorldMap::current() == NULL) throw std::runtime_error("Can't update Worldmap: none active"); @@ -212,7 +206,7 @@ void play_sound(const std::string& filename) void grease() { if (!validate_sector_player()) return; - ::Player* tux = Sector::current()->player; // Scripting::Player != ::Player + ::Player* tux = Sector::current()->player; // scripting::Player != ::Player tux->get_physic().set_velocity_x(tux->get_physic().get_velocity_x()*3); } @@ -277,7 +271,7 @@ void set_gamma(float gamma) { void quit() { - g_main_loop->quit(); + g_screen_manager->quit(); } int rand()