亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? role.cpp

?? 成熟的RPG引擎,Flysky發(fā)布. 斜視角引擎.
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//#include "CRole.h" //角色Role
#include "../GameH.h"
#include "../GameLib/CIni.h"
//=========================================================================
//					實(shí)現(xiàn)部分 Flysky
//=========================================================================
//構(gòu)造/析構(gòu) 函數(shù)
POINT CRole::getPY() //獲取偏移
{
POINT tp;
tp.x=PX;
tp.y=PY;
return tp;
}

CRole::CRole(CMap &cm) //made
{
	Map=(CMap *)&cm; //指針
	PX=int(0.5*(ScreenHeight-(TileHeight>>1)+(ScreenWidth>>1)-(TileWidth>>1))/(TileWidth>>1)); //主角一的坐標(biāo)與地圖的偏移
	PY=int(0.5*(ScreenHeight-(ScreenWidth>>1))/(TileWidth>>1));
	Map->MapStartX=-PX;Map->MapStartY=-PY;
	PRole=0;
	if (!rl.empty()){rl.clear();}
	if (!actor.empty()){actor.clear();}
	if (!npc.empty()){npc.clear();}
}

CRole::CRole(CMap &cm,char *FileName)
{
	Map=(CMap *)&cm; //指針
	PX=int(0.5*(ScreenHeight-(TileHeight>>1)+(ScreenWidth>>1)-(TileWidth>>1))/(TileWidth>>1)); //主角一的坐標(biāo)與地圖的偏移
	PY=int(0.5*(ScreenHeight-(ScreenWidth>>1))/(TileWidth>>1));
	Map->MapStartX=-PX;Map->MapStartY=-PY;
	PRole=0;
	LoadRoleIni(FileName);
	if (!rl.empty()){rl.clear();}
	if (!actor.empty()){actor.clear();}
	if (!npc.empty()){npc.clear();}
}

CRole::~CRole() //釋放函數(shù)
{
   	Map=NULL; //空指針
	if (!rl.empty())
	{ 
		for(int i=0;i<int(rl.size());i++)
		{
			if (rl[i].lpDDS_ROLEL!=NULL) {rl[i].lpDDS_ROLEL->Release();rl[i].lpDDS_ROLEL=NULL;}
			if (rl[i].lpDDS_ROLEP!=NULL) {rl[i].lpDDS_ROLEP->Release();rl[i].lpDDS_ROLEP=NULL;}
		}
		rl.clear();
	}
	if (!actor.empty()){actor.clear();}
	if (!npc.empty()){npc.clear();} //釋放
}

void CRole::LoadRoleIni(char *FileName){if (FileName!=NULL) {strcpy(IniFileName,FileName);}} //讀取INI

//索引表部分

int CRole::TableAdd(stFindTable sf) //插入索引表
{
	//二分找表法
	//ByFlysky
	if (!RlFind.empty())
	{
		//12
		//_2_____1___________
		//|13|15|17|19|21|23|
		//|__|__|__|__|__|__|
		int i=int(RlFind.size());
		POINT tp={0,i}; //X是從 Y是到
		while(tp.x<tp.y) //如果小于兩個(gè)
		{
			i=int((tp.x+tp.y)>>1); //除以二
			if (sf.value<RlFind[i].value) tp.y=i-1; //減1
			else if (sf.value>RlFind[i].value) tp.x=i+1; //加一
			else if (sf.value==RlFind[i].value)
			{
				if (RlFind[i].ID!=sf.ID)
				{
					tp.x=i; //X等
					tp.y=i;  //Y等
				}
				else RlFind.erase(RlFind.begin()+i); //刪除這個(gè)
			}
		}
		if (tp.x==tp.y)	
		{
		RlFind.insert(RlFind.begin()+tp.x,sf); //插入數(shù)據(jù)
		return tp.x;
		}
		return -1;
	}
	RlFind.push_back(sf); //OK
	return int(RlFind.size());
}

