diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index b53213499..d06127b6d 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -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") } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt index ea3701741..2f94d4a0b 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt @@ -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)