Oops, don't show UC conflict glitch while loading

The way we were checking for UC compatibility issues, was also triggering while the appearance was still loading, so items didn't have any appearance layers yet!

Now, we check for loading before testing for that glitch.
This commit is contained in:
Emi Matchu 2021-06-08 07:23:13 -07:00
parent 277b8df838
commit efa8a4d499

View file

@ -13,34 +13,39 @@ function OutfitKnownGlitchesBadge({ appearance }) {
// Look for UC/Invisible/etc incompatibilities that we hid, that we should // Look for UC/Invisible/etc incompatibilities that we hid, that we should
// just mark Incompatible someday instead; or with correctly partially-hidden // just mark Incompatible someday instead; or with correctly partially-hidden
// art. // art.
for (const item of items) { //
// HACK: We use `getVisibleLayers` with just this pet appearance and item // NOTE: This particular glitch is checking for the *absence* of layers, so
// appearance, to run the logic for which layers are compatible with // we skip it if we're still loading!
// this pet. But `getVisibleLayers` does other things too, so it's if (!appearance.loading) {
// plausible that this could do not quite what we want in some cases! for (const item of items) {
const allItemLayers = item.appearance.layers; // HACK: We use `getVisibleLayers` with just this pet appearance and item
const compatibleItemLayers = getVisibleLayers(petAppearance, [ // appearance, to run the logic for which layers are compatible with
item.appearance, // this pet. But `getVisibleLayers` does other things too, so it's
]).filter((l) => l.source === "item"); // plausible that this could do not quite what we want in some cases!
const allItemLayers = item.appearance.layers;
const compatibleItemLayers = getVisibleLayers(petAppearance, [
item.appearance,
]).filter((l) => l.source === "item");
if (compatibleItemLayers.length === 0) { if (compatibleItemLayers.length === 0) {
glitchMessages.push( glitchMessages.push(
<Box key={`total-uc-conflict-for-item-${item.id}`}> <Box key={`total-uc-conflict-for-item-${item.id}`}>
<i>{item.name}</i> isn't actually compatible with this special pet. <i>{item.name}</i> isn't actually compatible with this special pet.
We're hiding the item art, which is outdated behavior, and we should We're hiding the item art, which is outdated behavior, and we should
instead be treating it as entirely incompatible. Fixing this is in our instead be treating it as entirely incompatible. Fixing this is in
todo list, sorry for the confusing UI! our todo list, sorry for the confusing UI!
</Box> </Box>
); );
} else if (compatibleItemLayers.length < allItemLayers.length) { } else if (compatibleItemLayers.length < allItemLayers.length) {
glitchMessages.push( glitchMessages.push(
<Box key={`partial-uc-conflict-for-item-${item.id}`}> <Box key={`partial-uc-conflict-for-item-${item.id}`}>
<i>{item.name}</i>'s compatibility with this pet is complicated, but <i>{item.name}</i>'s compatibility with this pet is complicated, but
we believe this is how it looks: some zones are visible, and some we believe this is how it looks: some zones are visible, and some
zones are hidden. If this isn't quite right, please email me at zones are hidden. If this isn't quite right, please email me at
matchu@openneo.net and let me know! matchu@openneo.net and let me know!
</Box> </Box>
); );
}
} }
} }