Editing LoadScreen.lua

esosorcdc

Chieftain
Joined
Aug 3, 2017
Messages
90
I have a lot of units in my mod and I don't want them all to display in the load screen, I just want one entry to show up that represents all of them. Searching the base game files, I see that file LoadScreen.lua (Sid Meier's Civilization VI\Base\Assets\UI\FrontEnd) is what populates the list of units in the load screen. And searching the code, I see how it does this is by Get commands for Leader Traits and Civilization Traits, then it populates tables based on this information, then from the information populated in the tables it creates the list that shows up in the load screen. So the question is, would it be possible to edit the CivUniqueUnits tables then regenerate the load screen list? Possibly by creating a LoadScreen.lua in your mod and using commands to delete and add entries to the CivUniqueUnits table, then re running the Generate content section?

Spoiler Code From Base Game File LoadScreen.lua :

Code:
-- Obtain "uniques" from Civilization and for the chosen leader
    local uniqueAbilities;
    local uniqueUnits;
    local uniqueBuildings;
    uniqueAbilities, uniqueUnits, uniqueBuildings = GetLeaderUniqueTraits( leaderType );
    local CivUniqueAbilities, CivUniqueUnits, CivUniqueBuildings = GetCivilizationUniqueTraits( civType );
    
    -- Merge tables
    for i,v in ipairs(CivUniqueAbilities)    do table.insert(uniqueAbilities, v) end
    for i,v in ipairs(CivUniqueUnits)        do table.insert(uniqueUnits, v)        end
    for i,v in ipairs(CivUniqueBuildings)    do table.insert(uniqueBuildings, v) end

    -- Generate content
    for _, item in ipairs(uniqueAbilities) do
        --print( "ua:", item.TraitType, item.Name, item.Description, Locale.Lookup(item.Description));    --debug
        local instance:table = {};
        ContextPtr:BuildInstanceForControl("TextInfoInstance", instance, Controls.FeaturesStack );
        local headerText:string = Locale.ToUpper(Locale.Lookup( item.Name ));
        instance.Header:SetText( headerText );
        instance.Description:SetText( Locale.Lookup( item.Description ) );
    end

    local size:number = SIZE_BUILDING_ICON;

    for _, item in ipairs(uniqueUnits) do
        --print( "uu:", item.TraitType, item.Name, item.Description, Locale.Lookup(item.Description));    --debug
        local instance:table = {};
        ContextPtr:BuildInstanceForControl("IconInfoInstance", instance, Controls.FeaturesStack );
        iconAtlas = "ICON_"..item.Type;
        instance.Icon:SetIcon(iconAtlas);
        instance.TextStack:SetOffsetX( size + 4 );
        local headerText:string = Locale.ToUpper(Locale.Lookup( item.Name ));
        instance.Header:SetText( headerText );
        instance.Description:SetText(Locale.Lookup(item.Description));
    end


    for _, item in ipairs(uniqueBuildings) do
        --print( "ub:", item.TraitType, item.Name, item.Description, Locale.Lookup(item.Description));    --debug
        local instance:table = {};
        ContextPtr:BuildInstanceForControl("IconInfoInstance", instance, Controls.FeaturesStack );
        instance.Icon:SetSizeVal(38,38);
        iconAtlas = "ICON_"..item.Type;
        instance.Icon:SetIcon(iconAtlas);
        instance.TextStack:SetOffsetX( size + 4 );
        local headerText:string = Locale.ToUpper(Locale.Lookup( item.Name ));
        instance.Header:SetText( headerText );
        instance.Description:SetText(Locale.Lookup(item.Description));
    end

end
 
Back
Top Bottom