mirror of
https://github.com/TangentFoxy/baton.git
synced 2025-07-28 02:52:19 +00:00
pairs
This commit is contained in:
55
baton.lua
55
baton.lua
@@ -22,7 +22,7 @@ function sf.joy.button(joystick, button)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- player class --
|
-- player class - internal functions --
|
||||||
|
|
||||||
local Player = {}
|
local Player = {}
|
||||||
Player.__index = Player
|
Player.__index = Player
|
||||||
@@ -126,13 +126,48 @@ function Player:_updateControls()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Player:_updatePairs()
|
||||||
|
for _, pair in pairs(self._pairs) do
|
||||||
|
-- get raw x and y
|
||||||
|
pair.rawX = self._controls[pair.controls[2]].rawValue - self._controls[pair.controls[1]].rawValue
|
||||||
|
pair.rawY = self._controls[pair.controls[4]].rawValue - self._controls[pair.controls[3]].rawValue
|
||||||
|
|
||||||
|
-- limit to 1
|
||||||
|
local len = (pair.rawX^2 + pair.rawY^2) ^ .5
|
||||||
|
if len > 1 then
|
||||||
|
pair.rawX, pair.rawY = pair.rawX / len, pair.rawY / len
|
||||||
|
end
|
||||||
|
|
||||||
|
-- deadzone
|
||||||
|
if self.config.squareDeadzone then
|
||||||
|
pair.x = math.abs(pair.rawX) > self.config.deadzone and pair.rawX or 0
|
||||||
|
pair.y = math.abs(pair.rawY) > self.config.deadzone and pair.rawY or 0
|
||||||
|
elseif len > self.config.deadzone then
|
||||||
|
pair.x, pair.y = pair.rawX, pair.rawY
|
||||||
|
else
|
||||||
|
pair.x, pair.y = 0, 0
|
||||||
|
end
|
||||||
|
|
||||||
|
-- down/pressed/released
|
||||||
|
pair.downPrevious = pair.down
|
||||||
|
pair.down = pair.x ~= 0 or pair.y ~= 0
|
||||||
|
pair.pressed = pair.down and not pair.downPrevious
|
||||||
|
pair.released = pair.downPrevious and not pair.down
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- player class - public API --
|
||||||
|
|
||||||
function Player:update()
|
function Player:update()
|
||||||
self:_setActiveDevice()
|
self:_setActiveDevice()
|
||||||
self:_updateControls()
|
self:_updateControls()
|
||||||
|
self:_updatePairs()
|
||||||
end
|
end
|
||||||
|
|
||||||
function Player:getRaw(name)
|
function Player:getRaw(name)
|
||||||
if self._controls[name] then
|
if self._pairs[name] then
|
||||||
|
return self._pairs[name].rawX, self._pairs[name].rawY
|
||||||
|
elseif self._controls[name] then
|
||||||
return self._controls[name].rawValue
|
return self._controls[name].rawValue
|
||||||
else
|
else
|
||||||
error('No control with name "' .. name .. '" defined', 3)
|
error('No control with name "' .. name .. '" defined', 3)
|
||||||
@@ -140,7 +175,9 @@ function Player:getRaw(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Player:get(name)
|
function Player:get(name)
|
||||||
if self._controls[name] then
|
if self._pairs[name] then
|
||||||
|
return self._pairs[name].x, self._pairs[name].y
|
||||||
|
elseif self._controls[name] then
|
||||||
return self._controls[name].value
|
return self._controls[name].value
|
||||||
else
|
else
|
||||||
error('No control with name "' .. name .. '" defined', 3)
|
error('No control with name "' .. name .. '" defined', 3)
|
||||||
@@ -148,7 +185,9 @@ function Player:get(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Player:down(name)
|
function Player:down(name)
|
||||||
if self._controls[name] then
|
if self._pairs[name] then
|
||||||
|
return self._pairs[name].down
|
||||||
|
elseif self._controls[name] then
|
||||||
return self._controls[name].down
|
return self._controls[name].down
|
||||||
else
|
else
|
||||||
error('No control with name "' .. name .. '" defined', 3)
|
error('No control with name "' .. name .. '" defined', 3)
|
||||||
@@ -156,7 +195,9 @@ function Player:down(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Player:pressed(name)
|
function Player:pressed(name)
|
||||||
if self._controls[name] then
|
if self._pairs[name] then
|
||||||
|
return self._pairs[name].pressed
|
||||||
|
elseif self._controls[name] then
|
||||||
return self._controls[name].pressed
|
return self._controls[name].pressed
|
||||||
else
|
else
|
||||||
error('No control with name "' .. name .. '" defined', 3)
|
error('No control with name "' .. name .. '" defined', 3)
|
||||||
@@ -164,7 +205,9 @@ function Player:pressed(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Player:released(name)
|
function Player:released(name)
|
||||||
if self._controls[name] then
|
if self._pairs[name] then
|
||||||
|
return self._pairs[name].released
|
||||||
|
elseif self._controls[name] then
|
||||||
return self._controls[name].released
|
return self._controls[name].released
|
||||||
else
|
else
|
||||||
error('No control with name "' .. name .. '" defined', 3)
|
error('No control with name "' .. name .. '" defined', 3)
|
||||||
|
Reference in New Issue
Block a user