Removed legacy IO code

This commit is contained in:
Anuken
2020-05-21 16:50:49 -04:00
parent 61d9fd3d72
commit 14e79b50d2
13 changed files with 181 additions and 184 deletions

View File

@@ -9,18 +9,18 @@ import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import arc.util.Log.*;
import arc.util.io.*;
import mindustry.ai.*;
import mindustry.async.*;
import mindustry.audio.LoopControl;
import mindustry.audio.*;
import mindustry.core.*;
import mindustry.entities.*;
import mindustry.game.*;
import mindustry.game.EventType.*;
import mindustry.gen.*;
import mindustry.input.*;
import mindustry.maps.*;
import mindustry.io.*;
import mindustry.maps.Map;
import mindustry.maps.*;
import mindustry.mod.*;
import mindustry.net.Net;
import mindustry.net.*;
@@ -29,7 +29,7 @@ import java.io.*;
import java.nio.charset.*;
import java.util.*;
import static arc.Core.settings;
import static arc.Core.*;
public class Vars implements Loadable{
/** Whether to load locales.*/
@@ -82,7 +82,7 @@ public class Vars implements Loadable{
public static final float buildingRange = 220f;
/** duration of one turn in ticks */
public static final float turnDuration = 5 * Time.toMinutes;
/** min armor fraction damage */
/** min armor fraction damage; e.g. 0.05 = at least 5% damage */
public static final float minArmorDamage = 0.05f;
/** for map generator dialog */
public static boolean updateEditorOnChange = false;
@@ -201,9 +201,7 @@ public class Vars implements Loadable{
}
public static void init(){
Serialization.init();
Groups.init();
DefaultSerializers.typeMappings.put("mindustry.type.ContentType", "mindustry.ctype.ContentType");
if(loadLocales){
//load locales
@@ -223,7 +221,7 @@ public class Vars implements Loadable{
Version.init();
dataDirectory = Core.settings.getDataDirectory();
dataDirectory = settings.getDataDirectory();
screenshotDirectory = dataDirectory.child("screenshots/");
customMapDirectory = dataDirectory.child("maps/");
mapPreviewDirectory = dataDirectory.child("previews/");
@@ -293,7 +291,7 @@ public class Vars implements Loadable{
public static void loadFileLogger(){
if(loadedFileLogger) return;
Core.settings.setAppName(appName);
settings.setAppName(appName);
Writer writer = settings.getDataDirectory().child("last_log.txt").writer(false);
LogHandler log = Log.getLogger();
@@ -313,15 +311,16 @@ public class Vars implements Loadable{
}
public static void loadSettings(){
Core.settings.setAppName(appName);
settings.setJson(JsonIO.json());
settings.setAppName(appName);
if(steam || (Version.modifier != null && Version.modifier.contains("steam"))){
Core.settings.setDataDirectory(Core.files.local("saves/"));
settings.setDataDirectory(Core.files.local("saves/"));
}
Core.settings.defaults("locale", "default", "blocksync", true);
Core.keybinds.setDefaults(Binding.values());
Core.settings.load();
settings.defaults("locale", "default", "blocksync", true);
keybinds.setDefaults(Binding.values());
settings.load();
Scl.setProduct(settings.getInt("uiscale", 100) / 100f);
@@ -344,7 +343,7 @@ public class Vars implements Loadable{
Fi handle = Core.files.internal("bundles/bundle");
Locale locale;
String loc = Core.settings.getString("locale");
String loc = settings.getString("locale");
if(loc.equals("default")){
locale = Locale.getDefault();
}else{

View File

@@ -14,7 +14,7 @@ abstract class ShieldComp implements Healthc, Posc{
/** Absorbs health damage. */
float shield;
/** Absorbs percentage of damage, up to 90% */
/** Absorbs percentage of damage. */
float armor;
/** Shield opacity. */
transient float shieldAlpha = 0f;

View File

@@ -22,20 +22,6 @@ public class GlobalData{
private ObjectIntMap<Item> items = new ObjectIntMap<>();
private boolean modified;
public GlobalData(){
Core.settings.setSerializer(ContentType.class, (stream, t) -> stream.writeInt(t.ordinal()), stream -> ContentType.values()[stream.readInt()]);
Core.settings.setSerializer(Item.class, (stream, t) -> stream.writeUTF(t.name), stream -> content.getByName(ContentType.item, stream.readUTF()));
Core.settings.setSerializer(ItemStack.class, (stream, t) -> {
stream.writeUTF(t.item.name);
stream.writeInt(t.amount);
}, stream -> {
String name = stream.readUTF();
int amount = stream.readInt();
return new ItemStack(content.getByName(ContentType.item, name), amount);
});
}
public void exportData(Fi file) throws IOException{
Array<Fi> files = new Array<>();
files.add(Core.settings.getSettingsFile());
@@ -176,7 +162,7 @@ public class GlobalData{
@SuppressWarnings("unchecked")
public void load(){
items.clear();
unlocked = Core.settings.getObject("unlocks", ObjectMap.class, ObjectMap::new);
unlocked = Core.settings.getJson("unlocks", ObjectMap.class, ObjectMap::new);
for(Item item : Vars.content.items()){
items.put(item, Core.settings.getInt("item-" + item.name, 0));
}
@@ -188,7 +174,7 @@ public class GlobalData{
}
public void save(){
Core.settings.putObject("unlocks", unlocked);
Core.settings.putJson("unlocks", unlocked);
for(Item item : Vars.content.items()){
Core.settings.put("item-" + item.name, items.get(item, 0));
}

View File

@@ -0,0 +1,36 @@
package mindustry.io.legacy;
import arc.*;
import arc.struct.*;
import mindustry.ui.dialogs.JoinDialog.*;
import java.io.*;
public class LegacyIO{
public static Array<Server> readServers(){
Array<Server> arr = new Array<>();
try{
byte[] bytes = Core.settings.getBytes("server-list");
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(bytes));
int length = stream.readInt();
if(length > 0){
//name of type, irrelevant
stream.readUTF();
for(int i = 0; i < length; i++){
Server server = new Server();
server.ip = stream.readUTF();
server.port = stream.readInt();
arr.add(server);
}
}
}catch(Exception e){
e.printStackTrace();
}
return arr;
}
}

View File

@@ -354,7 +354,7 @@ public class Maps{
}
StringWriter buffer = new StringWriter();
json.setWriter(buffer);
json.setWriter(new JsonWriter(buffer));
json.writeArrayStart();
for(int i = 0; i < groups.size; i++){

View File

@@ -8,11 +8,12 @@ import arc.util.*;
import arc.util.pooling.Pool.*;
import arc.util.pooling.*;
import mindustry.*;
import mindustry.annotations.Annotations.*;
import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.*;
import java.io.*;
import static mindustry.Vars.*;
import static mindustry.game.EventType.*;
@@ -428,18 +429,119 @@ public class Administration{
}
public void save(){
Core.settings.putObject("player-info", playerInfo);
Core.settings.putObject("banned-ips", bannedIPs);
Core.settings.putObject("whitelisted", whitelist);
Core.settings.putObject("subnet-bans", subnetBans);
Core.settings.putJson("player-data", playerInfo);
Core.settings.putJson("ip-bans", String.class, bannedIPs);
Core.settings.putJson("whitelist", String.class, whitelist);
Core.settings.putJson("banned-subnets", String.class, subnetBans);
}
@SuppressWarnings("unchecked")
private void load(){
playerInfo = Core.settings.getObject("player-info", ObjectMap.class, ObjectMap::new);
bannedIPs = Core.settings.getObject("banned-ips", Array.class, Array::new);
whitelist = Core.settings.getObject("whitelisted", Array.class, Array::new);
subnetBans = Core.settings.getObject("subnet-bans", Array.class, Array::new);
if(!loadLegacy()){
//load default data
playerInfo = Core.settings.getJson("player-data", ObjectMap.class, ObjectMap::new);
bannedIPs = Core.settings.getJson("ip-bans", Array.class, Array::new);
whitelist = Core.settings.getJson("whitelist", Array.class, Array::new);
subnetBans = Core.settings.getJson("banned-subnets", Array.class, Array::new);
}else{
//save over loaded legacy data
save();
Log.info("Loaded legacy (5.0) server data.");
}
}
private boolean loadLegacy(){
try{
byte[] info = Core.settings.getBytes("player-info");
byte[] ips = Core.settings.getBytes("banned-ips");
byte[] whitelist = Core.settings.getBytes("whitelisted");
byte[] subnet = Core.settings.getBytes("subnet-bans");
if(info != null){
DataInputStream d = new DataInputStream(new ByteArrayInputStream(info));
int size = d.readInt();
if(size != 0){
d.readUTF();
d.readUTF();
for(int i = 0; i < size; i++){
String mapKey = d.readUTF();
PlayerInfo data = new PlayerInfo();
data.id = d.readUTF();
data.lastName = d.readUTF();
data.lastIP = d.readUTF();
int ipsize = d.readInt();
if(ipsize != 0){
d.readUTF();
for(int j = 0; j < ipsize; j++){
data.ips.add(d.readUTF());
}
}
int namesize = d.readInt();
if(namesize != 0){
d.readUTF();
for(int j = 0; j < ipsize; j++){
data.names.add(d.readUTF());
}
}
//ips, names...
data.adminUsid = d.readUTF();
data.timesKicked = d.readInt();
data.timesJoined = d.readInt();
data.banned = d.readBoolean();
data.admin = d.readBoolean();
data.lastKicked = d.readLong();
playerInfo.put(mapKey, data);
}
}
Core.settings.remove("player-info");
}
if(ips != null){
DataInputStream d = new DataInputStream(new ByteArrayInputStream(ips));
int size = d.readInt();
if(size != 0){
d.readUTF();
for(int i = 0; i < size; i++){
bannedIPs.add(d.readUTF());
}
}
Core.settings.remove("banned-ips");
}
if(whitelist != null){
DataInputStream d = new DataInputStream(new ByteArrayInputStream(whitelist));
int size = d.readInt();
if(size != 0){
d.readUTF();
for(int i = 0; i < size; i++){
this.whitelist.add(d.readUTF());
}
}
Core.settings.remove("whitelisted");
}
if(subnet != null){
DataInputStream d = new DataInputStream(new ByteArrayInputStream(subnet));
int size = d.readInt();
if(size != 0){
d.readUTF();
for(int i = 0; i < size; i++){
subnetBans.add(d.readUTF());
}
}
Core.settings.remove("subnet-bans");
}
return info != null || ips != null || whitelist != null || subnet != null;
}catch(Throwable e){
e.printStackTrace();
}
return false;
}
/** Server configuration definition. Each config value can be a string, boolean or number. */
@@ -526,7 +628,6 @@ public class Administration{
}
}
@Serialize
public static class PlayerInfo{
public String id;
public String lastName = "<unknown>", lastIP = "<unknown>";

View File

@@ -134,7 +134,6 @@ public class SectorPreset extends UnlockableContent{
stacks.sort();
launchCost = stacks;
Core.settings.putObject(name + "-starting-items", startingItems);
data.modified();
}
@@ -154,12 +153,6 @@ public class SectorPreset extends UnlockableContent{
for(ItemStack stack : startingItems){
defaultStartingItems.add(new ItemStack(stack.item, stack.amount));
}
@SuppressWarnings("unchecked")
Array<ItemStack> arr = Core.settings.getObject(name + "-starting-items", Array.class, () -> null);
if(arr != null){
startingItems = arr;
}
}
@Override

View File

@@ -9,10 +9,10 @@ import arc.struct.*;
import arc.util.*;
import arc.util.serialization.*;
import mindustry.*;
import mindustry.annotations.Annotations.*;
import mindustry.core.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.io.legacy.*;
import mindustry.net.*;
import mindustry.net.Packets.*;
import mindustry.ui.*;
@@ -420,7 +420,13 @@ public class JoinDialog extends FloatingDialog{
@SuppressWarnings("unchecked")
private void loadServers(){
servers = Core.settings.getObject("server-list", Array.class, Array::new);
servers = Core.settings.getJson("servers", Array.class, Array::new);
//load imported legacy data
if(Core.settings.has("server-list")){
servers = LegacyIO.readServers();
Core.settings.remove("server-list");
}
//get servers
Core.net.httpGet(becontrol.active() ? serverJsonBeURL : serverJsonURL, result -> {
@@ -438,10 +444,9 @@ public class JoinDialog extends FloatingDialog{
}
private void saveServers(){
Core.settings.putObject("server-list", servers);
Core.settings.putJson("servers", Server.class, servers);
}
@Serialize
public static class Server{
public String ip;
public int port;