int CRole::FindDataT(int Value)
{
 int Ret=-1;
 int i=int(RlFind.size());
 POINT tp={0,i}; //X是從 Y是到
 while(tp.x<=tp.y) //如果小于兩個(gè)
 {
	i=int((tp.x+tp.y)>>1); //除以二
	if (Value<RlFind[i].value) tp.y=i-1; //減1
	else if (Value>RlFind[i].value) tp.x=i+1; //加一
	else if (Value==RlFind[i].value)
	{
		Ret=RlFind[i].ID;
	}
 }
 return Ret;
}
vector<int> CRole::FindDataTV(int Value)//返回一個(gè)容器
{
	vector<int> tmp;
	int i=int(RlFind.size());
	POINT tp={0,i}; //X是從 Y是到
	for (int i=0;i<int(RlFind.size());i++)
	{
		if (RlFind[i].value<Value) continue;
		else if (RlFind[i].value==Value)
		{
			tmp.push_back(RlFind[i].ID);
		}
		else if (RlFind[i].value>Value) break;
	}
	return tmp;
}

int CRole::TableAdd(int ID,int value)  //插入
{
	stFindTable tmp; //建立索引
	tmp.ID=ID; tmp.value=value;
	return TableAdd(tmp); //傳入
}

bool CRole::TablePX() //索引表排序
{
	stFindTable tmp;
	for (int i=0;i<int(RlFind.size()-1);i++)
	{
		tmp=RlFind[i+1];
		int j=i;
		while (j>=0&&tmp.value<RlFind[j].value)
		{
			RlFind[j+1]=RlFind[j];
			j--;
		}
		RlFind[j+1]=tmp;	
	}
	return true;
}
//添加刪除部分
stRole CRole::StCToSt(stRoleC tmpc) //從接口結(jié)構(gòu)轉(zhuǎn)換為內(nèi)部結(jié)構(gòu)
{
	stRole sr;
	strcpy(sr.Name,tmpc.Name); //名字
	sr.EScrFName=tmpc.EScrFName; //初始腳本
	sr.Exp=tmpc.Exp; //經(jīng)驗(yàn)值
	sr.MaxExp=tmpc.MaxExp; //M經(jīng)驗(yàn)值
	sr.face=tmpc.face; //面向
	sr.facej=0;
	sr.IsNPC=tmpc.IsNPC; //以后改
	strcpy(sr.facePic,tmpc.facePic); //PIC
	sr.HP=tmpc.HP;
	sr.MP=tmpc.MP;
	sr.MaxHP=tmpc.MaxHP;
	sr.MaxMP=tmpc.MaxMP;
	sr.Level=tmpc.Level;
	sr.lpDDS_ROLEL=NULL;
	sr.lpDDS_ROLEP=NULL;
	sr.move=tmpc.move; //移動(dòng)
	sr.movex=tmpc.movex;
	sr.movey=tmpc.movey;
	sr.oldx=0;
	sr.oldy=0;
	sr.PathSteps=0;
	sr.PathCSteps=0;
	sr.roler=tmpc.roler;
	sr.WalkLoop=false;
	sr.facejd=false;
	sr.VS=tmpc.VS;
	sr.x=tmpc.x;
	sr.y=tmpc.y;
	return sr; //返回
}

