int main(int argc, char** argv){ Window gWindows[ Screen::totalScreens ]; if (TTF_Init() != 0) { cerr << "TTF_Init() Failed: " << TTF_GetError() << endl; SDL_Quit(); } //Start our window gWindows[Screen::mainScreen].init("Birtemag", 300, 300); Player player; Map *gameMap = new Map("bitmaps/prueba.map"); if ( !player.gPlayerTexture.loadFromFile(gWindows[Screen::mainScreen], "sprites/player.png")) { cout<<"Failed to load sprite texture!\n"<<endl; } //Load tile texture gameMap->addTile(gWindows[Screen::mainScreen], "tilesets/tile1.png"); //Load tile map if( !gameMap->setTiles() ) { cout<<"Failed to load tile set!\n"<<endl; } SDL_Rect camera = { 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT }; //Our event structure SDL_Event e; //Our input instance Input input; //For tracking if we want to quit while (!input._quit && e.type != SDL_QUIT){ //Event Polling SDL_PollEvent(&e); input.checkControls(&e); if (input._f2) { input._f2 = false; gWindows[Screen::editScreen].init("Editor", 320 + SCREEN_WIDTH, 300); Editor *gameEditor; gameEditor = new Editor(camera, gWindows); gameEditor->addTile(gWindows, "tilesets/tile1.png"); gameEditor->setMap(gameMap); gameEditor->init(gWindows, input, e); delete(gameEditor); if (!gWindows[Screen::editScreen].isClosed()) gWindows[Screen::editScreen].free(); if (gWindows[Screen::mainScreen].isClosed()) break; } gWindows[Screen::mainScreen].handleEvent(e); //input.checkControls(&e); player.handleEvent(); //LOGIC player.move( gameMap->getTileSet(), gameMap); player.setCamera( camera, gameMap ); //RENDERING gWindows[Screen::mainScreen].Clear(); gameMap->renderMap(gWindows[Screen::mainScreen], camera); player.render(gWindows[Screen::mainScreen], camera); gWindows[Screen::mainScreen].Present(); } for( int i = 0; i < Screen::totalScreens; ++i ) { gWindows[ i ].free(); } delete gameMap; //Quit SDL subsystems SDL_Quit(); return 0; }