diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index a3f87727de..91b7e9ba3a 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -5,7 +5,7 @@ import io.anuke.arc.*; import io.anuke.arc.util.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.core.GameState.*; -import io.anuke.mindustry.ctype.UnlockableContent; +import io.anuke.mindustry.ctype.*; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.game.EventType.*; @@ -189,6 +189,7 @@ public class Logic implements ApplicationListener{ for(Item item : content.items()){ if(tile == null || tile.entity == null || tile.entity.items == null) continue; data.addItem(item, tile.entity.items.get(item)); + Events.fire(new LaunchItemEvent(item, tile.entity.items.get(item))); } world.removeBlock(tile); } diff --git a/core/src/io/anuke/mindustry/core/UI.java b/core/src/io/anuke/mindustry/core/UI.java index c15917ec51..e6fca628b7 100644 --- a/core/src/io/anuke/mindustry/core/UI.java +++ b/core/src/io/anuke/mindustry/core/UI.java @@ -429,12 +429,15 @@ public class UI implements ApplicationListener, Loadable{ } - public void showCustomConfirm(String title, String text, String yes, String no, Runnable confirmed){ + public void showCustomConfirm(String title, String text, String yes, String no, Runnable confirmed, Runnable denied){ FloatingDialog dialog = new FloatingDialog(title); dialog.cont.add(text).width(mobile ? 400f : 500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); dialog.buttons.defaults().size(200f, 54f).pad(2f); dialog.setFillParent(false); - dialog.buttons.addButton(no, dialog::hide); + dialog.buttons.addButton(no, () -> { + dialog.hide(); + denied.run(); + }); dialog.buttons.addButton(yes, () -> { dialog.hide(); confirmed.run(); diff --git a/core/src/io/anuke/mindustry/game/EventType.java b/core/src/io/anuke/mindustry/game/EventType.java index ac56c86b6e..fdb970162a 100644 --- a/core/src/io/anuke/mindustry/game/EventType.java +++ b/core/src/io/anuke/mindustry/game/EventType.java @@ -37,6 +37,14 @@ public class EventType{ public static class LaunchEvent{} + public static class LaunchItemEvent{ + public final ItemStack stack; + + public LaunchItemEvent(Item item, int amount){ + this.stack = new ItemStack(item, amount); + } + } + public static class MapMakeEvent{} public static class MapPublishEvent{} diff --git a/core/src/io/anuke/mindustry/game/Stats.java b/core/src/io/anuke/mindustry/game/Stats.java index aa152d377c..3c6847712e 100644 --- a/core/src/io/anuke/mindustry/game/Stats.java +++ b/core/src/io/anuke/mindustry/game/Stats.java @@ -9,7 +9,7 @@ import io.anuke.mindustry.type.*; @Serialize public class Stats{ /** Items delivered to global resoure counter. Zones only. */ - public transient ObjectIntMap itemsDelivered = new ObjectIntMap<>(); + public ObjectIntMap itemsDelivered = new ObjectIntMap<>(); /** Enemy (red team) units destroyed. */ public int enemyUnitsDestroyed; /** Total waves lasted. */ diff --git a/core/src/io/anuke/mindustry/io/JsonIO.java b/core/src/io/anuke/mindustry/io/JsonIO.java index 1edc718c6a..3635c25bc0 100644 --- a/core/src/io/anuke/mindustry/io/JsonIO.java +++ b/core/src/io/anuke/mindustry/io/JsonIO.java @@ -29,6 +29,14 @@ public class JsonIO{ super.writeValue(value, knownType, elementType); } } + + @Override + protected String convertToString(Object object){ + if(object instanceof MappableContent){ + return ((MappableContent)object).name; + } + return super.convertToString(object); + } }; public static Json json(){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java index e3132a69ba..200986f839 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/HostDialog.java @@ -74,6 +74,9 @@ public class HostDialog extends FloatingDialog{ ui.showCustomConfirm("$setting.publichost.name", "$public.confirm", "$yes", "$no", () -> { Core.settings.putSave("publichost", true); platform.updateLobby(); + }, () -> { + Core.settings.putSave("publichost", false); + platform.updateLobby(); }); })); } diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java b/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java index 6473e1c18e..47973a9a8b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/LaunchPad.java @@ -80,6 +80,7 @@ public class LaunchPad extends StorageBlock{ int used = Math.min(entity.items.get(item), itemCapacity); data.addItem(item, used); entity.items.remove(item, used); + Events.fire(new LaunchItemEvent(item, used)); } } } diff --git a/desktop/src/io/anuke/mindustry/desktop/steam/SStats.java b/desktop/src/io/anuke/mindustry/desktop/steam/SStats.java index d7678d7a92..7c083d5546 100644 --- a/desktop/src/io/anuke/mindustry/desktop/steam/SStats.java +++ b/desktop/src/io/anuke/mindustry/desktop/steam/SStats.java @@ -195,17 +195,15 @@ public class SStats implements SteamUserStatsCallback{ }); Events.on(LaunchEvent.class, e -> { - int total = 0; - for(Item item : Vars.content.items()){ - total += Vars.state.stats.itemsDelivered.get(item, 0); - } - if(state.rules.tutorial){ completeTutorial.complete(); } SStat.timesLaunched.add(); - SStat.itemsLaunched.add(total); + }); + + Events.on(LaunchItemEvent.class, e -> { + SStat.itemsLaunched.add(e.stack.amount); }); Events.on(WaveEvent.class, e -> { diff --git a/gradle.properties b/gradle.properties index ad538a4435..b2e7f5aa34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=d969b56929d87efc946e72e31ac75184b0745e5d +archash=5b8474248a6631f8f889153785c5f1202803651e