cleanup
This commit is contained in:
230
src/DesktopLauncher.cpp
Normal file → Executable file
230
src/DesktopLauncher.cpp
Normal file → Executable file
@@ -1,165 +1,87 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <SDL.h>
|
||||
#include <SDL_image.h>
|
||||
#include <GL/glew.h>
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include "DarkRP2D.h"
|
||||
#include "input/InputHandler.h"
|
||||
#include "Reassembly2.h"
|
||||
|
||||
#define GAME_NAME "DarkRP2D"
|
||||
using namespace std;
|
||||
|
||||
const int SCREEN_WIDTH = 800, SCREEN_HEIGHT = 600;
|
||||
const int SCREEN_WIDTH = 800;
|
||||
const int SCREEN_HEIGHT = 600;
|
||||
static SDL_Window* gWindow = NULL;
|
||||
static SDL_GLContext glcontext;
|
||||
|
||||
SDL_Window* gWindow = NULL; //The window we'll be rendering to
|
||||
SDL_Surface* gScreenSurface = NULL; //The surface contained by the window
|
||||
SDL_Renderer* gRenderer = NULL;
|
||||
DarkRP2D* darkRP2D = NULL;
|
||||
InputHandler* inputHandler = NULL;
|
||||
|
||||
void PrintEvent(const SDL_Event *event) {
|
||||
if (event->type == SDL_WINDOWEVENT) {
|
||||
switch (event->window.event) {
|
||||
case SDL_WINDOWEVENT_SHOWN:
|
||||
SDL_Log("Window %d shown", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_HIDDEN:
|
||||
SDL_Log("Window %d hidden", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_EXPOSED:
|
||||
SDL_Log("Window %d exposed", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MOVED:
|
||||
SDL_Log("Window %d moved to %d,%d",
|
||||
event->window.windowID, event->window.data1,
|
||||
event->window.data2);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_RESIZED:
|
||||
SDL_Log("Window %d resized to %dx%d",
|
||||
event->window.windowID, event->window.data1,
|
||||
event->window.data2);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||
SDL_Log("Window %d size changed to %dx%d",
|
||||
event->window.windowID, event->window.data1,
|
||||
event->window.data2);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MINIMIZED:
|
||||
SDL_Log("Window %d minimized", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MAXIMIZED:
|
||||
SDL_Log("Window %d maximized", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_RESTORED:
|
||||
SDL_Log("Window %d restored", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_ENTER:
|
||||
SDL_Log("Mouse entered window %d",
|
||||
event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_LEAVE:
|
||||
SDL_Log("Mouse left window %d", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||
SDL_Log("Window %d gained keyboard focus",
|
||||
event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
SDL_Log("Window %d lost keyboard focus",
|
||||
event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
SDL_Log("Window %d closed", event->window.windowID);
|
||||
break;
|
||||
#if SDL_VERSION_ATLEAST(2, 0, 5)
|
||||
case SDL_WINDOWEVENT_TAKE_FOCUS:
|
||||
SDL_Log("Window %d is offered a focus", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_HIT_TEST:
|
||||
SDL_Log("Window %d has a special hit test", event->window.windowID);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
SDL_Log("Window %d got unknown event %d",
|
||||
event->window.windowID, event->window.event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool init() {
|
||||
bool success = true;
|
||||
//Initialize SDL
|
||||
if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) {
|
||||
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
|
||||
success = false;
|
||||
} else {
|
||||
//Create window
|
||||
gWindow = SDL_CreateWindow( GAME_NAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
|
||||
if( gWindow == NULL ) {
|
||||
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
|
||||
success = false;
|
||||
} else {
|
||||
//Get window surface
|
||||
gScreenSurface = SDL_GetWindowSurface( gWindow );
|
||||
if( gScreenSurface == NULL )
|
||||
{
|
||||
printf( "ScreenSurface could not be fetched! SDL Error: %s\n", SDL_GetError() );
|
||||
success = false;
|
||||
}
|
||||
//Create renderer for window
|
||||
gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_ACCELERATED );
|
||||
if( gRenderer == NULL )
|
||||
{
|
||||
printf( "Renderer could not be created! SDL Error: %s\n", SDL_GetError() );
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
inputHandler = new InputHandler();
|
||||
darkRP2D = new DarkRP2D();
|
||||
darkRP2D->create(gRenderer, inputHandler);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
void close() {
|
||||
delete darkRP2D;
|
||||
delete inputHandler;
|
||||
SDL_DestroyRenderer( gRenderer );
|
||||
SDL_FreeSurface( gScreenSurface );
|
||||
SDL_DestroyWindow( gWindow );
|
||||
SDL_Quit();
|
||||
}
|
||||
void dispose();
|
||||
bool initSDL();
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
//Initialization flag
|
||||
bool success = true;
|
||||
success = init();
|
||||
SDL_SetWindowResizable(gWindow, SDL_TRUE);
|
||||
//Main loop flag
|
||||
bool running = true;
|
||||
//Event handler
|
||||
SDL_Event e;
|
||||
//Main GameClass
|
||||
//Init SDL_Window, SDL_Surface, SDL_Renderer
|
||||
if(!initSDL()) {
|
||||
dispose();
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned int lastTime = SDL_GetTicks(), currentTime, elapsedTime;
|
||||
//While application is running
|
||||
while( running ) {
|
||||
currentTime = SDL_GetTicks();
|
||||
elapsedTime = currentTime - lastTime;
|
||||
//Handle events on queue
|
||||
while( SDL_PollEvent( &e ) != 0 ) {
|
||||
//User requests quit
|
||||
if( e.type == SDL_QUIT ) {
|
||||
running = false;
|
||||
} else if ((e.type == SDL_KEYDOWN || e.type == SDL_KEYUP) && e.key.repeat == 0) {
|
||||
inputHandler->inputEvent(&e);
|
||||
}
|
||||
PrintEvent(&e);
|
||||
}
|
||||
darkRP2D->loop(elapsedTime);
|
||||
lastTime = currentTime;
|
||||
}
|
||||
//While application is running
|
||||
bool quit = false;
|
||||
SDL_Event e;
|
||||
Reassembly2 resA(gWindow);
|
||||
resA.create();
|
||||
unsigned int lastTime = SDL_GetTicks(), currentTime, elapsedTime;
|
||||
while( !quit ) {
|
||||
currentTime = SDL_GetTicks();
|
||||
elapsedTime = currentTime - lastTime;
|
||||
lastTime = currentTime;
|
||||
if(SDL_PollEvent(&e) != 0) {
|
||||
if(e.type == SDL_QUIT) {
|
||||
quit = true;
|
||||
break;
|
||||
}
|
||||
resA.loop(&e,elapsedTime);
|
||||
} else {
|
||||
resA.loop(NULL,elapsedTime);
|
||||
}
|
||||
|
||||
close();
|
||||
}
|
||||
|
||||
return !success;
|
||||
dispose();
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool initSDL() {
|
||||
//Init SDL
|
||||
if(SDL_Init(SDL_INIT_VIDEO) < 0 ) {
|
||||
cout << "SDL could not initialize! SDL_Error: " << SDL_GetError() << endl;
|
||||
return false;
|
||||
}
|
||||
//Init Window
|
||||
gWindow = SDL_CreateWindow( "SDL TEST", SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL);
|
||||
if( gWindow == NULL) {
|
||||
cout << "Window could not be created! SDL_Error: " << SDL_GetError() << endl;
|
||||
return false;
|
||||
}
|
||||
//Mask deprectated functions
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
||||
//Init OpenGL Renderer
|
||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||
glcontext = SDL_GL_CreateContext(gWindow);
|
||||
if(glcontext == NULL) {
|
||||
cout << "Could not create OpenGL Context: " << SDL_GetError() << endl;
|
||||
return false;
|
||||
}
|
||||
//Init GLEW
|
||||
glewExperimental = GL_TRUE;
|
||||
GLenum err = glewInit();
|
||||
if(GLEW_OK != err) {
|
||||
cout << "Init of Glew failed: " << glewGetErrorString(err) << endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
SDL_GL_DeleteContext(glcontext);
|
||||
SDL_DestroyWindow( gWindow );
|
||||
SDL_Quit();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user