Fixed item drop quantities not syncing

This commit is contained in:
Anuken
2018-06-09 23:33:01 -04:00
parent aca1001f9a
commit ce6bd0fd6d
2 changed files with 22 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ import io.anuke.mindustry.entities.traits.SyncTrait;
import io.anuke.mindustry.gen.CallEntity;
import io.anuke.mindustry.net.In;
import io.anuke.mindustry.net.Interpolator;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
@@ -119,8 +120,12 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
@Override
public void update() {
updateVelocity(0.2f);
updateTime();
if(Net.client()) {
interpolate();
}else{
updateVelocity(0.2f);
updateTime();
}
Tile tile = world.tileWorld(x, y);
@@ -132,7 +137,7 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
}
if(sinktime >= sinkLifetime){
remove();
CallEntity.onPickup(getID());
}
}else{
sinktime = 0f;
@@ -147,6 +152,7 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
@Override
public void reset() {
time = 0f;
interpolator.reset();
}
@Override
@@ -169,12 +175,13 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
data.writeFloat(x);
data.writeFloat(y);
data.writeByte(item.id);
data.writeShort(amount);
}
@Override
public void read(DataInput data, long time) throws IOException{
x = data.readFloat();
y = data.readFloat();
interpolator.read(x, y, data.readFloat(), data.readFloat(), time);
item = Item.getByID(data.readByte());
amount = data.readShort();
}
}

View File

@@ -26,6 +26,16 @@ public class Interpolator {
spacing = Math.min(Math.max(((TimeUtils.timeSinceMillis(sent) / 1000f) * 60f), 4f), 10);
}
public void reset(){
values = new float[0];
targets = new float[0];
target.setZero();
last.setZero();
spacing = 1f;
time = 0f;
pos.setZero();
}
public void update(){
time += 1f / spacing * Math.min(Timers.delta(), 1f);