Skip to content

Instantly share code, notes, and snippets.

@collinalexbell
Created July 5, 2015 04:48
Show Gist options
  • Save collinalexbell/b06a3e79539f0fff3f0b to your computer and use it in GitHub Desktop.
Save collinalexbell/b06a3e79539f0fff3f0b to your computer and use it in GitHub Desktop.
SDL step
void Sim::init(){
SDL_Init(SDL_INIT_EVERYTHING);
TTF_Init();
screen = SDL_SetVideoMode(1080, 720, 32, SDL_SWSURFACE);
running = true;
#ifdef TEST_SDL_LOCK_OPTS
EM_ASM("SDL.defaults.copyOnLock = false; SDL.defaults.discardOnLock = true; SDL.defaults.opaqueFrontBuffer = false;");
#endif
if (SDL_MUSTLOCK(screen)) SDL_LockSurface(screen);
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 256; j++) {
#ifdef TEST_SDL_LOCK_OPTS
// Alpha behaves like in the browser, so write proper opaque pixels.
int alpha = 255;
#else
// To emulate native behavior with blitting to screen, alpha component is ignored. Test that it is so by outputting
// data (and testing that it does get discarded)
int alpha = (i+j) % 255;
#endif
*((Uint32*)screen->pixels + i * 256 + j) = SDL_MapRGBA(screen->format, i, j, 255-i, alpha);
}
}
if (SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen);
SDL_Flip(screen);
}
bool Sim::step(){
SDL_Flip(screen);
if( SDL_PollEvent( &event ) ) {
//If the user has Xed out the window
if( event.type == SDL_QUIT ) {
//Quit the program
return false;
}
if(event.type == SDL_KEYDOWN){
if(event.key.keysym.sym == SDLK_y){
bool_gui_test_finished = true;
bool_gui_result = true;
}
if( event.key.keysym.sym == SDLK_n){
bool_gui_test_finished = true;
bool_gui_result = false;
}
}
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment