#!/usr/local/bin/cz --

# hax0gen

# public domain code
# by Sam Watkins <sam@nipl.net>

use b

struct ship_t:
	int x
	int y
	int vx
	int vy

ship_t ship = { 0, 0, 0, 0 }

Paint_vsync()
	local num t1, t2 = 0, t3, t4, iv_paint = 0, iv_frame = 1/60.0
	if !framebuffer_fd:
		framebuffer_init()
	t1 = rtime()
	asleep(t2 + iv_frame - 0.0008 - iv_paint - t1)
	t3 = rtime()
	Paint()
	t4 = rtime()
	iv_paint = t4 - t3
#	pr(num, iv_paint)
	wait_for_vsync()
	t2 = rtime()

Main()
	fbdev_fd = open(fbdev_name, O_RDWR)
	if fbdev_fd == -1:
		error("could not open fbdev")

	space()

	int k_left = XKeysymToKeycode(display, XK_Left) - key_first
	int k_right = XKeysymToKeycode(display, XK_Right) - key_first
	int k_up = XKeysymToKeycode(display, XK_Up) - key_first
	int k_down = XKeysymToKeycode(display, XK_Down) - key_first

	repeat:
		clear()
		white()
		circle_fill(ship.x, ship.y, 100)
		blue()
		circle_fill(ship.x, ship.y, 80)
		ship.x += ship.vx
		ship.y += ship.vy
#		csleep(1.0/60.0)
		Paint_vsync()

#		for(i, 0, gr_n_keys):
#			if key_down[i]:
#				fprintf(stderr, "%d,%d ", i, key_down[i])
#		nl(stderr)

		if key_down[k_left]:
			ship.vx -= 1
		eif key_down[k_right]:
			ship.vx += 1
		eif key_down[k_down]:
			ship.vy -= 1
		eif key_down[k_up]:
			ship.vy += 1

	framebuffer_final()
