Instantly invalidate synchronizers for mattery players
This commit is contained in:
parent
af916f39e9
commit
949e529b19
@ -179,8 +179,6 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
private var shouldPlaySound = false
|
||||
private val research = IdentityHashMap<AndroidResearchType, AndroidResearch>()
|
||||
|
||||
private var invalidateNetworkIn = 10
|
||||
|
||||
val isEverAndroid: Boolean get() = isAndroid || willBecomeAndroid
|
||||
var lastJumpTicks = 14
|
||||
|
||||
@ -193,7 +191,20 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
val androidEnergy = AndroidPowerSource(ply, synchronizer, ServerConfig.ANDROID_MAX_ENERGY, ServerConfig.ANDROID_MAX_ENERGY)
|
||||
|
||||
fun invalidateNetworkState() {
|
||||
invalidateNetworkIn = 10
|
||||
synchronizer.invalidate()
|
||||
publicSynchronizer.invalidate()
|
||||
|
||||
for (instance in research.values) {
|
||||
instance.invalidateNetwork()
|
||||
}
|
||||
|
||||
for (feature in featureMap.values) {
|
||||
feature.invalidateNetwork()
|
||||
}
|
||||
|
||||
for (i in 0 until exoSuitMenu.slots.size) {
|
||||
exoSuitMenu.setRemoteSlotNoCopy(i, ItemStack.EMPTY)
|
||||
}
|
||||
}
|
||||
|
||||
fun becomeAndroidSoft() {
|
||||
@ -646,23 +657,6 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
|
||||
queuedTicks.clear()
|
||||
|
||||
if (invalidateNetworkIn > 0 && --invalidateNetworkIn == 0) {
|
||||
synchronizer.invalidate()
|
||||
publicSynchronizer.invalidate()
|
||||
|
||||
for (instance in research.values) {
|
||||
instance.invalidateNetwork()
|
||||
}
|
||||
|
||||
for (feature in featureMap.values) {
|
||||
feature.invalidateNetwork()
|
||||
}
|
||||
|
||||
for (i in 0 until exoSuitMenu.slots.size) {
|
||||
exoSuitMenu.setRemoteSlotNoCopy(i, ItemStack.EMPTY)
|
||||
}
|
||||
}
|
||||
|
||||
tickedOnce = true
|
||||
|
||||
val payload = synchronizer.collectNetworkPayload()
|
||||
|
@ -418,6 +418,10 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
||||
|
||||
private var mappingVersion = -1
|
||||
|
||||
fun invalidateMappings() {
|
||||
mappingVersion = -1
|
||||
}
|
||||
|
||||
fun markUnused() {
|
||||
require(this === defaultEndpoint) { "This is not a default endpoint" }
|
||||
if (unused) return
|
||||
@ -1023,10 +1027,17 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* marks all fields dirty, invalidates mappings for each endpoint
|
||||
*/
|
||||
fun invalidate() {
|
||||
for (field in fields) {
|
||||
field.markDirty()
|
||||
}
|
||||
|
||||
forEachEndpoint {
|
||||
it.invalidateMappings()
|
||||
}
|
||||
}
|
||||
|
||||
fun observe(): Boolean {
|
||||
|
Loading…
Reference in New Issue
Block a user