fix: double scroll on crafting ui opened by right-clicking on the workbench

This commit is contained in:
minjaesong
2023-11-16 16:11:01 +09:00
parent fd385d33a0
commit 21ab607298
2 changed files with 21 additions and 5 deletions

View File

@@ -10,7 +10,6 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.FrameBuffer
import com.badlogic.gdx.graphics.glutils.ShapeRenderer
import com.badlogic.gdx.utils.Disposable
import com.badlogic.gdx.utils.GdxRuntimeException
import com.jme3.math.FastMath
import net.torvald.gdx.graphics.Cvec
import net.torvald.random.HQRNG
@@ -39,7 +38,6 @@ import net.torvald.util.CircularArray
import org.dyn4j.geometry.Vector2
import java.io.File
import java.io.PrintStream
import java.util.*
import kotlin.math.*
@@ -686,10 +684,17 @@ inline fun printStackTrace(obj: Any) = printStackTrace(obj, System.out) // becau
fun printStackTrace(obj: Any, out: PrintStream = System.out) {
if (App.IS_DEVELOPMENT_BUILD) {
val indentation = " ".repeat(obj.javaClass.simpleName.length + 4)
val timeNow = System.currentTimeMillis()
val ss = timeNow / 1000 % 60
val mm = timeNow / 60000 % 60
val hh = timeNow / 3600000 % 24
val ms = timeNow % 1000
val objName = if (obj is String) obj else obj.javaClass.simpleName
val prompt = csiG + String.format("%02d:%02d:%02d.%03d%s [%s] ", hh, mm, ss, ms, csi0, objName)
val indentation = " ".repeat(objName.length + 16)
Thread.currentThread().stackTrace.forEachIndexed { index, it ->
if (index == 1)
out.println("[${obj.javaClass.simpleName}]> $it")
out.println("$prompt$it")
else if (index > 1)
out.println("$indentation$it")
}

View File

@@ -248,8 +248,19 @@ open class UIItemInventoryItemGrid(
itemList.forEach { it.customHighlightRule2 = predicate }
}
private var lastScrolled = System.nanoTime()
open fun scrollItemPage(relativeAmount: Int) {
itemPage = if (itemPageCount == 0) 0 else (itemPage + relativeAmount).fmod(itemPageCount)
val timeNow = System.nanoTime()
// hack to fix double scroll when UI opened by right clicking on the workbench
// the double-stacktrace is identical, so I have no clue why the double-scrolling is happening :/
if ((timeNow - lastScrolled) ushr 20 != 0L) { // 1.048 ms
// printStackTrace("$this@${this.hashCode()}")
itemPage = if (itemPageCount == 0) 0 else (itemPage + relativeAmount).fmod(itemPageCount)
}
lastScrolled = timeNow // some nanoseconds have passed since the timeNow but it doesn't matter
}
val navRemoCon = UIItemListNavBarVertical(parentUI, iconPosX, posY + 8, height, true, if (isCompactMode) 1 else 0)