--=============================================================================--
-- ★ 角色类
--=============================================================================--

角色类 = class()


function 角色类:初始化()
	

	self.角色图片 = 引擎:载入图片("dat/bnb.png")
	self.角色动画 = D2D_动画.创建(self.角色图片,12,8,0,0,60,60)
	self.角色动画:播放()
	
	
	self.角色信息  = {x=300,y=300,速度=4,方向="右",状态="静止"}
	self.角色碰撞盒 = D2D_包围盒.创建(self.角色信息.x + 18 ,self.角色信息.y + 40,25,20)
	
	self.上次位置 = {x=0,y=0}
	
	

end



function 角色类:更新()

	
	self.角色动画:更新(dt)

	self.上次位置.x = self.角色信息.x
	self.上次位置.y = self.角色信息.y 


	if (引擎:取按键事件(键_键盘右) )  then
		self.角色信息.方向 = "右"
		self.角色信息.状态 = "移动"
		self.角色信息.x = self.角色信息.x +self.角色信息.速度
		
	
	elseif (引擎:取按键事件(键_键盘左) )  then
		self.角色信息.方向 = "左"
		self.角色信息.状态 = "移动"
		self.角色信息.x = self.角色信息.x - self.角色信息.速度
	
	elseif (引擎:取按键事件(键_键盘上)) then
		self.角色信息.方向 = "上"
		self.角色信息.状态 = "移动"
		self.角色信息.y = self.角色信息.y - self.角色信息.速度
	
	elseif (引擎:取按键事件(键_键盘下)) then
		self.角色信息.方向 = "下"
		self.角色信息.状态 = "移动"
		self.角色信息.y = self.角色信息.y + self.角色信息.速度
	end



	
	if (self.角色信息.状态 == "静止") then
	
		if (self.角色信息.方向 == "下") then
				self.角色动画:置当前帧(0)
	
		elseif (self.角色信息.方向 == "上") then
				self.角色动画:置当前帧(3)
	
		elseif (self.角色信息.方向 == "左") then
				self.角色动画:置当前帧(6)
	
		elseif (self.角色信息.方向 == "右") then
				self.角色动画:置当前帧(9)
		end
	
		
	
	elseif (self.角色信息.状态 == "移动") then
	
	
		if (self.角色信息.方向 == "下") then
			
			if (self.角色动画:取当前帧() > 2) then
				self.角色动画:置当前帧(0)
			end
	
		elseif (self.角色信息.方向 == "上") then
	
			if (self.角色动画:取当前帧() > 5 or self.角色动画:取当前帧() < 3) then
				self.角色动画:置当前帧(3)
			end
	
		elseif (self.角色信息.方向 == "左") then
	
			if (self.角色动画:取当前帧() > 8 or self.角色动画:取当前帧() < 6) then
				self.角色动画:置当前帧(6)
			end
	
		elseif (self.角色信息.方向 == "右") then
	
			if (self.角色动画:取当前帧() > 11 or self.角色动画:取当前帧() < 9) then
				self.角色动画:置当前帧(9)
			end
	
	
		end
		
	
	end
	
	
	
	
	
	if (引擎:取按键事件(键_键盘右) == false 
		and 引擎:取按键事件(键_键盘左) == false 
		and 引擎:取按键事件(键_键盘上) == false  
		and 引擎:取按键事件(键_键盘下) == false  
	) then
	
	
	self.角色信息.状态 = "静止"
	
	end

	


	self.角色碰撞盒 :置位置(self.角色信息.x + 18 ,self.角色信息.y + 40)


	for n=1 , table.getn(障碍物件组) do
	
		if(引擎:包围盒碰撞检测(self.角色碰撞盒,障碍物件组[n].碰撞盒) ) then
			self.角色信息.x  = self.上次位置.x
			self.角色信息.y  = self.上次位置.y
			break
		end
		
	end
	


end




function 角色类:显示()

	self.角色动画:显示(self.角色信息.x,self.角色信息.y)
	self.角色碰撞盒:显示()
	
	
end

function 角色类:取Y轴参照点()

	return  self.角色信息.y
	
end
