Bugfixes, balancing
This commit is contained in:
@@ -14,12 +14,13 @@ import static mindustry.Vars.content;
|
||||
public class ItemModule extends BlockModule{
|
||||
public static final ItemModule empty = new ItemModule();
|
||||
|
||||
private static final int windowSize = 60 * 4;
|
||||
private static final int windowSize = 6;
|
||||
private static WindowedMean[] cacheFlow;
|
||||
private static float[] cacheSums;
|
||||
private static float[] displayFlow;
|
||||
private static Bits cacheBits = new Bits();
|
||||
private static Interval flowTimer = new Interval(1);
|
||||
private static final Bits cacheBits = new Bits();
|
||||
private static final Interval flowTimer = new Interval(2);
|
||||
private static final float pollScl = 20f;
|
||||
|
||||
protected int[] items = new int[content.items().size];
|
||||
protected int total;
|
||||
@@ -41,38 +42,42 @@ public class ItemModule extends BlockModule{
|
||||
|
||||
public void update(boolean showFlow){
|
||||
if(showFlow){
|
||||
if(flow == null){
|
||||
if(cacheFlow == null || cacheFlow.length != items.length){
|
||||
cacheFlow = new WindowedMean[items.length];
|
||||
for(int i = 0; i < items.length; i++){
|
||||
cacheFlow[i] = new WindowedMean(windowSize);
|
||||
//update the flow at 30fps at most
|
||||
if(flowTimer.get(1, pollScl)){
|
||||
|
||||
if(flow == null){
|
||||
if(cacheFlow == null || cacheFlow.length != items.length){
|
||||
cacheFlow = new WindowedMean[items.length];
|
||||
for(int i = 0; i < items.length; i++){
|
||||
cacheFlow[i] = new WindowedMean(windowSize);
|
||||
}
|
||||
cacheSums = new float[items.length];
|
||||
displayFlow = new float[items.length];
|
||||
}else{
|
||||
for(int i = 0; i < items.length; i++){
|
||||
cacheFlow[i].reset();
|
||||
}
|
||||
Arrays.fill(cacheSums, 0);
|
||||
cacheBits.clear();
|
||||
}
|
||||
cacheSums = new float[items.length];
|
||||
displayFlow = new float[items.length];
|
||||
}else{
|
||||
for(int i = 0; i < items.length; i++){
|
||||
cacheFlow[i].reset();
|
||||
}
|
||||
Arrays.fill(cacheSums, 0);
|
||||
cacheBits.clear();
|
||||
|
||||
Arrays.fill(displayFlow, -1);
|
||||
|
||||
flow = cacheFlow;
|
||||
}
|
||||
|
||||
Arrays.fill(displayFlow, -1);
|
||||
boolean updateFlow = flowTimer.get(30);
|
||||
|
||||
flow = cacheFlow;
|
||||
}
|
||||
for(int i = 0; i < items.length; i++){
|
||||
flow[i].add(cacheSums[i]);
|
||||
if(cacheSums[i] > 0){
|
||||
cacheBits.set(i);
|
||||
}
|
||||
cacheSums[i] = 0;
|
||||
|
||||
boolean updateFlow = flowTimer.get(30);
|
||||
|
||||
for(int i = 0; i < items.length; i++){
|
||||
flow[i].add(cacheSums[i]);
|
||||
if(cacheSums[i] > 0){
|
||||
cacheBits.set(i);
|
||||
}
|
||||
cacheSums[i] = 0;
|
||||
|
||||
if(updateFlow){
|
||||
displayFlow[i] = flow[i].hasEnoughData() ? flow[i].mean() / Time.delta : -1;
|
||||
if(updateFlow){
|
||||
displayFlow[i] = flow[i].hasEnoughData() ? flow[i].mean() / pollScl : -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
|
||||
@@ -11,8 +11,9 @@ import java.util.*;
|
||||
import static mindustry.Vars.content;
|
||||
|
||||
public class LiquidModule extends BlockModule{
|
||||
private static final int windowSize = 60, updateInterval = 60;
|
||||
private static Interval flowTimer = new Interval(1);
|
||||
private static final int windowSize = 3, updateInterval = 60;
|
||||
private static final Interval flowTimer = new Interval(2);
|
||||
private static final float pollScl = 20f;
|
||||
|
||||
private float[] liquids = new float[content.liquids().size];
|
||||
private float total;
|
||||
@@ -25,11 +26,14 @@ public class LiquidModule extends BlockModule{
|
||||
public void update(boolean showFlow){
|
||||
smoothLiquid = Mathf.lerpDelta(smoothLiquid, currentAmount(), 0.1f);
|
||||
if(showFlow){
|
||||
if(flow == null) flow = new WindowedMean(windowSize);
|
||||
flow.add(lastAdded);
|
||||
lastAdded = 0;
|
||||
if(currentFlowRate < 0 || flowTimer.get(updateInterval)){
|
||||
currentFlowRate = flow.hasEnoughData() ? flow.mean() / Time.delta : -1f;
|
||||
if(flowTimer.get(1, pollScl)){
|
||||
|
||||
if(flow == null) flow = new WindowedMean(windowSize);
|
||||
flow.add(lastAdded);
|
||||
lastAdded = 0;
|
||||
if(currentFlowRate < 0 || flowTimer.get(updateInterval)){
|
||||
currentFlowRate = flow.hasEnoughData() ? flow.mean() / pollScl : -1f;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
currentFlowRate = -1f;
|
||||
|
||||
Reference in New Issue
Block a user