aboutsummaryrefslogtreecommitdiff
path: root/main.ha
diff options
context:
space:
mode:
Diffstat (limited to 'main.ha')
-rw-r--r--main.ha101
1 files changed, 0 insertions, 101 deletions
diff --git a/main.ha b/main.ha
deleted file mode 100644
index 09fd30f..0000000
--- a/main.ha
+++ /dev/null
@@ -1,101 +0,0 @@
-use fmt;
-use sdl2;
-use math;
-
-def CHUNKSIZE = 512;
-def NCHUNKS = 4;
-
-export fn main() void = {
- sdl2::SDL_Init(sdl2::SDL_INIT_VIDEO)!;
- defer sdl2::SDL_Quit();
-
- const win = sdl2::SDL_CreateWindow("hi", sdl2::SDL_WINDOWPOS_UNDEFINED, sdl2::SDL_WINDOWPOS_UNDEFINED, 640, 480, sdl2::SDL_WindowFlags::NONE)!;
- defer sdl2::SDL_DestroyWindow(win);
-
- const wsurf = sdl2::SDL_GetWindowSurface(win)!;
-
- const offs: [_]pos = [
- (0,0), (0,CHUNKSIZE), (CHUNKSIZE,0), (CHUNKSIZE,CHUNKSIZE),
- ];
-
- let pictures: []picture = alloc([],NCHUNKS);
- for (let i = 0z; i < NCHUNKS; i +=1){
- const surf = sdl2::SDL_CreateRGBSurface(0,
- CHUNKSIZE, CHUNKSIZE, 32, 0xff0000, 0xff00, 0xff, 0)!;
- append(pictures, picture_from_surface(surf, offs[i]));
- };
-
- let dstate = drawing_state {
- drawing = false,
- pos = (0,0),
- pictures = pictures,
- };
-
- let camera_pos: pos = (25, 50);
-
- for (let i = 0z; i < 4; i += 1) {
- const p = &dstate.pictures[i];
- clear_picture(p, 0xffffff);
- outline_picture(p);
- };
-
- let quit = false;
- let n = 0;
- let lasttime = sdl2::SDL_GetTicks();
- for (!quit) {
- let ev = sdl2::event { ... };
- for (sdl2::SDL_PollEvent(&ev)! == 1) switch (ev.event_type) {
- case sdl2::SDL_EventType::QUIT => quit = true;
- case sdl2::SDL_EventType::KEYDOWN =>
- const keysym = ev.key.keysym.sym;
- if (keysym == sdl2::SDL_Keycode::ESCAPE) quit = true;
- case sdl2::SDL_EventType::MOUSEBUTTONDOWN,
- sdl2::SDL_EventType::MOUSEBUTTONUP =>
- const edata = ev.button;
- dstate.pos = (edata.x + camera_pos.0, edata.y + camera_pos.1);
- if (edata.button == 1)
- dstate.drawing = (edata.state == 1);
- case sdl2::SDL_EventType::MOUSEMOTION =>
- const edata = ev.motion;
- dstate.pos = (edata.x + camera_pos.0, edata.y + camera_pos.1);
- case => void;
- };
-
- movement(&camera_pos);
- do_drawing(&dstate);
-
- for (let i = 0z; i < len(dstate.pictures); i+=1)
- render_picture(&dstate.pictures[i], wsurf, camera_pos);
-
- sdl2::SDL_UpdateWindowSurface(win)!;
- n += 1;
- sdl2::SDL_Delay(1000/60);
- };
-};
-
-fn render_picture(pic: *picture, winsurf: *sdl2::SDL_Surface, camera_pos: pos) void = {
- sdl2::SDL_BlitSurface(pic.surf, null, winsurf, &sdl2::SDL_Rect{
- x = pic.pos.0 - camera_pos.0, y = pic.pos.1 - camera_pos.1, ...
- })!;
-};
-
-
-def SPEED = 17;
-def DIAG_SPEED = 12; // thereabouts
-
-fn movement(pos: *pos) void = {
- const kb = sdl2::SDL_GetKeyboardState();
- let dx = 0;
- let dy = 0;
- if (kb[sdl2::SDL_Scancode::W]) dy -= 1;
- if (kb[sdl2::SDL_Scancode::S]) dy += 1;
- if (kb[sdl2::SDL_Scancode::A]) dx -= 1;
- if (kb[sdl2::SDL_Scancode::D]) dx += 1;
-
- let speed = SPEED;
- if (dx != 0 && dy != 0) speed = DIAG_SPEED;
-
- pos.0 += dx * speed;
- pos.1 += dy * speed;
-};
-