--[[
神兽保佑！菩萨包邮！佛祖包邮！真主阿拉包邮！代码无BUG！！！
创建作者：Administrator
创建时间：2015年1月23日21时18分8秒
感谢使用：更鸟游戏
]]
------------------------------------------
function 系统配置(t)
    t.title = "上下左右键控制角色，12切换状态 20150121"				-- 文本型	窗口标题
    t.window.width = 800			-- 数值型	宽度
    t.window.height = 600			-- 数值型	高度
    t.window.msaa = 0					-- 数值型	抗锯齿数
    t.window.vsync =			true		-- 逻辑型	垂直同步
    t.window.borderless = false		-- 逻辑型	无边框
    t.window.resizable =	false		-- 逻辑型	可调节大小
    t.window.highdpi =		false		-- 逻辑型	高清模式显示，土豪专用
    t.window.srgb =				true		-- 逻辑型	伽马修正
    t.window.fullscreen =	false		-- 逻辑型	全屏
    t.window.fullscreentype = "exclusive"	-- 文本型	全屏显示模式
		
    t.modules.joystick = 	false		-- 逻辑型	手柄
    t.modules.audio =			false		-- 逻辑型	音频
    t.modules.sound =			false		-- 逻辑型	声音流
    t.modules.physics =		false		-- 逻辑型	物理引擎
    t.modules.thread =		false		-- 逻辑型	线程系统
end
-----------头部可以intro，变量等----------
intro("Role.lua")

--角色状态
local ROLESTATE_STAND= 0
local ROLESTATE_WALK= 1
local ROLESTATE_RUN= 2
--运动状态
local MODE_WALK= 1
local MODE_RUN= 2

local movemode=nil
local ROLESTATE=nil

------------------------------------------
function 引擎创建()
	--置资源目录(取游戏路径())  --设置游戏目录，必有该语句！
	置资源目录(取调试目录().."Example/Win32/GameRes")
	--因为例程演示需要，设置演示资源目录，编译时务必手动更改游戏目录

	imgS=创建图像("stand.png")
	imgW=创建图像("walk.png")
	imgR=创建图像("run.png")
	--参数为: 图片,一套动作的帧数,播放速度,帧宽,帧高
	role_stand=RpgRole:new(imgS,0,0,84,108,0.1,8)
	role_walk=RpgRole:new(imgW,0,0,84,108,0.1,8)
	role_run=RpgRole:new(imgR,0,0,84,108,0.1,8)
	--注意要先设置方向,再设置位置,因为位置是绑定在方向上的
	role_stand:setXY(400,300)

	role_state = ROLESTATE_STAND;
	movemode = MODE_WALK;
end
------------------------------------------

function 逻辑更新(dt)
	local dir=-1
	--检测键盘设置运动模式,
	if(键盘是否按下("1")) then
	movemode=MODE_WALK
	end
	if(键盘是否按下("2")) then
	movemode=MODE_RUN
	end

	--检测键盘,设置运动方向
	if(键盘是否按下("left")) then
		if(键盘是否按下("up")) then
			dir=RpgRole.LEFTUP
		elseif(键盘是否按下("down")) then
			dir=RpgRole.LEFTDOWN
		else
			dir=RpgRole.LEFT
		end

	elseif(键盘是否按下("right")) then
		if(键盘是否按下("up")) then
			dir=RpgRole.RIGHTUP
		elseif(键盘是否按下("down")) then
			dir=RpgRole.RIGHTDOWN
		else
			dir=RpgRole.RIGHT
		end

	elseif(键盘是否按下("up")) then
		dir=RpgRole.UP
	elseif(键盘是否按下("down")) then
		dir=RpgRole.DOWN
	end


	if (dir == -1) then
		--没有方向键按下,变为站立状态
		if (role_state == ROLESTATE_WALK) then
			role_stand:setXY(role_walk:getX(), role_walk:getY())
			role_stand:play(role_walk:getDirection())
			role_walk:stopAll()
			role_state = ROLESTATE_STAND
		elseif (role_state == ROLESTATE_RUN) then
			role_stand:setXY(role_run:getX(), role_run:getY())
			role_stand:play(role_run:getDirection())
			role_run:stopAll()
			role_state = ROLESTATE_STAND
		else
			role_stand:update(dt)
		end
	--有方向键按下,且为行走状态
	elseif(movemode == MODE_WALK) then
		-- 状态一致
		if (role_state == ROLESTATE_WALK) then
			role_walk:setDirection(dir)
			role_walk:move(50, dt)
			role_walk:update(dt)
		--跑步状态变为行走,先停止跑步,从行走的第一帧开始播放动画,并设置行走状态
		elseif (role_state == ROLESTATE_RUN) then
			role_walk:setXY(role_run:getX(), role_run:getY())
			role_walk:play(dir)
			role_run:stopAll()
			role_state = ROLESTATE_WALK
		else
			role_walk:setXY(role_stand:getX(), role_stand:getY())
			role_walk:play(dir)
			role_stand:stopAll()
			role_state = ROLESTATE_WALK
		end
	--有方向键按下,且为跑步状态
	else
		-- 状态一致
		if (role_state == ROLESTATE_WALK) then
			role_run:setXY(role_walk:getX(), role_walk:getY())
			role_run:play(dir)
			role_walk:stopAll()
			role_state = ROLESTATE_RUN
		elseif (role_state == ROLESTATE_RUN) then
			role_run:setDirection(dir)
			role_run:move(90, dt)
			role_run:update(dt)
		else
			role_run:setXY(role_stand:getX(), role_stand:getY())
			role_run:play(dir)
			role_stand:stopAll()
			role_state = ROLESTATE_RUN
		end
	end

end
------------------------------------------

function 画面显示()
	if (role_state == ROLESTATE_STAND) then
		role_stand:render()
	elseif (role_state == ROLESTATE_WALK) then
		role_walk:render()
	else
		role_run:render()
	end
end
------------------------------------------

function 键盘按下(key)

end
------------------------------------------

function 键盘放开(key)
	if key == "escape" then 事件停止() end
end
------------------------------------------

function 鼠标按下(x,y,button)
	
end
------------------------------------------

function 鼠标放开(x,y,button)
	
end
------------------------------------------

function 鼠标移动(x,y,xrel,yrel)
	
end
------------------------------------------

function 鼠标滚轮移动(x,y,xrel,yrel)
	
end
------------------------------------------

function 窗口尺寸变化(w,h)
		
end
------------------------------------------

function 窗口获得焦点(f)
		
end
------------------------------------------

function 窗口鼠标进入(f)
		
end
------------------------------------------

function 窗口可视状态(v)
		
end
------------------------------------------

function 线程错误消息(thread,errorstr)
		
end
------------------------------------------

function 拖放得到目录(dir)

end
------------------------------------------

function 拖放得到文件(f)

end
------------------------------------------