#include #include #include #include #include #include SDL_Window *window = NULL; SDL_Surface *renderSurface = NULL; SDL_GLContext mainGLContext = NULL; bool gameRunning = true; World *currentWorld=NULL; Player *player; void logic(); void render(); unsigned int millis(void){ std::chrono::system_clock::time_point now=std::chrono::system_clock::now(); return std::chrono::duration_cast(now.time_since_epoch()).count(); } int main(int argc, char *argv[]){ // Initialize SDL if(SDL_Init(SDL_INIT_VIDEO)){ std::cout << "SDL was not able to initialize! Error: " << SDL_GetError() << std::endl; return -1; } atexit(SDL_Quit); // Initialize SDL_image if(!(IMG_Init(IMG_INIT_PNG|IMG_INIT_JPG)&(IMG_INIT_PNG|IMG_INIT_JPG))){ std::cout<<"Could not init image libraries!\n"<spawn(0,100); while(gameRunning){ render(); logic(); } /************************** **** CLOSE PROGRAM **** **************************/ //closes the window and frees resources SDL_GL_DeleteContext(mainGLContext); SDL_DestroyWindow(window); return 0; } void render(){ //a matrix is a blank canvas for the computer to draw on, the matrices are stored in a "stack" //GL_PROJECTION has 2 matrices //GL_MODELVIEW has 32 matrices glMatrixMode(GL_PROJECTION); //set the matrix mode as projection so we can set the ortho size and the camera settings later on glPushMatrix(); //push the matrix to the top of the matrix stack glLoadIdentity(); //replace the entire matrix stack with the updated GL_PROJECTION mode glOrtho(player->loc.x-SCREEN_WIDTH/2,player->loc.x+SCREEN_WIDTH/2,0,SCREEN_HEIGHT,-1,1); glMatrixMode(GL_MODELVIEW); //set the matrix to modelview so we can draw objects glPushMatrix(); //push the matrix to the top of the matrix stack glLoadIdentity(); //replace the entire matrix stack with the updated GL_MODELVIEW mode glPushMatrix(); //basically here we put a blank canvas (new matrix) on the screen to draw on glClear(GL_COLOR_BUFFER_BIT); //clear the matrix on the top of the stack /************************** **** RENDER STUFF HERE **** **************************/ currentWorld->draw(&player->loc); player->draw(); //ui::putString(0,0,"Hello"); /************************** **** CLOSE THE LOOP **** **************************/ glPopMatrix(); //take the matrix(s) off the stack to pass them to the renderer SDL_GL_SwapWindow(window); //give the stack to SDL to render it } void logic(){ ui::handleEvents(); currentWorld->detect(&player->loc,&player->vel,player->width); player->loc.y+=player->vel.y; player->loc.x+=player->vel.x; std::cout<<"("<loc.x<<","<loc.y<<")"<