#include "bury.h"

int jiki_set(void)
{
	extern kyara jiki;
	static flg = FALSE;

	spr_set_view(JIKI);
	
	switch (jiki.mode) {
	case DEFAULT:
		 jiki.k_no = NORMAL;
		 return(OK);
	
	case BREAK:/*爆発エフェクトをした後、復帰モードへ*/
		 zanki_set();

		 if (bakuha(JIKI) == NG) {
			jiki.x = 224;
			jiki.y = 64;
			jiki.k_no = NORMAL;
			jiki.mode = FUKKI;
			jiki.timer = 20;
			/*自機のap（残機）が０になったらゲームオーバー*/
			if (jiki.ap == 0) {jiki.mode = END;}
		 }
		 break;
		
	case FUKKI:/*自機を画面に復帰させて無敵モードへ*/
		 jiki.x += 3;
		 if (tenmetu() == NG) {
			jiki.mode = MUTEKI;
			jiki.timer = 60;/*無敵時間*/
		 }
		 break;
		
	case MUTEKI:/*復帰した後は一定時間無敵。無敵時間が終わったら通常モードへ*/
		 jiki.k_no = NORMAL;
		 if (tenmetu() == NG) {
			jiki.mode = DEFAULT;
			jiki.timer = 15;
		 }
		 break;

	case END:/*終了*/
		 if (flg == FALSE) {
			wwc_text_put_string(118, 36, 15, 450, "GAME OVAR");
			jiki.timer = 50;
			flg = TURUE;
		 }

		 if (jiki.timer == 0) { if (key_press_check()) {return(NG);} }
		 else				  {jiki.timer--;}
		 break;

	default:
		 break;
	}
	
	spr_set_view(JIKI);
	return(OK);
}

void zanki_set(void)
{
	extern kyara jiki;
	int    i;

	for (i=1; i<5; i++) {
		if (i < jiki.ap) {sprite_set_char_location(ZANKI(i), (234 | CFM_SPR_UPPER | PALETTE(9)), 216, 0+i*8);}
		else			 {sprite_set_char(ZANKI(i), 0);}
	}
}
/*弾を表示させる*/
void tama_set(int _x, int _y, int s_y, int no)
{
	extern kyara2 tama[TAMA_KAZU];

	tama[no].x = _x;
	tama[no].y = _y;
	tama[no].timer = 0;
	tama[no].s_y = s_y;
	tama[no].mode = TURUE;
	sprite_set_char_location(tama[no].s_no, (TAMA  | CFM_SPR_UPPER | PALETTE(8)), tama[no].x, tama[no].y);
}

/*スプライトのセットと配置*/
void spr_set_view(int id)
{
	extern kyara  jiki;
	extern kyara  teki[TEKI_KAZU];
	extern kyara4 item;

	if		(id == JIKI){
		sprite_set_char_location(jiki.s_no  , (jiki.k_no   | CFM_SPR_UPPER | PALETTE(jiki.pal[0])), jiki.x  , jiki.y  );
		sprite_set_char_location(jiki.s_no+1, (jiki.k_no+1 | CFM_SPR_UPPER | PALETTE(jiki.pal[0])), jiki.x+8, jiki.y  );
		sprite_set_char_location(jiki.s_no+2, (jiki.k_no+2 | CFM_SPR_UPPER | PALETTE(jiki.pal[0])), jiki.x  , jiki.y+8);
		sprite_set_char_location(jiki.s_no+3, (jiki.k_no+3 | CFM_SPR_UPPER | PALETTE(jiki.pal[0])), jiki.x+8, jiki.y+8);
	}
	else if (id == ITEM) {
		sprite_set_char_location(item.s_no  , (item.k_no   | CFM_SPR_UPPER | PALETTE(14)), item.x  , item.y  );
		sprite_set_char_location(item.s_no+1, (item.k_no+1 | CFM_SPR_UPPER | PALETTE(14)), item.x+8, item.y  );
		sprite_set_char_location(item.s_no+2, (item.k_no+2 | CFM_SPR_UPPER | PALETTE(14)), item.x  , item.y+8);
		sprite_set_char_location(item.s_no+3, (item.k_no+3 | CFM_SPR_UPPER | PALETTE(14)), item.x+8, item.y+8);
	}
	else {
		sprite_set_char_location(teki[id].s_no  , (teki[id].k_no   | CFM_SPR_UPPER | PALETTE(teki[id].pal[0])), teki[id].x  , teki[id].y  );
		sprite_set_char_location(teki[id].s_no+1, (teki[id].k_no+1 | CFM_SPR_UPPER | PALETTE(teki[id].pal[0])), teki[id].x+8, teki[id].y  );
		sprite_set_char_location(teki[id].s_no+2, (teki[id].k_no+2 | CFM_SPR_UPPER | PALETTE(teki[id].pal[0])), teki[id].x  , teki[id].y+8);
		sprite_set_char_location(teki[id].s_no+3, (teki[id].k_no+3 | CFM_SPR_UPPER | PALETTE(teki[id].pal[0])), teki[id].x+8, teki[id].y+8);
	}
 }

