Implemented authoritative movement/shooting, fixed netbugs
This commit is contained in:
@@ -6,6 +6,8 @@ import io.anuke.annotations.Annotations.WriteClass;
|
||||
import io.anuke.mindustry.entities.Player;
|
||||
import io.anuke.mindustry.entities.Unit;
|
||||
import io.anuke.mindustry.entities.bullet.BulletType;
|
||||
import io.anuke.mindustry.entities.traits.CarriableTrait;
|
||||
import io.anuke.mindustry.entities.traits.CarryTrait;
|
||||
import io.anuke.mindustry.entities.units.BaseUnit;
|
||||
import io.anuke.mindustry.game.Team;
|
||||
import io.anuke.mindustry.net.Packets.KickReason;
|
||||
@@ -51,6 +53,39 @@ public class TypeIO {
|
||||
return (Unit)Entities.getGroup(gid).getByID(id);
|
||||
}
|
||||
|
||||
@WriteClass(CarriableTrait.class)
|
||||
public static void writeCarriable(ByteBuffer buffer, CarriableTrait unit){
|
||||
if(unit == null){
|
||||
buffer.put((byte)-1);
|
||||
return;
|
||||
}
|
||||
buffer.put((byte)unit.getGroup().getID());
|
||||
buffer.putInt(unit.getID());
|
||||
}
|
||||
|
||||
@ReadClass(CarriableTrait.class)
|
||||
public static CarriableTrait readCarriable(ByteBuffer buffer){
|
||||
byte gid = buffer.get();
|
||||
if(gid == -1){
|
||||
return null;
|
||||
}
|
||||
int id = buffer.getInt();
|
||||
return (CarriableTrait)Entities.getGroup(gid).getByID(id);
|
||||
}
|
||||
|
||||
@WriteClass(CarryTrait.class)
|
||||
public static void writeCarry(ByteBuffer buffer, CarryTrait unit){
|
||||
buffer.put((byte)unit.getGroup().getID());
|
||||
buffer.putInt(unit.getID());
|
||||
}
|
||||
|
||||
@ReadClass(CarryTrait.class)
|
||||
public static CarryTrait readCarry(ByteBuffer buffer){
|
||||
byte gid = buffer.get();
|
||||
int id = buffer.getInt();
|
||||
return (CarryTrait)Entities.getGroup(gid).getByID(id);
|
||||
}
|
||||
|
||||
@WriteClass(BaseUnit.class)
|
||||
public static void writeBaseUnit(ByteBuffer buffer, BaseUnit unit){
|
||||
buffer.put((byte)unit.getGroup().getID());
|
||||
|
||||
@@ -92,9 +92,11 @@ public class Save16 extends SaveFileVersion {
|
||||
for(int y = 0; y < height; y ++) {
|
||||
byte floorid = stream.readByte();
|
||||
byte wallid = stream.readByte();
|
||||
byte elevation = stream.readByte();
|
||||
|
||||
Tile tile = new Tile(x, y, floorid, wallid);
|
||||
|
||||
tile.elevation = elevation;
|
||||
|
||||
if (wallid == Blocks.blockpart.id) {
|
||||
tile.link = stream.readByte();
|
||||
@@ -190,8 +192,9 @@ public class Save16 extends SaveFileVersion {
|
||||
for(int y = 0; y < world.height(); y ++){
|
||||
Tile tile = world.tile(x, y);
|
||||
|
||||
stream.writeByte(tile.floor().id); //floor ID
|
||||
stream.writeByte(tile.block().id); //wall ID
|
||||
stream.writeByte(tile.floor().id);
|
||||
stream.writeByte(tile.block().id);
|
||||
stream.writeByte(tile.elevation);
|
||||
|
||||
if(tile.block() instanceof BlockPart){
|
||||
stream.writeByte(tile.link);
|
||||
|
||||
Reference in New Issue
Block a user