Start processing stack extraction requests immediately
This commit is contained in:
parent
a88eda357c
commit
c9fe6400f0
|
@ -50,7 +50,6 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL),
|
|||
private val inventoryCache = mutableMapOf<IPAddress, GroupedItemInvView>()
|
||||
val internalBuffer = TerminalBufferInventory(18)
|
||||
|
||||
private val locateRequestQueue = LinkedList<StackLocateRequest>()
|
||||
private val pendingRequests = LinkedList<StackLocateRequest>()
|
||||
override val pendingInsertions = mutableListOf<PendingInsertion>()
|
||||
override val dispatchStackTimeout = INSERTION_TIMEOUT
|
||||
|
@ -103,7 +102,7 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL),
|
|||
}
|
||||
if (request != null) {
|
||||
request.results.add(packet.amount to packet.stackProvider)
|
||||
if (request.totalResultAmount >= request.amount || counter - request.timestamp >= LOCATE_REQUEST_TIMEOUT || request.results.size >= inventoryCache.size) {
|
||||
if (request.isFinishable(counter)) {
|
||||
stackLocateRequestCompleted(request)
|
||||
}
|
||||
}
|
||||
|
@ -149,16 +148,6 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL),
|
|||
}
|
||||
}
|
||||
|
||||
private fun sendEnqueuedLocateRequests() {
|
||||
if (world!!.isClient) return
|
||||
|
||||
for (request in locateRequestQueue) {
|
||||
pendingRequests.add(request)
|
||||
sendPacket(LocateStackPacket(request.stack, ipAddress))
|
||||
}
|
||||
locateRequestQueue.clear()
|
||||
}
|
||||
|
||||
private fun finishPendingRequests() {
|
||||
if (world!!.isClient) return
|
||||
if (pendingRequests.isEmpty()) return
|
||||
|
@ -181,7 +170,6 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL),
|
|||
|
||||
if (counter % 20 == 0L) {
|
||||
if (!world!!.isClient) {
|
||||
sendEnqueuedLocateRequests()
|
||||
finishPendingRequests()
|
||||
beginInsertions()
|
||||
finishTimedOutPendingInsertions()
|
||||
|
@ -222,7 +210,11 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL),
|
|||
}
|
||||
|
||||
fun requestItem(stack: ItemStack, amount: Int = stack.count) {
|
||||
locateRequestQueue.add(StackLocateRequest(stack, amount, counter))
|
||||
val request = StackLocateRequest(stack, amount, counter)
|
||||
pendingRequests.add(request)
|
||||
// locate packets are sent immediately instead of being added to a queue
|
||||
// otherwise the terminal UI feels sluggish and unresponsive
|
||||
sendPacket(LocateStackPacket(stack, ipAddress))
|
||||
}
|
||||
|
||||
private fun stackLocateRequestCompleted(request: StackLocateRequest) {
|
||||
|
|
Loading…
Reference in New Issue