diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index a2235e2..662fdec 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -4,101 +4,88 @@ shar-stat.shield = Shield: {0} shar-stat.payloadCapacity = Payloads: {0}² / {1}² shar-stat.itemCapacity = Items: {0} / {1} shar-stat.liquidCapacity = Liquid: {0} / {1} -shar-stat.powerCapacity = Power: {0} / {1} -shar-stat.powerUsage = Power: {0} / {1} +shar-stat.power = Power: {0} / {1} +shar-stat.powerIn = Power Income: {0}/s +shar-stat.powerOut = Power Outcome: {0}/s shar-stat.ammos = Ammo: {0} / {1} -shar-stat.commandUnits = Commands: {0} / {1} -shar-stat.reload = Reload: {0}% shar-stat.itemAmmo = Ammo: {0} / {1} shar-stat.liquidAmmo = Liquid: {0} / {1} -shar-stat.power = Power: {0} / {1} +shar-stat.commandUnits = Commands: {0} / {1} +shar-stat.reload = Reload: {0}% shar-stat.progress = Progress: {0}% shar-stat.attr = Attribute: x{0} shar-stat-waveAmount = [lightgray]Amount:[] {0} shar-stat-waveShield = [lightgray]Shield:[] {0} shar-stat.waveStatus = [lightgray]Status:[] shar-stat.waveItem = [lightgray]Item:[] -shar-stat.powerIn = Power Income: {0}/s -shar-stat.powerOut = Power Outcome: {0}/s #Settings -setting.infoui.name = Display Info UI -setting.infoui.description = -setting.weaponui.name = Display Weapon Info UI -setting.weaponui.description = -setting.wavemax.name = Wave Amount to Display -setting.wavemax.description = set displayed wave amount of wave info. -setting.pastwave.name = Display Previous Wave -setting.pastwave.description = toggle to shows previous wave on wave info ingame.\nCurrent wave is highlighted with red. -setting.emptywave.name = Display Empty Wave -setting.emptywave.description = toggle to shows empty wave on wave info ingame. -setting.barstyle.name = Change Bar Style -setting.barstyle.description = +setting.barstyle.name = Unit Tap: Change Bar Style +setting.barstyle.description = change bar sprite in unit tap. setting.infoUiScale.name = Info UI Scaling setting.infoUiScale.description = set scale for info ui on left-side. -setting.coreItemCheckRate.name = Item tap: update rate -setting.coreItemCheckRate.description = -setting.allTeam.name = Display all teams' info on item tap -setting.allTeam.description = +setting.coreItemCheckRate.name = Resource Tap: update rate +setting.coreItemCheckRate.description = set how often the core resources are checked. The slower rate, the fewer lag occur. +setting.wavemax.name = Wave Tap: Wave Amount to Display +setting.wavemax.description = set waves limit for wave list tap. +setting.infoui.name = Display Info UI +setting.infoui.description = enable left-side tap ui to display. when inactive, all associated updates will be stopped. +setting.pastwave.name = Wave Tap: Display Previous Wave +setting.pastwave.description = display previous wave on wave list tap. Current wave is highlighted with red color. +setting.emptywave.name = Wave Tap: Display Empty Wave +setting.emptywave.description = display empty wave on wave list tap. setting.rangeRadius.name = Near Range Margin -setting.rangeRadius.description = set additional distances to show range. +setting.rangeRadius.description = set the range detection distance. setting.rangeNearby.name = Display Near Range -setting.rangeNearby.description = toggle to display range circle when you approached enemy ranges. +setting.rangeNearby.description = Enable automatic range display.\nIf you approach the range by a certain distance, the range is displayed in advance. setting.allTeamRange.name = Display Player Team Range -setting.allTeamRange.description = toggle to display player team's range. +setting.allTeamRange.description = display alliance's range. setting.allTargetRange.name = Display All Target Range -setting.allTargetRange.description = toggle to display all range whatever airTarget or groundTarget etc. +setting.allTargetRange.description = display all range. The range of targets that cannot be aimed at themselves is shown as gray. setting.coreRange.name = Display Core Range -setting.coreRange.description = display enemy core build-limit range +setting.coreRange.description = display enemy core build-limit range. setting.unitRange.name = Display Unit Range -setting.unitRange.description = toggle to display unit range too. -setting.softRangeDrawing.name = Soft Display Range -setting.softRangeDrawing.description = toggle to change range display style. +setting.unitRange.description = display unit range. +setting.softRangeDrawing.name = Display Soft Range +setting.softRangeDrawing.description = The shape of the circle that marks the range becomes thinner and opaque. setting.selectopacity.name = Select Arrow Opacity -setting.selectopacity.description = use the slider to set opacity of select arrow. +setting.selectopacity.description = set opacity of select arrow. setting.baropacity.name = Health Bar Opacity -setting.baropacity.description = use the slider to set opacity of unit bar. +setting.baropacity.description = set opacity of unit bar. setting.uiopacity.name = UI Background Opacity -setting.uiopacity.description = use the slider to set opacity of ui background. +setting.uiopacity.description = set opacity of ui background. setting.softRangeOpacity.name = Soft Range Opacity -setting.softRangeOpacity.description = use the slider to set opacity of soft range. +setting.softRangeOpacity.description = set opacity of soft range. -setting.gaycursor.name = Enable Mouse Trail Effect [lightgray](only for desktop)[] -setting.gaycursor.description = -setting.unithealthui.name = Display Unit Bar -setting.unithealthui.description = -setting.linkedMass.name = Display mass driver link line -setting.linkedMass.description = -setting.linkedNode.name = Display node link line -setting.linkedNode.description = -setting.select.name = Display Select Arrow -setting.select.description = -setting.deadTarget.name = save locked target even if it's dead -setting.deadTarget.description = -setting.distanceLine.name = Display distance line from info target -setting.distanceLine.description = setting.unitlinelimit.name = UnitLines limit -setting.unitlinelimit.description = lots of drawing unitlines drop fps. you need to set lines limit with your device environment. +setting.unitlinelimit.description = many unit path lines cause significant device lag. It must be adjusted to the device environment. +setting.gaycursor.name = Enable Mouse Trail Effect +setting.gaycursor.description = create a rainbow effect on the mouse cursor. +setting.unithealthui.name = Display Unit Bar +setting.unithealthui.description = display briefly about health, ammo, shield, status effect, and payload in each unit. +setting.linkedMass.name = Display mass driver link line +setting.linkedMass.description = line the mass drivers associated with the selected mass drivers. +setting.linkedNode.name = Display node link line +setting.linkedNode.description = display the blocks electrically connected to the selected blocks by a line. +setting.select.name = Display Select Arrow +setting.select.description = display which unit or block is selected. +setting.deadTarget.name = save locked target even if it's dead +setting.deadTarget.description = continue to display the coordinates and target information when a fixed target dies. +setting.distanceLine.name = Display distance line from info target +setting.distanceLine.description = display dotted lines and numbers how far away the target is. setting.autoShooting.name = Enable Auto Shooting -setting.autoShooting.description = +setting.autoShooting.description = no don't do hack setting.shar-title = UnitInfo Setting -setting.shar-wave = Wave Setting +setting.shar-wave = InfoTap Setting setting.shar-range = AutoRange Setting setting.shar-opacity = Opacity Setting setting.shar-draw = Overdrawing Setting setting.shar-etc = etc -#Dialog -editmaxwave = Edit Waves(int) -editrange = Edit Scan Range(int) -invalid = Either you entered an invalid number format or the number is too large (must be <= 2147483647).\nNumber will be default(100). -warn = [red]Warning[] -warning = Too many waves to display! Lag may occur. - #Hud hud.unit = Unit Info hud.wave = Wave Info diff --git a/assets/bundles/bundle_ko.properties b/assets/bundles/bundle_ko.properties index d7ac628..f02e8f8 100644 --- a/assets/bundles/bundle_ko.properties +++ b/assets/bundles/bundle_ko.properties @@ -4,101 +4,88 @@ shar-stat.shield = 방어막: {0} shar-stat.payloadCapacity = 화물: {0}² / {1}² shar-stat.itemCapacity = 아이템: {0} / {1} shar-stat.liquidCapacity = 액체: {0} / {1} -shar-stat.powerCapacity = 전력: {0} / {1} -shar-stat.powerUsage = 전력: {0} / {1} +shar-stat.power = 전력: {0} / {1} +shar-stat.powerIn = 전력 생산량: {0}/s +shar-stat.powerOut = 전력 소모량: {0}/s shar-stat.ammos = 탄약: {0} / {1} -shar-stat.commandUnits = 지휘 유닛: {0} / {1} -shar-stat.reload = 재장전: {0}% shar-stat.itemAmmo = 탄약 : {0} / {1} shar-stat.liquidAmmo = 액체: {0} / {1} -shar-stat.power = 전력: {0} / {1} +shar-stat.commandUnits = 지휘 유닛: {0} / {1} +shar-stat.reload = 재장전: {0}% shar-stat.progress = 진행도: {0}% shar-stat.attr = 친화력: x{0} shar-stat-waveAmount = [lightgray]유닛 수:[] {0} shar-stat-waveShield = [lightgray]방어막:[] {0} shar-stat.waveStatus = [lightgray]상태이상:[] shar-stat.waveItem = [lightgray]아이템:[] -shar-stat.powerIn = 전력 생산량: {0}/s -shar-stat.powerOut = 전력 소모량: {0}/s # Settings -setting.infoui.name = 정보 UI 표시 -setting.infoui.description = -setting.weaponui.name = 무기 정보 UI 표시 -setting.weaponui.description = -setting.wavemax.name = 표시할 단계 수 -setting.wavemax.description = 연필 아이콘을 눌러서 인게임 단계 탭에서 표시될 최대 웨이브 수를 설정합니다. -setting.pastwave.name = 이전 단계 표시 -setting.pastwave.description = 인게임 단계 탭에서 이전 단계도 표시합니다. 현재 단계는 빨간색으로 강조됩니다. -setting.emptywave.name = 빈 단계 표시 -setting.emptywave.description = 인게임 단계 탭에서 빈 단계도 표시합니다. setting.barstyle.name = 바 스타일 변경 -setting.barstyle.description = +setting.barstyle.description = 유닛 탭의 바 스프라이트를 바꿉니다. setting.infoUiScale.name = 정보 UI 스케일링 -setting.infoUiScale.description = 인게임 좌측 정보 UI의 크기를 설정합니다. +setting.infoUiScale.description = 좌측 정보 UI의 크기를 설정합니다. setting.coreItemCheckRate.name = 자원 탭: 업데이트 주기 -setting.coreItemCheckRate.description = -setting.allTeam.name = 자원 탭: 모든 팀 표시 -setting.allTeam.description = +setting.coreItemCheckRate.description = 코어 자원을 확인하는 주기를 설정합니다. 더 느릴수록 기기 부하가 줄어듭니다. +setting.wavemax.name = 표시할 단계 수 +setting.wavemax.description = 단계 탭에서 표시할 웨이브 수 제한을 설정합니다. +setting.infoui.name = 정보 UI 표시 +setting.infoui.description = 좌측 탭 UI를 표시합니다. 비활성 시 관련된 모든 업데이트가 중지됩니다. +setting.pastwave.name = 이전 단계 표시 +setting.pastwave.description = 단계 탭에서 이전 단계를 표시합니다. 현재 단계는 빨간색으로 강조됩니다. +setting.emptywave.name = 빈 단계 표시 +setting.emptywave.description = 단계 탭에서 빈 단계를 표시합니다. setting.rangeRadius.name = 사거리 접근 거리 -setting.rangeRadius.description = 사거리를 표시할 추가 거리를 설정합니다. -setting.rangeNearby.name = 주변 사거리 표시 -setting.rangeNearby.description = 적 사거리에 접근했을 경우 사거리를 표시합니다. +setting.rangeRadius.description = 사거리 감지 거리를 설정합니다. +setting.rangeNearby.name = 자동 사거리 표시 +setting.rangeNearby.description = 자동 사거리 표시 기능을 활성화합니다. 적 사거리에 일정 거리만큼 접근하면 사거리를 미리 표시합니다. setting.allTeamRange.name = 플레이어 팀 사거리 표시 -setting.allTeamRange.description = 플레이어 팀의 사거리를 표시합니다. +setting.allTeamRange.description = 아군의 사거리를 표시합니다. setting.allTargetRange.name = 모든 목표물 사거리 표시 -setting.allTargetRange.description = 지상 공중 상관없이 모든 사거리를 표시합니다. +setting.allTargetRange.description = 모든 사거리를 표시합니다. 자신을 조준할 수 없는 대상의 사거리는 회색으로 보여집니다. setting.coreRange.name = 코어 사거리 표시 -setting.coreRange.description = 적 코어 건설제한 사거리를 표시합니다. +setting.coreRange.description = 적 코어의 건설 제한 범위를 표시합니다. setting.unitRange.name = 유닛 사거리 표시 -setting.unitRange.description = 유닛 사거리도 표시합니다. +setting.unitRange.description = 유닛 사거리를 표시합니다. setting.softRangeDrawing.name = 부드러운 사거리 표시 -setting.softRangeDrawing.description = 사거리를 표시하는 원의 모양이 달라집니다. +setting.softRangeDrawing.description = 사거리를 표시하는 원의 모양이 좀 더 얇고 불투명해집니다. setting.selectopacity.name = 선택 화살표 투명도 -setting.selectopacity.description = 슬라이더로 선택 화살표의 투명도를 조절합니다. +setting.selectopacity.description = 선택 화살표의 투명도를 조절합니다. setting.baropacity.name = 유닛 바 투명도 -setting.baropacity.description = 슬라이더로 유닛 바의 투명도를 조절합니다. +setting.baropacity.description = 유닛 바의 투명도를 조절합니다. setting.uiopacity.name = UI 배경 투명도 -setting.uiopacity.description = 슬라이더로 UI 배경 투명도를 조절합니다. +setting.uiopacity.description = UI 배경 투명도를 조절합니다. setting.softRangeOpacity.name = 부드러운 사거리 투명도 -setting.softRangeOpacity.description = 슬라이더로 부드러운 사거리 투명도를 조절합니다. +setting.softRangeOpacity.description = 부드러운 사거리 투명도를 조절합니다. -setting.gaycursor.name = 마우스 꼬리효과 [lightgray](PC 전용)[] -setting.gaycursor.description = +setting.unitlinelimit.name = 유닛 경로선 제한 +setting.unitlinelimit.description = 다수의 유닛 경로선은 기기 부하를 크게 일으킵니다. 기기 환경에 맞추어 조절해야 합니다. +setting.gaycursor.name = 마우스 꼬리효과 +setting.gaycursor.description = 마우스 커서에 무지개 효과를 생성합니다. setting.unithealthui.name = 유닛 바 표시 -setting.unithealthui.description = +setting.unithealthui.description = 각 유닛에 체력, 탄약, 방어막, 상태이상, 화물에 대해서 간략하게 표시합니다. setting.linkedMass.name = 매스 드라이버 연결선 표시 -setting.linkedMass.description = +setting.linkedMass.description = 선택한 매스 드라이버와 연결된 매스 드라이버들을 선으로 이어서 표시합니다. setting.linkedNode.name = 노드 연결선 표시 -setting.linkedNode.description = +setting.linkedNode.description = 선택한 블록과 전기적으로 연결된 블록들을 선으로 이어서 표시합니다. setting.select.name = 선택 화살표 표시 -setting.select.description = +setting.select.description = 어떤 유닛이나 블록을 선택했는지 표시합니다. setting.deadTarget.name = 고정 목표물이 죽더라도 계속 고정하기 -setting.deadTarget.description = +setting.deadTarget.description = 고정 목표물이 죽어도 그 좌표와 대상 정보를 계속 표시합니다. setting.distanceLine.name = 목표물과의 거리선 표시 -setting.distanceLine.description = -setting.unitlinelimit.name = 유닛선 제한 -setting.unitlinelimit.description = 다수의 유닛선은 fps를 떨어트립니다. 기기 환경에 맞추어 조절해야 합니다. +setting.distanceLine.description = 목표물과 어느정도나 멀어졌는지 점선과 숫자로 표시합니다. setting.autoShooting.name = 자동 사격 활성화 setting.autoShooting.description = setting.shar-title = UnitInfo 설정 -setting.shar-wave = 단계 설정 +setting.shar-wave = 정보탭 설정 setting.shar-range = 자동 사거리 설정 setting.shar-opacity = 투명도 설정 setting.shar-draw = 덧그리기 설정 setting.shar-etc = 기타 -#Dialog -editmaxwave = 최대 단계 수정하기(정수) -editrange = 스캔 사거리 수정하기(정수) -invalid = 잘못된 숫자 형식이거나 최대값(2147483647)을 넘겼습니다.\n기본값으로 돌아갑니다(25). -warn = [red]경고![] -warning = 표시될 웨이브 수가 너무 많습니다! 많은 랙이 걸릴 수 있습니다. - #Hud hud.unit = 유닛 정보 hud.wave = 단계 정보 diff --git a/assets/bundles/bundle_zh_CN.properties b/assets/bundles/bundle_zh_CN.properties index be2a005..addba01 100644 --- a/assets/bundles/bundle_zh_CN.properties +++ b/assets/bundles/bundle_zh_CN.properties @@ -6,37 +6,23 @@ shar-stat.itemCapacity = 装载物品: {0} / {1} shar-stat.ammos = 子弹量: {0} / {1} shar-stat.commandUnits = 控制单位: {0} / {1} shar-stat.reload = 冷却: {0}% -shar-stat.charge = 电量: {0}% shar-stat.itemAmmo = 弹药 : {0} / {1} shar-stat.liquidAmmo = 液体量: {0} shar-stat.power = 可控制数?: {0} / {1} # Settings -setting.ssim.name = 更改条形图样式 [lightgray](made by ssim)[] -setting.shar.name = 更改条形图样式 [lightgray](made by shar)[] setting.select.name = 显示选择箭头 setting.gaycursor.name = 启用鼠标轨迹效果。仅适用于电脑 setting.wavemax.name = 要显示的波数 -setting.rangemax.name = 扫描方块范围 setting.scan.name = 显示方块扫描仪 setting.range.name = 方块扫描仪显示炮台射程? setting.infoui.name = 显示信息界面 -setting.weaponui.name = 显示武器信息界面 setting.unithealthui.name = 显示单位栏 setting.selectopacity.name = 选择箭头不透明度 setting.baropacity.name = 健康栏不透明度 setting.uiopacity.name = UI背景不透明度 -#Dialog -editmaxwave = 编辑显示的波数???(int) -editrange = 编辑扫描范围(int) -invalid = 无效的数字格式或数字太大 (<= 2147483647). number will be default(100). -warn = [red]warning[] -warning = 显示的波数太高!它可能导致卡顿。 - #Hud hud.unit = 单位信息 hud.wave = 波次信息 -hud.core = 核心信息 -hud.tile = 平铺信息 hud.cancel = 隐藏 \ No newline at end of file diff --git a/src/UnitInfo/SVars.java b/src/UnitInfo/SVars.java index d9cf715..d3e64a9 100644 --- a/src/UnitInfo/SVars.java +++ b/src/UnitInfo/SVars.java @@ -1,6 +1,7 @@ package UnitInfo; import UnitInfo.core.*; +import arc.Core; import arc.files.*; import arc.graphics.g2d.TextureRegion; import arc.scene.ui.TextButton; diff --git a/src/UnitInfo/core/BarInfo.java b/src/UnitInfo/core/BarInfo.java index 758d056..5fc0c13 100644 --- a/src/UnitInfo/core/BarInfo.java +++ b/src/UnitInfo/core/BarInfo.java @@ -281,8 +281,8 @@ public class BarInfo { } else if(build.block.consumes.hasPower()){ ConsumePower cons = build.block.consumes.getPower(); - if(cons.buffered) strings.set(5, bundle.format("shar-stat.powerCapacity", floatFormat(build.power.status * cons.capacity * 60f), floatFormat(cons.capacity * 60f))); - else strings.set(5, bundle.format("shar-stat.powerUsage", floatFormat(build.power.status * cons.usage * 60f), floatFormat(cons.usage * 60f))); + if(cons.buffered) strings.set(5, bundle.format("shar-stat.power", floatFormat(build.power.status * cons.capacity * 60f), floatFormat(cons.capacity * 60f))); + else strings.set(5, bundle.format("shar-stat.power", floatFormat(build.power.status * cons.usage * 60f), floatFormat(cons.usage * 60f))); colors.set(5, Pal.powerBar); numbers.set(5, Mathf.zero(cons.requestedPower(build)) && build.power.graph.getPowerProduced() + build.power.graph.getBatteryStored() > 0f ? 1f : build.power.status); } diff --git a/src/UnitInfo/core/HudUi.java b/src/UnitInfo/core/HudUi.java index 2e092f5..fdec950 100644 --- a/src/UnitInfo/core/HudUi.java +++ b/src/UnitInfo/core/HudUi.java @@ -57,13 +57,11 @@ public class HudUi { ImageButton lockButton; boolean locked = false; - float charge; float a; int uiIndex = 0; //to update tables int waveamount; - int coreamounts; int enemyamount; //is this rly good idea? @@ -551,6 +549,7 @@ public class HudUi { add(new Table(){{ left(); update(() -> { + if(!Core.settings.getBool("infoui")) return; Element image = new Element(); if(getTarget() instanceof ItemTurret.ItemTurretBuild turret){ if(turret.hasAmmo()) image = new Image(((ItemTurret)turret.block).ammoTypes.findKey(turret.peekAmmo(), true).uiIcon); @@ -597,6 +596,7 @@ public class HudUi { t.left(); t.add(new Image(){{ update(() -> { + if(!Core.settings.getBool("infoui")) return; if(getTarget() instanceof Unit u && u.stack.item != null && u.stack.amount > 0) setDrawable(u.stack.item.uiIcon); else setDrawable(clear); @@ -651,6 +651,7 @@ public class HudUi { t.left(); t.add(new Image(){{ update(() -> { + if(!Core.settings.getBool("infoui")) return; TextureRegion region = clear; if(Vars.state.rules.unitAmmo && getTarget() instanceof Unit u && u.type != null){ @@ -668,11 +669,12 @@ public class HudUi { public void addWeaponTable(Table table){ table.table().update(t -> { + if(!Core.settings.getBool("infoui")) return; t.clear(); t.add(new Table(((NinePatchDrawable)Tex.button).tint(Tmp.c1.set(((NinePatchDrawable)Tex.button).getPatch().getColor()).a(settings.getInt("uiopacity") / 100f)), tt -> { tt.defaults().width(Scl.scl(modUiScale) * 8 * 8f).minHeight(Scl.scl(modUiScale) * 4 * 8f).align(Align.left); - tt.visibility = () -> settings.getBool("weaponui") && getTarget() instanceof Unit u && u.type != null && u.type.weapons.size > 0; - if(settings.getBool("weaponui") && getTarget() instanceof Unit u && u.type != null) { + tt.visibility = () -> getTarget() instanceof Unit u && u.type != null && u.type.weapons.size > 0; + if(getTarget() instanceof Unit u && u.type != null) { UnitType type = u.type; for(int r = 0; r < type.weapons.size; r++){ Weapon weapon = type.weapons.get(r); @@ -736,6 +738,7 @@ public class HudUi { float[] count = new float[]{-1}; table1.table().update(t -> { + if(!Core.settings.getBool("infoui")) return; if(getTarget() instanceof Payloadc payload){ if(count[0] != payload.payloadUsed()){ t.clear(); @@ -763,6 +766,7 @@ public class HudUi { Bits statuses = new Bits(); table1.table().update(t -> { + if(!Core.settings.getBool("infoui")) return; t.left(); if(getTarget() instanceof Statusc st){ Bits applied = st.statusBits(); @@ -843,7 +847,10 @@ public class HudUi { } }); button.visibility = () -> getTarget() != null; - button.update(()->lockButton.getStyle().imageUp = Icon.lock.tint(locked ? Pal.accent : Color.white)); + button.update(() -> { + if(!Core.settings.getBool("infoui")) return; + lockButton.getStyle().imageUp = Icon.lock.tint(locked ? Pal.accent : Color.white); + }); button.getLabel().setFontScale(Scl.scl(modUiScale)); lockButton = Elem.newImageButton(Styles.clearPartiali, Icon.lock.tint(locked ? Pal.accent : Color.white), 3 * 8f * Scl.scl(modUiScale), () -> { @@ -882,7 +889,10 @@ public class HudUi { label2.setFontScale(modUiScale); to.add(label2); }))); - tt.update(()->tt.setBackground(((NinePatchDrawable)Tex.underline2).tint(getTarget().isNull() ? Color.gray : getTarget().team().color))); + tt.update(() -> { + if(!Core.settings.getBool("infoui")) return; + tt.setBackground(((NinePatchDrawable)Tex.underline2).tint(getTarget().isNull() ? Color.gray : getTarget().team().color)); + }); }); t.row(); t.table(tt -> { @@ -894,19 +904,18 @@ public class HudUi { } }); t.setColor(t.color.cpy().a(1f)); - t.background(Tex.button); - t.update(() -> { + if(!Core.settings.getBool("infoui")) return; NinePatchDrawable patch = (NinePatchDrawable)Tex.button; t.setBackground(patch.tint(Tmp.c1.set(patch.getPatch().getColor()).a(settings.getInt("uiopacity") / 100f))); }); }); - table.table(t -> t.stack(table1, addInfoTable(t))); - table.row(); + table.table(t -> t.stack(table1, addInfoTable(t))).row(); table.table(this::addWeaponTable); table.update(() -> { + if(!Core.settings.getBool("infoui")) return; try { BarInfo.getInfo(getTarget()); } catch (IllegalAccessException | NoSuchFieldException e) { @@ -915,11 +924,6 @@ public class HudUi { strings = BarInfo.strings; numbers = BarInfo.numbers; colors = BarInfo.colors; - - if(getTarget() instanceof Turret.TurretBuild tb){ - if(tb.charging) charge += Time.delta; - else charge = 0f; - } }); table.fillParent = true; @@ -990,7 +994,10 @@ public class HudUi { new Table(ttt -> { ttt.top().right(); Image image1 = new Image(Icon.warning.getRegion()).setScaling(Scaling.fit); - image1.update(() -> image1.setColor(Tmp.c2.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f)))); + image1.update(() -> { + if(!Core.settings.getBool("infoui")) return; + image1.setColor(Tmp.c2.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f))); + }); ttt.add(image1).size(Scl.scl(modUiScale) * 12f); ttt.visible(() -> group.effect == StatusEffects.boss); ttt.pack(); @@ -1007,7 +1014,10 @@ public class HudUi { if(!mobile){ HandCursorListener listener1 = new HandCursorListener(); tt.addListener(listener1); - tt.update(() -> image.color.lerp(!listener1.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta))); + tt.update(() -> { + if(!Core.settings.getBool("infoui")) return; + image.color.lerp(!listener1.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta)); + }); } tt.addListener(new Tooltip(t -> t.background(Tex.button).table(to -> { to.left(); @@ -1020,7 +1030,10 @@ public class HudUi { if(group.effect == StatusEffects.boss){ status = new Image(Icon.warning.getRegion()).setScaling(Scaling.fit); Image finalStatus = status; - status.update(() -> finalStatus.setColor(Tmp.c2.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f)))); + status.update(() -> { + if(!Core.settings.getBool("infoui")) return; + finalStatus.setColor(Tmp.c2.set(Color.orange).lerp(Color.scarlet, Mathf.absin(Time.time, 2f, 1f))); + }); } Image finalStatus = status; to.table(tot -> { @@ -1030,7 +1043,10 @@ public class HudUi { if(!mobile){ HandCursorListener listener = new HandCursorListener(); finalStatus.addListener(listener); - finalStatus.update(() -> finalStatus.color.lerp(!listener.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta))); + finalStatus.update(() -> { + if(!Core.settings.getBool("infoui")) return; + finalStatus.color.lerp(!listener.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta)); + }); } tot.add("[stat]" + group.effect.localizedName); }).size(iconMed * Scl.scl(modUiScale)); @@ -1069,6 +1085,7 @@ public class HudUi { wavePane.setScrollingDisabled(true, false); wavePane.setScrollYForce(waveScrollPos); wavePane.update(() -> { + if(!Core.settings.getBool("infoui")) return; if(wavePane.hasScroll()){ Element result = scene.hit(input.mouseX(), input.mouseY(), true); if(result == null || !result.isDescendantOf(wavePane)){ @@ -1099,6 +1116,7 @@ public class HudUi { public void setItem(Table table){ table.table().update(t -> { + if(!Core.settings.getBool("infoui")) return; t.clear(); for(int i = 0; i < coreItems.tables.size; i++){ if((state.rules.pvp && coreItems.teams[i] != player.team()) || coreItems.teams[i].cores().isEmpty()) continue; @@ -1123,6 +1141,7 @@ public class HudUi { itemPane.setScrollYForce(itemScrollPos); itemPane.setOverscroll(false, false); itemPane.update(() -> { + if(!Core.settings.getBool("infoui")) return; if(itemPane.hasScroll()){ Element result = scene.hit(input.mouseX(), input.mouseY(), true); if(result == null || !result.isDescendantOf(itemPane)){ @@ -1137,6 +1156,7 @@ public class HudUi { table.table(Tex.button, t -> { t.add(itemPane); t.update(() -> { + if(!Core.settings.getBool("infoui")) return; NinePatchDrawable patch = (NinePatchDrawable)Tex.button; t.setBackground(patch.tint(Tmp.c1.set(patch.getPatch().getColor()).a(settings.getInt("uiopacity") / 100f))); }); diff --git a/src/UnitInfo/core/SettingS.java b/src/UnitInfo/core/SettingS.java index 66f4b73..d61edf3 100644 --- a/src/UnitInfo/core/SettingS.java +++ b/src/UnitInfo/core/SettingS.java @@ -19,30 +19,6 @@ import static mindustry.Vars.*; public class SettingS { public SettingsMenuDialog.SettingsTable sharset; - public void addGraphicSlideSetting(String key, int def, int min, int max, int step, SettingsMenuDialog.StringProcessor s, Seq list){ - list.add(new SharSetting(key, def) { - - @Override - public void add(Table table){ - Label value = new Label(""); - value.setStyle(Styles.outlineLabel); - value.touchable = Touchable.disabled; - value.setAlignment(Align.center); - value.setWrap(true); - - Slider slider = new Slider(min, max, step, false); - slider.setValue(settings.getInt(name)); - slider.changed(() -> { - settings.put(name, (int)slider.getValue()); - value.setText(title + ": " + s.get((int)slider.getValue())); - }); - slider.change(); - - table.stack(slider, value).width(Math.min(Core.graphics.getWidth() / 1.2f, 460f)).row(); - } - }); - } - public void addGraphicCheckSetting(String key, boolean def, Seq list){ list.add(new SharSetting(key, def) { @@ -52,7 +28,38 @@ public class SettingS { box.update(() -> box.setChecked(settings.getBool(name))); box.changed(() -> settings.put(name, box.isChecked())); - table.add(box).row(); + box.left(); + addDesc(table.add(box).left().padTop(3f).get()); + table.row(); + } + }); + } + + public void addGraphicSlideSetting(String key, int def, int min, int max, int step, SettingsMenuDialog.StringProcessor sp, Seq list){ + list.add(new SharSetting(key, def) { + + @Override + public void add(Table table){ + Slider slider = new Slider(min, max, step, false); + + slider.setValue(settings.getInt(name)); + + Label value = new Label("", Styles.outlineLabel); + Table content = new Table(); + content.add(title, Styles.outlineLabel).left().growX().wrap(); + content.add(value).padLeft(10f).right(); + content.margin(3f, 33f, 3f, 33f); + content.touchable = Touchable.disabled; + + slider.changed(() -> { + settings.put(name, (int)slider.getValue()); + value.setText(sp.get((int)slider.getValue())); + }); + + slider.change(); + + addDesc(table.stack(slider, content).width(Math.min(Core.graphics.getWidth() / 1.2f, 460f)).left().padTop(4f).get()); + table.row(); } }); } @@ -61,19 +68,21 @@ public class SettingS { list.add(new SharSetting(key, def) { @Override - public void add(Table settingsTable) { + public void add(Table table) { final String[] str = {""}; - settingsTable.table(t -> { + Table table1 = new Table(t -> { t.add(new Label(title + ": ")).left().padRight(5) - .update(a -> a.setColor(condition.get() ? Color.white : Color.gray)); + .update(a -> a.setColor(condition.get() ? Color.white : Color.gray)); t.field((integer ? settings.getInt(key) : settings.getFloat(key)) + str[0], s -> { - settings.put(key, integer ? Strings.parseInt(s) : Strings.parseFloat(s)); - str[0] = h.get(s); - }).update(a -> a.setDisabled(!condition.get())) - .valid(f -> Strings.canParsePositiveFloat(f) && Strings.parseFloat(f) >= min && Strings.parseFloat(f) <= max).width(120f).left(); + settings.put(key, integer ? Strings.parseInt(s) : Strings.parseFloat(s)); + str[0] = h.get(s); + }).update(a -> a.setDisabled(!condition.get())) + .valid(f -> Strings.canParsePositiveFloat(f) && Strings.parseFloat(f) >= min && Strings.parseFloat(f) <= max).width(120f).left(); }); - settingsTable.row(); + + addDesc(table.add(table1).left().padTop(4f).get()); + table.row(); } }); } @@ -92,15 +101,13 @@ public class SettingS { Seq> settingSeq = new Seq<>(); Seq tapSeq = new Seq<>(); - addGraphicCheckSetting("infoui", true, tapSeq); - addGraphicCheckSetting("weaponui", true, tapSeq); - addGraphicTypeSetting("wavemax", 0, 100,200, true, () -> true, s -> s + "waves", tapSeq); - addGraphicCheckSetting("pastwave", false, tapSeq); - addGraphicCheckSetting("emptywave", true, tapSeq); addGraphicSlideSetting("barstyle", 0, 0, 5, 1, s -> s == 0 ? "default bar" : s + "th bar", tapSeq); addGraphicSlideSetting("infoUiScale", 100, 50, 100, 5, s -> s + "%", tapSeq); addGraphicSlideSetting("coreItemCheckRate", 60, 6, 180, 6, s -> Strings.fixed(s/60f,1) + "sec", tapSeq); - addGraphicCheckSetting("allTeam", false, tapSeq); + addGraphicTypeSetting("wavemax", 0, 100,200, true, () -> true, s -> s + "waves", tapSeq); + addGraphicCheckSetting("infoui", true, tapSeq); + addGraphicCheckSetting("pastwave", false, tapSeq); + addGraphicCheckSetting("emptywave", true, tapSeq); Seq rangeSeq = new Seq<>(); addGraphicTypeSetting("rangeRadius", 0, 50, 20, true, () -> true, s -> s + "tiles", rangeSeq); @@ -118,6 +125,7 @@ public class SettingS { addGraphicSlideSetting("softRangeOpacity", 10, 0, 25, 1, s -> s + "%", opacitySeq); Seq drawSeq = new Seq<>(); + addGraphicTypeSetting("unitlinelimit", 0, 500, 50, true, () -> true, s -> s + "units", drawSeq); addGraphicCheckSetting("gaycursor", false, drawSeq); addGraphicCheckSetting("unithealthui", true, drawSeq); addGraphicCheckSetting("linkedMass", true, drawSeq); @@ -125,10 +133,10 @@ public class SettingS { addGraphicCheckSetting("select", true, drawSeq); addGraphicCheckSetting("deadTarget", false, drawSeq); addGraphicCheckSetting("distanceLine", true, drawSeq); - addGraphicSlideSetting("unitlinelimit", 50, 50, 250, 10, s -> s + "units", drawSeq); Seq etcSeq = new Seq<>(); addGraphicCheckSetting("autoShooting", false, etcSeq); + settingSeq.add(tapSeq, rangeSeq, opacitySeq); settingSeq.add(drawSeq, etcSeq); @@ -151,26 +159,12 @@ public class SettingS { for(int i = 0; i < settingSeq.size; i++){ int finalI = i; stack.add(new Table(st -> { - st.center(); - for(SharSetting setting : settingSeq.get(finalI)) { - Label label = new Label(setting.description); - label.setColor(Color.gray); - label.setFontScale(0.75f); - - st.table(stt -> { - stt.center(); - setting.add(stt); - stt.add(label); - }).row(); - } + for(SharSetting setting : settingSeq.get(finalI)) + st.table(setting::add).left().row(); st.button(Core.bundle.get("settings.reset", "Reset to Defaults"), () -> { - for(SharSetting setting : settingSeq.get(finalI)) { - if(setting.name != null && setting.title != null) { - Core.settings.put(setting.name, Core.settings.getDefault(setting.name)); - } - } - }).margin(14.0F).width(240.0F).pad(6.0F); + settingSeq.get(finalI).each(s -> Core.settings.put(s.name, Core.settings.getDefault(s.name))); + }).margin(14.0f).width(240.0f).pad(6.0f); st.visibility = () -> buttons.get(finalI).isChecked(); st.pack(); })); diff --git a/src/UnitInfo/ui/CoresItemsDisplay.java b/src/UnitInfo/ui/CoresItemsDisplay.java index e67c1e0..9b26161 100644 --- a/src/UnitInfo/ui/CoresItemsDisplay.java +++ b/src/UnitInfo/ui/CoresItemsDisplay.java @@ -35,7 +35,6 @@ public class CoresItemsDisplay { public Seq tables = new Seq<>(); float heat; - boolean once; public CoresItemsDisplay(Team[] teams) { this.teams = teams; @@ -48,8 +47,7 @@ public class CoresItemsDisplay { updateItems.clear(); prevItems.clear(); coreAmount.clear(); - if(settings.getBool("allTeam")) teams = Team.all; - else teams = Team.baseTeams; + teams = new Seq(Team.all).filter(t -> !t.cores().isEmpty()).toArray(); for(Team team : teams) { usedItems.put(team, new ObjectSet<>()); usedUnits.put(team, new ObjectSet<>()); @@ -80,6 +78,7 @@ public class CoresItemsDisplay { t.clear(); t.update(() -> { + if(!Core.settings.getBool("infoui")) return; core = team.core(); heat += Time.delta; @@ -109,7 +108,10 @@ public class CoresItemsDisplay { if(!mobile) { HandCursorListener listener1 = new HandCursorListener(); image.addListener(listener1); - image.update(() -> image.color.lerp(!listener1.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta))); + image.update(() -> { + if(!Core.settings.getBool("infoui")) return; + image.color.lerp(!listener1.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta)); + }); } image.addListener(new Tooltip(tttt -> { Label label = new Label(() -> "([#" + Tmp.c1.set(Color.green).lerp(Color.red, 1 - core.healthf()).toString() + "]" + Strings.fixed(core.health, 2) + "[]/" + Strings.fixed(core.block.health, 2) + ")"); @@ -134,6 +136,7 @@ public class CoresItemsDisplay { }); t.row(); t.table().update(itemTable -> { + if(!Core.settings.getBool("infoui")) return; itemTable.clear(); final int[] i = {0}; for(Item item : content.items()){ @@ -148,8 +151,8 @@ public class CoresItemsDisplay { new Table(ttt -> { ttt.bottom().right(); Label label = new Label(() -> { - int amount = updateItems.get(team).get(item.id).amount; - return (amount > 0 ? "[green]+" : amount == 0 ? "[orange]" : "[red]") + amount + "[]"; + int amount = updateItems.get(team).get(item.id).amount / (settings.getInt("coreItemCheckRate") / 60); + return (amount > 0 ? "[green]+" : amount == 0 ? "[orange]" : "[red]") + amount + "/s[]"; }); label.setFontScale(0.65f * modUiScale); ttt.add(label).bottom().right().padTop(16f * modUiScale); @@ -162,6 +165,7 @@ public class CoresItemsDisplay { }); t.row(); t.table().update(unitTable -> { + if(!Core.settings.getBool("infoui")) return; unitTable.clear(); final int[] i = {0}; for(UnitType unit : content.units()){