it is done
This commit is contained in:
145
core/src/mindustry/io/versions/LegacyTypeTable.java
Normal file
145
core/src/mindustry/io/versions/LegacyTypeTable.java
Normal file
@@ -0,0 +1,145 @@
|
||||
package mindustry.io.versions;
|
||||
|
||||
import arc.func.Prov;
|
||||
import mindustry.entities.type.Bullet;
|
||||
import mindustry.entities.effect.*;
|
||||
import mindustry.entities.type.Player;
|
||||
import mindustry.entities.type.base.*;
|
||||
|
||||
/*
|
||||
Latest data: [build 81]
|
||||
|
||||
0 = Player
|
||||
1 = Fire
|
||||
2 = Puddle
|
||||
3 = MinerDrone
|
||||
4 = RepairDrone
|
||||
5 = BuilderDrone
|
||||
6 = GroundUnit
|
||||
7 = GroundUnit
|
||||
8 = GroundUnit
|
||||
9 = GroundUnit
|
||||
10 = GroundUnit
|
||||
11 = FlyingUnit
|
||||
12 = FlyingUnit
|
||||
13 = Revenant
|
||||
|
||||
Before removal of lightining/bullet: [build 80]
|
||||
|
||||
0 = Player
|
||||
1 = Fire
|
||||
2 = Puddle
|
||||
3 = Bullet
|
||||
4 = Lightning
|
||||
5 = MinerDrone
|
||||
6 = RepairDrone
|
||||
7 = BuilderDrone
|
||||
8 = GroundUnit
|
||||
9 = GroundUnit
|
||||
10 = GroundUnit
|
||||
11 = GroundUnit
|
||||
12 = GroundUnit
|
||||
13 = FlyingUnit
|
||||
14 = FlyingUnit
|
||||
15 = Revenant
|
||||
|
||||
Before addition of new units: [build 79 and below]
|
||||
|
||||
0 = Player
|
||||
1 = Fire
|
||||
2 = Puddle
|
||||
3 = Bullet
|
||||
4 = Lightning
|
||||
5 = RepairDrone
|
||||
6 = GroundUnit
|
||||
7 = GroundUnit
|
||||
8 = GroundUnit
|
||||
9 = GroundUnit
|
||||
10 = GroundUnit
|
||||
11 = FlyingUnit
|
||||
12 = FlyingUnit
|
||||
13 = BuilderDrone
|
||||
14 = Revenant
|
||||
*/
|
||||
public class LegacyTypeTable{
|
||||
/*
|
||||
0 = Player
|
||||
1 = Fire
|
||||
2 = Puddle
|
||||
3 = Draug
|
||||
4 = Spirit
|
||||
5 = Phantom
|
||||
6 = Dagger
|
||||
7 = Crawler
|
||||
8 = Titan
|
||||
9 = Fortress
|
||||
10 = Eruptor
|
||||
11 = Wraith
|
||||
12 = Ghoul
|
||||
13 = Revenant
|
||||
*/
|
||||
private static final Prov[] build81Table = {
|
||||
Player::new,
|
||||
Fire::new,
|
||||
Puddle::new,
|
||||
MinerDrone::new,
|
||||
RepairDrone::new,
|
||||
BuilderDrone::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
FlyingUnit::new,
|
||||
FlyingUnit::new,
|
||||
HoverUnit::new
|
||||
};
|
||||
|
||||
private static final Prov[] build80Table = {
|
||||
Player::new,
|
||||
Fire::new,
|
||||
Puddle::new,
|
||||
Bullet::new,
|
||||
Lightning::new,
|
||||
MinerDrone::new,
|
||||
RepairDrone::new,
|
||||
BuilderDrone::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
FlyingUnit::new,
|
||||
FlyingUnit::new,
|
||||
HoverUnit::new
|
||||
};
|
||||
|
||||
private static final Prov[] build79Table = {
|
||||
Player::new,
|
||||
Fire::new,
|
||||
Puddle::new,
|
||||
Bullet::new,
|
||||
Lightning::new,
|
||||
RepairDrone::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
GroundUnit::new,
|
||||
FlyingUnit::new,
|
||||
FlyingUnit::new,
|
||||
BuilderDrone::new,
|
||||
HoverUnit::new
|
||||
};
|
||||
|
||||
public static Prov[] getTable(int build){
|
||||
if(build == -1 || build == 81){
|
||||
//return most recent one since that's probably it; not guaranteed
|
||||
return build81Table;
|
||||
}else if(build == 80){
|
||||
return build80Table;
|
||||
}else{
|
||||
return build79Table;
|
||||
}
|
||||
}
|
||||
}
|
||||
32
core/src/mindustry/io/versions/Save1.java
Normal file
32
core/src/mindustry/io/versions/Save1.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package mindustry.io.versions;
|
||||
|
||||
import arc.func.*;
|
||||
import mindustry.entities.traits.*;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
public class Save1 extends Save2{
|
||||
|
||||
public Save1(){
|
||||
version = 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readEntities(DataInput stream) throws IOException{
|
||||
Prov[] table = LegacyTypeTable.getTable(lastReadBuild);
|
||||
|
||||
byte groups = stream.readByte();
|
||||
|
||||
for(int i = 0; i < groups; i++){
|
||||
int amount = stream.readInt();
|
||||
for(int j = 0; j < amount; j++){
|
||||
readChunk(stream, true, in -> {
|
||||
byte typeid = in.readByte();
|
||||
byte version = in.readByte();
|
||||
SaveTrait trait = (SaveTrait)table[typeid].get();
|
||||
trait.readSave(in, version);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
35
core/src/mindustry/io/versions/Save2.java
Normal file
35
core/src/mindustry/io/versions/Save2.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package mindustry.io.versions;
|
||||
|
||||
import mindustry.ctype.ContentType;
|
||||
import mindustry.entities.traits.*;
|
||||
import mindustry.io.*;
|
||||
import mindustry.type.TypeID;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
import static mindustry.Vars.content;
|
||||
|
||||
public class Save2 extends SaveVersion{
|
||||
|
||||
public Save2(){
|
||||
super(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readEntities(DataInput stream) throws IOException{
|
||||
byte groups = stream.readByte();
|
||||
|
||||
for(int i = 0; i < groups; i++){
|
||||
int amount = stream.readInt();
|
||||
for(int j = 0; j < amount; j++){
|
||||
//TODO throw exception on read fail
|
||||
readChunk(stream, true, in -> {
|
||||
byte typeid = in.readByte();
|
||||
byte version = in.readByte();
|
||||
SaveTrait trait = (SaveTrait)content.<TypeID>getByID(ContentType.typeid, typeid).constructor.get();
|
||||
trait.readSave(in, version);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
9
core/src/mindustry/io/versions/Save3.java
Normal file
9
core/src/mindustry/io/versions/Save3.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package mindustry.io.versions;
|
||||
|
||||
import mindustry.io.*;
|
||||
|
||||
public class Save3 extends SaveVersion{
|
||||
public Save3(){
|
||||
super(3);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user