#include "../sdlpp/sdlpp.hpp" #include "global_vars.hpp" #include "gui/gui.hpp" #include "sprites.hpp" #include #ifdef _WIN32 #include "../sdlpp/SDL2/SDL2_framerate.h" #include #include #include #else #include #endif // UNIX #include #include #include #include "objectids.hpp" #include "blocks.hpp" #include "maploader.hpp" #include "../sdlpp/sdlpp_mouse.hpp" #include "edit_box.hpp" #include "editor_visitor.hpp" #include "tool_box.hpp" #include "blocks/coineditorblock.hpp" #include "scenes/editor_scenes.hpp" std::vector game_scenes{}; void doInput() { FPSmanager gFPS; SDL_initFramerate(&gFPS); SDL_setFramerate(&gFPS, 200); while (!g_quit) { SDL_framerateDelay(&gFPS); game_scenes.back().doInput(game_scenes.back().scene); game_scenes.back().scene->updateScene(); } } #ifdef _WIN32 int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR szCmdLine, int nCmdShow) { #else int main() { #endif SDLPP::init(); SDLPP::Window w("Mario editor!"); w.setResizable(true); BLOCK_SIZE = 1.0 / 26; auto font = std::make_shared("testfont.ttf", 36); g_text_config = std::make_shared(font, "#FFFFFF", "#000000", 0.15); auto renderer = std::make_shared(w); renderer->setBlendMode(SDL_BLENDMODE_BLEND); // prepare global vars g_terrain_texture = std::make_shared( renderer, "sprites/terrain.png", MARIO_OVERWORLD_COLORKEY); g_mario_texture = std::make_shared( renderer, "sprites/mario.png", MARIO_OVERWORLD_COLORKEY); g_mod_texture = std::make_shared(renderer, "sprites/mods.png"); g_enemies_texture = std::make_shared( renderer, "sprites/enemies.png", MARIO_OVERWORLD_COLORKEY); g_translucent_terrain_texture = std::make_shared( renderer, "sprites/terrain.png", MARIO_OVERWORLD_COLORKEY); g_translucent_terrain_texture->setAlpha(100); g_translucent_mod_texture = std::make_shared(renderer, "sprites/mods.png"); g_translucent_mod_texture->setAlpha(100); g_translucent_enemies_texture = std::make_shared( renderer, "sprites/enemies.png", MARIO_OVERWORLD_COLORKEY); g_translucent_enemies_texture->setAlpha(100); game_scenes.push_back(createEditorScene(renderer)); auto base = SDL_GetTicks(); int frames = 0; std::thread inputThread(doInput); SDL_PumpEvents(); game_scenes.back().scene->updateSizeAndPosition(); game_scenes.back().scene->renderScene(); renderer->presentRenderer(); FPSmanager gFPS; SDL_initFramerate(&gFPS); SDL_setFramerate(&gFPS, 60); while (!g_quit) { SDL_framerateDelay(&gFPS); SDL_PumpEvents(); std::lock_guard lock(render_mutex); for(auto &scene : game_scenes) { scene.additionalRender(scene.scene); scene.scene->renderScene(false); } renderer->presentRenderer(); frames++; if (SDL_GetTicks() - base >= 1000) { std::cout << "FPS: " << frames << std::endl; frames = 0; base = SDL_GetTicks(); } } inputThread.join(); return 0; }