bool CRole::AddActor(char *RoleIDent)
{
	CIni inifile(IniFileName);//打開(kāi)一個(gè)INI文件
	stRoleC nrole; //ROLE結(jié)構(gòu)
	nrole.Name=inifile.ReadText(RoleIDent,"Name"); //Role的名字
	nrole.IsNPC=false; //是角色
	nrole.face=inifile.ReadInt(RoleIDent,"Face"); //Role的站向
	nrole.Level=inifile.ReadInt(RoleIDent,"Level"); //Role的等級(jí)
	nrole.HP=inifile.ReadInt(RoleIDent,"Hp"); //Role的等級(jí)
	nrole.MP=inifile.ReadInt(RoleIDent,"Hp"); //Role的等級(jí)
	nrole.MaxHP=nrole.HP;nrole.MaxExp=nrole.MP; //滿血一樣
	nrole.Exp=inifile.ReadInt(RoleIDent,"Exp"); //第一級(jí)的經(jīng)驗(yàn)導(dǎo)入
	nrole.VS=IntTobool(inifile.ReadInt(RoleIDent,"VS")); //是否顯示
	//nrole.RLSEx
	nrole.facePic=inifile.ReadText(RoleIDent,"PicName"); //Role的人物圖片
	nrole.roler.left=inifile.ReadInt(RoleIDent,"PicLeft"); //Pic的左邊偏移
	nrole.roler.top=inifile.ReadInt(RoleIDent,"PicTop"); //Pic的上邊偏移
	nrole.roler.right=inifile.ReadInt(RoleIDent,"PicWidth"); //Pic的寬度
	nrole.roler.bottom=inifile.ReadInt(RoleIDent,"PicHeight"); //Pic的高度
	bool ret=AddActor(nrole);
	if (nrole.Name!=NULL) {delete[]nrole.Name;nrole.Name=NULL;}
	if (nrole.facePic!=NULL) {delete[]nrole.facePic;nrole.facePic=NULL;}
	return ret;
}

bool CRole::AddActor(stRoleC tactc)
{
		char tmpcx[255];
		if (tactc.IsNPC==false) //是NPC
		{
			stRole tact=StCToSt(tactc); //建立真正的
			strcpy(tmpcx,NPCPath);
			strcat(tmpcx,tact.facePic);	
			if(CreateSurface(tact.lpDDS_ROLEP,tmpcx,0,0)!=true) return false; //說(shuō)不定有問(wèn)題
			if (actor.empty())
			{
			tact.x=0;
			tact.y=0;//刷新坐標(biāo) 
			}
			else
			{
				tact.x=rl[actor[0]].x+int(actor.size());
				tact.y=rl[actor[0]].y+int(actor.size());//刷新坐標(biāo) 
			}
			tact.facej=0; //刷新步數(shù)為站好
			if (tact.roler.left==-9999999&&tact.roler.top==-9999999)
			{
				POINT tp=FindRoleP(tact.lpDDS_ROLEP);
				tact.PicS.x=tp.x;tact.PicS.y=tp.y; //純正偏移數(shù)據(jù)
				tact.roler.left=tact.roler.right-TileWidth-tp.x;tact.roler.top=tact.roler.bottom-TileHeight-tp.y; //刷新偏移
			}
			rl.push_back(tact); //放入
			if (!rl.empty()) 
			{
				actor.push_back(int(rl.size())-1); //將角色的ID放入主角表
				stFindTable sf;
				sf.ID=int(rl.size())-1; //等于這個(gè)ID
				sf.value=tact.x+tact.y; //將X+y進(jìn)入
				if (RlFind.empty()) RlFind.push_back(sf); //OK
				else TableAdd(sf); //搜索插入索引表
				NPCZDS(int(rl.size())-1); //遮擋計(jì)算
			}
		}
		return true;
}

bool CRole::AddNPC(char *FileName) //從列表添加NPC
{
	char *tc; //臨時(shí)
	bool ret=false;
	stRoleC nrole; //ROLE結(jié)構(gòu)
	CIni inifile(FileName);//打開(kāi)一個(gè)INI文件
	int MAX_NPC=inifile.ReadInt("NPC","Max_NPC"); //一共的NPC數(shù)
	for (int i=0;i<MAX_NPC;i++)
	{
		tc=inifile.ReadText("NPC",i); //讀取名字
		nrole.Name=inifile.ReadText(tc,"Name"); //Role的名字
		nrole.IsNPC=true; //是NPC
		nrole.VS=IntTobool(inifile.ReadInt(tc,"VS")); //是否顯示
		nrole.face=inifile.ReadInt(tc,"Face"); //Role的站向
		nrole.x=inifile.ReadInt(tc,"x"); //RoleX
		nrole.y=inifile.ReadInt(tc,"y"); //RoleY
		nrole.movex=inifile.ReadInt(tc,"Move_x"); //RoleX
		nrole.movey=inifile.ReadInt(tc,"Move_y"); //RoleY
		nrole.EScrFName=inifile.ReadText(tc,"Script"); //Role對(duì)話
		nrole.facePic=inifile.ReadText(tc,"PicName"); //Role的人物圖片
		nrole.roler.left=inifile.ReadInt(tc,"PicLeft"); //Pic的左邊偏移
		nrole.roler.top=inifile.ReadInt(tc,"PicTop"); //Pic的上邊偏移
		nrole.roler.right=inifile.ReadInt(tc,"PicWidth"); //Pic的寬度
		nrole.roler.bottom=inifile.ReadInt(tc,"PicHeight"); //Pic的高度
		ret=AddNPC(nrole);
		if (nrole.Name!=NULL) {delete[]nrole.Name;nrole.Name=NULL;}
		if (nrole.facePic!=NULL) {delete[]nrole.facePic;nrole.facePic=NULL;}
		if (ret==false) return false;
	}
	if(tc!=NULL) delete []tc;tc=NULL;
	return ret;
}

