Module:CustomCosmeticsFP

From ARK Wiki
Jump to navigation Jump to search

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

local Arkitecture = require( 'Module:Arkitecture' )
local Html = Arkitecture.Html
local ColumnTypes = Arkitecture.Cargo.ColumnTypes
local ParameterTypes = Arkitecture.ParameterTypes
local ParameterConstraint = Arkitecture.ParameterConstraints
local Color = require( 'Module:Color' )
local Utility = require( 'Module:Utility' )


local Data = mw.loadJsonData( 'Module:CustomCosmeticsFP/data.json' )


return Arkitecture.makeRenderer{
    RequiredLibraries = {
        'Module:Arkitecture/Common library',
    },

    PrivateComponents = {
        ModEntry = Arkitecture.Component{
            render = function ( self, ctx, instance )
                return mw.getCurrentFrame():expandTemplate{
                	title = 'Template:ModListEntry',
                	args = {
                		isCosmetic = true,
                		name = instance.Name,
                		image = instance.PreviewImage,
                		curseforgeId = instance.CfSlug,
                		pvpCosmetic = instance.IsAllowedInPvp,
                		pveCosmetic = instance.IsAllowedInPve,
                	}
                }
            end
        },
    },

    Parameters = {},

    wrapRendered = function ( self, html )
        return Html.Element{
            tag = 'div',
            classes = 'mod-list',
            html,
        }
    end,

    getSetup = function ( self, ctx )
    	local results = {}
        
        for _, record in ipairs( Data ) do
        	results[ #results + 1 ] = {
        		Component = 'ModEntry',
        		Name = record.name,
                PreviewImage = Utility.pickFileExtension(
                	string.format( 'UGC cosmetic %d', record.cfId ),
                	{ 'png', 'jpg' }
                ),
        		IsAllowedInPvp = record.isPvP,
        		IsAllowedInPve = record.isPvE,
        		CfId = record.cfId,
        		CfSlug = record.cfSlug,
        	}
        end
        
        return results
    end
}