/*****************************************************************************/
/* メニュー座標ファイル書き出し：V3.0					     */
/*****************************************************************************/

#include <stdio.h>
#include <string.h>
#include "defines.h"
#include "aig.h"

/* Version 3 構造 */
/* ヘッダー バージョン サイズ ヘルプ座標 xx yy */

/*****************************************************************************/

int save_xy(unchar *path,int ver,int xx[],int yy[],int size)
{
FILE *fp;
unchar drv[MAXDRIVE],dir[MAXDIR],fname[MAXFILE];
unchar xyfile[MAXPATH],*fmode="w+b";
unchar verxy[MAXPATH];
int x=-1;
	strsfn2(path,drv,dir,fname,verxy);
	strmfn(xyfile,drv,dir,fname,"XY");
	
	/* (1) 新規かどうかのチェック */
	fp=fopen(xyfile,"rb");
	while (fp!=NULL) { /* 既存のものがある */
		sprintf2(verxy,XYMES,fname,ver);
		fgets(dir,MAXDIR,fp);
		if (strcmpi(dir,verxy)) break; /* 識別子不一致 -> 新規作成 */
		/* 識別子は一致した */
		if (fgetc(fp)!=XYVER) break; /* ファイル構造バージョン不一致 -> 新規作成 */
		/* ファイル構造バージョンも一致した */
		fclose(fp);
		/* 既存修正 */
		x=0;
		fmode="r+b";
		break;
	}
	/* x=-1:新規作成である , x=0:既存修正 */
	
	fp=fopen(xyfile,fmode);
	if (fp==NULL) return(1);
	
	/* 識別子書き出し */
	sprintf2(verxy,XYMES,fname,ver);
	strupr(verxy); /* 大文字化 */
	fputs(verxy,fp);
	
	/* バージョン書き出し */
	fputc(XYVER,fp); /* V2.0 : file version */
	
	/* サイズ書き出し */
	fwrite(&size,sizeof(int),1,fp); /* V2.0 : size write */
	
	/* V3.0 : ヘルプ座標書き出し */
	if (x==-1) { /* 初期値 */
		fwrite(&x,sizeof(int),1,fp); /* x */
		fwrite(&x,sizeof(int),1,fp); /* y */
	} else { /* ヘルプ座標飛ばし */
		/* ヘルプ座標はsave_help_xy()が書き込み、メインが書き込むこと無い */
		fseek(fp,sizeof(int)*2,SEEK_CUR);
	}
	
	/* 座標書き出し */
	fwrite(xx,size,1,fp);
	fwrite(yy,size,1,fp);
	
	fclose(fp);
	return(0);
}

/*****************************************************************************/
