80 lines
1.5 KiB
Lua
80 lines
1.5 KiB
Lua
|
-- 猫猫虫的 LuaEngine 工具模块:Speed
|
|||
|
-- @version: 1.0.0
|
|||
|
|
|||
|
local Speed = {
|
|||
|
lock = nil,
|
|||
|
instance = nil
|
|||
|
}
|
|||
|
Speed.__index = Speed
|
|||
|
|
|||
|
function Speed:new(playerData)
|
|||
|
if self.instance ~= nil then
|
|||
|
self.instance.playerData = playerData
|
|||
|
return self.instance
|
|||
|
end
|
|||
|
|
|||
|
local instance = setmetatable({
|
|||
|
playerData = playerData
|
|||
|
}, Speed)
|
|||
|
self.instance = instance
|
|||
|
return self.instance
|
|||
|
end
|
|||
|
|
|||
|
function Speed:setSpeed(speed)
|
|||
|
self.playerData.Frame.frameSpeedMultiplies = speed
|
|||
|
end
|
|||
|
|
|||
|
function Speed:resetSpeed()
|
|||
|
self.playerData.Frame.frameSpeedMultiplies = 1
|
|||
|
end
|
|||
|
|
|||
|
function Speed:withSpeed(speed, func)
|
|||
|
if speed == nil or func == nil then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self:setSpeed(speed)
|
|||
|
func()
|
|||
|
self:resetSpeed()
|
|||
|
end
|
|||
|
|
|||
|
function Speed:checkAndReleaseLock(lockID)
|
|||
|
if self.lock == nil then
|
|||
|
return true
|
|||
|
end
|
|||
|
if self.lock == lockID then
|
|||
|
self.lock = nil
|
|||
|
return true
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function Speed:checkAndSetupLock(lockID)
|
|||
|
if self.lock == nil then
|
|||
|
self.lock = lockID
|
|||
|
return true
|
|||
|
end
|
|||
|
if self.lock == lockID then
|
|||
|
return true
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function Speed:setSpeedMutex(speed, lockID)
|
|||
|
if self:checkAndSetupLock(lockID) then
|
|||
|
self:setSpeed(speed)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function Speed:resetSpeedMutex(lockID)
|
|||
|
if self:checkAndReleaseLock(lockID) then
|
|||
|
self:resetSpeed()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function Speed:forceReleaseLock()
|
|||
|
self.lock = nil
|
|||
|
end
|
|||
|
|
|||
|
return Speed
|