level emitters cache rework
This commit is contained in:
+23
-37
@@ -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<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user