--[[
神兽保佑！菩萨包邮！佛祖包邮！真主阿拉包邮！代码无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")
	--因为例程演示需要，设置演示资源目录，编译时务必手动更改游戏目录
	

	置背景色(104, 136, 248) --设置背景为蓝色

 --下面是物理引擎的使用
  置物理世界单位(64) --设置64px(像素)为1米,box2d使用实际的物理体系单位
  world = NewWorld(0, 9.81*64, true) --创建一个世界,其水平加速度为0,竖直9.81m/s(即地球)

  objects = {} -- 物理对象table

  --创建地面
  objects.ground = {}
  objects.ground.body = NewBody(world, 650/2, 650-50/2)  --创建一个静态物体, 在世界world中的位置是(650/2, 650-50/2)
  objects.ground.shape = NewRectangleShape(650, 50)   --创建一个矩形
  objects.ground.fixture = NewFixture(objects.ground.body, objects.ground.shape)  --把矩形附加到物体

  --创建一个球
  objects.ball = {}
  objects.ball.body = NewBody(world, 650/2, 650/2, "dynamic") --创建一个动态物体
  objects.ball.shape = NewCircleShape(20) --创建一个圆形
  objects.ball.fixture = NewFixture(objects.ball.body, objects.ball.shape, 1) --把圆形附加到物体上,密度为1
  objects.ball.fixture:setRestitution(0.7) --反弹系数,即碰撞反弹后速度为原来的0.7倍

  --创建一些方块
  objects.block1 = {}
  objects.block1.body = NewBody(world, 200, 550, "dynamic")
  objects.block1.shape = NewRectangleShape(0, 0, 50, 100)  --竖直的方块
  objects.block1.fixture = NewFixture(objects.block1.body, objects.block1.shape, 5) --密度比球大,质量更大

  objects.block2 = {}
  objects.block2.body = NewBody(world, 200, 650/2, "dynamic")
  objects.block2.shape = NewRectangleShape(0, 0, 100, 50)  --水平的方块
  objects.block2.fixture = NewFixture(objects.block2.body, objects.block2.shape, 2)

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

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

  if love.keyboard.isDown("right") then
    objects.ball.body:applyForce(400, 0) --给球(400,0)牛的力,力是矢量,即沿x轴正方向400,y轴正方向0
  elseif love.keyboard.isDown("left") then
    objects.ball.body:applyForce(-400, 0) --给球(-400,0)牛的力
  elseif love.keyboard.isDown("up") then
    objects.ball.body:applyForce(0,-400)
  end
end
------------------------------------------

function 画面显示()
	置颜色(72, 160, 14) -- 绿色,用来画地面
  画多边形("fill", objects.ground.body:getWorldPoints(objects.ground.shape:getPoints()))--使用地面坐标画多边形

  置颜色(193, 47, 14) --红色,用来画球
  画圆圈("fill", objects.ball.body:getX(), objects.ball.body:getY(), objects.ball.shape:getRadius())

  置颜色(50, 50, 50) --灰色,用来画方块
  画多边形("fill", objects.block1.body:getWorldPoints(objects.block1.shape:getPoints()))
  画多边形("fill", objects.block2.body:getWorldPoints(objects.block2.shape:getPoints()))
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
------------------------------------------