--ĐÁNH DẤU VỊ TRÍ QUEST TRÊN BẢN ĐỒ
--CALL FUNCTION: VLF.MarkerList_Add({qStep = "q1s001", x = 10650, y = 10070, texture = getTexture("media/textures/questmarker_48.png"), supplyID = supplyID, bombPlanCode = bombPlanCode})
--------VLF.MarkerList_Remove(qStep)

require "ISUI/ISPanelJoypad"
require "ISUI/ISUIElement"
require "ISUI/Maps/ISWorldMap"
require "ISUI/Maps/ISMiniMap"

VLF.MarkerList = VLF.MarkerList or {}
--VLF.MarkerList["q1s000test"] = {x = 10650, y = 9970, texture = getTexture("media/textures/questmarker_48.png")} --thêm giá trị

function VLF.MarkerList_Add(args) --VLF.MarkerList_Add({qStep = "q1s001", x = 10650, y = 10070, texture = getTexture("media/textures/questmarker_48.png"), supplyID = supplyID, bombPlanCode = bombPlanCode})
    local qStep = args.qStep
    if qStep and not VLF.MarkerList[qStep] then
        local x, y, texture, supplyID, bombPlanCode = args.x, args.y, args.texture, args.supplyID, args.bombPlanCode
        
        VLF.MarkerList[qStep] = {x = x, y = y, texture = texture, supplyID = supplyID, bombPlanCode = bombPlanCode}
    end
end

function VLF.MarkerList_Remove(qStep)
    if VLF.MarkerList[qStep] then
        VLF.MarkerList[qStep] = nil
    end
end

--Vẽ đánh dấu nhiệm vụ trên World Map
--Di chuột lên trên icon sẽ hiển thị tên quest
local oldMapRender = ISWorldMap.render

function ISWorldMap:render()
    oldMapRender(self)

    if not VLF.MarkerList then return end

    local mx = getMouseX()
    local my = getMouseY()

    for qStep, data in pairs(VLF.MarkerList) do
        local x, y, texture, supplyID, bombPlanCode = data.x, data.y, data.texture, data.supplyID, data.bombPlanCode
        if x and y then
            local isRSEvent = false
            local isCBEvent = false
            
            --local str = qStep:match("q(%d+)s")  --lấy id quest giữa q và s --Chỉ lấy được nếu là số int
            local str = string.match(qStep, "^q(.-)s")  --lấy string id quest giữa q và s
            if string.find(str, "ERS") and supplyID then
                isRSEvent = true
            elseif string.find(str, "ECB") and bombPlanCode then
                isCBEvent = true
            end
        
            local xUI = self.mapAPI:worldToUIX(x, y)
            local yUI = self.mapAPI:worldToUIY(x, y)

            local size = 32
            if isRSEvent == true then
                size = 54
            elseif isCBEvent == true then
                size = 66
            end
            
            local drawX = xUI - size/2
            local drawY = yUI - size/2

            self:drawTextureScaledAspect(texture, drawX, drawY, size, size, 1, 1, 1, 0.9)

            --MOUSE OVER CHECK
            if mx >= drawX and mx <= drawX + size and
               my >= drawY and my <= drawY + size then

                --Vẽ tooltip
                local text = getText("IGUI_VLQ_"..str.."_Name")
                
                --Nếu là event Relief Supply
                if isRSEvent == true then
                    text = getText("IGUI_VLQ_ReliefSupply_Name", supplyID)
                elseif isCBEvent == true then
                    text = getText("IGUI_VLQ_CarpetBombing_Name", bombPlanCode)
                end
                
                local tw = getTextManager():MeasureStringX(UIFont.Small, text)
                local th = getTextManager():MeasureStringY(UIFont.Small, text)

                self:drawRect(mx - tw/2, my - th*2, tw + 8, th + 6, 0.8, 0, 0, 0)
                self:drawText(text, mx + 4 - tw/2, my + 3 - th*2, 1, 1, 1, 1, UIFont.Small)
            end
        end
    end
end

--[[
--Vẽ đánh dấu trên Minimap
local oldMiniRender = ISMiniMapOuter.render

function ISMiniMapOuter:render(...)
    oldMiniRender(self, ...)

    if not VLF.MarkerList then return end
    if not self.inner or not self.inner.mapAPI then return end

    -- Đặt vùng vẽ trong minimap
    self.inner:setStencilRect(0, 0, self:getWidth(), self:getHeight())

    for qStep, data in pairs(VLF.MarkerList) do
        local x, y, texture = data.x, data.y, data.texture or getTexture("media/textures/questmarker_48.png")
        if x and y then
            local xUI = self.inner.mapAPI:worldToUIX(x, y)
            local yUI = self.inner.mapAPI:worldToUIY(x, y)
            self.inner:drawTextureScaledAspect(texture, xUI - 8, yUI - 8, 16, 16, 1, 1, 1, 1)
        end
    end
    -- Kết thúc vùng vẽ
    self.inner:clearStencilRect()
end
]]









