From 8ac027af7009116617ad49cc96fbdc7fc55e6c25 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 23 Dec 2020 12:03:43 -0500 Subject: [PATCH] More browser cleanup --- core/assets/bundles/bundle.properties | 4 ++-- core/src/mindustry/core/Version.java | 13 +++++++++++++ core/src/mindustry/mod/ModListing.java | 3 +++ core/src/mindustry/ui/dialogs/ModsDialog.java | 11 +++++++---- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 9362508c01..023db17a2b 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -44,8 +44,8 @@ be.check = Check for updates mod.featured.title = Mod browser mod.featured.dialog.title = Mod Browser mods.browser.selected = Selected mod -mods.browser.add = Install Mod -mods.github.open = Open in Github +mods.browser.add = Install +mods.github.open = View schematic = Schematic schematic.add = Save Schematic... diff --git a/core/src/mindustry/core/Version.java b/core/src/mindustry/core/Version.java index bfde8ab511..b47973c06a 100644 --- a/core/src/mindustry/core/Version.java +++ b/core/src/mindustry/core/Version.java @@ -46,6 +46,19 @@ public class Version{ } } + /** @return whether the version is greater than the specified version string, e.g. "120.1"*/ + public static boolean isAtLeast(String str){ + if(build <= 0 || str == null || str.isEmpty()) return true; + + int dot = str.indexOf('.'); + if(dot != -1){ + int major = Strings.parseInt(str.substring(0, dot)), minor = Strings.parseInt(str.substring(dot + 1)); + return build >= major && revision >= minor; + }else{ + return build >= Strings.parseInt(str, 0); + } + } + public static String buildString(){ return build < 0 ? "custom" : build + (revision == 0 ? "" : "." + revision); } diff --git a/core/src/mindustry/mod/ModListing.java b/core/src/mindustry/mod/ModListing.java index 5596853b19..08a1a8e963 100644 --- a/core/src/mindustry/mod/ModListing.java +++ b/core/src/mindustry/mod/ModListing.java @@ -3,6 +3,7 @@ package mindustry.mod; /** Mod listing as a data class. */ public class ModListing{ public String repo, name, author, lastUpdated, description, minGameVersion; + public boolean hasScripts, hasJava; public int stars; @Override @@ -14,6 +15,8 @@ public class ModListing{ ", lastUpdated='" + lastUpdated + '\'' + ", description='" + description + '\'' + ", minGameVersion='" + minGameVersion + '\'' + + ", hasScripts=" + hasScripts + + ", hasJava=" + hasJava + ", stars=" + stars + '}'; } diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index de2a7c18e9..4ecfe8afb9 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -13,6 +13,8 @@ import arc.struct.*; import arc.util.*; import arc.util.io.*; import arc.util.serialization.*; +import mindustry.*; +import mindustry.core.*; import mindustry.ctype.*; import mindustry.gen.*; import mindustry.graphics.*; @@ -165,21 +167,22 @@ public class ModsDialog extends BaseDialog{ tablebrow.clear(); for(ModListing mod : listings){ - if(!searchtxt.isEmpty() && !mod.repo.contains(searchtxt)) continue; + if(!searchtxt.isEmpty() && !mod.repo.contains(searchtxt) || (Vars.ios && (mod.hasScripts || mod.hasJava))) continue; tablebrow.button(btn -> { btn.top().left(); btn.margin(12f); btn.table(con -> { con.left(); - con.add("[lightgray]Name:[] " + mod.name + "\n[lightgray]Author:[] " + mod.author + "\n[accent]\uE809 " + mod.stars) + con.add("[accent]" + mod.name + "\n[lightgray]Author:[] " + mod.author + "\n[accent]\uE809 " + mod.stars + + (Version.isAtLeast(mod.minGameVersion) ? "" : "\n" + Core.bundle.format("mod.requiresversion", mod.minGameVersion))) .width(388f).wrap().growX().pad(0f, 6f, 0f, 6f).left().labelAlign(Align.left); con.add().growX().pad(0f, 6f, 0f, 6f); }).fillY().growX().pad(0f, 6f, 0f, 6f); }, Styles.modsb, () -> { - var sel = new BaseDialog((Core.bundle.get("mods.browser.selected")) + ": " + mod.name); + var sel = new BaseDialog(mod.name); sel.cont.add(mod.description).width(mobile ? 400f : 500f).wrap().pad(4f).labelAlign(Align.center, Align.left); - sel.buttons.defaults().size(200f, 54f).pad(2f); + sel.buttons.defaults().size(150f, 54f).pad(2f); sel.setFillParent(false); sel.buttons.button("@back", Icon.left, () -> { sel.clear();