diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index 3b03549..b04e95a 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -64,7 +64,8 @@ ai.config.oneTime = One-Time Pick ai.config.logic.ui = Logic UI ai.config.logic.unitBuildWarning = Allow UnitBuild addition bypass map rule\nCAUTION: Unexpected exit may corrupt map rules -emoji.switchDisplay = < Icon / List > +emoji.switchDisplay = \ue811 < Icon / List > +emoji.noResult = [lightgray]\ue815 No Result[] MI2UI.MI2U = MI2U LogicHelper.MI2U = Logic Helper @@ -173,6 +174,7 @@ settings.LogicHelper.autocomplete = Auto Complete settings.LogicHelper.split = Split settings.Emojis.emojiPerRow = Emojis Per Row +settings.Emojis.emojiMaxCol = Max Display Columns settings.mindow.scale = UI Scale diff --git a/assets/bundles/bundle_zh_CN.properties b/assets/bundles/bundle_zh_CN.properties index ad682b6..7965f35 100644 --- a/assets/bundles/bundle_zh_CN.properties +++ b/assets/bundles/bundle_zh_CN.properties @@ -56,8 +56,6 @@ minimap.finder.buildRange = 建造范围 minimap.finder.mapRange = 全图 minimap.finder.showBlockNames = 显示方块名称 -emoji.switchDisplay = < 图标 / 列表 > - ai.config.follow = 协助建造 ai.config.autorebuild = 自动重建 ai.config.attack = 攻击敌人 @@ -66,6 +64,9 @@ ai.config.oneTime = 一次性抓取 ai.config.logic.ui = 自定义UI ai.config.logic.unitBuildWarning = 允许绕过规则添加单位建造语句\n警告:意外退出可能导致地图规则不可逆修改 +emoji.switchDisplay = \ue811 < 图标 / 列表 > +emoji.noResult = [lightgray]\ue815 无结果[] + MI2UI.MI2U = MI2U LogicHelper.MI2U = 逻辑辅助 Minimap.MI2U = 小地图 @@ -172,7 +173,8 @@ settings.Minimap.drawUnitOutline = 单位描边量 settings.LogicHelper.autocomplete = 自动补全 settings.LogicHelper.split = 分隔符 -settings.Emojis.emojiPerRow = 每行Emoji数 +settings.Emojis.emojiPerRow = 每行Emoji个数 +settings.Emojis.emojiMaxCol = 最大显示列数 settings.mindow.scale = 窗口缩放 diff --git a/src/mi2u/ui/EmojiMindow.java b/src/mi2u/ui/EmojiMindow.java index 3d77924..fc97dc7 100644 --- a/src/mi2u/ui/EmojiMindow.java +++ b/src/mi2u/ui/EmojiMindow.java @@ -55,7 +55,7 @@ public EmojiMindow() { rebuildEmojiTable(); - titlePane.table(t -> t.button(Iconc.list + " " + bundle.get("emoji.switchDisplay"), Styles.nonet, () -> { + titlePane.table(t -> t.button(bundle.get("emoji.switchDisplay"), Styles.nonet, () -> { listMode = !listMode; rebuild(); }).height(titleButtonSize).update(b -> b.setChecked(listMode)).growX()).grow().minWidth(32f); @@ -83,8 +83,8 @@ public void rebuildEmojiTable(){ } } if (count == 0){ - iconT.center().label(() -> "[lightgray]"+Iconc.cancel + " No Result[]").width(emojiPerRow * 40f).height(40f); - listT.center().label(() -> "[lightgray]"+Iconc.cancel + " No Result[]").width(emojiPerRow * 40f).height(40f); + iconT.center().label(() -> bundle.get("emoji.noResult")).width(emojiPerRow * 40f).height(40f); + listT.center().label(() -> bundle.get("emoji.noResult")).width(emojiPerRow * 40f).height(40f); }else if (count < emojiPerRow){ for (int i = 0; i < emojiPerRow - count; i++){ iconT.image().color(Color.clear).size(40f); @@ -94,8 +94,14 @@ public void rebuildEmojiTable(){ @Override public void setupCont(Table cont){ + int emojiPerRow = settings.getInt("emojiPerRow", 9); + int emojiMaxCol = settings.getInt("emojiMaxCol", 6); + + rebuildEmojiTable(); + cont.clear(); cont.table(t -> { + t.top(); t.table(s -> { s.image(Icon.zoom).size(40f).padLeft(4f); search = s.field(filter, text -> { @@ -105,7 +111,7 @@ public void setupCont(Table cont){ search.setMessageText("@players.search"); }).growX().padRight(8f).row(); - t.pane(listMode ? listT : iconT).maxHeight(Core.graphics.getHeight() / 3f).growX().update(p -> { + t.pane(listMode ? listT : iconT).growX().update(p -> { p.setStyle(Styles.smallPane); p.setScrollingDisabled(true, false); Element e = Core.scene.hit(Core.input.mouseX(), Core.input.mouseY(), true); @@ -115,13 +121,14 @@ public void setupCont(Table cont){ Core.scene.setScrollFocus(null); } }); - }); + }).width(emojiPerRow * 40f + 12f).height(emojiMaxCol * 40f + 48f); } @Override public void initSettings(){ super.initSettings(); - settings.sliderPref("emojiPerRow", 9, 6, 12, 1, i -> "" + i, i -> rebuildEmojiTable()); + settings.sliderPref("emojiPerRow", 9, 6, 12, 1, i -> "" + i, i -> rebuild()); + settings.sliderPref("emojiMaxCol", 6, 2, 12, 1, i -> "" + i, i -> rebuild()); } private void updateEmoji(){ diff --git a/src/mi2u/ui/elements/Mindow2.java b/src/mi2u/ui/elements/Mindow2.java index f5adbff..a323e99 100644 --- a/src/mi2u/ui/elements/Mindow2.java +++ b/src/mi2u/ui/elements/Mindow2.java @@ -39,10 +39,11 @@ public class Mindow2 extends Table{ public float fromx = 0, fromy = 0, curx = 0, cury = 0; boolean dragging = false; public boolean minimized = false; + public boolean hoverTitle = false; protected Table titleBar = new Table(), titlePane = new Table(Styles.black6); protected Table cont = new Table(); public SettingHandler settings; - protected MI2Utils.IntervalMillis interval = new MI2Utils.IntervalMillis(3); + protected MI2Utils.IntervalMillis interval = new MI2Utils.IntervalMillis(4); public int edgesnap = Align.center; @Nullable public Mindow2 tbSnap, lrSnap; @@ -70,7 +71,7 @@ public void rebuild(){ clear(); setupTitle(); - var c = new MCollapser(titleBar, false).setCollapsed(true, () -> !this.hasMouse() && !minimized).setDirection(false, true).setDuration(0.1f); + var c = new MCollapser(titleBar, false).setCollapsed(true, () -> !hoverTitle && !minimized).setDirection(false, true).setDuration(0.1f); add(c).growX(); //add(titleBar).growX(); row(); @@ -81,6 +82,17 @@ public void rebuild(){ add(cont).growX(); } setTransform(true); + + update(() -> { + if(hasMouse()){ + hoverTitle = true; + interval.reset(3, 0); + }else { + if (interval.check(3, 3000)){ + hoverTitle = false; + } + } + }); } /**