Module:TestModule: Difference between revisions

From MENACE Official Wiki
Khitrir (talk | contribs)
No edit summary
Khitrir (talk | contribs)
No edit summary
Line 3: Line 3:
---
---


---@module WeaponsData
---@module TestModule
local WeaponsData = {}
local TestModule = {}


--region Dependencies
--region Dependencies
Line 15: Line 15:


--region Private member variables
--region Private member variables
local WeaponsData
local TestModule
--endregion
--endregion


--region Private methods
--region Private methods
local function loadData()
local function loadData()
     if not WeaponsData then
     if not TestModule then
         WeaponsData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
         TestModule = JsonUtils.convertJSONToLuaTable(DATA_FILE)
     end
     end
end
end
Line 40: Line 40:
     local weaponTitle = getTitleFromArgs(frame)
     local weaponTitle = getTitleFromArgs(frame)


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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




return WeaponsData
return TestModule

Revision as of 03:16, 4 May 2026

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

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

---@module TestModule
local TestModule = {}

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

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

--region Private member variables
local TestModule
--endregion

--region Private methods
local function loadData()
    if not TestModule then
        TestModule = 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(TestModule) do
        if string.lower(weapon.Title) == string.lower(weaponTitle) then
            return weapon[property]
        end
    end
end
--endregion

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


return TestModule