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