diff --git a/main/assets/bundles/bundle.properties b/main/assets/bundles/bundle.properties index dad9ab0a..7a29b68d 100644 --- a/main/assets/bundles/bundle.properties +++ b/main/assets/bundles/bundle.properties @@ -11,6 +11,7 @@ mod.tester = Testers mod.disclaimer.title = [scarlet]Disclaimer[] mod.disclaimer.text = This public [accent]Project Unity[] release is [scarlet]unfinished[] with lots of content yet to be published and/or balanced, its purpose is to help with development by collecting public feedback regarding technical, artistic or balancing matters. Please test responsibly. +mod.disclaimer.skip = OK (Don't delay again) link.avant-discord.title = Discord link.avant-discord.description = The official Avant team Discord server diff --git a/main/src/unity/Unity.java b/main/src/unity/Unity.java index 3cb648d7..53af4e15 100644 --- a/main/src/unity/Unity.java +++ b/main/src/unity/Unity.java @@ -1,16 +1,17 @@ package unity; import arc.*; +import arc.scene.actions.*; +import arc.scene.ui.*; +import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.ctype.*; import mindustry.game.EventType.*; import mindustry.mod.*; - import mindustry.ui.dialogs.*; import mindustry.ui.dialogs.JoinDialog.*; - import mindustry.ui.fragments.*; import mindustry.world.blocks.environment.*; @@ -75,7 +76,7 @@ public Unity(boolean tools){ // Disclaimer, because apparently we're stupid enough to need this Events.on(ClientLoadEvent.class, e -> { UnitySettings.init(); - Vars.ui.showOkText("@mod.disclaimer.title", "@mod.disclaimer.text", () -> {}); + new DisclaimerDialog().show(); //bc they are not a contentType ModularPartType.loadStatic(); diff --git a/main/src/unity/ui/DisclaimerDialog.java b/main/src/unity/ui/DisclaimerDialog.java new file mode 100644 index 00000000..3e655ccd --- /dev/null +++ b/main/src/unity/ui/DisclaimerDialog.java @@ -0,0 +1,53 @@ +package unity.ui; + +import arc.math.*; +import arc.scene.actions.*; +import arc.scene.ui.*; +import arc.scene.ui.layout.*; +import arc.util.*; +import mindustry.ui.dialogs.*; +import unity.*; + +import static arc.Core.*; + +public class DisclaimerDialog extends BaseDialog{ + public DisclaimerDialog(){ + super("@mod.disclaimer.title"); + cont.add("@mod.disclaimer.text").width(500f).wrap().pad(4f).get().setAlignment(Align.center, Align.center); + buttons.defaults().size(200f, 54f).pad(2f); + setFillParent(false); + + TextButton b = buttons.button("@ok", this::hide).get(); + + if(shouldSkip()) return; + + b.setDisabled(() -> b.color.a < 1); + float moveDst = Scl.scl(101f); //Half button width + Half pad + b.actions( + Actions.alpha(0), Actions.moveBy(moveDst, 0f), + Actions.delay(8f), + Actions.fadeIn(5f), + Actions.delay(4f), + Actions.moveBy(-moveDst, 0f, 5f, Interp.smoother) + ); + b.getStyle().disabledFontColor = b.getStyle().fontColor; + b.getStyle().disabled = b.getStyle().up; + + TextButton s = buttons.button("@mod.disclaimer.skip", () -> { + hide(); + settings.put("mod.disclaimer.skip", true); + }).get(); + s.setDisabled(() -> s.color.a < 1); + s.actions( + Actions.alpha(0), + Actions.delay(17f), + Actions.fadeIn(5f) + ); + s.getStyle().disabledFontColor = s.getStyle().fontColor; + s.getStyle().disabled = s.getStyle().up; + } + + boolean shouldSkip(){ + return settings.getBool("mod.disclaimer.skip", false) || Unity.dev.isDev(); + } +}