diff --git a/examples/sdlex.nim b/examples/sdlex.nim index 3c20fc0040..2c1a413e90 100755 --- a/examples/sdlex.nim +++ b/examples/sdlex.nim @@ -1,26 +1,52 @@ # Test the SDL interface: import - SDL + sdl, sdl_image, colors var screen, greeting: PSurface r: TRect + event: TEvent + bgColor = colChocolate.int32 -if Init(INIT_VIDEO) == 0: - screen = SetVideoMode(640, 480, 16, SWSURFACE or ANYFORMAT) - if screen == nil: - write(stdout, "screen is nil!\n") - else: - greeting = LoadBmp("backgrnd.bmp") - if greeting == nil: - write(stdout, "greeting is nil!") - r.x = 0'i16 - r.y = 0'i16 - discard blitSurface(greeting, nil, screen, addr(r)) - discard flip(screen) - Delay(3000) +if init(INIT_VIDEO) != 0: + quit "SDL failed to initialize!" + +screen = SetVideoMode(640, 480, 16, SWSURFACE or ANYFORMAT) +if screen.isNil: + quit($sdl.getError()) + +greeting = IMG_load("tux.png") +if greeting.isNil: + echo "Failed to load tux.png" else: - write(stdout, "SDL_Init failed!\n") + ## convert the image to alpha and free the old one + var s = greeting.displayFormatAlpha() + swap(greeting, s) + s.freeSurface() +r.x = 0 +r.y = 0 + +block game_loop: + while true: + + while pollEvent(addr event) > 0: + case event.kind + of QUITEV: + break game_loop + of KEYDOWN: + if EvKeyboard(addr event).keysym.sym == K_ESCAPE: + break game_loop + else: + discard + + discard fillRect(screen, nil, bgColor) + discard blitSurface(greeting, nil, screen, addr r) + discard flip(screen) + +greeting.freeSurface() +screen.freeSurface() sdl.Quit() + +## fowl wuz here 10/2012 \ No newline at end of file