//DISSIDIA UPEO FINAL FANTASY 3
//DISSIDIA UPEO FINAL FANTASY 3とは？
//DISSIDIA UPEO FINAL FANTASY 2の続編であり、
//DISSIDIA UPEO FINAL FANTASY 2の後の新名たちを描いた物語であり、
//中学で起きた実話を元にして作られています。
//新名サイドの視点の為、実際の事実と異なる場合もあります。
/*
時間軸：
	DISSIDIA UPEO FINAL FANTASY(無印)　-- 2009/3 ～ 2009/7
	DISSIDIA UPEO FINAL FANTASY 2	   -- 2009/3 ～ 2010/1
	DISSIDIA UPEO FINAL FANTASY 3	   -- 2010/2 ～ 2010/6
 */
//ストーリー・敵の名前などを晒すといろいろとまずいので勘弁してください＞＜
//作成：新名　哲成

//標準ライブラリ	
#include <stdio.h>
#include <stdlib.h>
#include <string>

//関数のプロトタイプ宣言
void Conversation(char[]);
void Battle(int,int);
void Conversation(char[]);
void Lines(int,char[]);

char Line1[64];
char Line2[64];

typedef struct Member{
	int Lv;
	char Name[64];
	char Job[32];
	int HP;
	int MP;
	int AP;
	int GP;
	int SpAP;
	int SpGP;
	int Magic;
};

Member Members[100]={
	1,"新名～満足～"		,"中学１年生"		,	100,  100, 10, 10, 10, 10,10,
	1,"新名～精神破滅～"	,"中学２年生"		,	 50,   50,  5,  5,  5,  5, 5,
};

/***********************************************************
    Function name : 文字列整形関数
    Syntax        : void Conversation(char Words[64])
    Arguments     : char Words[64]
    Return        : なし
    Version       : 1.20
    Date          : 2012/2/2
    Author        : 新名
    Comment       : 64文字未満の文字列の整形表示
************************************************************/

void Conversation(char Words[64]){
	/*TranscriptionWords = TrWords*/
	char TrWords[64];
	int i=0;

	strcpy(TrWords,Words);

	do{
		++i;
		if(TrWords[i]=='\0'){
			for(;i<=62;++i){
				TrWords[i]=' ';
			}
			TrWords[63]='\0';
		}
	}while(TrWords[i]!='\0');

	printf("[[%s]]▽",TrWords);
	getchar();
}

void Battle(int PlayerNum,int EnemyNum){
	int i;
	int NameSize = strlen(Members[PlayerNum].Name);

	printf("%sが勝負を仕掛けてきた！！\n",Members[EnemyNum].Name);

	Lines(NameSize,Line1);
	Lines(NameSize,Line2);

	while(1){
		getchar();
		system("cls");
		printf("-----%sのステータス------     -----%sのステータス-----\n",Members[PlayerNum].Name,Members[EnemyNum].Name);
		printf("|レベル	:%25d|     |レベル	   :%25d|\n",Members[PlayerNum].Lv,Members[EnemyNum].Lv);
		printf("|Job	:%25s|     |Job	   :%25s|\n",Members[PlayerNum].Job,Members[EnemyNum].Job);
		printf("|HP     :%25d|     |HP        :%25d|\n",Members[PlayerNum].HP,Members[EnemyNum].HP);
		printf("|MP     :%25d|     |MP        :%25d|\n",Members[PlayerNum].MP,Members[EnemyNum].HP);
		printf("|AP     :%25d|     |AP        :%25d|\n",Members[PlayerNum].AP,Members[EnemyNum].AP);
		printf("|GP     :%25d|     |GP        :%25d|\n",Members[PlayerNum].GP,Members[EnemyNum].GP);
		printf("|SpAP	:%25d|     |SpAP	   :%25d|\n",Members[PlayerNum].SpAP,Members[EnemyNum].SpAP);
		printf("|SpGP	:%25d|     |SpGP	   :%25d|\n",Members[PlayerNum].SpGP,Members[EnemyNum].SpGP);
		printf("-----%s-----------------     -----%s--------------------\n",Line1,Line2);
	}
}

void Lines(int NameSize,char Line[64]){
	int i;
	
	for(i=0;i<=NameSize;++i)	
		Line[i]='-';
	Line[i+1]='\0';
}

/***********************************************************
    Function name : メイン関数
    Syntax        : int main(void)
    Arguments     : なし
    Return        : 0
    Version       : 1.00
    Date          : 
    Author        : 新名
************************************************************/
int main(void)
{
	while(1){
		int Selection=0;
		int i;
		int SizeCount;

		printf("モードを選んでください。\n");
		printf("1:ストーリーモード、2:バトルモード\n");
		scanf("%d",&Selection);

		if(Selection==1){

		}else if(Selection==2){
			int PlayerNum=-1;
			int EnemyNum=-1;

			printf("キャラクタを選択してください。\n");

			for(SizeCount=0;Members[SizeCount].Lv!=0;++SizeCount);

			for(i=0;i<SizeCount;++i){
				printf("%d:%s\n",i,Members[i].Name);
			}

			
			while(PlayerNum==-1){
				printf(">");
				scanf("%d",&PlayerNum);
			}
			system("cls");

			printf("敵キャラクタを選択してください。\n");
			
			for(i=0;i<SizeCount;++i){
				if(i != PlayerNum)
					printf("%d:%s\n",i,Members[i].Name);
			}

			while(EnemyNum==-1){
				printf(">");
				scanf("%d",&EnemyNum);
			}

			system("cls");

			Battle(PlayerNum,EnemyNum);
		}
	}
	return 0;
}
