diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index 42ada5e..763c178 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -72,24 +72,22 @@ setting.elementdebug.description = Show all Element outline setting.hiddenElem.name = Display hidden element setting.hiddenElem.description = display hidden element outline too. -setting.shar-title = UnitInfo Settings +setting.shar-title = unitinfo Settings setting.shar-ui = Overlay UI Settings setting.shar-draw = Overdrawing Settings #Hud hud.schematic-list = Schematic List -hud.unit = Unit Info -hud.wave = Wave Info -hud.item = Resource Info -hud.cancel = Hidden -hud.enabled = [accent]Enabled[] -hud.disabled = [gray]Disabled[] -hud.pathline = Path Line -hud.unitline = Unit Line -hud.logicline = Logic Line + +#Window +window.unit.name = Unit Display +window.wave.name = Wave Display +window.core.name = Core Display +window.player.name = Player Display +window.tool.name = Tool Display +window.editor.name = Map Editor Display #Other -sec = sec default-bar = default bar th-bar = th bar empty = [lightgray][] diff --git a/assets/bundles/bundle_ko.properties b/assets/bundles/bundle_ko.properties index 141c07a..529fe18 100644 --- a/assets/bundles/bundle_ko.properties +++ b/assets/bundles/bundle_ko.properties @@ -89,7 +89,7 @@ setting.hiddenElem.description = 숨겨진 요소의 외곽선도 표시합니 setting.autoShooting.name = 자동 사격 활성화 setting.autoShooting.description = -setting.shar-title = UnitInfo 설정 +setting.shar-title = unitinfo 설정 setting.shar-ui = 정보UI 설정 setting.shar-range = 자동 사거리 설정 setting.shar-opacity = 투명도 설정 diff --git a/assets/bundles/bundle_ru.properties b/assets/bundles/bundle_ru.properties index b7acc9b..b97cee9 100644 --- a/assets/bundles/bundle_ru.properties +++ b/assets/bundles/bundle_ru.properties @@ -77,7 +77,7 @@ setting.distanceLine.description = display dotted lines and numbers how far away setting.autoShooting.name = Включить автострельбу. setting.autoShooting.description = [red]не читери, не будь какахой -setting.shar-title = Настройки UnitInfo +setting.shar-title = Настройки unitinfo setting.shar-wave = InfoTap Setting setting.shar-range = AutoRange Setting setting.shar-opacity = Opacity Setting diff --git a/assets/bundles/bundle_tr.properties b/assets/bundles/bundle_tr.properties index 61d672f..c1c0569 100644 --- a/assets/bundles/bundle_tr.properties +++ b/assets/bundles/bundle_tr.properties @@ -83,7 +83,7 @@ setting.spawnerarrow.description = setting.autoShooting.name = Enable Auto Shooting setting.autoShooting.description = no don't do hack -setting.shar-title = UnitInfo Ayarları +setting.shar-title = unitinfo Ayarları setting.shar-ui = Arayüz Ayarları setting.shar-range = Oto-Uzaklık Ayarları setting.shar-opacity = Opaklık Ayarları diff --git a/assets/bundles/bundle_uk_UA.properties b/assets/bundles/bundle_uk_UA.properties index 1e20e10..4131a6b 100644 --- a/assets/bundles/bundle_uk_UA.properties +++ b/assets/bundles/bundle_uk_UA.properties @@ -86,7 +86,7 @@ setting.spawnerarrow.description = Показує стрілку, направл setting.autoShooting.name = Увімкнути автострільбу setting.autoShooting.description = Не треба, ти ж не гакер. -setting.shar-title = Налаштування UnitInfo +setting.shar-title = Налаштування unitinfo setting.shar-ui = Налаштування накладання інтерфейсу setting.shar-range = Налаштування автоматичного діапазону setting.shar-opacity = Налаштування прозорості diff --git a/assets/mod.json b/assets/mod.json index b1a68d5..7f2697a 100644 --- a/assets/mod.json +++ b/assets/mod.json @@ -4,7 +4,7 @@ "author": "Sharlotte", "description": "The mod displays more information in-game, such as unit/building, wave, core, tile, item/unit total info etc", "version": "1.5.5", - "main": "UnitInfo.core.Main", + "main": "unitinfo.core.Main", "minGameVersion": "135", "dependencies": [], "hidden": true, diff --git a/gradle.properties b/gradle.properties index 154521a..fd22e4e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Filename of output file (dexify prepends 'dexed-') (people will hate you if it isn't .jar) -pArtifactFilename = UnitInfo.jar +pArtifactFilename = unitinfo.jar # Group of project (should line up with dirs in src/) pGroup = sharlotte # Version of Mindustry to use (if not working, consult jitpack.io) diff --git a/src/UnitInfo/ui/HUDFragment.java b/src/UnitInfo/ui/HUDFragment.java deleted file mode 100644 index b1d34c7..0000000 --- a/src/UnitInfo/ui/HUDFragment.java +++ /dev/null @@ -1,41 +0,0 @@ -package UnitInfo.ui; - -import arc.scene.*; -import mindustry.ui.fragments.*; - -import static UnitInfo.ui.windows.WindowTables.*; - -public class HUDFragment extends Fragment{ - @Override - public void build(Group parent){ - parent.fill(t -> { - t.name = "Windows"; - t.visible(() -> parent.visible); - - t.center().left(); - // sidebar - t.add(new TaskbarTable( - unitTable, - waveTable, - coreTable, - playerTable, - toolTable, - editorTable - )).visible(TaskbarTable.visibility); - - // windows (totally not a copyright violation) - t.add(unitTable).size(250f).visible(false); - t.add(waveTable).size(250f).visible(false); - t.add(coreTable).size(250f).visible(false); - t.add(playerTable).size(250f).visible(false); - t.add(toolTable).size(250f).visible(false); - t.add(editorTable).size(250f).visible(false); - - t.update(()->{ - for (Element child : t.getChildren()) { - if(child instanceof Updatable u) u.update(); - } - }); - }); - }; -} \ No newline at end of file diff --git a/src/UnitInfo/ui/MindowsTex.java b/src/UnitInfo/ui/MindowsTex.java deleted file mode 100644 index ccbbbb4..0000000 --- a/src/UnitInfo/ui/MindowsTex.java +++ /dev/null @@ -1,12 +0,0 @@ -package UnitInfo.ui; - -import arc.*; -import arc.scene.style.*; - -public class MindowsTex{ - public static Drawable sidebar; - - public static void init(){ - sidebar = Core.atlas.drawable("unitinfo-sidebar"); - } -} \ No newline at end of file diff --git a/src/UnitInfo/ui/TaskbarTable.java b/src/UnitInfo/ui/TaskbarTable.java deleted file mode 100644 index b1ea186..0000000 --- a/src/UnitInfo/ui/TaskbarTable.java +++ /dev/null @@ -1,24 +0,0 @@ -package UnitInfo.ui; - -import UnitInfo.ui.windows.WindowTable; -import arc.func.*; -import arc.scene.ui.layout.*; -import mindustry.*; -import mindustry.ui.*; - -public class TaskbarTable extends Table{ - public static Boolp visibility = () -> Vars.ui.hudfrag.shown && !Vars.ui.minimapfrag.shown(); - - public TaskbarTable(WindowTable... items){ - visible = true; - table(MindowsTex.sidebar, t -> { - t.top().center(); - for(WindowTable w : items){ - t.button(w.icon, Styles.emptyi, () -> { - w.visible(visibility); - }).disabled(b -> w.visible).size(40f).padRight(5f); - t.row(); - } - }).left().center().width(40f); - } -} \ No newline at end of file diff --git a/src/UnitInfo/ui/windows/WindowTables.java b/src/UnitInfo/ui/windows/WindowTables.java deleted file mode 100644 index fddda4e..0000000 --- a/src/UnitInfo/ui/windows/WindowTables.java +++ /dev/null @@ -1,16 +0,0 @@ -package UnitInfo.ui.windows; - -public class WindowTables { - public static WindowTable - unitTable, waveTable, coreTable, playerTable, toolTable; - public static MapEditorDisplay editorTable; - - public static void init() { - unitTable = new UnitDisplay(); - waveTable = new WaveDisplay(); - coreTable = new CoreDisplay(); - playerTable = new PlayerDisplay(); - toolTable = new ToolDisplay(); - editorTable = new MapEditorDisplay(); - } -} diff --git a/src/UnitInfo/SUtils.java b/src/unitinfo/SUtils.java similarity index 97% rename from src/UnitInfo/SUtils.java rename to src/unitinfo/SUtils.java index 0c31c70..1783aed 100644 --- a/src/UnitInfo/SUtils.java +++ b/src/unitinfo/SUtils.java @@ -1,4 +1,4 @@ -package UnitInfo; +package unitinfo; import arc.graphics.g2d.*; import arc.math.Mathf; @@ -21,8 +21,8 @@ import mindustry.world.Tile; import java.lang.reflect.*; -import static UnitInfo.SVars.locked; -import static UnitInfo.SVars.target; +import static unitinfo.SVars.locked; +import static unitinfo.SVars.target; import static arc.Core.input; import static arc.Core.settings; import static mindustry.Vars.player; diff --git a/src/UnitInfo/SVars.java b/src/unitinfo/SVars.java similarity index 78% rename from src/UnitInfo/SVars.java rename to src/unitinfo/SVars.java index f81862a..c807c52 100644 --- a/src/UnitInfo/SVars.java +++ b/src/unitinfo/SVars.java @@ -1,13 +1,12 @@ -package UnitInfo; +package unitinfo; -import UnitInfo.core.*; -import UnitInfo.shaders.LineShader; -import UnitInfo.shaders.RangeShader; +import unitinfo.core.*; +import unitinfo.shaders.LineShader; +import unitinfo.shaders.RangeShader; import arc.graphics.g2d.TextureRegion; import mindustry.gen.Teamc; import static arc.Core.atlas; -import static arc.Core.settings; public class SVars { public static HudUi hud = new HudUi(); diff --git a/src/UnitInfo/core/BarInfo.java b/src/unitinfo/core/BarInfo.java similarity index 99% rename from src/UnitInfo/core/BarInfo.java rename to src/unitinfo/core/BarInfo.java index d7bfc88..bbd783c 100644 --- a/src/UnitInfo/core/BarInfo.java +++ b/src/unitinfo/core/BarInfo.java @@ -1,4 +1,4 @@ -package UnitInfo.core; +package unitinfo.core; import arc.graphics.*; import arc.math.*; @@ -25,7 +25,7 @@ import mindustry.world.consumers.*; import java.lang.reflect.*; -import static UnitInfo.SUtils.floatFormat; +import static unitinfo.SUtils.floatFormat; import static arc.Core.*; import static mindustry.Vars.*; diff --git a/src/UnitInfo/core/ContentJSON.java b/src/unitinfo/core/ContentJSON.java similarity index 98% rename from src/UnitInfo/core/ContentJSON.java rename to src/unitinfo/core/ContentJSON.java index fd90449..e56624c 100644 --- a/src/UnitInfo/core/ContentJSON.java +++ b/src/unitinfo/core/ContentJSON.java @@ -1,4 +1,4 @@ -package UnitInfo.core; +package unitinfo.core; import arc.Core; import arc.struct.Seq; @@ -98,7 +98,7 @@ public class ContentJSON { data.add(name, obj); }); try { - modDirectory.child("UnitInfo").child(content.peek().getContentType().toString() + ".json").writeString(data.toString(Stringify.FORMATTED)); + modDirectory.child("unitinfo").child(content.peek().getContentType().toString() + ".json").writeString(data.toString(Stringify.FORMATTED)); } catch (Throwable e){ Log.warn(e.getMessage()); } diff --git a/src/UnitInfo/core/HudUi.java b/src/unitinfo/core/HudUi.java similarity index 96% rename from src/UnitInfo/core/HudUi.java rename to src/unitinfo/core/HudUi.java index 8267b71..b3ba5bc 100644 --- a/src/UnitInfo/core/HudUi.java +++ b/src/unitinfo/core/HudUi.java @@ -1,11 +1,8 @@ -package UnitInfo.core; +package unitinfo.core; -import UnitInfo.ui.windows.*; +import unitinfo.ui.SchemDisplay; import arc.*; -import arc.graphics.*; -import arc.math.*; -import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.util.*; @@ -14,8 +11,8 @@ import mindustry.gen.*; import mindustry.graphics.Pal; import mindustry.ui.*; -import static UnitInfo.SUtils.*; -import static UnitInfo.SVars.*; +import static unitinfo.SUtils.*; +import static unitinfo.SVars.*; import static arc.Core.*; import static mindustry.Vars.*; diff --git a/src/UnitInfo/core/Main.java b/src/unitinfo/core/Main.java similarity index 72% rename from src/UnitInfo/core/Main.java rename to src/unitinfo/core/Main.java index 579e8f2..c6eb8a7 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/unitinfo/core/Main.java @@ -1,19 +1,20 @@ -package UnitInfo.core; +package unitinfo.core; -import UnitInfo.shaders.*; -import UnitInfo.ui.*; -import UnitInfo.ui.draws.OverDraws; -import UnitInfo.ui.windows.*; +import unitinfo.shaders.*; +import unitinfo.ui.*; +import unitinfo.ui.draws.OverDraws; +import unitinfo.ui.windows.*; import arc.*; import arc.struct.*; import mindustry.*; import mindustry.game.EventType.*; import mindustry.mod.*; -import static UnitInfo.SVars.*; +import static unitinfo.SVars.*; import static arc.Core.*; import static mindustry.Vars.*; -import static UnitInfo.SUtils.*; +import static unitinfo.SUtils.*; +import static unitinfo.ui.windows.WindowManager.windows; public class Main extends Mod { @Override @@ -36,13 +37,23 @@ public class Main extends Mod { } }); + Events.run(Trigger.update, () -> { + for (Window window : windows) { + if(window instanceof Updatable u) u.update(); + } + }); + + Events.on(ContentInitEvent.class, e -> { + Windows.load(); + }); + Events.on(ClientLoadEvent.class, e -> { + Windows.load(); SettingS.init(); - MindowsTex.init(); - WindowTables.init(); + WindowManager.init(); OverDraws.init(); - new HUDFragment().build(Vars.ui.hudGroup); + //new HUDFragment().build(Vars.ui.hudGroup); hud = new HudUi(); hud.addWaveInfoTable(); hud.addSchemTable(); @@ -58,9 +69,5 @@ public class Main extends Mod { if(jsonGen) ContentJSON.save(); }); - - Events.on(WorldLoadEvent.class, e -> { - ((CoreDisplay) WindowTables.coreTable).resetUsed(); - }); } } diff --git a/src/UnitInfo/core/OverDrawer.java b/src/unitinfo/core/OverDrawer.java similarity index 96% rename from src/UnitInfo/core/OverDrawer.java rename to src/unitinfo/core/OverDrawer.java index ba86625..b5f1da4 100644 --- a/src/UnitInfo/core/OverDrawer.java +++ b/src/unitinfo/core/OverDrawer.java @@ -1,7 +1,7 @@ -package UnitInfo.core; +package unitinfo.core; -import UnitInfo.ui.draws.OverDraw; -import UnitInfo.ui.draws.OverDraws; +import unitinfo.ui.draws.OverDraw; +import unitinfo.ui.draws.OverDraws; import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; @@ -13,7 +13,7 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.ui.*; -import static UnitInfo.SVars.*; +import static unitinfo.SVars.*; import static arc.Core.*; import static mindustry.Vars.*; diff --git a/src/UnitInfo/core/SettingS.java b/src/unitinfo/core/SettingS.java similarity index 99% rename from src/UnitInfo/core/SettingS.java rename to src/unitinfo/core/SettingS.java index 2e17597..24bc994 100644 --- a/src/UnitInfo/core/SettingS.java +++ b/src/unitinfo/core/SettingS.java @@ -1,4 +1,4 @@ -package UnitInfo.core; +package unitinfo.core; import arc.*; import arc.func.*; diff --git a/src/UnitInfo/core/SharSetting.java b/src/unitinfo/core/SharSetting.java similarity index 95% rename from src/UnitInfo/core/SharSetting.java rename to src/unitinfo/core/SharSetting.java index b61ae42..2e2874b 100644 --- a/src/UnitInfo/core/SharSetting.java +++ b/src/unitinfo/core/SharSetting.java @@ -1,4 +1,4 @@ -package UnitInfo.core; +package unitinfo.core; import arc.Core; import arc.scene.ui.layout.Table; diff --git a/src/UnitInfo/shaders/LineShader.java b/src/unitinfo/shaders/LineShader.java similarity index 96% rename from src/UnitInfo/shaders/LineShader.java rename to src/unitinfo/shaders/LineShader.java index 3f48b08..3584b4b 100644 --- a/src/UnitInfo/shaders/LineShader.java +++ b/src/unitinfo/shaders/LineShader.java @@ -1,4 +1,4 @@ -package UnitInfo.shaders; +package unitinfo.shaders; import arc.Core; import arc.graphics.gl.Shader; diff --git a/src/UnitInfo/shaders/RangeShader.java b/src/unitinfo/shaders/RangeShader.java similarity index 96% rename from src/UnitInfo/shaders/RangeShader.java rename to src/unitinfo/shaders/RangeShader.java index d70f10d..5f20101 100644 --- a/src/UnitInfo/shaders/RangeShader.java +++ b/src/unitinfo/shaders/RangeShader.java @@ -1,4 +1,4 @@ -package UnitInfo.shaders; +package unitinfo.shaders; import arc.Core; import arc.graphics.gl.Shader; diff --git a/src/UnitInfo/ui/EditorTool.java b/src/unitinfo/ui/EditorTool.java similarity index 97% rename from src/UnitInfo/ui/EditorTool.java rename to src/unitinfo/ui/EditorTool.java index a10bfe3..36c86ee 100644 --- a/src/UnitInfo/ui/EditorTool.java +++ b/src/unitinfo/ui/EditorTool.java @@ -1,6 +1,5 @@ -package UnitInfo.ui; +package unitinfo.ui; -import UnitInfo.ui.windows.WindowTables; import arc.func.Boolf; import arc.func.Cons; import arc.input.KeyCode; @@ -14,9 +13,9 @@ import mindustry.game.Team; import mindustry.world.Block; import mindustry.world.Tile; -import static UnitInfo.ui.windows.MapEditorDisplay.drawTeam; -import static UnitInfo.ui.windows.MapEditorDisplay.selected; -import static UnitInfo.ui.windows.WindowTables.editorTable; +import static unitinfo.ui.windows.MapEditorDisplay.drawTeam; +import static unitinfo.ui.windows.MapEditorDisplay.selected; +import static unitinfo.ui.windows.Windows.editorTable; import static mindustry.Vars.world; public enum EditorTool{ diff --git a/src/UnitInfo/ui/ElementDisplay.java b/src/unitinfo/ui/ElementDisplay.java similarity index 98% rename from src/UnitInfo/ui/ElementDisplay.java rename to src/unitinfo/ui/ElementDisplay.java index 3df6afa..0b24c3b 100644 --- a/src/UnitInfo/ui/ElementDisplay.java +++ b/src/unitinfo/ui/ElementDisplay.java @@ -1,4 +1,4 @@ -package UnitInfo.ui; +package unitinfo.ui; import arc.graphics.g2d.Draw; import arc.graphics.g2d.Lines; diff --git a/src/UnitInfo/ui/FreeBar.java b/src/unitinfo/ui/FreeBar.java similarity index 99% rename from src/UnitInfo/ui/FreeBar.java rename to src/unitinfo/ui/FreeBar.java index 18401ea..91c5cf4 100644 --- a/src/UnitInfo/ui/FreeBar.java +++ b/src/unitinfo/ui/FreeBar.java @@ -1,4 +1,4 @@ -package UnitInfo.ui; +package unitinfo.ui; import arc.graphics.g2d.*; import arc.math.*; diff --git a/src/UnitInfo/ui/OverScrollPane.java b/src/unitinfo/ui/OverScrollPane.java similarity index 97% rename from src/UnitInfo/ui/OverScrollPane.java rename to src/unitinfo/ui/OverScrollPane.java index 5228523..af3388c 100644 --- a/src/UnitInfo/ui/OverScrollPane.java +++ b/src/unitinfo/ui/OverScrollPane.java @@ -1,4 +1,4 @@ -package UnitInfo.ui; +package unitinfo.ui; import arc.math.geom.Vec2; import arc.scene.Element; diff --git a/src/UnitInfo/ui/SBar.java b/src/unitinfo/ui/SBar.java similarity index 99% rename from src/UnitInfo/ui/SBar.java rename to src/unitinfo/ui/SBar.java index 707149a..1487e76 100644 --- a/src/UnitInfo/ui/SBar.java +++ b/src/unitinfo/ui/SBar.java @@ -1,6 +1,6 @@ -package UnitInfo.ui; +package unitinfo.ui; -import UnitInfo.SUtils; +import unitinfo.SUtils; import arc.*; import arc.func.*; import arc.graphics.*; diff --git a/src/UnitInfo/ui/SIcons.java b/src/unitinfo/ui/SIcons.java similarity index 96% rename from src/UnitInfo/ui/SIcons.java rename to src/unitinfo/ui/SIcons.java index b23da0f..39effcb 100644 --- a/src/UnitInfo/ui/SIcons.java +++ b/src/unitinfo/ui/SIcons.java @@ -1,4 +1,4 @@ -package UnitInfo.ui; +package unitinfo.ui; import arc.Core; import arc.graphics.g2d.TextureRegion; diff --git a/src/UnitInfo/ui/windows/SchemDisplay.java b/src/unitinfo/ui/SchemDisplay.java similarity index 99% rename from src/UnitInfo/ui/windows/SchemDisplay.java rename to src/unitinfo/ui/SchemDisplay.java index 244b437..586192e 100644 --- a/src/UnitInfo/ui/windows/SchemDisplay.java +++ b/src/unitinfo/ui/SchemDisplay.java @@ -1,6 +1,6 @@ -package UnitInfo.ui.windows; +package unitinfo.ui; -import UnitInfo.SUtils; +import unitinfo.SUtils; import arc.Core; import arc.func.Cons; import arc.func.Floatf; diff --git a/src/UnitInfo/ui/Updatable.java b/src/unitinfo/ui/Updatable.java similarity index 70% rename from src/UnitInfo/ui/Updatable.java rename to src/unitinfo/ui/Updatable.java index c596931..24fc78c 100644 --- a/src/UnitInfo/ui/Updatable.java +++ b/src/unitinfo/ui/Updatable.java @@ -1,4 +1,4 @@ -package UnitInfo.ui; +package unitinfo.ui; public interface Updatable { void update(); diff --git a/src/UnitInfo/ui/draws/BlockDraw.java b/src/unitinfo/ui/draws/BlockDraw.java similarity index 72% rename from src/UnitInfo/ui/draws/BlockDraw.java rename to src/unitinfo/ui/draws/BlockDraw.java index 0ba5f38..9dbd612 100644 --- a/src/UnitInfo/ui/draws/BlockDraw.java +++ b/src/unitinfo/ui/draws/BlockDraw.java @@ -1,14 +1,9 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; -import arc.scene.Element; import arc.scene.style.TextureRegionDrawable; -import arc.scene.ui.CheckBox; -import arc.scene.ui.layout.Table; -import mindustry.Vars; import mindustry.gen.Groups; -import mindustry.ui.Styles; -import static UnitInfo.core.OverDrawer.isInCamera; +import static unitinfo.core.OverDrawer.isInCamera; import static arc.Core.settings; public class BlockDraw extends OverDraw { diff --git a/src/UnitInfo/ui/draws/LinkDraw.java b/src/unitinfo/ui/draws/LinkDraw.java similarity index 97% rename from src/UnitInfo/ui/draws/LinkDraw.java rename to src/unitinfo/ui/draws/LinkDraw.java index f3318e7..f3f3e70 100644 --- a/src/UnitInfo/ui/draws/LinkDraw.java +++ b/src/unitinfo/ui/draws/LinkDraw.java @@ -1,14 +1,11 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; import arc.graphics.Color; import arc.graphics.g2d.Draw; import arc.graphics.g2d.Lines; import arc.math.Angles; import arc.math.Mathf; -import arc.scene.Element; import arc.scene.style.TextureRegionDrawable; -import arc.scene.ui.CheckBox; -import arc.scene.ui.layout.Table; import arc.struct.IntSeq; import arc.struct.Seq; import arc.util.Time; @@ -19,14 +16,13 @@ import mindustry.gen.Groups; import mindustry.graphics.Drawf; import mindustry.graphics.Layer; import mindustry.graphics.Pal; -import mindustry.ui.Styles; import mindustry.world.blocks.distribution.MassDriver; import mindustry.world.blocks.payloads.PayloadMassDriver; import static arc.Core.atlas; import static arc.Core.settings; import static mindustry.Vars.*; -import static UnitInfo.SVars.*; +import static unitinfo.SVars.*; public class LinkDraw extends OverDraw { Seq linkedMasses = new Seq<>(); diff --git a/src/UnitInfo/ui/draws/OverDraw.java b/src/unitinfo/ui/draws/OverDraw.java similarity index 96% rename from src/UnitInfo/ui/draws/OverDraw.java rename to src/unitinfo/ui/draws/OverDraw.java index d5dbba0..f6e189b 100644 --- a/src/UnitInfo/ui/draws/OverDraw.java +++ b/src/unitinfo/ui/draws/OverDraw.java @@ -1,10 +1,9 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; import arc.scene.Element; import arc.scene.style.TextureRegionDrawable; import arc.scene.ui.CheckBox; import arc.scene.ui.layout.Table; -import arc.struct.ObjectMap; import arc.struct.Seq; import mindustry.ui.Styles; diff --git a/src/UnitInfo/ui/draws/OverDraws.java b/src/unitinfo/ui/draws/OverDraws.java similarity index 95% rename from src/UnitInfo/ui/draws/OverDraws.java rename to src/unitinfo/ui/draws/OverDraws.java index f030304..008bbc1 100644 --- a/src/UnitInfo/ui/draws/OverDraws.java +++ b/src/unitinfo/ui/draws/OverDraws.java @@ -1,4 +1,4 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; import mindustry.gen.Icon; diff --git a/src/UnitInfo/ui/draws/RangeDraw.java b/src/unitinfo/ui/draws/RangeDraw.java similarity index 93% rename from src/UnitInfo/ui/draws/RangeDraw.java rename to src/unitinfo/ui/draws/RangeDraw.java index 70030dd..b186f51 100644 --- a/src/UnitInfo/ui/draws/RangeDraw.java +++ b/src/unitinfo/ui/draws/RangeDraw.java @@ -1,24 +1,20 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; import arc.graphics.Color; import arc.graphics.g2d.*; import arc.graphics.gl.FrameBuffer; -import arc.scene.Element; import arc.scene.style.TextureRegionDrawable; -import arc.scene.ui.CheckBox; -import arc.scene.ui.layout.Table; import arc.struct.ObjectMap; import arc.struct.Seq; import mindustry.game.Team; import mindustry.gen.*; import mindustry.graphics.Drawf; -import mindustry.ui.Styles; import mindustry.world.blocks.defense.turrets.BaseTurret; import mindustry.world.blocks.defense.turrets.TractorBeamTurret; import mindustry.world.blocks.defense.turrets.Turret; -import static UnitInfo.SVars.turretRange; -import static UnitInfo.core.OverDrawer.isInCamera; +import static unitinfo.SVars.turretRange; +import static unitinfo.core.OverDrawer.isInCamera; import static arc.Core.*; import static mindustry.Vars.player; diff --git a/src/UnitInfo/ui/draws/UnitDraw.java b/src/unitinfo/ui/draws/UnitDraw.java similarity index 93% rename from src/UnitInfo/ui/draws/UnitDraw.java rename to src/unitinfo/ui/draws/UnitDraw.java index f99f43c..837a729 100644 --- a/src/UnitInfo/ui/draws/UnitDraw.java +++ b/src/unitinfo/ui/draws/UnitDraw.java @@ -1,18 +1,13 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; -import UnitInfo.ui.FreeBar; -import arc.Core; +import unitinfo.ui.FreeBar; import arc.graphics.g2d.Lines; import arc.math.Angles; import arc.math.Mathf; -import arc.scene.Element; import arc.scene.style.TextureRegionDrawable; -import arc.scene.ui.CheckBox; import arc.scene.ui.layout.Scl; -import arc.scene.ui.layout.Table; import arc.struct.Seq; import arc.util.Align; -import arc.util.Log; import arc.util.Tmp; import mindustry.Vars; import mindustry.ai.Pathfinder; @@ -21,19 +16,17 @@ import mindustry.entities.units.UnitCommand; import mindustry.entities.units.UnitController; import mindustry.game.Team; import mindustry.gen.Groups; -import mindustry.gen.Tex; import mindustry.graphics.Pal; import mindustry.logic.LUnitControl; import mindustry.ui.Fonts; -import mindustry.ui.Styles; import mindustry.world.Tile; import mindustry.world.blocks.storage.CoreBlock; import mindustry.world.blocks.units.CommandCenter; import java.util.Objects; -import static UnitInfo.core.OverDrawer.isInCamera; -import static UnitInfo.core.OverDrawer.isOutCamera; +import static unitinfo.core.OverDrawer.isInCamera; +import static unitinfo.core.OverDrawer.isOutCamera; import static arc.Core.settings; import static mindustry.Vars.*; diff --git a/src/UnitInfo/ui/draws/UtilDraw.java b/src/unitinfo/ui/draws/UtilDraw.java similarity index 90% rename from src/UnitInfo/ui/draws/UtilDraw.java rename to src/unitinfo/ui/draws/UtilDraw.java index 80c83c8..2b50490 100644 --- a/src/UnitInfo/ui/draws/UtilDraw.java +++ b/src/unitinfo/ui/draws/UtilDraw.java @@ -1,26 +1,13 @@ -package UnitInfo.ui.draws; +package unitinfo.ui.draws; -import arc.Events; -import arc.func.Boolf; -import arc.func.Cons; import arc.input.KeyCode; import arc.math.Angles; import arc.math.geom.Geometry; -import arc.math.geom.Point2; import arc.scene.style.TextureRegionDrawable; -import arc.scene.ui.Button; -import arc.scene.ui.CheckBox; -import arc.scene.ui.layout.Table; -import arc.struct.IntSeq; -import arc.util.Structs; -import mindustry.content.Blocks; import mindustry.entities.Units; -import mindustry.game.EventType; import mindustry.game.Team; import mindustry.gen.*; import mindustry.logic.Ranged; -import mindustry.world.Block; -import mindustry.world.Tile; import mindustry.world.blocks.ControlBlock; import mindustry.world.blocks.defense.turrets.Turret; diff --git a/src/UnitInfo/ui/windows/CoreDisplay.java b/src/unitinfo/ui/windows/CoreDisplay.java similarity index 93% rename from src/UnitInfo/ui/windows/CoreDisplay.java rename to src/unitinfo/ui/windows/CoreDisplay.java index 1d8b30c..bc4f4d7 100644 --- a/src/UnitInfo/ui/windows/CoreDisplay.java +++ b/src/unitinfo/ui/windows/CoreDisplay.java @@ -1,11 +1,12 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; -import UnitInfo.ui.*; +import arc.Events; +import mindustry.game.EventType; +import unitinfo.ui.*; import arc.Core; import arc.graphics.Color; import arc.math.Mathf; import arc.math.geom.Vec2; -import arc.scene.Element; import arc.scene.event.HandCursorListener; import arc.scene.style.*; import arc.scene.ui.*; @@ -26,29 +27,23 @@ import mindustry.world.blocks.storage.CoreBlock; import static mindustry.Vars.*; -public class CoreDisplay extends WindowTable implements Updatable { +public class CoreDisplay extends Window implements Updatable { Vec2 scrollPos = new Vec2(0, 0); ObjectMap itemData = new ObjectMap<>(); float heat; public CoreDisplay() { - super("Core Display", Icon.list, t -> {}); + super(Icon.list, "core"); resetUsed(); } @Override - public void build() { + public void build(Table table) { scrollPos = new Vec2(0, 0); - top(); - topBar(); - - table(Styles.black8, t -> { - ScrollPane pane = new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false); - t.add(pane).name("core-pane"); - }).top().right().grow().get().parent = null; - - resizeButton(); + table.background(Styles.black8).top(); + table.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).name("core-pane"); + Events.on(EventType.WorldLoadEvent.class, e -> resetUsed()); } @Override diff --git a/src/UnitInfo/ui/windows/MapEditorDisplay.java b/src/unitinfo/ui/windows/MapEditorDisplay.java similarity index 88% rename from src/UnitInfo/ui/windows/MapEditorDisplay.java rename to src/unitinfo/ui/windows/MapEditorDisplay.java index ce11b51..5e87340 100644 --- a/src/UnitInfo/ui/windows/MapEditorDisplay.java +++ b/src/unitinfo/ui/windows/MapEditorDisplay.java @@ -1,17 +1,15 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; -import UnitInfo.ui.EditorTool; -import UnitInfo.ui.OverScrollPane; -import UnitInfo.ui.Updatable; +import unitinfo.ui.EditorTool; +import unitinfo.ui.OverScrollPane; +import unitinfo.ui.Updatable; import arc.Core; -import arc.Events; import arc.func.Boolf; import arc.func.Cons; import arc.func.Prov; import arc.graphics.Color; import arc.input.KeyCode; import arc.math.Mathf; -import arc.math.geom.Point2; import arc.math.geom.Vec2; import arc.scene.event.Touchable; import arc.scene.style.TextureRegionDrawable; @@ -19,17 +17,13 @@ import arc.scene.ui.*; import arc.scene.ui.layout.Scl; import arc.scene.ui.layout.Table; import arc.scene.utils.Elem; -import arc.struct.IntSeq; import arc.struct.Seq; import arc.util.*; import mindustry.Vars; import mindustry.content.Blocks; -import mindustry.editor.DrawOperation; -import mindustry.game.EventType; import mindustry.game.Team; import mindustry.gen.Icon; import mindustry.gen.Tex; -import mindustry.gen.TileOp; import mindustry.graphics.Pal; import mindustry.ui.Styles; import mindustry.world.Block; @@ -37,41 +31,35 @@ import mindustry.world.Tile; import static mindustry.Vars.*; -public class MapEditorDisplay extends WindowTable implements Updatable { +public class MapEditorDisplay extends Window implements Updatable { Vec2 scrollPos = new Vec2(0, 0); TextField search; Table window; float heat; float brushSize = -1; - UnitInfo.ui.EditorTool tool; + unitinfo.ui.EditorTool tool; public static Team drawTeam = Team.sharded; public static Block selected = Blocks.router; public MapEditorDisplay() { - super("Map Editor Display", Icon.map, t -> {}); + super(Icon.map, "editor"); } @Override - public void build() { + public void build(Table table) { scrollPos = new Vec2(0, 0); search = Elem.newField(null, f->{}); - search.setMessageText("Search..."); + search.setMessageText(Core.bundle.get("players.search")+"..."); + window = table; - top(); - topBar(); - - table(Styles.black8, table -> { - window=table; - table.table(t->{ - t.left().background(Tex.underline2); - t.label(()->"[accent]"+selected.localizedName+"[] "+selected.emoji()); - t.add(search).growX().pad(8).name("search"); - }).growX().row(); - table.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).grow().name("editor-pane"); - }).top().right().grow().get().parent = null; - - resizeButton(); + table.top().background(Styles.black8); + table.table(t->{ + t.left().background(Tex.underline2); + t.label(()->"[accent]"+selected.localizedName+"[] "+selected.emoji()); + t.add(search).growX().pad(8).name("search"); + }).growX().row(); + table.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).grow().name("editor-pane"); } boolean hold = false; @@ -128,7 +116,7 @@ public class MapEditorDisplay extends WindowTable implements Updatable { tools.top().left(); tools.table(title -> title.left().background(Tex.underline2).add("Tools [accent]"+(tool==null?"":tool.name())+"[]")).growX().row(); tools.table(bt->{ - Cons addTool = tool -> { + Cons addTool = tool -> { ImageButton button = new ImageButton(ui.getIcon(tool.name()), Styles.clearTogglei); button.clicked(() -> { button.toggle(); @@ -147,11 +135,11 @@ public class MapEditorDisplay extends WindowTable implements Updatable { bt.stack(button, mode); }; - addTool.get(UnitInfo.ui.EditorTool.line); - addTool.get(UnitInfo.ui.EditorTool.pencil); - addTool.get(UnitInfo.ui.EditorTool.eraser); - addTool.get(UnitInfo.ui.EditorTool.fill); - addTool.get(UnitInfo.ui.EditorTool.spray); + addTool.get(unitinfo.ui.EditorTool.line); + addTool.get(unitinfo.ui.EditorTool.pencil); + addTool.get(unitinfo.ui.EditorTool.eraser); + addTool.get(unitinfo.ui.EditorTool.fill); + addTool.get(unitinfo.ui.EditorTool.spray); }); tools.row(); Slider slider = new Slider(1, 16, 1, false); @@ -203,7 +191,7 @@ public class MapEditorDisplay extends WindowTable implements Updatable { ImageButton button = cont.button(Tex.whiteui, Styles.clearToggleTransi, 24, () -> { if(closeSelect) control.input.frag.config.hideConfig(); - }).group(group).tooltip(t->t.background(Styles.black8).add(item.localizedName)).get(); + }).group(group).tooltip(t->t.background(Styles.black8).add(item.localizedName.replace(search.getText(), "[accent]"+search.getText()+"[]"))).get(); button.changed(() -> consumer.get(button.isChecked() ? item : null)); button.getStyle().imageUp = new TextureRegionDrawable(item.uiIcon); button.update(() -> button.setChecked(holder.get() == item)); diff --git a/src/UnitInfo/ui/windows/PlayerDisplay.java b/src/unitinfo/ui/windows/PlayerDisplay.java similarity index 83% rename from src/UnitInfo/ui/windows/PlayerDisplay.java rename to src/unitinfo/ui/windows/PlayerDisplay.java index a273038..b10b290 100644 --- a/src/UnitInfo/ui/windows/PlayerDisplay.java +++ b/src/unitinfo/ui/windows/PlayerDisplay.java @@ -1,7 +1,7 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; -import UnitInfo.ui.OverScrollPane; -import UnitInfo.ui.Updatable; +import unitinfo.ui.OverScrollPane; +import unitinfo.ui.Updatable; import arc.Core; import arc.graphics.Color; import arc.graphics.g2d.Draw; @@ -20,7 +20,7 @@ import mindustry.ui.*; import static mindustry.Vars.*; -public class PlayerDisplay extends WindowTable implements Updatable { +public class PlayerDisplay extends Window implements Updatable { Vec2 scrollPos = new Vec2(0, 0); TextField search; ImageButton.ImageButtonStyle ustyle; @@ -28,11 +28,11 @@ public class PlayerDisplay extends WindowTable implements Updatable { float heat; public PlayerDisplay() { - super("Player Display", Icon.players, t -> {}); + super(Icon.players, "player"); } @Override - public void build() { + public void build(Table table) { scrollPos = new Vec2(0, 0); search = Elem.newField(null, f->{}); search.setMessageText(Core.bundle.get("players.search")); @@ -45,16 +45,10 @@ public class PlayerDisplay extends WindowTable implements Updatable { imageOverColor = Color.lightGray; }}; - top(); - topBar(); - - table(Styles.black8, table -> { - table.label(()-> Core.bundle.format(Groups.player.size() == 1 ? "players.single" : "players", Groups.player.size())).row(); - table.add(search).growX().pad(8).name("search").maxTextLength(maxNameLength).row(); - table.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).grow().name("player-pane"); - }).top().right().grow().get().parent = null; - - resizeButton(); + table.background(Styles.black8).top(); + table.label(()-> Core.bundle.format(Groups.player.size() == 1 ? "players.single" : "players", Groups.player.size())).row(); + table.add(search).growX().pad(8).name("search").maxTextLength(maxNameLength).row(); + table.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).grow().name("player-pane"); } @Override diff --git a/src/UnitInfo/ui/windows/ToolDisplay.java b/src/unitinfo/ui/windows/ToolDisplay.java similarity index 62% rename from src/UnitInfo/ui/windows/ToolDisplay.java rename to src/unitinfo/ui/windows/ToolDisplay.java index e5c9f5f..651ff12 100644 --- a/src/UnitInfo/ui/windows/ToolDisplay.java +++ b/src/unitinfo/ui/windows/ToolDisplay.java @@ -1,50 +1,39 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; -import UnitInfo.ui.OverScrollPane; -import UnitInfo.ui.Updatable; -import UnitInfo.ui.draws.OverDraw; -import UnitInfo.ui.draws.OverDraws; -import UnitInfo.ui.draws.UnitDraw; -import arc.math.Scaled; +import unitinfo.ui.OverScrollPane; +import unitinfo.ui.Updatable; +import unitinfo.ui.draws.OverDraw; +import unitinfo.ui.draws.OverDraws; import arc.math.geom.Vec2; import arc.scene.ui.ScrollPane; import arc.scene.ui.layout.Table; -import arc.util.Scaling; import arc.util.Time; import mindustry.gen.Icon; import mindustry.gen.Tex; import mindustry.graphics.Pal; import mindustry.ui.Styles; -public class ToolDisplay extends WindowTable implements Updatable { +public class ToolDisplay extends Window implements Updatable { Vec2 scrollPos = new Vec2(0, 0); OverDraw selected; float heat; public ToolDisplay() { - super("Tool Display", Icon.edit, t -> { - }); + super(Icon.edit, "tool"); } @Override - public void build() { + public void build(Table table) { scrollPos = new Vec2(0, 0); - top(); - topBar(); - - table(Styles.black8, t -> { - t.left(); - t.table(pane->{ - pane.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).name("tool-pane"); - }).top().marginLeft(4f).marginRight(12f); - t.table(stats->{ - stats.top(); - stats.add(rebuildStats()).name("tool-stats"); - }).growY(); - }).top().right().grow().get().parent = null; - - resizeButton(); + table.background(Styles.black8).top().left(); + table.table(pane->{ + pane.add(new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false)).name("tool-pane"); + }).top().marginLeft(4f).marginRight(12f); + table.table(stats->{ + stats.top(); + stats.add(rebuildStats()).name("tool-stats"); + }).growY(); } @Override diff --git a/src/UnitInfo/ui/windows/UnitDisplay.java b/src/unitinfo/ui/windows/UnitDisplay.java similarity index 67% rename from src/UnitInfo/ui/windows/UnitDisplay.java rename to src/unitinfo/ui/windows/UnitDisplay.java index d551570..8d9751c 100644 --- a/src/UnitInfo/ui/windows/UnitDisplay.java +++ b/src/unitinfo/ui/windows/UnitDisplay.java @@ -1,11 +1,9 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; -import UnitInfo.SVars; -import UnitInfo.core.BarInfo; -import UnitInfo.ui.SBar; -import UnitInfo.ui.SIcons; -import UnitInfo.ui.Updatable; -import UnitInfo.ui.windows.WindowTable; +import unitinfo.core.BarInfo; +import unitinfo.ui.SBar; +import unitinfo.ui.SIcons; +import unitinfo.ui.Updatable; import arc.Core; import arc.func.Prov; import arc.graphics.Color; @@ -38,127 +36,122 @@ import mindustry.world.blocks.distribution.MassDriver; import mindustry.world.blocks.payloads.Payload; import mindustry.world.blocks.power.*; -import static UnitInfo.SVars.*; -import static UnitInfo.SUtils.*; +import static unitinfo.SVars.*; +import static unitinfo.SUtils.*; import static arc.Core.*; import static mindustry.Vars.*; -public class UnitDisplay extends WindowTable implements Updatable { +public class UnitDisplay extends Window implements Updatable { static Seq lastColors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear); static final Rect scissor = new Rect(); float scrollPos; public UnitDisplay() { - super("Unit Display", Icon.units, t -> {}); + super(Icon.units, "unit"); } @Override - public void build() { - top(); - topBar(); + public void build(Table table) { + table.top().background(Styles.black8); //TODO: add new UnitInfoDisplay(), new WeaponDisplay(); - table(Styles.black8, t -> { - t.table(Tex.underline2, tt -> { - tt.stack( - new Table(ttt -> { - Prov reg = () -> { - TextureRegion region = clear; - Teamc target = getTarget(); - if (target instanceof Unit u && u.type != null) region = u.type.uiIcon; - else if (target instanceof Building b) { - if (target instanceof ConstructBlock.ConstructBuild cb) - region = cb.current.uiIcon; - else if (b.block != null) region = b.block.uiIcon; - } - return new TextureRegionDrawable(region); - }; - Drawable img = reg.get(); - ImageButton imagebt = new ImageButton(img, img); + table.table(Tex.underline2, tt -> { + tt.stack( + new Table(ttt -> { + Prov reg = () -> { + TextureRegion region = clear; + Teamc target = getTarget(); + if (target instanceof Unit u && u.type != null) region = u.type.uiIcon; + else if (target instanceof Building b) { + if (target instanceof ConstructBlock.ConstructBuild cb) + region = cb.current.uiIcon; + else if (b.block != null) region = b.block.uiIcon; + } + return new TextureRegionDrawable(region); + }; + Drawable img = reg.get(); + ImageButton imagebt = new ImageButton(img, img); - imagebt.hovered(() -> { - Time.run(60 * 2, () -> { - if (imagebt.isOver()) lockTarget(); - }); + imagebt.hovered(() -> { + Time.run(60 * 2, () -> { + if (imagebt.isOver()) lockTarget(); }); - imagebt.clicked(() -> { - Teamc target = getTarget(); - if (target instanceof Unit u && u.type != null) ui.content.show(u.type); - else if (target instanceof Building b && b.block != null) ui.content.show(b.block); - }); - ttt.add(imagebt).update((i) -> { - i.getStyle().imageUp = reg.get().tint(Tmp.c1.set(locked ? Color.red.cpy().shiftHue(2 * Time.time) : Color.white)); - i.getStyle().imageDown = reg.get().tint(Tmp.c1.mul(Color.darkGray)); - i.layout(); - }).size(4 * 8f).get().parent = null; - }), - new Table(ttt -> { - ttt.stack( - new Table(temp -> { - temp.image(new ScaledNinePatchDrawable(new NinePatch(Icon.defenseSmall.getRegion()), 1)); - temp.visibility = () -> getTarget() instanceof Unit; - }), - new Table(temp -> { - Label label = new Label(() -> (getTarget() instanceof Unit u && u.type != null ? (int) u.type.armor + "" : "")); - label.setColor(Pal.surge); - temp.add(label).center(); - temp.pack(); - }) - ).padLeft(2 * 8f).padBottom(2 * 8f).get().parent = null; - }) - ); + }); + imagebt.clicked(() -> { + Teamc target = getTarget(); + if (target instanceof Unit u && u.type != null) ui.content.show(u.type); + else if (target instanceof Building b && b.block != null) ui.content.show(b.block); + }); + ttt.add(imagebt).update((i) -> { + i.getStyle().imageUp = reg.get().tint(Tmp.c1.set(locked ? Color.red.cpy().shiftHue(2 * Time.time) : Color.white)); + i.getStyle().imageDown = reg.get().tint(Tmp.c1.mul(Color.darkGray)); + i.layout(); + }).size(4 * 8f); + }), + new Table(ttt -> { + ttt.stack( + new Table(temp -> { + temp.image(new ScaledNinePatchDrawable(new NinePatch(Icon.defenseSmall.getRegion()), 1)); + temp.visibility = () -> getTarget() instanceof Unit; + }), + new Table(temp -> { + Label label = new Label(() -> (getTarget() instanceof Unit u && u.type != null ? (int) u.type.armor + "" : "")); + label.setColor(Pal.surge); + temp.add(label).center(); + temp.pack(); + }) + ).padLeft(2 * 8f).padBottom(2 * 8f); + }) + ); - tt.label(() -> { - String name = ""; - Teamc target = getTarget(); - if (target instanceof Unit u && u.type != null) - name = u.type.localizedName; - if (target instanceof Building b && b.block != null) { - if (target instanceof ConstructBlock.ConstructBuild cb) - name = cb.current.localizedName; - else name = b.block.localizedName; - } - return "[accent]" + (name.length() > 13 ? name.substring(0, 13) + "..." : name) + "[]"; - }).get().parent = null; - - tt.addListener(new Tooltip(to -> { - Teamc target = getTarget(); - - to.background(Styles.black6); - - to.table(Tex.underline2, tool2 -> { - tool2.label(() -> { - if (target instanceof Unit u) return u.type.localizedName; - else if (target instanceof Building b) return b.block.localizedName; - else return ""; - }); - }).row(); - to.label(() -> target instanceof Unit u && u.isPlayer() ? u.getPlayer().name() : "AI").row(); - to.label(() -> target == null - ? "(" + 0 + ", " + 0 + ")" - : "(" + Strings.fixed(target.x() / tilesize, 2) + ", " + Strings.fixed(target.y() / tilesize, 2) + ")").row(); - })); - tt.update(() -> tt.setBackground(((NinePatchDrawable) Tex.underline2).tint(getTarget() == null ? Color.gray : getTarget().team().color))).parent = null; - }).row(); - ScrollPane pane = t.pane(Styles.nonePane, new Table(tt -> { - for (int i = 0; i < 6; i++) { - addBar(tt, i); - tt.row(); + tt.label(() -> { + String name = ""; + Teamc target = getTarget(); + if (target instanceof Unit u && u.type != null) + name = u.type.localizedName; + if (target instanceof Building b && b.block != null) { + if (target instanceof ConstructBlock.ConstructBuild cb) + name = cb.current.localizedName; + else name = b.block.localizedName; } - }).left()).top().right().grow().get(); - pane.parent = null; - pane.update(() -> { - Element result = scene.hit(input.mouseX(), input.mouseY(), true); - if(pane.hasScroll() && (result == null || !result.isDescendantOf(pane))) - scene.setScrollFocus(null); - scrollPos = pane.getScrollY(); + return "[accent]" + (name.length() > 13 ? name.substring(0, 13) + "..." : name) + "[]"; }); - pane.setOverscroll(false, false); - pane.setScrollingDisabled(true, false); - pane.setScrollYForce(scrollPos); - }).top().right().grow().get().parent = null; - resizeButton(); + tt.addListener(new Tooltip(to -> { + Teamc target = getTarget(); + + to.background(Styles.black6); + + to.table(Tex.underline2, tool2 -> { + tool2.label(() -> { + if (target instanceof Unit u) return u.type.localizedName; + else if (target instanceof Building b) return b.block.localizedName; + else return ""; + }); + }).row(); + to.label(() -> target instanceof Unit u && u.isPlayer() ? u.getPlayer().name() : "AI").row(); + to.label(() -> target == null + ? "(" + 0 + ", " + 0 + ")" + : "(" + Strings.fixed(target.x() / tilesize, 2) + ", " + Strings.fixed(target.y() / tilesize, 2) + ")").row(); + })); + tt.update(() -> tt.setBackground(((NinePatchDrawable) Tex.underline2).tint(getTarget() == null ? Color.gray : getTarget().team().color))); + }).row(); + ScrollPane pane = table.pane(Styles.nonePane, new Table(tt -> { + for (int i = 0; i < 6; i++) { + addBar(tt, i); + tt.row(); + } + }).left()).top().right().grow().get(); + pane.update(() -> { + Element result = scene.hit(input.mouseX(), input.mouseY(), true); + if(pane.hasScroll() && (result == null || !result.isDescendantOf(pane))) + scene.setScrollFocus(null); + scrollPos = pane.getScrollY(); + }); + + pane.setOverscroll(false, false); + pane.setScrollingDisabled(true, false); + pane.setScrollYForce(scrollPos); } public void lockTarget() { diff --git a/src/UnitInfo/ui/windows/WaveDisplay.java b/src/unitinfo/ui/windows/WaveDisplay.java similarity index 86% rename from src/UnitInfo/ui/windows/WaveDisplay.java rename to src/unitinfo/ui/windows/WaveDisplay.java index c4115c6..dcfcb0f 100644 --- a/src/UnitInfo/ui/windows/WaveDisplay.java +++ b/src/unitinfo/ui/windows/WaveDisplay.java @@ -1,12 +1,10 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; -import UnitInfo.ui.OverScrollPane; +import unitinfo.ui.OverScrollPane; import arc.Events; import arc.graphics.Color; -import arc.input.KeyCode; import arc.math.Mathf; import arc.math.geom.Vec2; -import arc.scene.event.HandCursorListener; import arc.scene.event.Touchable; import arc.scene.ui.*; import arc.scene.ui.layout.*; @@ -24,32 +22,27 @@ import static arc.Core.settings; import static mindustry.Vars.*; -public class WaveDisplay extends WindowTable { +public class WaveDisplay extends Window { static Vec2 scrollPos = new Vec2(0, 0); public WaveDisplay() { - super("Wave Display", Icon.waves, t -> {}); + super(Icon.waves, "wave"); } @Override - public void build() { - top(); - topBar(); + public void build(Table table) { + table.background(Styles.black8).top(); - table(Styles.black8, t -> { - ScrollPane pane = new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false); - t.add(pane); - Events.on(EventType.WorldLoadEvent.class, e -> { - pane.clearChildren(); - pane.setWidget(rebuild()); - }); - Events.on(EventType.WaveEvent.class, e -> { - pane.clearChildren(); - pane.setWidget(rebuild()); - }); - }).top().right().grow().get().parent = null; - - resizeButton(); + ScrollPane pane = new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false); + table.add(pane); + Events.on(EventType.WorldLoadEvent.class, e -> { + pane.clearChildren(); + pane.setWidget(rebuild()); + }); + Events.on(EventType.WaveEvent.class, e -> { + pane.clearChildren(); + pane.setWidget(rebuild()); + }); } public ObjectIntMap getWaveGroup(int index) { diff --git a/src/UnitInfo/ui/windows/WindowTable.java b/src/unitinfo/ui/windows/Window.java similarity index 57% rename from src/UnitInfo/ui/windows/WindowTable.java rename to src/unitinfo/ui/windows/Window.java index 4a9ad1c..7883ad2 100644 --- a/src/UnitInfo/ui/windows/WindowTable.java +++ b/src/unitinfo/ui/windows/Window.java @@ -1,5 +1,6 @@ -package UnitInfo.ui.windows; +package unitinfo.ui.windows; +import arc.*; import arc.func.*; import arc.input.*; import arc.math.geom.*; @@ -10,56 +11,60 @@ import arc.util.*; import mindustry.gen.*; import mindustry.ui.*; -import java.awt.*; - -public class WindowTable extends Table{ - public Cons content, onClose; +public class Window extends Table{ public TextureRegionDrawable icon; - public float maxWindowHeight, maxWindowWidth; - public boolean maxWidthEnabled = false, maxHeightEnabled = false; + public int id; + public Cons
content; + public boolean shown = false; - public WindowTable() { - this("none", Icon.none, c->{}); + public float minWindowWidth = 160, minWindowHeight = 60; + public float maxWindowWidth = Float.MAX_VALUE, maxWindowHeight = Float.MAX_VALUE; + + public Window(TextureRegionDrawable icon, String name){ + this(icon, name, null); } - public WindowTable(String title, TextureRegionDrawable icon, Cons
content){ - this(title, icon, content, t -> t.visible(() -> false)); - } - - public WindowTable(String title, TextureRegionDrawable icon, Cons
content, Cons
onClose){ - this.name = title; - this.icon = icon; + public Window(TextureRegionDrawable icon, String name, Cons
content){ this.content = content; - this.onClose = onClose; - build(); + this.name = name; + this.icon = icon; + + titleBar(); + pane(t -> { + t.setBackground(Styles.black5); + t.top().left(); + build(t); + }).grow().top().left().get().setScrollingDisabled(true, true); + bottomBar(); + + setPosition(Core.graphics.getWidth() / 2f - getWidth() / 2f, Core.graphics.getHeight() / 2f - getHeight() / 2f); + id = WindowManager.register(this); + + visible(() -> shown); } - public void build(){ - top(); - topBar(); - - // window contents - table(Styles.black5, t -> { - content.get(t); - }).grow(); - - resizeButton(); + protected void build(Table t){ + if(content != null) content.get(t); } - public void topBar(){ + protected void titleBar(){ table(t -> { + // icon and title t.table(Tex.buttonEdge1, b -> { b.top().left(); - b.image(icon).size(20f).padLeft(15).top().left(); + b.image(() -> icon == null ? Icon.none.getRegion() : icon.getRegion()).size(20f).padLeft(15).top().left(); b.pane(Styles.nonePane, p -> { p.top().left(); - p.labelWrap(name).padLeft(20).top().left().get().setAlignment(Align.topLeft); - }).top().left().height(40f).growX().get().setScrollingDisabled(true, true); + p.labelWrap(() -> Core.bundle.get("window."+name+".name")).padLeft(20).top().left().get().setAlignment(Align.topLeft); + }).left().height(40f).growX().get().setScrollingDisabled(true, true); }).maxHeight(40f).grow(); + + // exit button t.table(Tex.buttonEdge3, b -> { - b.button(Icon.cancel, Styles.emptyi, () -> onClose.get(this)); + b.button(Icon.cancel, Styles.emptyi, () -> shown = false); }).maxHeight(40f).width(80f).growY(); + // handles the dragging. t.touchable = Touchable.enabled; t.addListener(new InputListener(){ float lastX, lastY; @@ -68,15 +73,16 @@ public class WindowTable extends Table{ Vec2 v = t.localToStageCoordinates(Tmp.v1.set(x, y)); lastX = v.x; lastY = v.y; - t.toFront(); + toFront(); return true; } @Override - public void touchDragged(InputEvent event, float x, float y, int pointer) { - Vec2 v = t.localToStageCoordinates(Tmp.v1.set(x, y)); + public void touchDragged(InputEvent event, float dx, float dy, int pointer) { + Vec2 v = t.localToStageCoordinates(Tmp.v1.set(dx, dy)); + + setPosition( x + (v.x - lastX), y + (v.y - lastY)); - moveBy(v.x - lastX, v.y - lastY); lastX = v.x; lastY = v.y; } @@ -85,7 +91,7 @@ public class WindowTable extends Table{ row(); } - public void resizeButton(){ + protected void bottomBar(){ row(); table(Styles.black5, t -> { t.table().growX(); @@ -110,8 +116,8 @@ public class WindowTable extends Table{ // will softlock if initial size is smaller than minimum // so don't do that! - if(getWidth() + w < 160f || (getWidth() + w > maxWindowWidth && maxWidthEnabled)) w = 0; - if(getHeight() - h < 160f || (getHeight() - h > maxWindowHeight && maxHeightEnabled)) h = 0; + if(getWidth() + w < minWindowWidth || getWidth() + w > maxWindowWidth) w = 0; + if(getHeight() - h < minWindowHeight || getHeight() - h > maxWindowHeight) h = 0; sizeBy(w, -h); moveBy(0, h); lastX = v.x; @@ -122,13 +128,7 @@ public class WindowTable extends Table{ }).height(20f).growX(); } - public void setMaxWindowWidth(float maxWindowWidth){ - this.maxWindowWidth = maxWindowWidth; - maxWidthEnabled = true; + public void toggle(){ + shown = !shown; } - - public void setMaxWindowHeight(float maxWindowHeight){ - this.maxWindowHeight = maxWindowHeight; - maxHeightEnabled = true; - } -} \ No newline at end of file +} diff --git a/src/unitinfo/ui/windows/WindowManager.java b/src/unitinfo/ui/windows/WindowManager.java new file mode 100644 index 0000000..daaaa35 --- /dev/null +++ b/src/unitinfo/ui/windows/WindowManager.java @@ -0,0 +1,55 @@ +package unitinfo.ui.windows; + +import arc.*; +import arc.struct.*; +import arc.util.*; +import mindustry.*; +import mindustry.ui.*; + +public class WindowManager { + public static Seq windows = new Seq<>(); + + public static void init(){ + Log.info(windows.size); + + Vars.ui.hudGroup.fill(t -> { + t.name = "Windows"; + for(Window window : windows){ + t.add(window); + } + }); + + Vars.ui.hudGroup.fill(t -> { + t.center().left(); + t.table(Core.atlas.drawable("unitinfo-sidebar"), b -> { + b.name = "Window Buttons"; + b.left(); + + for(Window window : windows){ + b.button(window.icon, Styles.emptyi, () -> { + window.toggle(); + + // Disabling the parent's layout fixes issues with updating elements inside windows. + // However, it also disables the layout of all its children, so we need to re-enable them. + window.parent.setLayoutEnabled(false); + window.setLayoutEnabled(true); + for(Window w : windows){ + w.setLayoutEnabled(true); + } + }).disabled(window.shown) + .size(40f) + .tooltip(tt -> { + tt.setBackground(Styles.black6); + tt.label(() -> Core.bundle.get("window."+window.name+".name")).pad(2f); + }); + b.row(); + } + }).left(); + }); + } + + public static int register(Window window){ + windows.add(window); + return windows.size - 1; + } +} diff --git a/src/unitinfo/ui/windows/Windows.java b/src/unitinfo/ui/windows/Windows.java new file mode 100644 index 0000000..8ed8bfa --- /dev/null +++ b/src/unitinfo/ui/windows/Windows.java @@ -0,0 +1,25 @@ +package unitinfo.ui.windows; + +import arc.util.*; +import mindustry.gen.*; +import unitinfo.ui.windows.*; + +public class Windows { + public static MapEditorDisplay editorTable; + + public static void load(){ + new UnitDisplay(); + new WaveDisplay(); + new CoreDisplay(); + new PlayerDisplay(); + new ToolDisplay(); + editorTable = new MapEditorDisplay(); + new Window(Icon.box, "test-window", t -> { + t.labelWrap(() -> t.parent.x + ", " + t.parent.y).top().right().growX(); + t.row(); + t.labelWrap(() -> t.parent.getWidth() + ", " + t.parent.getHeight()).top().right().growX(); + t.row(); + t.labelWrap(() -> "T: " + Time.time).top().right().growX(); + }); + } +}