--[[
神兽保佑！菩萨包邮！佛祖包邮！真主阿拉包邮！代码无BUG！！！
创建作者：Administrator
创建时间：2015年1月23日21时18分8秒
感谢使用：更鸟游戏
]]
------------------------------------------
function 系统配置(t)
    t.title = "物理效果 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 =		true		-- 逻辑型	物理引擎
    t.modules.thread =		false		-- 逻辑型	线程系统
end
-----------头部可以intro，变量等----------



------------------------------------------
function 引擎创建()
	--置资源目录(取游戏路径())  --设置游戏目录，必有该语句！
	置资源目录(取调试目录().."Example/Win32/GameRes")
	--因为例程演示需要，设置演示资源目录，编译时务必手动更改游戏目录
	
	text = "No collision yet."
	local f= 创建字体("Verdana.ttf", 14)
	--首先载入一个TTF文字文件，出于显示，这里用的字体是Verdana，游戏中，你可以使用中文字体
	置字体(f)

	--每米64个单位
	置物理世界单位( 64 )

	--创建重力为9.81*32的世界
	world = NewWorld(0, 9.81*32, true)

	-- Create the ground body at (0, 0) static
	ground = NewBody(world, 0, 0, "static")

	-- Create the ground shape at (400,500) with size (600,10).
	ground_shape = NewRectangleShape(400, 500, 600, 10)
	
 	-- Create fixture between body and shape
	ground_fixture = NewFixture( ground, ground_shape)
	ground_fixture:setUserData("Ground") -- Set a string userdata

	-- Load the image of the ball.
	ball = 创建图像("ball.png")

	-- Create a Body for the circle.
	body = NewBody(world, 400, 200, "dynamic")
	
	-- Attatch a shape to the body.
	circle_shape = NewCircleShape(0,0, 64)

    -- Create fixture between body and shape
    fixture = NewFixture( body, circle_shape)

	fixture:setUserData("Ball") -- Set a string userdata
	
    -- Calculate the mass of the body based on attatched shapes.
	-- This gives realistic simulations.
	body:setMassData(circle_shape:computeMass( 1 ))	

	-- Set the collision callback.
	world:setCallbacks(beginContact,endContact)

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

function 逻辑更新(dt)
	world:update(dt)
end
------------------------------------------

function 画面显示()
	画多边形("line", ground:getWorldPoints(ground_shape:getPoints()))
	绘制(ball,body:getX(), body:getY(), body:getAngle(),1,1,64,64)
	画文本("space: Apply a random impulse",5,5)
	
	画文本(text, 5, 25)
end
------------------------------------------

function 键盘按下(key)
	if key == " " then
		-- Apply a random impulse
		body:applyLinearImpulse(150-math.random(0, 300),-math.random(0, 1500))
	end
end
------------------------------------------

function beginContact(a, b, c)
	local aa=a:getUserData()
	local bb=b:getUserData()
	text = "Collided: " .. aa .. " and " .. bb
end

-- This is called every time a collision end.
function endContact(a, b, c)
	local aa=a:getUserData()
	local bb=b:getUserData()
	text = "Collision ended: " .. aa .. " and " .. bb
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
------------------------------------------