mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-21 06:36:25 -04:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
608be25334 |
@@ -25,14 +25,24 @@ import net.minecraft.world.item.ItemStack
|
||||
* @author whatsy
|
||||
* @since September 4th, 2024
|
||||
* @param searchString The string to use when checking.
|
||||
* @param searchByType The type of search to perform
|
||||
* @param showOnlyDiscoveredSpecies Whether to include only species that have been discovered or all species
|
||||
*/
|
||||
class SearchFilter(val pokedexManager: AbstractPokedexManager, val searchString: String, val searchByType: SearchByType = SearchByType.SPECIES) : EntryFilter() {
|
||||
class SearchFilter(
|
||||
val pokedexManager: AbstractPokedexManager,
|
||||
val searchString: String,
|
||||
val searchByType: SearchByType = SearchByType.SPECIES,
|
||||
val showOnlyDiscoveredSpecies: Boolean,
|
||||
) : EntryFilter() {
|
||||
|
||||
override fun test(entry: PokedexEntry): Boolean {
|
||||
val pokedexEntryProgress = pokedexManager.getHighestKnowledgeFor(entry)
|
||||
|
||||
if (showOnlyDiscoveredSpecies && pokedexEntryProgress == PokedexEntryProgress.NONE) return false
|
||||
if (searchString == "") return true
|
||||
|
||||
val species = PokemonSpecies.getByIdentifier(entry.speciesId) ?: return false
|
||||
if (pokedexManager.getHighestKnowledgeFor(entry) == PokedexEntryProgress.NONE) return false
|
||||
if (pokedexEntryProgress == PokedexEntryProgress.NONE) return false
|
||||
|
||||
when(searchByType) {
|
||||
SearchByType.ABILITIES -> {
|
||||
|
||||
@@ -54,6 +54,7 @@ import com.cobblemon.mod.common.net.messages.server.block.AdjustBlockEntityViewe
|
||||
import com.cobblemon.mod.common.pokemon.abilities.HiddenAbility
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.cobblemon.mod.common.util.lang
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.GuiGraphics
|
||||
import net.minecraft.client.gui.components.Renderable
|
||||
@@ -63,6 +64,7 @@ import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.network.chat.MutableComponent
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.sounds.SoundEvent
|
||||
|
||||
@@ -127,11 +129,13 @@ class PokedexGUI private constructor(
|
||||
|
||||
private lateinit var regionSelectWidgetUp: ScaledButton
|
||||
private lateinit var regionSelectWidgetDown: ScaledButton
|
||||
private lateinit var onlyDiscoveredSpeciesButton: ScaledButton
|
||||
private lateinit var searchByTypeButton: ScaledButton
|
||||
private lateinit var scrollScreen: EntriesScrollingWidget
|
||||
private lateinit var pokemonInfoWidget: PokemonInfoWidget
|
||||
private lateinit var searchWidget: SearchWidget
|
||||
|
||||
private var showOnlyDiscoveredSpecies: Boolean = false
|
||||
private var selectedSearchByType: SearchByType = SearchByType.SPECIES
|
||||
private val tabButtons: MutableList<ScaledButton> = mutableListOf()
|
||||
|
||||
@@ -171,7 +175,7 @@ class PokedexGUI private constructor(
|
||||
displaytabInfoElement(tabInfoIndex, false)
|
||||
|
||||
if (::searchWidget.isInitialized) removeWidget(searchWidget)
|
||||
searchWidget = SearchWidget(x + 26, y + 28, 128, HEADER_BAR_HEIGHT, update = ::updateFilters)
|
||||
searchWidget = SearchWidget(x + 26, y + 28, 120, HEADER_BAR_HEIGHT, update = ::updateFilters)
|
||||
addRenderableWidget(searchWidget)
|
||||
|
||||
if (::regionSelectWidgetUp.isInitialized) removeWidget(regionSelectWidgetUp)
|
||||
@@ -198,6 +202,21 @@ class PokedexGUI private constructor(
|
||||
)
|
||||
addRenderableWidget(regionSelectWidgetDown)
|
||||
|
||||
if (::onlyDiscoveredSpeciesButton.isInitialized) removeWidget(onlyDiscoveredSpeciesButton)
|
||||
onlyDiscoveredSpeciesButton = ScaledButton(
|
||||
buttonX = (x + 145.5).toFloat(),
|
||||
buttonY = (y + 29.5).toFloat(),
|
||||
buttonWidth = 16,
|
||||
buttonHeight = 16,
|
||||
scale = SCALE,
|
||||
resource = cobblemonResource("textures/gui/pokedex/tab_species.png"),
|
||||
clickAction = {
|
||||
showOnlyDiscoveredSpecies = !showOnlyDiscoveredSpecies
|
||||
updateFilters()
|
||||
}
|
||||
)
|
||||
addRenderableWidget(onlyDiscoveredSpeciesButton)
|
||||
|
||||
if (::searchByTypeButton.isInitialized) removeWidget(searchByTypeButton)
|
||||
searchByTypeButton = ScaledButton(
|
||||
buttonX = (x + 154.5).toFloat(),
|
||||
@@ -328,20 +347,28 @@ class PokedexGUI private constructor(
|
||||
|
||||
super.render(context, mouseX, mouseY, delta)
|
||||
|
||||
// Search type tooltip
|
||||
if (searchByTypeButton.isButtonHovered(mouseX, mouseY)) {
|
||||
matrices.pushPose()
|
||||
matrices.translate(0.0, 0.0, 1000.0)
|
||||
val searchTypeText = lang("ui.pokedex.search.search_by", lang("ui.pokedex.search.type.${selectedSearchByType.name.lowercase()}")).bold()
|
||||
val searchTypeTextWidth = Minecraft.getInstance().font.width(searchTypeText.font(CobblemonResources.DEFAULT_LARGE))
|
||||
val tooltipWidth = searchTypeTextWidth + 6
|
||||
|
||||
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX - (tooltipWidth / 2) - 1, y = mouseY - 16, width = 1, height = 11)
|
||||
blitk(matrixStack = matrices, texture = tooltipBackground, x = mouseX - (tooltipWidth / 2), y = mouseY - 16, width = tooltipWidth, height = 11)
|
||||
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX + (tooltipWidth / 2), y = mouseY - 16, width = 1, height = 11)
|
||||
drawScaledText(context = context, font = CobblemonResources.DEFAULT_LARGE, text = searchTypeText, x = mouseX, y = mouseY - 15, shadow = true, centered = true)
|
||||
matrices.popPose()
|
||||
if (onlyDiscoveredSpeciesButton.isButtonHovered(mouseX, mouseY)) {
|
||||
val text = lang("ui.pokedex.search.show_only_discovered").bold()
|
||||
renderPokedexStyledTooltip(context, matrices, mouseX, mouseY, text)
|
||||
}
|
||||
|
||||
if (searchByTypeButton.isButtonHovered(mouseX, mouseY)) {
|
||||
val searchTypeText = lang("ui.pokedex.search.search_by", lang("ui.pokedex.search.type.${selectedSearchByType.name.lowercase()}")).bold()
|
||||
renderPokedexStyledTooltip(context, matrices, mouseX, mouseY, searchTypeText)
|
||||
}
|
||||
}
|
||||
|
||||
private fun renderPokedexStyledTooltip(context: GuiGraphics, matrices: PoseStack, mouseX: Int, mouseY: Int, text: MutableComponent) {
|
||||
matrices.pushPose()
|
||||
matrices.translate(0.0, 0.0, 1000.0)
|
||||
val searchTypeTextWidth = Minecraft.getInstance().font.width(text.font(CobblemonResources.DEFAULT_LARGE))
|
||||
val tooltipWidth = searchTypeTextWidth + 6
|
||||
|
||||
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX - (tooltipWidth / 2) - 1, y = mouseY - 16, width = 1, height = 11)
|
||||
blitk(matrixStack = matrices, texture = tooltipBackground, x = mouseX - (tooltipWidth / 2), y = mouseY - 16, width = tooltipWidth, height = 11)
|
||||
blitk(matrixStack = matrices, texture = tooltipEdge, x = mouseX + (tooltipWidth / 2), y = mouseY - 16, width = 1, height = 11)
|
||||
drawScaledText(context = context, font = CobblemonResources.DEFAULT_LARGE, text = text, x = mouseX, y = mouseY - 15, shadow = true, centered = true)
|
||||
matrices.popPose()
|
||||
}
|
||||
|
||||
override fun onClose() {
|
||||
@@ -435,7 +462,12 @@ class PokedexGUI private constructor(
|
||||
fun getFilters(): Collection<EntryFilter> {
|
||||
val filters: MutableList<EntryFilter> = mutableListOf()
|
||||
|
||||
filters.add(SearchFilter(CobblemonClient.clientPokedexData, searchWidget.value, selectedSearchByType))
|
||||
filters.add(SearchFilter(
|
||||
CobblemonClient.clientPokedexData,
|
||||
searchWidget.value,
|
||||
selectedSearchByType,
|
||||
showOnlyDiscoveredSpecies
|
||||
))
|
||||
|
||||
return filters
|
||||
}
|
||||
|
||||
@@ -1041,6 +1041,7 @@
|
||||
"cobblemon.ui.pokedex.region.unknown": "Unknown",
|
||||
"cobblemon.ui.pokedex.region.unova": "Unova",
|
||||
|
||||
"cobblemon.ui.pokedex.search.show_only_discovered": "Show Only Discovered Species",
|
||||
"cobblemon.ui.pokedex.search.search_by": "Search by %1$s",
|
||||
"cobblemon.ui.pokedex.search.type.species": "Species Name",
|
||||
"cobblemon.ui.pokedex.search.type.abilities": "Ability",
|
||||
|
||||
Reference in New Issue
Block a user