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

#include "SceneObj.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 color;
extern  int flag;

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

extern byte resByte[2731][16384];//存储lib资源
extern int resByteLen[2731];
extern int resPos[2731][6];//存储lib地址和编号 第六位为长度
extern int resCount;

int SceneObj::PubInit(int idx)
{
	int resnum = GetResNum(RES_ARS,4,idx);
	if(resnum == -1)return -1;
	this->no = idx;//编号
	//角色类型 编号 脚本 动作 图片 00 00 ff ff 姓名（6） 图片 魔法链
	step = resByte[resnum][2];//脚步
	action = resByte[resnum][3];//动作 
	picno = resByte[resnum][22];//图片

	for(int i = 0 ;i<12;i++)
	{
		if(resByte[resnum][i+9] == 255)//20210629
		{
			break;
		}
		name[i]= resByte[resnum][i+9];
	}
	magiclist = resByte[resnum][4];//魔法链 
	return 0;
}

/***********************************************************************
 * 说明:     SceneObj类初始化函数
 * 输入参数: int num——用于设定君主等信息，由君主选择传值过来
 * 返回值  : 无
 * 功能	   : 初始化
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
***********************************************************************/
void SceneObj::Init(int num,int x,int y)
{
	this->x = x;
	this->y = y;
	if(num!=-1)this->picnum = 0;
	steptmp = 0;
	if(num!=-1)this->roleId = num;
}

/***********************************************************************
 * 说明:     SceneObj类显示函数
 * 输入参数: WPARAM KeyCode——按键信息，用于控制地图移动与对应的显示
 * 返回值  : 无
 * 功能	   : 显示地图及相关界面
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
***********************************************************************/
void SceneObj::Show(WPARAM KeyCode)
{
	//if(x < 0 || x> 8)return;
	if(x > 8)return;
	if(x < -8)return;//20210911
	ShowRolePic(0,4,picno,x*16+8,y*16,picnum);
	if(KeyCode == -1)
	{
		CopyToHdc();
	}
}

/***********************************************************************
 * 说明:     SceneObj类按键函数
 * 输入参数: WPARAM KeyCode——按键信息，用于确定当前的城市
 * 返回值  : 无
 * 功能	   : 处理当前类的按键信息
 * 修改历史:
 *               姓名            日期             说明
 *             ------          ----------      -------------
 *             wstjb          2012-10-5       完成基本功能
 *			   wstjb			2012-10-20		增加功能
***********************************************************************/
int SceneObj::KeyDown(WPARAM KeyCode)
{
	int maxPic = GetMaxPicNumber(RES_ACP,4,picno);
	//if(picnum == 0&& maxPic>1 )picnum = 1;//20160228修正//20210829取消
	return 0;
}

void SceneObj::SetStep(int inFaceto,int inStep)
{
	//faceto = inFaceto;
	//step = inStep;
	picnum = inFaceto * 3 + inStep;
	Show(0);

}

void SceneObj::Move()
{
	
	if(action != 0)//只换图片
	{
		int maxPic = GetMaxPicNumber(RES_ACP,4,picno);//20170820修正no为picno
		picnum ++;
		if(picnum >= maxPic)picnum = 0;//循环//20170820修正=为>=
	}
	

}