/*パレット定義*/
void pal_set(void)
{
	/*パレットカラーデータ*/
	static unsigned tama_palette[16] = {
		0xfff, 0xf84, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
		0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000
	};
	static unsigned jiki_palette[16] = {
		0xfff, 0xbbf, 0xabe, 0x5af, 0x88e, 0x999, 0x777, 0x08f,
		0x66d, 0x55f, 0x555, 0x06c, 0x33f, 0x05a, 0x11d, 0x00f
	};
	static unsigned title_palette[16] = {
		0xfff, 0xeee, 0xddd, 0xccc, 0xaab, 0x99a, 0x889, 0x778, 
		0x668, 0x557, 0x445, 0x335, 0x225, 0x224, 0x113, 0x003
	};
	static unsigned bakuha_palette[16] = {
		0xfff, 0xfff, 0xfee, 0xfcc, 0xfaa, 0xf84, 0xf73, 0xf63, 
		0xf52, 0xf32, 0xf21, 0xf10, 0xf10, 0xf00, 0xf00, 0xf00
	};
	static unsigned hosi_palette[16] = {
		0xff0, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 
		0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000
	};
	static unsigned boss_palette[16] = {
		0xfff, 0xed9, 0xdb6, 0xeb3, 0x3f3, 0xca2, 0xa94, 0xb91, 
		0xa81, 0x888, 0x971, 0x3a3, 0x765, 0x861, 0x750, 0x430
	};
	static unsigned item_palette[16] = {
		0xfff, 0xff1, 0xdb7, 0x89f, 0x996, 0x0f0, 0x1a6, 0x55e, 
		0x112, 0x52b, 0x624, 0x155, 0x11a, 0x00e, 0x00c, 0x007
	};

	int i;
	/*白*/
	for (i=0; i<16; i++) {wwc_palette_set_color(15, i, 0x0fff);}
	/*弾の色*/
	for (i=0; i<16; i++) {wwc_palette_set_color( 8, i, tama_palette[i]);}
	/*自機の色*/
	for (i=0; i<16; i++) {wwc_palette_set_color( 9, i, jiki_palette[i]);}
	/*タイトルの色*/
	for (i=0; i<16; i++) {wwc_palette_set_color(10, i, title_palette[i]);}
	/*爆発の色*/
	for (i=0; i<16; i++) {wwc_palette_set_color(11, i, bakuha_palette[i]);}
	/*星の色*/
	for (i=0; i<16; i++) {wwc_palette_set_color(12, i, hosi_palette[i]);}
	/*ボスの色*/
	for (i=0; i<16; i++) {wwc_palette_set_color(13, i, boss_palette[i]);}
	/*アイテムの色*/
	for (i=0; i<16; i++) {wwc_palette_set_color(14, i, item_palette[i]);}
}