-- =========================================================
-- Speed Camera BR — Contador Global de Reincidência
-- =========================================================
-- Mantém UM contador global no servidor que avança a cada infração
-- (em qualquer radar). O valor cobrado é o da POSIÇÃO ATUAL do contador,
-- lido do radar onde a pessoa passou.
--
-- Exemplo: contador cicla 1 -> 2 -> 3 -> 1...
--   Radar A tem valores {400, 800, 1500}
--   Radar B tem valores {1000, 2000, 3000}
--   contador=1, passou no A -> paga 400  -> contador vira 2
--   contador=2, passou no B -> paga 2000 -> contador vira 3
--   contador=3, passou no A -> paga 1500 -> contador vira 1 (reseta)
-- =========================================================

SpeedCameraCounter = {}

-- Posição atual do ciclo (1, 2 ou 3). Começa em 1.
SpeedCameraCounter.position = 1
SpeedCameraCounter.CYCLE_SIZE = 3   -- 3 níveis de multa

-- Retorna a posição atual (sem avançar)
function SpeedCameraCounter.getPosition()
    return SpeedCameraCounter.position
end

-- Avança o contador pro próximo nível (com wrap: 3 -> 1)
-- Só o SERVIDOR avança (autoridade). Retorna a NOVA posição.
function SpeedCameraCounter.advance()
    local p = SpeedCameraCounter.position + 1
    if p > SpeedCameraCounter.CYCLE_SIZE then
        p = 1
    end
    SpeedCameraCounter.position = p
    return p
end

-- Define a posição diretamente (usado na sincronização e no load)
function SpeedCameraCounter.setPosition(p)
    if p == nil then return end
    p = math.floor(p)
    if p < 1 then p = 1 end
    if p > SpeedCameraCounter.CYCLE_SIZE then p = SpeedCameraCounter.CYCLE_SIZE end
    SpeedCameraCounter.position = p
end

-- ─── Persistência (junto com a config global) ────────────
function SpeedCameraCounter.getPath()
    if g_currentMission == nil or g_currentMission.missionInfo == nil then return nil end
    local dir = g_currentMission.missionInfo.savegameDirectory
    if dir == nil then return nil end
    return dir .. "/speedCameraCounter.xml"
end

function SpeedCameraCounter.load()
    local path = SpeedCameraCounter.getPath()
    if path == nil or not fileExists(path) then return end
    local xml = loadXMLFile("SCCounter", path)
    if xml == nil or xml == 0 then return end
    local p = getXMLInt(xml, "speedCameraCounter.position")
    if p ~= nil then SpeedCameraCounter.setPosition(p) end
    delete(xml)
    print(string.format("[SpeedCameraBR] Contador carregado: posição=%d",
        SpeedCameraCounter.position))
end

function SpeedCameraCounter.save()
    local path = SpeedCameraCounter.getPath()
    if path == nil then return end
    local xml = createXMLFile("SCCounter", path, "speedCameraCounter")
    setXMLInt(xml, "speedCameraCounter.position", SpeedCameraCounter.position)
    saveXMLFile(xml)
    delete(xml)
end
