require('TimedActions/ISBaseTimedAction')

TowBarHookVehicle = ISBaseTimedAction:derive("TowBarHookVehicle")


-- The condition which tells the timed action if it is still valid
function TowBarHookVehicle:isValid()   
   return true;
end

-- Starts the Timed Action
function TowBarHookVehicle:start()
   self:setActionAnim(self.animation)
   self.sound = getSoundManager():PlayWorldSound("towbar_hookingSound", false, self.character:getSquare(), 0, 5, 1, true)
end

-- Is called when the time has passed
function TowBarHookVehicle:perform()
    self.sound:stop();

    if self.performFunc ~= nil then
        self.performFunc(self.character, self.arg1, self.arg2, self.arg3, self.arg4)
    end

    ISBaseTimedAction.perform(self);
end


function TowBarHookVehicle:stop()
    if self.sound then
        self.sound:stop()
    end

    ISBaseTimedAction.stop(self)
end

function TowBarHookVehicle:new(character, time, animation, performFunc, arg1, arg2, arg3, arg4)
    local o = {};
    setmetatable(o, self)
    self.__index = self
    o.stopOnWalk = true
    o.stopOnRun = true
    o.maxTime = time
   
   o.character = character;
   o.animation = animation

   o.performFunc = performFunc
   o.arg1 = arg1
   o.arg2 = arg2
   o.arg3 = arg3
   o.arg4 = arg4
   
    return o;
end