bool CRole::AddNPC(stRoleC tnpcc)
{
	char tmpcx[255];
	if (tnpcc.IsNPC==true) //是NPC
	{
		stRole tnpc=StCToSt(tnpcc); //建立真正的
		sprintf(tmpcx,"%s%s",NPCPath,tnpc.facePic); //路徑OK
		if(CreateSurface(tnpc.lpDDS_ROLEP,tmpcx,0,0)!=true) return false; //說(shuō)不定有問(wèn)題
		if (tnpc.x<0) tnpc.x=0; if (tnpc.y<0)tnpc.y=0;
		if (tnpc.x>=Map->Width) tnpc.x=Map->Width-1; if (tnpc.y>=Map->Height)tnpc.y=Map->Height-1;
		tnpc.facej=0; //刷新步數(shù)為站好
		//圖片偏移自判斷 技術(shù)
		if (tnpc.roler.left==-9999999&&tnpc.roler.top==-9999999)
		{
			POINT tp=FindRoleP(tnpc.lpDDS_ROLEP); //尋找偏移
			tnpc.PicS.x=tp.x;tnpc.PicS.y=tp.y; //純正偏移數(shù)據(jù)
			tnpc.roler.left=tnpc.roler.right-TileWidth-tp.x;tnpc.roler.top=tnpc.roler.bottom-TileHeight-tp.y; //刷新偏移
		}
		rl.push_back(tnpc); //放入
		if (!rl.empty()) 
		{
			npc.push_back(int(rl.size())-1); //將角色的ID放入主角表
			//角色索引表
			stFindTable sf;
			sf.ID=int(rl.size())-1; //等于這個(gè)ID
			sf.value=tnpc.x+tnpc.y; //將X+y進(jìn)入
			if (RlFind.empty()) RlFind.push_back(sf); //OK
			else TableAdd(sf); //搜索插入索引表

			NPCZDS(int(rl.size())-1); //遮擋計(jì)算

			Map->CBlockOn(true,rl[rl.size()-1].x,rl[rl.size()-1].y); //加上障礙
			return true;
		}
		return false;
	}
	return false;
}

void CRole::DeleteActor(int ID) //刪除主角
{
	if (!rl.empty()) rl.erase(rl.begin()+actor[ID]); //先刪除這個(gè)
	if (!RlFind.empty()) for (int i=0;i<int(RlFind.size());i++) if (RlFind[i].ID==actor[ID]) RlFind.erase(RlFind.begin()+i);
}

void CRole::DeleteNPC(int ID) //刪除NPC
{
	if (!rl.empty()) rl.erase(rl.begin()+npc[ID]); //先刪除這個(gè)
	if (!RlFind.empty()) for (int i=0;i<int(RlFind.size());i++) if (RlFind[i].ID==npc[ID]) RlFind.erase(RlFind.begin()+i);
}

int CRole::GetActorNum(){if (!actor.empty()) return (int)actor.size(); return 0;} //獲取主角數(shù)目
int CRole::GetNpcNum(){if (!npc.empty()) return (int)npc.size(); return 0;} //獲取NPC數(shù)目

