level emitters cache rework

This commit is contained in:
Salomão
2021-03-30 23:05:15 -03:00
parent 2fdc16d3a8
commit 40ec517480
2 changed files with 24 additions and 52 deletions
+23 -37
View File
@@ -100,51 +100,37 @@ public class TickManagerCache implements ITickManager
this.upcomingTicks.poll(); this.upcomingTicks.poll();
final int diff = (int) ( this.currentTick - tt.getLastTick() ); final int diff = (int) ( this.currentTick - tt.getLastTick() );
final TickRateModulation mod = tt.getGridTickable().tickingRequest( tt.getNode(), diff );
if( tt.getGridTickable() instanceof PartLevelEmitter ) switch ( mod )
{ {
laterTicker.put( tt.getNode(), tt ); case FASTER:
} else tt.setCurrentRate( tt.getCurrentRate() - 2 );
{ break;
case IDLE:
final TickRateModulation mod = tt.getGridTickable().tickingRequest( tt.getNode(), diff ); tt.setCurrentRate( tt.getRequest().maxTickRate );
break;
switch ( mod ) case SAME:
{ break;
case FASTER: case SLEEP:
tt.setCurrentRate( tt.getCurrentRate() - 2 ); this.sleepDevice( tt.getNode() );
break; break;
case IDLE: case SLOWER:
tt.setCurrentRate( tt.getRequest().maxTickRate ); tt.setCurrentRate( tt.getCurrentRate() + 1 );
break; break;
case SAME: case URGENT:
break; tt.setCurrentRate( 0 );
case SLEEP: break;
this.sleepDevice( tt.getNode() ); default:
break; break;
case SLOWER:
tt.setCurrentRate( tt.getCurrentRate() + 1 );
break;
case URGENT:
tt.setCurrentRate( 0 );
break;
default:
break;
}
} }
if( this.awake.containsKey( tt.getNode() ) ) if( this.awake.containsKey( tt.getNode() ) )
{ {
this.addToQueue( tt ); this.addToQueue( tt );
} }
} }
Iterator<Map.Entry<IGridNode, TickTracker>> ltIterator = laterTicker.entrySet().iterator(); PartLevelEmitter.wipeCaches();
while ( ltIterator.hasNext() )
{
Map.Entry<IGridNode, TickTracker> tickTracker = ltIterator.next();
tickTracker.getValue().getGridTickable().tickingRequest( tickTracker.getKey(), 1 );
ltIterator.remove();
}
PartLevelEmitter.wipeCaches();
} }
catch( final Throwable t ) catch( final Throwable t )
{ {
@@ -90,7 +90,7 @@ import appeng.util.Platform;
import appeng.util.inv.InvOperation; import appeng.util.inv.InvOperation;
public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherHost, IStackWatcherHost, ICraftingWatcherHost, IMEMonitorHandlerReceiver<IAEItemStack>, ICraftingProvider, IGridTickable public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherHost, IStackWatcherHost, ICraftingWatcherHost, IMEMonitorHandlerReceiver<IAEItemStack>, ICraftingProvider
{ {
@PartModels @PartModels
@@ -612,20 +612,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
} }
} }
@Nonnull
@Override
public TickingRequest getTickingRequest( @Nonnull IGridNode node )
{
return new TickingRequest( 1,1,false,false );
}
@Nonnull
@Override
public TickRateModulation tickingRequest( @Nonnull IGridNode node, int ticksSinceLastCall )
{
return TickRateModulation.URGENT;
}
static public void wipeCaches(){ static public void wipeCaches(){
gridItemCount = new HashMap<>(); gridItemCount = new HashMap<>();
fuzzyAEItemStackCount = new HashMap<>(); fuzzyAEItemStackCount = new HashMap<>();