Code: Select all
Texture "HOUS11", 64, 128
{
Patch "HOUS11", 0, 0
}
Code: Select all
Texture "HOUS11", 64, 128
{
Patch "HOUS11", 0, 0
}
Code: Select all
WallTexture "HOUS11", 64, 128
{
Patch "HOUS11", 0, 0
}
Code: Select all
Resolved self-referencing texture by picking an older entry for HOUS11
Code: Select all
Resolved self-referencing texture by picking an older entry for END0
Code: Select all
void FMultiPatchTexture::ResolvePatches()
{
if (Inits != nullptr)
{
for (int i = 0; i < NumParts; i++)
{
FTextureID texno = TexMan.CheckForTexture(Inits[i].TexName, Inits[i].UseType);
if (texno == id) // we found ourselves. Try looking for another one with the same name which is not a multipatch texture itself.
{
TArray<FTextureID> list;
TexMan.ListTextures(Inits[i].TexName, list, true);
for (int i = list.Size() - 1; i >= 0; i--)
{
if (list[i] != id && !TexMan[list[i]]->bMultiPatch)
{
texno = list[i];
break;
}
}
if (texno == id)
{
if (Inits[i].HasLine) Inits[i].sc.Message(MSG_WARNING, "Texture '%s' references itself as patch\n", Inits[i].TexName.GetChars());
else Printf(TEXTCOLOR_YELLOW "Texture '%s' references itself as patch\n", Inits[i].TexName.GetChars());
continue;
}
else
{
// If it could be resolved, just print a developer warning.
DPrintf(DMSG_WARNING, "Resolved self-referencing texture by picking an older entry for %s\n", Inits[i].TexName.GetChars());
}
}
if (!texno.isValid())
{
if (!Inits[i].Silent)
{
if (Inits[i].HasLine) Inits[i].sc.Message(MSG_WARNING, "Unknown patch '%s' in texture '%s'\n", Inits[i].TexName.GetChars(), Name.GetChars());
else Printf(TEXTCOLOR_YELLOW "Unknown patch '%s' in texture '%s'\n", Inits[i].TexName.GetChars(), Name.GetChars());
}
}
Code: Select all
page //5
{
name = "Moose";
dialog = "Been to the city a few times. Walked south-a-ways, and north too for a few miles, but didn't find anywhere worth going back too. Decided to settle here, when I got old. ";
I don't think that's it. There isn't anything particularly unusual about defining a texture with the same name as the patch within it (and that's basically what we are talking about here).Vostyok wrote:Might be a holdover from the old textures I was using. This thing went through XWE after all. I know, bad times.
Other way around. The patch is the older entry. It says it has a texture FOOBAR that is defined as being made up of FOOBAR, which is a self-reference, but it found another FOOBAR further back that it can use to resolve the situation. And well, that resolution happens to be exactly what the modder wanted it to do so the warnings are extra fussy.Enjay wrote:Interesting. Given that the definitions work as expected, the "older entry"/"entry loaded earlier" must be the texture definition in the TEXTURES lump and the subsequent entry is, what, the actual graphic lump? the patch name in the texture definition?
But in my case, I had:Gez wrote:Other way around. The patch is the older entry. It says it has a texture FOOBAR that is defined as being made up of FOOBAR, which is a self-reference, but it found another FOOBAR further back that it can use to resolve the situation. And well, that resolution happens to be exactly what the modder wanted it to do so the warnings are extra fussy.
Code: Select all
graphic END0, 230, 106
{
XScale 2.0
YScale 2.0
Patch END0, 0, 0
Offset 12, 0
}
Graf Zahl wrote:This means that you essentially have a texture definition error and no patch with the given name could be found. In that case the last defined texture of any type will be picked, which in this case is the one you were defining.
OOOHHH GOD, let's talk to EVERYBODY!Vostyok wrote:You personally have an Easter egg or two to find later, buddy. Perhaps that can be payment?