#define DEBUG 0
/* 
	TOWNS囲碁棋譜記録プログラム
	                                      1992/02/25  久保田俊也

	91/02/25  kiftitle モジュールを本体より分離 
				kifu_titleデ−タを操作する関数の集まり 

*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "igo.h"
#include "banx.h"
#include "kiffile.h"
#include "title.h"
#define SPACE20 "                    "

char *my_itowazenkaku(int x);

YMDHM	ZERO_TIME = { 0, 0, 0, 0, 0};
KIF_TITLE kif_title;
static char save_fname[84];
static int save_state= 0;
static int save_flg= 0;

int title_init()
{

/*	kif_title.ver = 2;	 93/3/1 変更 */
	kif_title.ver = 3;	/* 93/7/8 変更 */
	kif_title.handy = 0;
	strcpy( kif_title.player_black , SPACE20);
	strcpy( kif_title.player_white , SPACE20);
	strcpy( kif_title.play_space , SPACE20);
	kif_title.play_start = ZERO_TIME;
	kif_title.play_end = ZERO_TIME;
	kif_title.komi_id = -1;
	kif_title.komi_number = -1;
	kif_title.hanmoku_id = -1;
	kif_title.vicdef_id = -1;
	kif_title.vicdef_number = 0;
	save_fname[0] = '\0';

	return 0;
}

int title_blacknameset(char *blackname)
{

	if(strlen(blackname) >= 21){
		return -1;
	}
	strcpy( kif_title.player_black, blackname);
	return 0;
}

int title_blacknameread(char *blackname)
{
	kif_title.player_black[20] = '\0';
	strcpy( blackname, kif_title.player_black);
	return 0;
}

int title_whitenameset(char *whitename)
{

	if(strlen(whitename) >= 21){
		return -1;
	}
	strcpy( kif_title.player_white, whitename);
	return 0;
}

int title_whitenameread(char *whitename)
{

	kif_title.player_white[20] = '\0';
	strcpy( whitename, kif_title.player_white);
	return 0;
}

int title_playspaceset(char *play_space)
{

	if(strlen(play_space) >= 21){
		return -1;
	}
	strcpy( kif_title.play_space, play_space);
	return 0;
}

int title_playspaceread(char *play_space)
{

	kif_title.play_space[20] = '\0';
	strcpy( play_space, kif_title.play_space);
	return 0;
}

int title_komiset(int komi_id, int komi_number, int hanmoku_id)
{

	kif_title.komi_id = komi_id;
	kif_title.komi_number = komi_number;
	kif_title.hanmoku_id = hanmoku_id;
	return 0;
}

int title_komiread(int *komi_id, int *komi_number, int *hanmoku_id)
{

	*komi_id = kif_title.komi_id;
	*komi_number = kif_title.komi_number;
	*hanmoku_id = kif_title.hanmoku_id;
	return 0;
}

int title_issueset(int vicdef_id, int vicdef_number)
{

	kif_title.vicdef_id = vicdef_id;
	kif_title.vicdef_number = vicdef_number;
	return 0;
}

int title_issueread(int *vicdef_id, int *vicdef_number)
{

	*vicdef_id = kif_title.vicdef_id;
	*vicdef_number = kif_title.vicdef_number;
	return 0;
}

int title_playstart_time_set(YMDHM play_start)
{

	kif_title.play_start = play_start;
	return 0;
}

YMDHM *title_playstart_time_read()
{
	
	return &(kif_title.play_start);
}

int title_playend_time_set(YMDHM play_end)
{

	kif_title.play_end = play_end;
	return 0;
}

YMDHM *title_playend_time_read()
{
	return &(kif_title.play_end);

}

int title_handy_set(int handy)
{

	kif_title.handy = handy;
	return 0;
}

int title_handy_read()
{
	return kif_title.handy;

}

/* handy は特殊な形でファイルに格納されている
   置き石を int の正の数で返す 
 */
int title_handy_int_read()
{
int	i;

	switch(kif_title.handy){
		case '2' + 0: i = 2; break;
		case '2' + 1: i = 3; break;
		case '2' + 2: i = 4; break;
		case '2' + 3: i = 5; break;
		case '2' + 4: i = 6; break;
		case '2' + 5: i = 7; break;
		case '2' + 6: i = 8; break;
		case '2' + 7: i = 9; break;
		case '2' + 8: i = 3; break;

		default:	  i = 1; break;
	}

	return i;

}
char *title_handy_wazenkaku_read()
{
int	i;

	switch(kif_title.handy){
		case '2' + 0: i = 2; break;
		case '2' + 1: i = 3; break;
		case '2' + 2: i = 4; break;
		case '2' + 3: i = 5; break;
		case '2' + 4: i = 6; break;
		case '2' + 5: i = 7; break;
		case '2' + 6: i = 8; break;
		case '2' + 7: i = 9; break;
		case '2' + 8: i = 3; break;

		default:	  i = 3; break;
	}

	return my_itowazenkaku(i);

}

int title_tenumber_set(int tenumber)
{

	if(0<tenumber && tenumber<9999){
		kif_title.te_number = tenumber;
		return 0;
	}else{
		return 1;
	}
}

int title_tenumber_read()
{
	return kif_title.te_number;

}
int title_ver_read()
{
	return kif_title.ver;

}

int title_bantype_set( BAN_TYPE ban_type)
{
	kif_title.ban_type = ban_type;
	return 0;

}

BAN_TYPE *title_bantype_read()
{
	return &kif_title.ban_type;

}

int title_fname_set( char fname[])
{
int i;

	for(i=0;fname[i]!='\0' && i<80;i++){
		save_fname[i] = toupper(fname[i]);
	}
	save_fname[i]='\0';
	if( strstr( save_fname, ".KIF") == NULL ){
		strcat( save_fname, ".KIF");
	}
	return 0;
}

char *title_fname_read()
{
	return save_fname;
}

char *title_short_fname_read()
{
static char *s_char;

	/* 漢字について現在考慮していない */
	s_char = strrchr( save_fname, '\\');
	if((int *)s_char == NULL){
		return save_fname;
	}
	s_char++;
	if(strlen(s_char)<13){
		return s_char;
	}else{
		save_fname[0] = '\0';
		return save_fname;
	}
}

int title_fname_clear()
{
	save_fname[0] = '\0';
	return 0;
}

int title_state_set( int state)
{

	save_state= state;
	return 0;
}

int title_state_read()
{
	return save_state;
}

int title_fsave_on()
{

	save_flg = ON;

	return 0;
}

int title_fsave_off()
{

	save_flg = OFF;

	return 0;
}

int title_fsave_read()
{
	return save_flg;
}

