diff --git a/core/assets-raw/sprites/ui/button.9.png b/core/assets-raw/sprites/ui/button.9.png index 8e16f6f330..8a01a045d1 100644 Binary files a/core/assets-raw/sprites/ui/button.9.png and b/core/assets-raw/sprites/ui/button.9.png differ diff --git a/core/assets/sprites/fallback/sprites3.png b/core/assets/sprites/fallback/sprites3.png index f6051b2ac7..d92433defd 100644 Binary files a/core/assets/sprites/fallback/sprites3.png and b/core/assets/sprites/fallback/sprites3.png differ diff --git a/core/assets/sprites/fallback/sprites6.png b/core/assets/sprites/fallback/sprites6.png index 0c49f33b38..00efcf1c55 100644 Binary files a/core/assets/sprites/fallback/sprites6.png and b/core/assets/sprites/fallback/sprites6.png differ diff --git a/core/assets/sprites/sprites2.png b/core/assets/sprites/sprites2.png index 267b61862d..a0f6bac531 100644 Binary files a/core/assets/sprites/sprites2.png and b/core/assets/sprites/sprites2.png differ diff --git a/core/assets/sprites/sprites5.png b/core/assets/sprites/sprites5.png index ee8e633ffc..f9d1ade4e5 100644 Binary files a/core/assets/sprites/sprites5.png and b/core/assets/sprites/sprites5.png differ diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 17b540914c..a0023c3325 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -327,6 +327,7 @@ public class Vars implements Loadable{ settings.defaults("locale", "default", "blocksync", true); keybinds.setDefaults(Binding.values()); + settings.setAutosave(false); settings.load(); Scl.setProduct(settings.getInt("uiscale", 100) / 100f); diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 7c1cdbfd10..2863d72f40 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -178,6 +178,7 @@ public class Control implements ApplicationListener, Loadable{ Effects.shake(5f, 5f, core); }); }); + } @Override diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 7d507d1886..428aa0fec2 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -96,7 +96,6 @@ public class Logic implements ApplicationListener{ //SectorDamage.apply(seconds); //} - //add resources based on turns passed if(state.rules.sector.save != null && core != null){ @@ -126,6 +125,9 @@ public class Logic implements ApplicationListener{ //enable infinite ammo for wave team by default state.rules.waveTeam.rules().infiniteAmmo = true; + + //save settings + Core.settings.manualSave(); }); } @@ -161,6 +163,9 @@ public class Logic implements ApplicationListener{ Groups.all.clear(); Time.clear(); Events.fire(new ResetEvent()); + + //save settings on reset + Core.settings.manualSave(); } public void runWave(){ @@ -295,6 +300,12 @@ public class Logic implements ApplicationListener{ netClient.setQuiet(); } + @Override + public void dispose(){ + //save the settings before quitting + Core.settings.manualSave(); + } + @Override public void update(){ Events.fire(Trigger.update); diff --git a/core/src/mindustry/net/CrashSender.java b/core/src/mindustry/net/CrashSender.java index 0fb44e1e62..1a64c76e2d 100644 --- a/core/src/mindustry/net/CrashSender.java +++ b/core/src/mindustry/net/CrashSender.java @@ -18,6 +18,7 @@ import java.io.*; import java.text.*; import java.util.*; +import static arc.Core.*; import static mindustry.Vars.net; public class CrashSender{ @@ -39,6 +40,11 @@ public class CrashSender{ try{ exception.printStackTrace(); + //try saving game data + try{ + settings.manualSave(); + }catch(Throwable ignored){} + //don't create crash logs for custom builds, as it's expected if(Version.build == -1 || (System.getProperty("user.name").equals("anuke") && "release".equals(Version.modifier))){ ret(); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 73501f0ecf..544ee06e40 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -293,11 +293,11 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.table(t -> { t.left(); - sector.save.meta.secinfo.exportRates().each(entry -> { - int total = (int)(entry.value * eventRate / 60f); + sector.save.meta.secinfo.production.each((item, stat) -> { + int total = (int)(stat.mean * 60); if(total > 1){ - t.image(entry.key.icon(Cicon.small)).padRight(3); - t.add(ui.formatAmount(total) + " /turn").color(Color.lightGray); + t.image(item.icon(Cicon.small)).padRight(3); + t.add(ui.formatAmount(total) + " /min").color(Color.lightGray); t.row(); } }); diff --git a/core/src/mindustry/world/blocks/defense/SurgeWall.java b/core/src/mindustry/world/blocks/defense/SurgeWall.java index ae6d9c69bc..becf1b46e9 100644 --- a/core/src/mindustry/world/blocks/defense/SurgeWall.java +++ b/core/src/mindustry/world/blocks/defense/SurgeWall.java @@ -17,12 +17,12 @@ public class SurgeWall extends Wall{ public class SurgeEntity extends Building{ @Override public boolean collision(Bullet bullet){ - super.collision(bullet); + if(Mathf.chance(lightningChance)){ Lightning.create(team(), Pal.surge, lightningDamage, x, y, bullet.rotation() + 180f, lightningLength); } - return true; + return super.collision(bullet); } } } diff --git a/gradle.properties b/gradle.properties index 166a84da20..3c456302d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=0582cfd3b405d534c948383578c7a3f0c0d9dd6b +archash=95c135917655b61d636292ba9dfd05766019c1d8 diff --git a/server/src/mindustry/server/ServerLauncher.java b/server/src/mindustry/server/ServerLauncher.java index e7146b4db8..4c8a2bb8e6 100644 --- a/server/src/mindustry/server/ServerLauncher.java +++ b/server/src/mindustry/server/ServerLauncher.java @@ -16,7 +16,7 @@ import mindustry.net.*; import java.time.*; -import static arc.util.Log.format; +import static arc.util.Log.*; import static mindustry.Vars.*; import static mindustry.server.ServerControl.*; @@ -86,4 +86,5 @@ public class ServerLauncher implements ApplicationListener{ Events.fire(new ServerLoadEvent()); } + } diff --git a/tools/build.gradle b/tools/build.gradle index 3b246be80d..b56bb4e12e 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -357,7 +357,7 @@ task pack(dependsOn: classes){ //antialias everything except UI elements fileTree(dir: '../core/assets-raw/sprites_out/', include: "**/*.png").visit{ file -> - if(file.isDirectory() || (file.toString().replace("\\", "/").contains("/ui/") && file.toString().startsWith("icon-"))) return + if(file.isDirectory() || (file.toString().replace("\\", "/").contains("/ui/") && file.toString().startsWith("icon-")) || file.toString().contains(".9.png")) return executor.submit{ antialias(file.file) diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index 46bae59da6..ec8cfe280d 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -23,10 +23,33 @@ import mindustry.world.blocks.legacy.*; import static mindustry.Vars.*; public class Generators{ + //used for changing colors in the UI - testing only + static final IntIntMap paletteMap = IntIntMap.with( + //empty for now + 0x454545ff, 0x00000000,//0x32394bff, + 0x00000099, 0x00000000//0x000000ff + ); public static void generate(){ ObjectMap gens = new ObjectMap<>(); + if(!paletteMap.isEmpty()){ + ImagePacker.generate("uipalette", () -> { + Fi.get("../ui").walk(fi -> { + if(!fi.extEquals("png")) return; + + Pixmap pix = new Pixmap(fi); + pix.setBlending(Pixmap.Blending.sourceOver); + pix.each((x, y) -> { + int value = pix.getPixel(x, y); + pix.draw(x, y, paletteMap.get(value, value)); + }); + + fi.writePNG(pix); + }); + }); + } + ImagePacker.generate("splashes", () -> { ArcNativesLoader.load();