Module:TestModule: Difference between revisions

From MENACE Official Wiki
Khitrir (talk | contribs)
Absolutely blatant plagiarism of Keno's work while I'm learning.
 
Khitrir (talk | contribs)
No edit summary
Line 49: Line 49:


function WeaponsData.getNameByTitle(frame)
function WeaponsData.getNameByTitle(frame)
     return getPropertyByTitle(frame, "Name") end  
     return getPropertyByTitle(frame, "Name")  
end  


function WeaponsData.getPathIDByTitle(frame)
function WeaponsData.getPathIDByTitle(frame)

Revision as of 03:14, 4 May 2026

Documentation for this module may be created at Module:TestModule/doc

---
--- Extracts attributes of Weapons from Module:Data/Weapons.json
---

---@module WeaponsData
local WeaponsData = {}

--region Dependencies
local JsonUtils = require("Module:JsonUtils")
--endregion

--region Private constants
local DATA_FILE = "Module:Data/Weapons.json"
--endregion

--region Private member variables
local WeaponsData
--endregion

--region Private methods
local function loadData()
    if not WeaponsData then
        WeaponsData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
    end
end


local function getTitleFromArgs(frame)
    if frame.args then
        return frame.args[1] or frame.args.title
    else
        return frame
    end
end


local function getPropertyByTitle(frame, property)
    loadData()

    local weaponTitle = getTitleFromArgs(frame)

    for _, weapon in ipairs(WeaponsData) do
        if string.lower(weapon.Title) == string.lower(weaponTitle) then
            return weapon[property]
        end
    end
end
--endregion

function WeaponsData.getNameByTitle(frame)
     return getPropertyByTitle(frame, "Name") 
end 

function WeaponsData.getPathIDByTitle(frame)
     return getPropertyByTitle(frame, "PathID")
end 

function WeaponsData.getShortNameByTitle(frame)
     return getPropertyByTitle(frame, "ShortName")
end 

function WeaponsData.getDescriptionByTitle(frame)
     return getPropertyByTitle(frame, "Description")
end 

function WeaponsData.getIconByTitle(frame)
     return getPropertyByTitle(frame, "Icon")
end 

function WeaponsData.getTagsByTitle(frame)
     return getPropertyByTitle(frame, "Tags")
end 

function WeaponsData.getRarityByTitle(frame)
     return getPropertyByTitle(frame, "Rarity")
end 

function WeaponsData.getMinCampaignProgressByTitle(frame)
     return getPropertyByTitle(frame, "MinCampaignProgress")
end 

function WeaponsData.getTradeValueByTitle(frame)
     return getPropertyByTitle(frame, "TradeValue")
end 

function WeaponsData.getDeployCostsByTitle(frame)
     return getPropertyByTitle(frame, "DeployCosts")
end 

function WeaponsData.getMinRangeByTitle(frame)
     return getPropertyByTitle(frame, "MinRange")
end 

function WeaponsData.getIdealRangeByTitle(frame)
     return getPropertyByTitle(frame, "IdealRange")
end 

function WeaponsData.getMaxRangeByTitle(frame)
     return getPropertyByTitle(frame, "MaxRange")
end 

function WeaponsData.getAccuracyBonusByTitle(frame)
     return getPropertyByTitle(frame, "AccuracyBonus")
end 

function WeaponsData.getAccuracyDropoffByTitle(frame)
     return getPropertyByTitle(frame, "AccuracyDropoff")
end 

function WeaponsData.getDamageByTitle(frame)
     return getPropertyByTitle(frame, "Damage")
end 

function WeaponsData.getDamageDropoffByTitle(frame)
     return getPropertyByTitle(frame, "DamageDropoff")
end 

function WeaponsData.getDamagePctCurrentHitpointsByTitle(frame)
     return getPropertyByTitle(frame, "Description")
end 

function WeaponsData.getDamagePctCurrentHitpointsMinByTitle(frame)
     return getPropertyByTitle(frame, "DamagePctCurrentHitpointsMin")
end 

function WeaponsData.getDamagePctMaxHitpointsByTitle(frame)
     return getPropertyByTitle(frame, "DamagePctMaxHitpoints")
end 

function WeaponsData.getDamagePctMaxHitpointsMinByTitle(frame)
     return getPropertyByTitle(frame, "DamagePctMaxHitpointsMin")
end 

function WeaponsData.getArmorPenetrationByTitle(frame)
     return getPropertyByTitle(frame, "ArmorPenetration")
end 

function WeaponsData.getArmorPenetrationDropoffByTitle(frame)
     return getPropertyByTitle(frame, "ArmorPenetrationDropoff")
end 

function WeaponsData.getDamageToArmorDurabilityByTitle(frame)
     return getPropertyByTitle(frame, "DamageToArmorDurability")
end 

function WeaponsData.getDamageToArmorDurabilityMultByTitle(frame)
     return getPropertyByTitle(frame, "DamageToArmorDurabilityMult")
end 

function WeaponsData.getDamageToArmorDurabilityDropoffByTitle(frame)
     return getPropertyByTitle(frame, "DamageToArmorDurabilityDropoff")
end 

function WeaponsData.getDamageToArmorDurabilityDropoffMultByTitle(frame)
     return getPropertyByTitle(frame, "DamageToArmorDurabilityDropoffMult")
end 

function WeaponsData.getSuppressionByTitle(frame)
     return getPropertyByTitle(frame, "Description")
end 

function WeaponsData.getBlackMarketMaxQuantityByTitle(frame)   
     return getPropertyByTitle(frame, "BlackMarketMaxQuantity")
end 


return WeaponsData