X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fscripting%2Ffunctions.cpp;h=045114e7a8b65022d74a9934509b6ab80454bed3;hb=2b017a68959d768ee917128bbdaa42439911ef43;hp=853f20494d6d6e54bde2cbe1cfc3529fe0d288e9;hpb=7bb247564b8236e60384827137e57f328f9614f5;p=supertux.git diff --git a/src/scripting/functions.cpp b/src/scripting/functions.cpp index 853f20494..045114e7a 100644 --- a/src/scripting/functions.cpp +++ b/src/scripting/functions.cpp @@ -25,20 +25,20 @@ #include "supertux/game_session.hpp" #include "supertux/gameconfig.hpp" #include "supertux/globals.hpp" -#include "supertux/mainloop.hpp" +#include "supertux/screen_manager.hpp" #include "supertux/sector.hpp" #include "supertux/shrinkfade.hpp" #include "supertux/textscroller.hpp" +#include "supertux/tile.hpp" #include "supertux/world.hpp" #include "util/gettext.hpp" +#include "video/renderer.hpp" #include "worldmap/tux.hpp" #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 +64,55 @@ void wait(HSQUIRRELVM vm, float seconds) void wait_for_screenswitch(HSQUIRRELVM vm) { - g_main_loop->waiting_threads.add(vm); + g_screen_manager->m_waiting_threads.add(vm); } void exit_screen() { - g_main_loop->exit_screen(); + g_screen_manager->pop_screen(); } void fadeout_screen(float seconds) { - g_main_loop->set_screen_fade(new FadeOut(seconds)); + g_screen_manager->set_screen_fade(std::unique_ptr(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(std::unique_ptr(new ShrinkFade(Vector(dest_x, dest_y), seconds))); } void abort_screenfade() { - g_main_loop->set_screen_fade(NULL); + g_screen_manager->set_screen_fade(std::unique_ptr()); } 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(std::unique_ptr(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(std::unique_ptr(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(std::unique_ptr(new GameSession(filename, GameSession::current()->get_player_status()))); } void import(HSQUIRRELVM vm, const std::string& filename) @@ -150,9 +146,14 @@ void debug_draw_solids_only(bool enable) Sector::draw_solids_only = enable; } +void debug_draw_editor_images(bool enable) +{ + Tile::draw_editor_images = 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 +163,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 +174,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 +213,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); } @@ -252,7 +253,7 @@ void whereami() { if (!validate_sector_player()) return; ::Player* tux = Sector::current()->player; - log_info << "You are at x " << tux->get_pos().x << ", y " << tux->get_pos().y << std::endl; + log_info << "You are at x " << ((int) tux->get_pos().x) << ", y " << ((int) tux->get_pos().y) << std::endl; } void gotoend() @@ -271,18 +272,19 @@ void camera() log_info << "Camera is at " << Sector::current()->camera->get_translation().x << "," << Sector::current()->camera->get_translation().y << std::endl; } -void set_gamma(float gamma) { - SDL_SetGamma(gamma, gamma, gamma); +void set_gamma(float gamma) +{ + Renderer::instance()->set_gamma(gamma); } void quit() { - g_main_loop->quit(); + g_screen_manager->quit(); } int rand() { - return systemRandom.rand(); + return gameRandom.rand(); } void set_game_speed(float speed) @@ -310,7 +312,7 @@ void play_demo(const std::string& filename) } // Reset random seed g_config->random_seed = GameSession::current()->get_demo_random_seed(filename); - g_config->random_seed = systemRandom.srand(g_config->random_seed); + g_config->random_seed = gameRandom.srand(g_config->random_seed); GameSession::current()->restart_level(); GameSession::current()->play_demo(filename); }