Добавлен мод blueprint-sandboxes Добавляет метку версии в zzzparanoidal (#72)
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local PlannerIcons = {}
 | 
						|
 | 
						|
function PlannerIcons.CreateLayeredIcon(prototype)
 | 
						|
    local backgroundIconSize = 64
 | 
						|
    local overallLayeredIconScale = 0.4
 | 
						|
 | 
						|
    local layeredIcons = {
 | 
						|
        {
 | 
						|
            icon = BPSB.path .. "/graphics/icon-x64.png",
 | 
						|
            icon_size = backgroundIconSize,
 | 
						|
            icon_mipmaps = 3,
 | 
						|
            tint = { r = 0.75, g = 0.75, b = 0.75, a = 1 },
 | 
						|
        },
 | 
						|
    }
 | 
						|
 | 
						|
    local foundIcon = false
 | 
						|
    if prototype.icons then
 | 
						|
        foundIcon = true
 | 
						|
        -- Complex Icons approach (layer but re-scale each)
 | 
						|
        for _, icon in pairs(prototype.icons) do
 | 
						|
            local thisIconScale = 1.0
 | 
						|
            if icon.scale then
 | 
						|
                thisIconScale = icon.scale
 | 
						|
            end
 | 
						|
            table.insert(layeredIcons, {
 | 
						|
                icon = icon.icon,
 | 
						|
                icon_size = icon.icon_size or prototype.icon_size,
 | 
						|
                tint = icon.tint,
 | 
						|
                shift = icon.shift,
 | 
						|
                scale = thisIconScale * overallLayeredIconScale * (backgroundIconSize / (icon.icon_size or prototype.icon_size)),
 | 
						|
                icon_mipmaps = icon.icon_mipmaps,
 | 
						|
            })
 | 
						|
        end
 | 
						|
    elseif prototype.icon then
 | 
						|
        foundIcon = true
 | 
						|
        -- The simplest Icon approach
 | 
						|
        table.insert(layeredIcons, {
 | 
						|
            icon = prototype.icon,
 | 
						|
            icon_size = prototype.icon_size,
 | 
						|
            icon_mipmaps = prototype.icon_mipmaps,
 | 
						|
            scale = overallLayeredIconScale * (backgroundIconSize / prototype.icon_size),
 | 
						|
        })
 | 
						|
    elseif prototype.variants then
 | 
						|
        foundIcon = true
 | 
						|
        -- Slightly complex Tile approach
 | 
						|
        local image = prototype.variants.main[1]
 | 
						|
        if prototype.variants.material_background then
 | 
						|
            image = prototype.variants.material_background
 | 
						|
        end
 | 
						|
        local thisImageScale = 1.0
 | 
						|
        if image.scale then
 | 
						|
            thisImageScale = image.scale
 | 
						|
        end
 | 
						|
        local thisImageSize = (image.size or 1.0) * 32 / thisImageScale
 | 
						|
        table.insert(layeredIcons, {
 | 
						|
            icon = image.picture,
 | 
						|
            icon_size = thisImageSize,
 | 
						|
            tint = prototype.tint,
 | 
						|
            scale = thisImageScale * overallLayeredIconScale * (backgroundIconSize / thisImageSize),
 | 
						|
        })
 | 
						|
    end
 | 
						|
 | 
						|
    if not foundIcon then
 | 
						|
        log("No icon found for prototype: " .. serpent.block(prototype))
 | 
						|
    end
 | 
						|
 | 
						|
    return layeredIcons
 | 
						|
end
 | 
						|
 | 
						|
return PlannerIcons
 |