mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Check size of shelf in a better way
This commit is contained in:
parent
32293edd1a
commit
af02250f88
1 changed files with 9 additions and 7 deletions
|
|
@ -82,8 +82,10 @@ class ShelfListener : InteractionListener {
|
|||
)
|
||||
}
|
||||
|
||||
private val shelfItemsNames = shelves[shelfId]!!.map { it.first }
|
||||
private val shelfItemsIds = shelves[shelfId]!!.map { it.second }
|
||||
private val shelf = shelves[shelfId]!!
|
||||
private val shelfItemsNames = shelf.map { it.first }
|
||||
private val shelfItemsIds = shelf.map { it.second }
|
||||
private val size = shelf.size
|
||||
|
||||
private fun checkItem(player: Player, idx : Int){
|
||||
val item = shelfItemsIds[idx]
|
||||
|
|
@ -98,14 +100,14 @@ class ShelfListener : InteractionListener {
|
|||
|
||||
private fun createTopics(page: Int, itemsPerPage: Int): MutableList<Topic<Int>> {
|
||||
val startIndex = (page - 1) * itemsPerPage
|
||||
val endIndex = (startIndex + itemsPerPage).coerceAtMost(shelfItemsNames.size)
|
||||
val endIndex = (startIndex + itemsPerPage).coerceAtMost(size)
|
||||
|
||||
val topics = shelfItemsNames.subList(startIndex, endIndex)
|
||||
.mapIndexed { index, item -> Topic(item, startIndex + index + 1, skipPlayer = true) }
|
||||
.toMutableList()
|
||||
|
||||
// Add "More" button if there's another page or to loop back
|
||||
if (endIndex < shelfItemsNames.size || page > 1) {
|
||||
if (endIndex < size || page > 1) {
|
||||
topics.add(Topic("More", endIndex + 1, skipPlayer = true))
|
||||
}
|
||||
|
||||
|
|
@ -122,11 +124,11 @@ class ShelfListener : InteractionListener {
|
|||
val itemsPerPage = 4
|
||||
|
||||
when (stage) {
|
||||
0, shelfItemsNames.size + 1 -> { // Initial stage or final more button clicked
|
||||
0, size + 1 -> { // Initial stage or final more button clicked
|
||||
val topics = createTopics(1, itemsPerPage)
|
||||
showTopics(*topics.toTypedArray()).also { stage = 1 }
|
||||
}
|
||||
in 1..shelfItemsNames.size -> {
|
||||
in 1..size -> {
|
||||
val currentPage = (stage-1) / itemsPerPage
|
||||
val startIndex = currentPage * itemsPerPage
|
||||
|
||||
|
|
@ -135,7 +137,7 @@ class ShelfListener : InteractionListener {
|
|||
showTopics(*topics.toTypedArray()).also { stage = currentPage*itemsPerPage + 1 }
|
||||
} else { // Handle item selection
|
||||
val itemIndex = startIndex + (buttonID - 1)
|
||||
if (itemIndex < shelfItemsNames.size) {
|
||||
if (itemIndex < size) {
|
||||
checkItem(player!!, itemIndex)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue