diff options
Diffstat (limited to 'cmd/demo')
| -rw-r--r-- | cmd/demo/main.ha | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/cmd/demo/main.ha b/cmd/demo/main.ha index 3cac391..a6f2a92 100644 --- a/cmd/demo/main.ha +++ b/cmd/demo/main.ha @@ -1,13 +1,13 @@ use fmt; use fs; use sdl2; -use sdl2::{ controller_axis, event_type, renderer_flags, window_flags }; +use sdl2::{ SDL_GameControllerAxis, SDL_EventType, SDL_RendererFlags, SDL_WindowFlags }; use sdl2::image; use sdl2::mixer; use strings; type object = struct { - tex: *sdl2::texture, + tex: *sdl2::SDL_Texture, w: int, h: int, x: int, y: int, dx: int, dy: int, @@ -15,8 +15,8 @@ type object = struct { type state = struct { quit: bool, - window: *sdl2::window, - render: *sdl2::renderer, + window: *sdl2::SDL_Window, + render: *sdl2::SDL_Renderer, nbutton: int, hare: object, cat: object, @@ -33,49 +33,49 @@ export fn main() void = { }; fn run() (void | fs::error | sdl2::error) = { - sdl2::init(sdl2::init_flags::VIDEO + sdl2::SDL_Init(sdl2::init_flags::VIDEO | sdl2::init_flags::AUDIO | sdl2::init_flags::GAMECONTROLLER)!; - defer sdl2::quit(); - image::init(image::init_flags::PNG | image::init_flags::JPG)!; - defer image::quit(); - - mixer::init(mixer::init_flags::OGG)!; - defer mixer::quit(); - mixer::open_audio(mixer::DEFAULT_FREQUENCY, mixer::DEFAULT_FORMAT, - mixer::DEFAULT_CHANNELS, 1024)!; - defer mixer::close_audio(); - - const win = sdl2::create_window("Hare SDL2 demo", - sdl2::WINDOWPOS_UNDEFINED, sdl2::WINDOWPOS_UNDEFINED, - 640, 480, window_flags::NONE)?; - defer sdl2::destroy_window(win); - - const render = sdl2::create_renderer(win, -1, renderer_flags::NONE)?; - defer sdl2::destroy_renderer(render); - - let controller: nullable *sdl2::gamecontroller = null; - for (let i = 0; i < sdl2::numjoysticks()?; i += 1) { - if (!sdl2::is_game_controller(i)) { + defer sdl2::SDL_Quit(); + image::IMG_Init(image::IMG_InitFlags::PNG | image::IMG_InitFlags::JPG)!; + defer image::IMG_Quit(); + + mixer::Mix_Init(mixer::MIX_InitFlags::OGG)!; + defer mixer::Mix_Quit(); + mixer::Mix_OpenAudio(mixer::MIX_DEFAULT_FREQUENCY, mixer::MIX_DEFAULT_FORMAT, + mixer::MIX_DEFAULT_CHANNELS, 1024)!; + defer mixer::Mix_CloseAudio(); + + const win = sdl2::SDL_CreateWindow("Hare SDL2 demo", + sdl2::SDL_WINDOWPOS_UNDEFINED, sdl2::SDL_WINDOWPOS_UNDEFINED, + 640, 480, SDL_WindowFlags::NONE)?; + defer sdl2::SDL_DestroyWindow(win); + + const render = sdl2::SDL_CreateRenderer(win, -1, SDL_RendererFlags::NONE)?; + defer sdl2::SDL_DestroyRenderer(render); + + let controller: nullable *sdl2::SDL_GameController = null; + for (let i = 0; i < sdl2::SDL_NumJoysticks()?; i += 1) { + if (!sdl2::SDL_IsGameController(i)) { continue; }; - match (sdl2::game_controller_open(i)) { - case let c: *sdl2::gamecontroller => + match (sdl2::SDL_GameControllerOpen(i)) { + case let c: *sdl2::SDL_GameController => controller = c; - sdl2::game_controller_rumble(c, 0x4000, 0x4000, 1000): void; + sdl2::SDL_GameControllerRumble(c, 0x4000, 0x4000, 1000): void; break; case sdl2::error => void; }; }; defer match (controller) { case null => void; - case let c: *sdl2::gamecontroller => - sdl2::game_controller_close(c); + case let c: *sdl2::SDL_GameController => + sdl2::SDL_GameControllerClose(c); }; let sample = mixer::load_file("sample.ogg")?; - defer mixer::free_chunk(sample); - mixer::play_channel(0, sample, -1)?; + defer mixer::Mix_FreeChunk(sample); + mixer::Mix_PlayChannelTimed(0, sample, -1)?; let state = state { window = win, @@ -84,8 +84,8 @@ fn run() (void | fs::error | sdl2::error) = { cat = load_object(render, "cat.png")?, ... }; - defer sdl2::destroy_texture(state.hare.tex); - defer sdl2::destroy_texture(state.cat.tex); + defer sdl2::SDL_DestroyTexture(state.hare.tex); + defer sdl2::SDL_DestroyTexture(state.cat.tex); state.hare.dx = 2; state.hare.dy = 2; @@ -93,33 +93,33 @@ fn run() (void | fs::error | sdl2::error) = { for (!state.quit) { update(&state)?; draw(&state)?; - sdl2::delay(1000 / 60); + sdl2::SDL_Delay(1000 / 60); }; }; fn update(state: *state) (void | sdl2::error) = { let ev = sdl2::event { ... }; - for (sdl2::poll_event(&ev)? == 1) switch (ev.event_type) { - case event_type::QUIT => + for (sdl2::SDL_PollEvent(&ev)? == 1) switch (ev.event_type) { + case SDL_EventType::QUIT => state.quit = true; return; - case event_type::CONTROLLERAXISMOTION => - let delta = ev.caxis.value: int * 10 / sdl2::JOYSTICK_AXIS_MAX; + case SDL_EventType::CONTROLLERAXISMOTION => + let delta = ev.caxis.value: int * 10 / sdl2::SDL_JOYSTICK_AXIS_MAX; if (axis_x(ev.caxis.axis)) { state.cat.dx = delta; }; if (axis_y(ev.caxis.axis)) { state.cat.dy = delta; }; - case event_type::CONTROLLERBUTTONDOWN => + case SDL_EventType::CONTROLLERBUTTONDOWN => state.nbutton += 1; - case event_type::CONTROLLERBUTTONUP => + case SDL_EventType::CONTROLLERBUTTONUP => state.nbutton -= 1; case => void; }; let width = 0, height = 0; - sdl2::get_window_size(state.window, &width, &height); + sdl2::SDL_GetWindowSize(state.window, &width, &height); state.hare.x += state.hare.dx; state.hare.y += state.hare.dy; @@ -148,19 +148,19 @@ fn update(state: *state) (void | sdl2::error) = { fn draw(state: *state) (void | sdl2::error) = { if (state.nbutton == 0) { - sdl2::set_render_draw_color(state.render, 50, 50, 50, 255)?; + sdl2::SDL_SetRenderDrawColor(state.render, 50, 50, 50, 255)?; } else { - sdl2::set_render_draw_color(state.render, 50, 50, 200, 255)?; + sdl2::SDL_SetRenderDrawColor(state.render, 50, 50, 200, 255)?; }; - sdl2::render_clear(state.render)?; + sdl2::SDL_RenderClear(state.render)?; draw_object(state, &state.hare)?; draw_object(state, &state.cat)?; - sdl2::render_present(state.render); + sdl2::SDL_RenderPresent(state.render); }; fn draw_object(state: *state, obj: *object) (void | sdl2::error) = { - sdl2::render_copy(state.render, obj.tex, null, &sdl2::rect { + sdl2::SDL_RenderCopy(state.render, obj.tex, null, &sdl2::SDL_Rect { x = obj.x, y = obj.y, w = obj.w, @@ -168,28 +168,28 @@ fn draw_object(state: *state, obj: *object) (void | sdl2::error) = { })?; }; -fn axis_x(axis: controller_axis) bool = { +fn axis_x(axis: SDL_GameControllerAxis) bool = { switch (axis) { - case controller_axis::LEFTX, controller_axis::RIGHTX => + case SDL_GameControllerAxis::LEFTX, SDL_GameControllerAxis::RIGHTX => return true; case => return false; }; }; -fn axis_y(axis: controller_axis) bool = { +fn axis_y(axis: SDL_GameControllerAxis) bool = { switch (axis) { - case controller_axis::LEFTY, controller_axis::RIGHTY => + case SDL_GameControllerAxis::LEFTY, SDL_GameControllerAxis::RIGHTY => return true; case => return false; }; }; -fn load_object(render: *sdl2::renderer, path: str) (object | sdl2::error) = { - const tex = image::load_texture(render, path)?; +fn load_object(render: *sdl2::SDL_Renderer, path: str) (object | sdl2::error) = { + const tex = image::IMG_LoadTexture(render, path)?; let w = 0, h = 0; - sdl2::query_texture(tex, null, null, &w, &h)?; + sdl2::SDL_QueryTexture(tex, null, null, &w, &h)?; return object { tex = tex, w = w, |
