#include "color32.h"
#include "error.h"
#include "gamepad.h"
#include "gsa_map.h"
#include "gsa_text.h"
#include "skip.h"
#include "str.h"
#include <gsa.h>

sw_color32 pal[GSA_PALETTE_SIZE];

void fade_palette(f32 amount) {
	i32 i;

	for(i = 0; i < GSA_PALETTE_SIZE; ++i) {
		palette[i] = sw_color32_mix(SW_COLOR32_BLACK, pal[i], amount);
	}
}

bool tick_fade_in();

void init() {
	i32 x, y;

	gsa_copy_palette_to(pal);

	for(y = 0; y < 11; ++y) {
		for(x = 0; x < 19; ++x) {
			maps[0].tiles[x][y] = 0x1000;
		}
	}

	for(y = 0; y < 11; y += 2) {
		maps[0].tiles[0][y] = 0x1101;
		maps[0].tiles[1][y] = 0x1102;
		maps[0].tiles[0][y + 1] = 0x1201;
		maps[0].tiles[1][y + 1] = 0x1202;

		maps[0].tiles[17][y] = 0x1101;
		maps[0].tiles[18][y] = 0x1102;
		maps[0].tiles[17][y + 1] = 0x1201;
		maps[0].tiles[18][y + 1] = 0x1202;
	}

	maps[1].half_tile = true;
	font = 0x1010;
	gsa_write_text(1, 7, 3, "Game Skunk Advance!!! <3");
	gsa_run_loop(tick_fade_in);
}

void tick() {
	maps[0].scrollx -= input.x_dir;
	maps[0].scrolly -= input.y_dir;
}

bool tick_fade_in() {
	static i32 t = 0;

	fade_palette(t / 60.f);
	++t;
	return t <= 60;
}
