Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use NativeCall;
- use SDL2::Raw;
- use Cairo;
- use nqp;
- constant TITLE = "Sample Game";
- constant W = 1280;
- constant H = 960;
- class Game {
- has $!window;
- has $!render;
- has $!event;
- has $.isRunning;
- method new {
- $!isRunning = True;
- $!event = SDL_Event.new;
- }
- method init(Str $title, Int $width, Int $height) {
- SDL_Init(VIDEO +| AUDIO);
- $!window = SDL_CreateWindow($title, SDL_WINDOWPOS_CENTERED_MASK, SDL_WINDOWPOS_CENTERED_MASK,
- $width, $height, SHOWN);
- with $!window {
- $!render = SDL_CreateRenderer($!window, -1, ACCELERATED +| PRESENTVSYNC);
- }
- }
- method render {
- SDL_SetRenderDrawColor($!render, 0, 0, 0, 255);
- SDL_RenderClear($!render);
- SDL_RenderPresent($!render);
- }
- method update {
- }
- method handleEvents {
- if SDL_PollEvent($!event) {
- my $casted_event = SDL_CastEvent($!event);
- given $casted_event {
- when *.WHAT == QUIT {
- $!isRunning = False;
- }
- }
- }
- }
- method clean {
- # no destroyWindow method? huh?
- SDL_DestroyRenderer($!render);
- SDL_Quit();
- }
- }
- my $game = Game.new();
- #main: until {
- #}
- sleep(4);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement