I am modifying the menu code for the mutator window for my own Unreal engine game mod. My menu structure is identical to UT, and after playing with the code, the following works perfectly with one exception. All the mutators with valid int files are found and names are read in, but the list items are never created.
Once again, this is slightly modified for another version of the engine. Everything compiles, all the windows and fields show up, but the list items (IE the text reading "MUTATOR.MUTATORNAME") does not even get created. To me, that means there's something wrong with this line...
or something wrong with the UMenuMutatorList...
But these compile fine and are identical to the UT versions. So, does anyone have any insight into what could be causing the list items to not be made? When I log the contents of Exclude (Exclude.Items) it is returning None.
Code:
function LoadMutators()
{
local int NumMutatorClasses;
local string NextMutator, NextDesc;
local UMenuMutatorList I;
local int j;
local int k;
GetPlayerOwner().GetNextIntDesc(MutatorBaseClass, 0, NextMutator, NextDesc);
while( (NextMutator != "") && (NumMutatorClasses < 200) )
{
I = UMenuMutatorList(Exclude.Items.Append(class'UMenuMutatorList'));
I.MutatorClass = NextMutator;
k = InStr(NextDesc, ",");
if(k == -1)
{
I.MutatorName = NextDesc;
I.HelpText = "";
}
else
{
I.MutatorName = Left(NextDesc, k);
I.HelpText = Mid(NextDesc, k+1);
}
GetPlayerOwner().GetNextIntDesc(MutatorBaseClass, NumMutatorClasses, NextMutator, NextDesc);
NumMutatorClasses++;
}
MutatorList = GetConfigString("NerfMenu.NerfPDAScreenSetupBotmatch", "SavedMutatorString", "Nerf.ini");
while(MutatorList != "")
{
j = InStr(MutatorList, ",");
if(j == -1)
{
NextMutator = MutatorList;
MutatorList = "";
}
else
{
NextMutator = Left(MutatorList, j);
MutatorList = Mid(MutatorList, j+1);
}
I = UMenuMutatorList(Exclude.Items).FindMutator(NextMutator);
if(I != None)
{
I.Remove();
Include.Items.AppendItem(I);
}
else
Log("Unknown mutator in mutator list: "$NextMutator);
}
Exclude.Sort();
}
Once again, this is slightly modified for another version of the engine. Everything compiles, all the windows and fields show up, but the list items (IE the text reading "MUTATOR.MUTATORNAME") does not even get created. To me, that means there's something wrong with this line...
Code:
UMenuMutatorList(Exclude.Items.Append(class'UMenuMutatorList'));
or something wrong with the UMenuMutatorList...
Code:
var string MutatorName;
var string MutatorClass;
function int Compare(UWindowList T, UWindowList B)
{
if(Caps(UMenuMutatorList(T).MutatorName) < Caps(UMenuMutatorList(B).MutatorName))
return -1;
return 1;
}
// Call only on sentinel
function UMenuMutatorList FindMutator(string FindMutatorClass)
{
local UMenuMutatorList I;
for(I = UMenuMutatorList(Next); I != None; I = UMenuMutatorList(I.Next))
if(I.MutatorClass ~= FindMutatorClass)
return I;
return None;
}
But these compile fine and are identical to the UT versions. So, does anyone have any insight into what could be causing the list items to not be made? When I log the contents of Exclude (Exclude.Items) it is returning None.
Last edited: