X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fscripting%2Ffunctions.cpp;h=2c906ffb4da83f4575b6f04e2e76ec9108555c54;hb=c0b5cfa3eadebef8101f87cd593eb221bdef9280;hp=21b33bdbc23be2384b69a237d40cf72f6ccc7e7a;hpb=42de210bd2cb0e773ce0b7bd6af7bb3f456030bc;p=supertux.git diff --git a/src/scripting/functions.cpp b/src/scripting/functions.cpp index 21b33bdbc..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" @@ -29,9 +29,13 @@ #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 "video/video_system.hpp" #include "worldmap/tux.hpp" +#include "worldmap/worldmap.hpp" #include "scripting/squirrel_util.hpp" #include "scripting/time_scheduler.hpp" @@ -40,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; } @@ -62,70 +66,69 @@ void wait(HSQUIRRELVM vm, float seconds) void wait_for_screenswitch(HSQUIRRELVM vm) { - g_screen_manager->waiting_threads.add(vm); + ScreenManager::current()->m_waiting_threads.add(vm); } void exit_screen() { - g_screen_manager->exit_screen(); + ScreenManager::current()->pop_screen(); } void fadeout_screen(float seconds) { - g_screen_manager->set_screen_fade(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(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(NULL); + 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(new TextScroller(filename)); + ScreenManager::current()->push_screen(std::unique_ptr(new TextScroller(filename))); } void load_worldmap(const std::string& filename) { using namespace worldmap; - if(World::current() == NULL) - throw std::runtime_error("Can't start WorldMap without active world."); - - g_screen_manager->push_screen(new WorldMap(filename, World::current()->get_player_status())); + 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() == NULL) + if (!GameSession::current()) + { throw std::runtime_error("Can't start level without active level."); - - g_screen_manager->push_screen(new GameSession(filename, GameSession::current()->get_player_status())); -} - -static SQInteger squirrel_read_char(SQUserPointer file) -{ - std::istream* in = reinterpret_cast (file); - char c = in->get(); - if(in->eof()) - return 0; - - return c; + } + 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))) @@ -154,6 +157,11 @@ 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 worldmap; @@ -166,23 +174,16 @@ void debug_worldmap_ghost(bool enable) void save_state() { - using namespace worldmap; - - if(World::current() == NULL || WorldMap::current() == NULL) - throw std::runtime_error("Can't save state without active World"); - - WorldMap::current()->save_state(); - World::current()->save_state(); -} - -void update_worldmap() -{ - using namespace worldmap; + using worldmap::WorldMap; - if(WorldMap::current() == NULL) - throw std::runtime_error("Can't update Worldmap: none active"); - - WorldMap::current()->load_state(); + 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 @@ -205,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() @@ -256,7 +257,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() @@ -275,18 +276,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) +{ + VideoSystem::current()->get_renderer().set_gamma(gamma); } void quit() { - g_screen_manager->quit(); + ScreenManager::current()->quit(); } int rand() { - return systemRandom.rand(); + return gameRandom.rand(); } void set_game_speed(float speed) @@ -314,7 +316,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); }