int CRole::NPCNameToID(char *Name) //NPC名字轉(zhuǎn)ID
{
	//最笨的方法,其實(shí)這里不需要快
	int ret=-1;
	if (!npc.empty()) //如果不是空的
	{
		for (int i=0;i<int(npc.size());i++) //循環(huán)
			if (stricmp(rl[npc[i]].Name,Name)==0) ret=i;
			//if (*rl[npc[i]].Name==*Name) return i; //返回ID
	}
	return ret;
}

int CRole::ActorNameToID(char *Name) //主角名字轉(zhuǎn)ID
{
	//最笨的方法,其實(shí)這里不需要快
	int ret=-1;
	if (!actor.empty()) //如果不是空的
	{
		for (int i=0;i<int(actor.size());i++) //循環(huán)
			if (stricmp(rl[actor[i]].Name,Name)==0) ret=i;
	}
	return ret;
}


int CRole::NameToID(char *Name) //名字轉(zhuǎn)ID,注意,此函數(shù)返回最后一個(gè)
{
	//最笨的方法,其實(shí)這里不需要快
	int ret=-1;
	if (!rl.empty()) //如果不是空的
	{
		for (int i=0;i<int(rl.size());i++) //循環(huán)
			if (stricmp(rl[i].Name,Name)==0) ret=i;
	}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看高清| 99这里只有精品| 欧美调教femdomvk| 国产女同互慰高潮91漫画| 亚洲成av人片在线观看| jizz一区二区| 久久无码av三级| 六月丁香综合在线视频| 欧美日韩免费观看一区二区三区| 国产精品卡一卡二卡三| 国产综合色精品一区二区三区| 精品视频一区二区三区免费| 最好看的中文字幕久久| 国产精品一二三四五| 欧美成人一区二区三区| 无吗不卡中文字幕| 欧美天堂一区二区三区| 亚洲裸体在线观看| 91色在线porny| 国产精品无人区| 国产成人在线网站| 久久品道一品道久久精品| 精品一区二区免费视频| 精品久久人人做人人爰| 免费在线观看精品| 日韩欧美一区电影| 蜜桃av噜噜一区| 日韩一级欧美一级| 奇米精品一区二区三区四区| 欧美高清激情brazzers| 午夜欧美2019年伦理| 欧美另类一区二区三区| 天天av天天翘天天综合网色鬼国产| 欧美性生活大片视频| 一片黄亚洲嫩模| 欧美一区二区三区免费在线看| 午夜日韩在线观看| 精品视频一区二区不卡| 亚洲成a人v欧美综合天堂| 欧美精品一级二级三级| 石原莉奈在线亚洲三区| 91精品婷婷国产综合久久性色| 偷拍亚洲欧洲综合| 91精品国产综合久久精品图片| 日韩av在线发布| 欧美精品一区二区三区一线天视频| 久久精品久久99精品久久| 久久中文娱乐网| 国产成人日日夜夜| 亚洲欧美综合在线精品| 成人激情校园春色| 亚洲码国产岛国毛片在线| 欧美亚洲精品一区| 三级精品在线观看| 26uuu亚洲综合色| 国产69精品久久久久777| 国产精品狼人久久影院观看方式| 99久久精品国产毛片| 一区二区三区精品久久久| 欧美人牲a欧美精品| 久久精品国产精品青草| 欧美国产激情二区三区| 色婷婷精品久久二区二区蜜臀av | 欧美亚洲综合色| 亚洲sss视频在线视频| 欧美第一区第二区| 成人精品电影在线观看| 亚洲美腿欧美偷拍| 3atv在线一区二区三区| 韩国成人福利片在线播放| 国产精品国产a级| 欧美日韩国产高清一区二区三区| 麻豆91精品视频| 国产精品午夜在线| 欧美性感一类影片在线播放| 日本不卡视频在线观看| 欧美激情在线一区二区三区| 欧美图片一区二区三区| 经典一区二区三区| 亚洲人成网站在线| 日韩一级二级三级| 粉嫩在线一区二区三区视频| 亚洲综合无码一区二区| 精品久久99ma| 在线观看欧美精品| 狠狠色狠狠色合久久伊人| 亚洲色图色小说| 欧美成人在线直播| 色先锋资源久久综合| 蜜臀精品久久久久久蜜臀| 国产精品久久久久久久久快鸭 | 久久久久88色偷偷免费| 欧美亚洲愉拍一区二区| 国模娜娜一区二区三区| 亚洲一区二区三区四区在线免费观看| 精品国产百合女同互慰| 91成人在线免费观看| 久久se精品一区二区| 极品瑜伽女神91| 日韩一区在线播放| 亚洲精品一区二区三区四区高清 | 国产精一品亚洲二区在线视频| 日韩美女精品在线| 精品国产乱码久久久久久图片 | 成人高清在线视频| 美女网站在线免费欧美精品| 一区二区三区在线视频免费观看 | 欧美日本免费一区二区三区| 国产成人超碰人人澡人人澡| 午夜影院在线观看欧美| 国产精品免费看片| 精品国产91九色蝌蚪| 欧美三级午夜理伦三级中视频| 成人av电影免费在线播放| 精久久久久久久久久久| 日韩精品午夜视频| 一区二区三区日韩精品视频| 国产欧美一区二区三区在线看蜜臀| 91精品一区二区三区久久久久久| 色婷婷av一区| 成人av在线网站| 国产精品白丝jk黑袜喷水| 欧美aaaaaa午夜精品| 亚洲五月六月丁香激情| 最新国产精品久久精品| 国产日韩精品一区| 精品国产乱码91久久久久久网站| 欧美剧情片在线观看| 欧洲av在线精品| 91在线国产观看| 波多野洁衣一区| 国产成人综合自拍| 国产一区 二区| 久久国产欧美日韩精品| 日韩 欧美一区二区三区| 亚洲一二三四在线| 亚洲激情自拍视频| 亚洲欧美激情视频在线观看一区二区三区 | 免费成人在线观看| 视频一区中文字幕国产| 午夜精品视频在线观看| 亚洲伊人伊色伊影伊综合网| 亚洲欧美日韩国产一区二区三区| 国产精品女人毛片| 麻豆精品国产传媒mv男同| 一区二区三区免费看视频| 亚洲欧洲制服丝袜| 亚洲码国产岛国毛片在线| 亚洲人成小说网站色在线 | 精品少妇一区二区三区在线播放| 欧美夫妻性生活| 欧美日韩另类一区| 欧美巨大另类极品videosbest | 奇米影视一区二区三区| 日韩**一区毛片| 99久久久久久99| 91免费国产在线| 91视频免费看| 在线一区二区三区四区| 欧美亚一区二区| 欧美性感一区二区三区| 欧美日韩夫妻久久| 在线不卡免费欧美| 日韩一区二区免费高清| 欧美一级xxx| 精品国精品自拍自在线| 久久五月婷婷丁香社区| 中文字幕av一区二区三区免费看| 欧美极品美女视频| 亚洲欧洲av在线| 亚洲美女一区二区三区| 偷拍日韩校园综合在线| 日韩av一级片| 国产一区不卡视频| 99精品视频在线观看| 欧美视频一区二区三区| 欧美一区二区三区人| 久久精品欧美一区二区三区不卡| 国产日韩欧美麻豆| 亚洲精品欧美综合四区| 午夜欧美一区二区三区在线播放| 久久精品国产99国产| 岛国精品在线播放| 一本色道久久综合亚洲91| 欧美久久久久久久久中文字幕| 欧美成人精品福利| 中文字幕精品一区二区三区精品 | 久久久精品免费观看| 亚洲人成精品久久久久| 日韩精品欧美成人高清一区二区| 国产一区在线精品| 色综合激情五月| 欧美成人伊人久久综合网| 中文字幕av在线一区二区三区| 亚洲图片有声小说| 国产老女人精品毛片久久| 色综合视频在线观看| 日韩一区二区麻豆国产| 国产精品免费视频一区| 性做久久久久久|