Barely functional IO

This commit is contained in:
Anuken
2020-02-13 19:26:36 -05:00
parent ad248e2e20
commit e3621f44da
68 changed files with 323 additions and 497 deletions

View File

@@ -3,40 +3,42 @@ package mindustry.entities.def;
import arc.*;
import arc.math.geom.*;
import arc.struct.*;
import arc.util.*;
import arc.util.ArcAnnotate.*;
import arc.util.*;
import mindustry.annotations.Annotations.*;
import mindustry.game.*;
import mindustry.game.EventType.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.world.*;
import mindustry.world.consumers.*;
import mindustry.world.modules.*;
import java.io.*;
import static mindustry.Vars.*;
@EntityDef(value = {Tilec.class}, isFinal = false)
@EntityDef(value = {Tilec.class}, isFinal = false, genio = false, serialize = false)
@Component
abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
static final float timeToSleep = 60f * 1;
static final ObjectSet<Tile> tmpTiles = new ObjectSet<>();
static int sleepingEntities = 0;
Tile tile;
Block block;
Array<Tile> proximity = new Array<>(8);
transient Tile tile;
transient Block block;
transient Array<Tile> proximity = new Array<>(8);
PowerModule power;
ItemModule items;
LiquidModule liquids;
ConsumeModule cons;
private float timeScale = 1f, timeScaleDuration;
private transient float timeScale = 1f, timeScaleDuration;
private @Nullable SoundLoop sound;
private transient @Nullable SoundLoop sound;
private boolean sleeping;
private float sleepTime;
private transient boolean sleeping;
private transient float sleepTime;
/** Sets this tile entity data to this tile, and adds it if necessary. */
@Override
@@ -60,6 +62,33 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
return this;
}
@CallSuper
public void write(DataOutput output) throws IOException{
output.writeFloat(health());
output.writeByte(tile.rotation());
output.writeByte(tile.getTeamID());
if(items != null) items.write(output);
if(power != null) power.write(output);
if(liquids != null) liquids.write(output);
if(cons != null) cons.write(output);
}
@CallSuper
@Override
public void read(DataInput input, byte revision) throws IOException{
health(input.readFloat());
byte rotation = input.readByte();
byte team = input.readByte();
tile.setTeam(Team.get(team));
tile.rotation(rotation);
if(items != null) items.read(input);
if(power != null) power.read(input);
if(liquids != null) liquids.read(input);
if(cons != null) cons.read(input);
}
@Override
public void applyBoost(float intensity, float duration){
timeScale = Math.max(timeScale, intensity);
@@ -116,6 +145,7 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
}
/** Returns the version of this TileEntity IO code.*/
//TODO implement
@Override
public byte version(){
return 0;