aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cmd/demo/main.ha110
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,