Module:Abilities/card: Difference between revisions

remove duplicated strings
upgrade boxes text scaling
Line 333: Line 333:
local props = ability.Upgrades
local props = ability.Upgrades
local upgrade_boxes = {}
    local upgrade_boxes = {}
for k, prop in pairs(props) do
    for k, prop in pairs(props) do
local description = lang.get_string(prop.DescKey)
        local description = lang.get_string(prop.DescKey)
       
-- Generate a description if there is no localized string
        -- Generate description if no localized string
if (description == nil or description == '') then
        if (description == nil or description == '') then
description = create_description(prop, frame)
            description = create_description(prop, frame)  
end
        end
       
-- Vary the font size based on the number of characters to prevent overflow
        -- Improved font size scaling
local fontsize = '1rem'
        local fontsize = '1rem'
if #description > 60 and #description < 71 then
        local line_height = '1.2'
fontsize = '0.95rem'
        local max_chars = 60
elseif #description > 70 and #description < 91 then
       
fontsize = '0.875rem'
        if #description > max_chars then
elseif #description > 90 then
            -- Calculate reduced font size based on length
fontsize = '0.8rem'
            local overflow_ratio = math.min(#description / max_chars, 2) -- Cap at 2x
end
            fontsize = string.format('%.2frem', 1 / overflow_ratio)
           
local upgrade_box = frame:expandTemplate{
            -- Adjust line height for better readability
title = "Ability_card_v2/Card/UpgradeBox",
            line_height = '1.1'
args = {
        end
  cost = UPGRADE_COST_MAP[k],
       
  description = frame:preprocess(description),
        local upgrade_box = frame:expandTemplate{
  scale_value = prop.Scale and commonutils.round_to_sig_fig(prop.Scale.Value, 3),
            title = "Ability_card_v2/Card/UpgradeBox",
  scale_type =  prop.Scale and prop.Scale.Type,
            args = {
  fontsize = fontsize
              cost = UPGRADE_COST_MAP[k],  
}
              description = frame:preprocess(description),
}
              scale_value = prop.Scale and commonutils.round_to_sig_fig(prop.Scale.Value, 3),
table.insert(upgrade_boxes, upgrade_box)
              scale_type =  prop.Scale and prop.Scale.Type,
end
              fontsize = fontsize,
              line_height = line_height
return upgrade_boxes
            }
        }
        table.insert(upgrade_boxes, upgrade_box)
    end
   
    return upgrade_boxes
end
end