1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-21 13:23:53 +00:00
openmw/scripts/data/integration_tests/test_lua_api/player.lua
2022-05-07 14:39:03 +02:00

63 lines
2.5 KiB
Lua

local testing = require('testing_util')
local self = require('openmw.self')
local util = require('openmw.util')
local core = require('openmw.core')
local input = require('openmw.input')
local types = require('openmw.types')
input.setControlSwitch(input.CONTROL_SWITCH.Fighting, false)
input.setControlSwitch(input.CONTROL_SWITCH.Jumping, false)
input.setControlSwitch(input.CONTROL_SWITCH.Looking, false)
input.setControlSwitch(input.CONTROL_SWITCH.Magic, false)
input.setControlSwitch(input.CONTROL_SWITCH.VanityMode, false)
input.setControlSwitch(input.CONTROL_SWITCH.ViewMode, false)
testing.registerLocalTest('playerMovement',
function()
local startTime = core.getSimulationTime()
local pos = self.position
while core.getSimulationTime() < startTime + 0.5 do
self.controls.jump = false
self.controls.run = true
self.controls.movement = 0
self.controls.sideMovement = 0
local progress = (core.getSimulationTime() - startTime) / 0.5
self.controls.yawChange = util.normalizeAngle(math.rad(90) * progress - self.rotation.z)
coroutine.yield()
end
testing.expectEqualWithDelta(self.rotation.z, math.rad(90), 0.05, 'Incorrect rotation')
while core.getSimulationTime() < startTime + 1.5 do
self.controls.jump = false
self.controls.run = true
self.controls.movement = 1
self.controls.sideMovement = 0
self.controls.yawChange = 0
coroutine.yield()
end
direction = (self.position - pos) / types.Actor.runSpeed(self)
testing.expectEqualWithDelta(direction.x, 1, 0.1, 'Run forward, X coord')
testing.expectEqualWithDelta(direction.y, 0, 0.1, 'Run forward, Y coord')
pos = self.position
while core.getSimulationTime() < startTime + 2.5 do
self.controls.jump = false
self.controls.run = false
self.controls.movement = -1
self.controls.sideMovement = -1
self.controls.yawChange = 0
coroutine.yield()
end
direction = (self.position - pos) / types.Actor.walkSpeed(self)
testing.expectEqualWithDelta(direction.x, -0.707, 0.1, 'Walk diagonally, X coord')
testing.expectEqualWithDelta(direction.y, 0.707, 0.1, 'Walk diagonally, Y coord')
end)
return {
engineHandlers = {
onUpdate = testing.updateLocal,
},
eventHandlers = testing.eventHandlers
}