#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include "igo.h"
#include "banx.h"
#include "kiffile.h"
#include "title.h"

int	judge_dialogId[2] = -1 ;
int	judge_backbuttonId = -1 ;
int	judge_buttonId[2] = -1 ;
int	judge_messageId[4] = -1 ;

/*	initDataMIJUDGE:judge_buttonId:MJ_BUTTONL40の呼び出し関数	*/
int	igo_judgechk(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
short int dx, dy;
short int shift;
int ichi;
int b_territory_number, w_territory_number;
int ban_number, kekka, w_num;
int komi_id, komi_number, hanmoku_id;
char kachi_chr[5];
static char judge_message[4][17];

	if(pev->what == EVMOSDN){
		dx = *((short *)&(pev->info));
		dy = *(((short *)&(pev->info)) + 1);
		shift = pev->shift;
	}

	ichi = disp_chk( dx, dy);
	switch (ichi){
	case -1: /* 盤外のにゅ力　*/
		return NOERR;
		break;
	case -2:
		return NOERR;
		break;
	default:
		if(shift & SLEFTBTN){
			kifu_judgeput(ichi, &b_territory_number, &w_territory_number);
		}else{
			return NOERR;
		}
		break;
	}

	sprintf(judge_message[0], "黒  %4d目%6s", b_territory_number, " ");
	MMI_SendMessage( judge_messageId[0], MM_SETMSG, 1, judge_message[0]);
	sprintf(judge_message[1], "白  %4d目%6s", w_territory_number, " ");
	MMI_SendMessage( judge_messageId[1], MM_SETMSG, 1, judge_message[1]);
	if((ban_number=(b_territory_number-w_territory_number))<0){
		ban_number*=(-1);
	}
	sprintf(judge_message[2], "盤面%4d目%6s", ban_number, " ");
	MMI_SendMessage( judge_messageId[2], MM_SETMSG, 1, judge_message[2]);
	
	title_komiread( &komi_id, &komi_number, &hanmoku_id);
	switch (komi_id){
		case 0:{
			if(hanmoku_id==0){
				kekka=2*(b_territory_number-w_territory_number-komi_number)-1;
			}else{
				kekka=2*(b_territory_number-w_territory_number-komi_number);
			}
			if(kekka>0){
				strcpy(kachi_chr, "黒");
			}else if(kekka<0){
				strcpy(kachi_chr, "白");
				kekka*=(-1);
			}
			break;
		}
		case 1:{
			if(hanmoku_id==0){
				kekka=2*(w_territory_number-b_territory_number-komi_number)-1;
			}else{
				kekka=2*(w_territory_number-b_territory_number-komi_number);
			}
			if(kekka>0){
				strcpy(kachi_chr, "白");
			}else if(kekka<0){
				strcpy(kachi_chr, "黒");
				kekka*=(-1);
			}
			break;
		}
		case 2:{
			kekka=2*(b_territory_number-w_territory_number);
			if(kekka>0){
				strcpy(kachi_chr, "黒");
			}else if(kekka<0){
				strcpy(kachi_chr, "白");
				kekka*=(-1);
			}
			break;
		}
	}
	if(kekka==0){
		sprintf(judge_message[3], "%-4s", "ジゴ");
	}else if(kekka==1){
		sprintf(judge_message[3], "%-4s半目勝ち", kachi_chr);
	}else if((w_num=kekka%2)==1){
		sprintf(judge_message[3], "%-4s%4d目半勝ち", kachi_chr, kekka/2);
	}else{
		sprintf(judge_message[3], "%-4s%4d目勝ち", kachi_chr, kekka/2);
	}
	MMI_SendMessage( judge_messageId[3], MM_SETMSG, 1, judge_message[3]);

	/*	オブジェクトを表示する	*/
	MMI_SendMessage( judge_dialogId[0] , MM_SHOW , 0 ) ; 

	return NOERR ;
}

/*	initDataMIJUDGE:judeg_buttonId[0]:MJ_DBUTTONL40の呼び出し関数	*/
int	igo_judgeset(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	/*	judge_dialogIdで示されるオブジェクトを消す		*/
	MMI_SendMessage( judge_dialogId[0] , MM_ERASE , 0 ) ;

	/*	オブジェクトをダイアログから取り外す	*/
	MMI_SendMessage( judge_dialogId[0] , MM_DETACH , 0 ) ;

	retunrInitMenuFunc();
	comment_dispFunc();

	return NOERR ;
}

/*	initDataMIJUDGE:judge_buttonId[1]:MJ_DBUTTONL40の呼び出し関数	*/
int	igo_judgecancel(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	/*	judge_dialogIdで示されるオブジェクトを消す		*/
	MMI_SendMessage( judge_dialogId[0] , MM_ERASE , 0 ) ;

	/*	オブジェクトをダイアログから取り外す	*/
	MMI_SendMessage( judge_dialogId[0] , MM_DETACH , 0 ) ;

	retunrInitMenuFunc();
	comment_dispFunc();

	return NOERR ;
}

