--[[
神兽保佑！菩萨包邮！佛祖包邮！真主阿拉包邮！代码无BUG！！！
创建作者：Administrator
创建时间：2015年1月23日21时18分8秒
感谢使用：更鸟游戏
]]
------------------------------------------
function 系统配置(t)
    t.title = "仿3D我的世界 WSAD移动"				-- 文本型	窗口标题
    t.window.width = 720			-- 数值型	宽度
    t.window.height = 540			-- 数值型	高度
    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.math =			false		-- 逻辑型	数学运算
    t.modules.thread =		false		-- 逻辑型	线程系统
end
-----------头部可以intro，变量等----------
intro("cde/load.lua")
intro("cde/misc.lua")
intro("cde/floor.lua")
intro("cde/raycasting.lua")
intro("cde/spritecasting.lua")
intro("cde/tableSer.lua")
pers = intro("cde/pers.lua")

--都是老外写的代码，我就是转一下。因为引擎升级的原因，有的函数不对，所以无法显示完整，比如门 和地面就没了
------------------------------------------
function 引擎创建()
	--置资源目录(取游戏路径())  --设置游戏目录，必有该语句！
	置过滤器("nearest", "nearest")
	置资源目录(取调试目录().."Example/Win32/GameRes")
	--因为例程演示需要，设置演示资源目录，编译时务必手动更改游戏目录
	f=创建字体("Verdana.ttf",12)
	置字体(f)
	
	
	loadEverything()
	
	TILT = 0
	tLim = 160

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

function 逻辑更新(dt)
	-- Key Input
	input(dt)

	for x = 0, w, 1 do
		castRay(x)
	end

	updateDoor(dt)
	castSprites()
	castDoors()
	
	
	if not curShrink then
		curSize = curSize + dt * 50

		if curSize > maxSize then
			curShrink = true
		end
	else
		curSize = curSize - dt * 50

		if curSize < minSize then
			curShrink = false
		end
	end
end
------------------------------------------

function 画面显示()
	canvas:clear()
	drawSky()
	--drawFloor()

	love.graphics.setCanvas(canvas)
		
		-- Sort the spritePool based on the screen depth
		table.sort(spritePool, zSort)

		-- Walls draw before the sprites
		for i,v in ipairs(wallPool) do
			love.graphics.setColor(v.color)
			if img[v.texture] then
				love.graphics.draw(img[v.texture], quads[v.hor], v.x, v.start, 0, 1, v.scale)
			end
		end

		for i,v in ipairs(spritePool) do
			love.graphics.setColor(v.color)
			if v.type == "wall" then
				if img[v.texture] then
					love.graphics.draw(img[v.texture], quads[v.hor], v.x, v.start, 0, 1, v.scale)
				end
			elseif v.type == "sprite" then
				love.graphics.draw(spriteImg[v.id], quads[v.hor], v.x, v.y, 0, 1, v.scale)
			elseif v.type == "door" then
				beginSt = v.cov[1]
				endSt = v.cov[2]

					--pers.quad(img[v.id], v.v1, v.v2, v.v3, v.v4)
					love.graphics.polygon("fill", {v.v1[1], v.v1[2], v.v2[1], v.v2[2],v.v3[1], v.v3[2],v.v4[1], v.v4[2]})
			end
		end
		
		-- Empty the pools
		spritePool = {}
		wallPool = {}
		floorTable = {}
	love.graphics.setCanvas()

	love.graphics.setColor(255, 255, 255)
	love.graphics.draw(canvas, 0, 0)

	love.graphics.setColor(255, 20, 20)
	love.graphics.print(string.format("FPS: %1.f\n角色角度: %1.f\nX: %.1f\nY: %.1f", love.timer.getFPS(), math.deg(getPlayerRot()), player.posX, player.posY))
end
------------------------------------------

function 键盘按下(key)

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

function 键盘放开(key)
	if key == "escape" then 事件停止() end
	
		if key == "tab" then grabbed = not grabbed 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
------------------------------------------