-- =========================================================
-- Speed Camera BR — Activatable (configurar radar pelo E)
-- =========================================================
-- Quando o jogador (dono) chega perto do radar a pé, aparece a opção
-- "Configurar radar" (tecla E). Abre caixas de digitação em sequência:
-- limite → multa 1 → multa 2 → multa 3.
-- =========================================================

SpeedCameraActivatable = {}
local SpeedCameraActivatable_mt = Class(SpeedCameraActivatable)

function SpeedCameraActivatable.new(placeable)
    local self = setmetatable({}, SpeedCameraActivatable_mt)
    self.placeable = placeable
    self.activateText = g_i18n:getText("sc_configure_radar")
    return self
end

-- Só o DONO dos radares pode configurar
function SpeedCameraActivatable:getIsActivatable()
    if self.placeable == nil then return false end
    if g_currentMission == nil then return false end

    -- Precisa estar a pé (não dentro de veículo)
    if g_localPlayer == nil then return false end

    -- Verifica se é o dono dos radares
    local myFarmId = nil
    if g_localPlayer.farmId ~= nil then
        myFarmId = g_localPlayer.farmId
    elseif g_currentMission:getFarmId() ~= nil then
        myFarmId = g_currentMission:getFarmId()
    end

    if SpeedCameraOwner ~= nil and SpeedCameraOwner.hasOwner() then
        return SpeedCameraOwner.isOwner(myFarmId)
    end

    return false
end

function SpeedCameraActivatable:run()
    if self.placeable ~= nil and self.placeable.openConfigDialog ~= nil then
        self.placeable:openConfigDialog()
    end
end

function SpeedCameraActivatable:getDistance(x, y, z)
    if self.placeable == nil then return math.huge end
    local px, py, pz = getWorldTranslation(self.placeable.rootNode)
    local dx, dy, dz = x - px, y - py, z - pz
    return math.sqrt(dx*dx + dy*dy + dz*dz)
end
