/***********************************************************************
*Copyright (c)2012 , 天际边工作室
*All rights reserved.
**
文件名称：	Who.cpp
*摘要：		君主选择类
**
*修改历史：
*	版本    日期     作者     改动内容和原因
*   ----------------------------------------------------
*	1.0    2012-10-5  wstjb     基本的功能完成
***********************************************************************/

#include "Who.h"
#include "PublicFun.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

extern  PAINTSTRUCT ps;
extern 	HDC hdc;
extern 	HBITMAP hbmp; 
extern 	HBITMAP hbmp2; 
extern 	BITMAP bmp;
extern 	HDC hdcMem;
extern 	HDC hdcTmp;
extern 	RECT rect;
extern 	HWND hwnd;
extern	int flag;
extern int color;

extern int KeyReturn;
extern int KeyEsc;
extern int KeyHome;
extern int KeySpace;
extern int KeyLeft0;
extern int KeyUp0;
extern int KeyRight0;
extern int KeyDown0;

/***********************************************************************
 * 说明:    Who类初始化函数
 * 输入参数: int uChoice——已选择的历史时期
 * 返回值  : 无
 * 功能	   : 初始化
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
***********************************************************************/
void Who::InitWho(int uChoice)
{
	wlogfile(1,__FUNCTION__,"开始",0);
	//gamemap=new GameMap();
	//menu=new Menu();
	ngb=0;
	choice=uChoice;
	switch(choice)
	{
	case DZNQ:
		menu.InitMenu(3,6,80,120,20,"Res\\1dznq_em.sss",0);
		break;
	case CCJQ:
		menu.InitMenu(3,6,80,120,20,"Res\\2ccjq_em.sss",0);
		break;
	case CBZZ:
		menu.InitMenu(3,6,80,120,20,"Res\\3cbzz_em.sss",0);
		break;
	case SGDL:
		menu.InitMenu(3,6,80,120,20,"Res\\4sgdl_em.sss",0);
		break;
	default:
		{
			char name[NORMALSTRLEN];
			sprintf_s(name,"Res\\period%d_em.sss",choice+1);
			menu.InitMenu(3,6,80,120,20,name,0);
		}
		break;
	}
	return;
}

/***********************************************************************
 * 说明:    Who类按键函数
 * 输入参数: WPARAM KeyCode——按键信息
 * 返回值  : 无
 * 功能	   : 处理按键信息
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
***********************************************************************/
int Who::KeyDown(WPARAM KeyCode)
{
	wlogfile(1,__FUNCTION__,"开始",0);
	if(ngb==1)
	{
		int rt=gamemap.KeyDown(KeyCode);
		if(rt==-1)
		{
			ngb=0;
			return -1;
		}
	}
	else
	{
		if(KeyCode==KeyEsc)
		{
			ngb=0;
			return -1;
		}
		flagwho=menu.KeyDown(KeyCode);
		Show();
		if(flagwho)
		{
			flag=4;
			ngb=1;
			gamemap.InitMap(menu.statb,choice);
			gamemap.Show(0);
			
		}
	}
	return 0;
}

/***********************************************************************
 * 说明:    Who类显示函数
 * 输入参数: 无
 * 返回值  : 无
 * 功能	   : 显示
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
***********************************************************************/
void Who::Show()
{
	wlogfile(1,__FUNCTION__,"开始",0);
		if(color==1)
		{
			ShowCG(0,"Res\\white.sbp",0,0);
		}
		else
		{
			ShowCG(0,"Res\\kuang.sbp");
		}
		ShowText(GetStrText("dChoseKing") ,370,80,50);
		ShowCG(0,"Res\\who.sbp",300,100);
		ShowCG(0,"Res\\cross.sbp",745,0);
		menu.Show(0);

		GameWorldRevlcd();
		

}

/***********************************************************************
 * 说明:    Who类反显函数
 * 输入参数: 无
 * 返回值  : 无
 * 功能	   : 用于对君主选择时右边地图对应的城池进行反显的操作
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
***********************************************************************/
void Who::GameWorldRevlcd()
{		
	wlogfile(1,__FUNCTION__,"开始",0);//char s[20];
		int cityown[1];
		int cityto[CITYMAX];
		int dataa[99];
		for (int y=0;y<CITYMAX;y++)cityto[y]=0;
		switch(choice)
		{
		case DZNQ:
			GetLine("Res//citytowho1.sdt",menu.statb,cityown,cityto);
			break;
		case CCJQ:
			GetLine("Res//citytowho2.sdt",menu.statb,cityown,cityto);
			break;
		case CBZZ:
			GetLine("Res//citytowho3.sdt",menu.statb,cityown,cityto);
			
			break;
		case SGDL:
			GetLine("Res//citytowho4.sdt",menu.statb,cityown,cityto);
			break;
		default:
			{
				char name[NORMALSTRLEN];
				sprintf_s(name,"Res\\citytowho%d.sdt",choice+1);
				GetLine(name,menu.statb,cityown,cityto);
			}
			break;
		}	
		GetStore("Res//who.sdt",dataa);
		//InvalidateRect(hwnd,&rect,false);
		//sprintf_s(s,"%da%db%dc%d",cityown[0],cityto[0],cityto[1],cityto[2]);
		//TextOut(hdc,100,100,s,sizeof(s));
		//Delay(1000);
		//InvalidateRect(hwnd,&rect,false);
		
		//hbmp2 = (HBITMAP)LoadImage(NULL, "Res\\who.sbp", IMAGE_BITMAP,0,0, LR_LOADFROMFILE);
		//SelectObject(hdcMem, hbmp);
		//BitBlt(hdcTmp, 300, 150, 800, 480, hdcMem, 0, 0, SRCCOPY);
		
		for(int k=0;k<cityown[0];k++)
		{
			//ShowCG(0,"Res\\who.sbp",300,100);
			OverflowCheck(__FILE__,__LINE__,99,cityto[k]*2-2);
			OverflowCheck(__FILE__,__LINE__,99,cityto[k]*2-1);
			BitBlt(hdcTmp,dataa[cityto[k]*2-2]+2,dataa[cityto[k]*2-1]-2,10,10,hdcTmp,0,0,BLACKNESS);
			
			//BitBlt(hdcTmp,dataa[cityto[k]*2-2],dataa[cityto[k]*2-1],10,10,hdc,dataa[cityto[k]*2-2],dataa[cityto[k]*2-1],SRCCOPY);
			//sprintf_s(s,"%dqqq%d",dataa[cityto[k]*2-1],dataa[cityto[k]*2-2]);
			//TextOut(hdc,100,100,s,sizeof(s));
			//Delay(1000);
			//InvalidateRect(hwnd,&rect,false);
		}
		//BitBlt(hdc,0,0,800,600,hdcTmp,0,0,SRCCOPY);
		//InvalidateRect(hwnd,NULL,false);

		/*for(int e=0;e<cityown[0];e++)
		{
			

			BitBlt(hdcTmp,dataa[cityto[e]*2-2],dataa[cityto[e]*2-1],10,10,hdcTmp,0,0,WHITENESS);
		}*/
		//Delay(5000);
		//GameRevlcd(x0,y0,x1,y1);
}


