#include <stdio.h>
#include "input.h"
#include "main.h"
#include "game.h"
#include "man.xpm"

#define JDIV 4

void Game::init(Main *m)
{
	main = m;
	x = 100;
	y = 100;
	dx = dy = 0;
	img = main->win.LoadImage(man_xpm);
}

void Game::draw()
{
	char buf[32];

	x += dx;
	y += dy;
	if (x<20) x = 20;
	if (x>WINDOW_WIDTH-60) x = WINDOW_WIDTH-60;
	if (y<20) y = 20;
	if (y>WINDOW_HEIGHT-60) y = WINDOW_HEIGHT-60;

	sprintf(buf, "%d, %d", x, y);
	main->win.FillRectangle(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, "#00ff00");
	main->win.DrawText(20, 20, buf, "#0000ff", FONT_SMALL);

	sprintf(buf, "%d, %d  %d, %d", x, y, jx, jy);
	main->win.DrawText(20, 20, buf, "#0000ff", FONT_SMALL);
	sprintf(buf, "Button 1 %s", jb & 1 ? "pressed" : "released");
	main->win.DrawText(20, 40, buf, "#0000ff", FONT_SMALL);
	sprintf(buf, "Button 2 %s", jb & 2 ? "pressed" : "released");
	main->win.DrawText(20, 60, buf, "#0000ff", FONT_SMALL);
	sprintf(buf, "Buttons 0x%04x", jb );
	main->win.DrawText(20, 80, buf, "#0000ff", FONT_SMALL);
	main->win.DrawImage(x, y, img);
	main->win.DrawWindow();
}

void Game::ProcessKey(int key, int action)
{
	if (action == KEY_PRESSED)
	{
		if (key == KEY_LEFT) { dx=-5; dy=0; } else
		if (key == KEY_RIGHT) { dx=5; dy=0; } else
		if (key == KEY_UP) { dy=-5; dx=0; } else
		if (key == KEY_DOWN)  { dy=5; dx=0; } else
		if (key == KEY_Q) main->quit = 1;
	}else
	if (action == KEY_RELEASED)
	{
		if ((key == KEY_LEFT) || (key == KEY_RIGHT)) dx=0; else
		if ((key == KEY_UP) || (key == KEY_DOWN)) dy=0;
	}
}

void Game::ProcessMouse(int button, int action, int x, int y)
{
}

void Game::ProcessJoystick(int x, int y, int buttons)
{
	jx = x;
	jy = y;
	jb = buttons;

	dx = (jx-128)/JDIV;
	dy = (jy-128)/JDIV;

	/* Press button 1 while move to upper left corner */
	if (buttons & 1 == (x | y))
		main->quit = 1;
}

