-- 猫猫虫的 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