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