diff --git a/src/pokedex.c b/src/pokedex.c index d4f2081a68..ef8c7899d8 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2890,6 +2890,12 @@ static void CreateInterfaceSprites(u8 page) else { u16 seenOwnedCount; + // Changes sprite distance based on the seen count (owned count can't ever be bigger than it) + u8 counterXDist = sPokedexView->seenCount > 999 ? 7 : 8; + u8 counterX1s = sPokedexView->seenCount > 999 ? 57 : 56; + u8 counterX10s = counterX1s - counterXDist; + u8 counterX100s = counterX10s - counterXDist; + u8 counterX1000s = counterX100s - counterXDist; // Seen text CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 40, 1); @@ -2914,7 +2920,7 @@ static void CreateInterfaceSprites(u8 page) // Hoenn seen value - 100s seenOwnedCount = GetHoennPokedexCount(FLAG_GET_SEEN); drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 45, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 45, 1); digitNum = seenOwnedCount / 100; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) @@ -2923,7 +2929,7 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn seen value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 45, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 45, 1); digitNum = (seenOwnedCount % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); @@ -2931,38 +2937,49 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn seen value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 45, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 45, 1); digitNum = (seenOwnedCount % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); - // National seen value - 100s + // National seen value - 1000s drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 55, 1); - digitNum = sPokedexView->seenCount / 100; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1000s, 55, 1); + digitNum = sPokedexView->seenCount / 1000; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) drawNextDigit = TRUE; else gSprites[spriteId].invisible = TRUE; + // National seen value - 100s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 55, 1); + digitNum = (sPokedexView->seenCount % 1000) / 100; + if (digitNum != 0 || drawNextDigit) + { + drawNextDigit = TRUE; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else + gSprites[spriteId].invisible = TRUE; + // National seen value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 55, 1); - digitNum = (sPokedexView->seenCount % 100) / 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 55, 1); + digitNum = ((sPokedexView->seenCount % 1000) % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); else gSprites[spriteId].invisible = TRUE; // National seen value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 55, 1); - digitNum = (sPokedexView->seenCount % 100) % 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 55, 1); + digitNum = ((sPokedexView->seenCount % 1000) % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); seenOwnedCount = GetHoennPokedexCount(FLAG_GET_CAUGHT); // Hoenn owned value - 100s drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 81, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 81, 1); digitNum = seenOwnedCount / 100; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) @@ -2971,7 +2988,7 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn owned value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 81, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 81, 1); digitNum = (seenOwnedCount % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); @@ -2979,31 +2996,42 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn owned value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 81, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 81, 1); digitNum = (seenOwnedCount % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); - // National owned value - 100s + // National owned value - 1000s drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 91, 1); - digitNum = sPokedexView->ownCount / 100; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1000s, 91, 1); + digitNum = sPokedexView->ownCount / 1000; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) drawNextDigit = TRUE; else gSprites[spriteId].invisible = TRUE; + // National owned value - 100s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 91, 1); + digitNum = (sPokedexView->ownCount % 1000) / 100; + if (digitNum != 0 || drawNextDigit) + { + drawNextDigit = TRUE; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else + gSprites[spriteId].invisible = TRUE; + // National owned value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 91, 1); - digitNum = (sPokedexView->ownCount % 100) / 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 91, 1); + digitNum = ((sPokedexView->ownCount % 1000) % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); else gSprites[spriteId].invisible = TRUE; // National owned value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 91, 1); - digitNum = (sPokedexView->ownCount % 100) % 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 91, 1); + digitNum = ((sPokedexView->ownCount % 1000) % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); } spriteId = CreateSprite(&sDexListStartMenuCursorSpriteTemplate, 136, 96, 1);