87 lines
2.4 KiB
Lua
87 lines
2.4 KiB
Lua
require "/scripts/vec2.lua"
|
|
require "/scripts/util.lua"
|
|
|
|
function init()
|
|
self.active = false
|
|
self.fireTimer = 0
|
|
animator.rotateGroup("guns", 0, true)
|
|
self.level = config.getParameter("mechLevel", 6)
|
|
self.groundFrames = 1
|
|
end
|
|
|
|
function update()
|
|
if mcontroller.atWorldLimit() then
|
|
vehicle.destroy()
|
|
return
|
|
end
|
|
|
|
local mechHorizontalMovement = config.getParameter("mechHorizontalMovement")
|
|
local mechJumpVelocity = config.getParameter("mechJumpVelocity")
|
|
local offGroundFrames = config.getParameter("offGroundFrames")
|
|
|
|
local mechCollisionPoly = mcontroller.collisionPoly()
|
|
local position = mcontroller.position()
|
|
|
|
local entityInSeat = vehicle.entityLoungingIn("seat")
|
|
if entityInSeat then
|
|
vehicle.setDamageTeam(world.entityDamageTeam(entityInSeat))
|
|
else
|
|
vehicle.setDamageTeam({type = "passive"})
|
|
end
|
|
|
|
local diff = world.distance(vehicle.aimPosition("seat"), mcontroller.position())
|
|
local aimAngle = math.atan(diff[2], diff[1])
|
|
local facingDirection = (aimAngle > math.pi / 2 or aimAngle < -math.pi / 2) and -1 or 1
|
|
|
|
if facingDirection < 0 then
|
|
animator.setFlipped(true)
|
|
else
|
|
animator.setFlipped(false)
|
|
end
|
|
|
|
local onGround = mcontroller.onGround()
|
|
local movingDirection = 0
|
|
|
|
if vehicle.controlHeld("seat", "left") and onGround then
|
|
mcontroller.setXVelocity(-mechHorizontalMovement)
|
|
movingDirection = -1
|
|
end
|
|
|
|
if vehicle.controlHeld("seat", "right") and onGround then
|
|
mcontroller.setXVelocity(mechHorizontalMovement)
|
|
movingDirection = 1
|
|
end
|
|
|
|
if vehicle.controlHeld("seat", "jump") and onGround then
|
|
mcontroller.setXVelocity(mechJumpVelocity[1] * movingDirection)
|
|
mcontroller.setYVelocity(mechJumpVelocity[2])
|
|
animator.setAnimationState("movement", "jump")
|
|
self.groundFrames = 0
|
|
end
|
|
|
|
if onGround then
|
|
self.groundFrames = offGroundFrames
|
|
else
|
|
self.groundFrames = self.groundFrames - 1
|
|
end
|
|
|
|
if self.groundFrames <= 0 then
|
|
if mcontroller.velocity()[2] > 0 then
|
|
animator.setAnimationState("movement", "jump")
|
|
else
|
|
animator.setAnimationState("movement", "fall")
|
|
end
|
|
elseif movingDirection ~= 0 then
|
|
if facingDirection ~= movingDirection then
|
|
animator.setAnimationState("movement", "backWalk")
|
|
else
|
|
animator.setAnimationState("movement", "walk")
|
|
end
|
|
elseif onGround then
|
|
animator.setAnimationState("movement", "idle")
|
|
end
|
|
|
|
if vehicle.controlHeld("seat", "primaryFire") then
|
|
-- TODO: party harder
|
|
end
|
|
end
|