Skip to content

Commit 28fbf5b

Browse files
committed
Merge branch 'v7-main' of https://github.com/JiroCab/Caster-Ui-Java into v7-main
2 parents ca82c42 + 53c6ea1 commit 28fbf5b

10 files changed

Lines changed: 343 additions & 137 deletions

File tree

assets/bundles/bundle.properties

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ setting.cui-useCycleFilter.name =Hide Cursor of ignored players
2727
setting.cui-useCycleFilter.description =Same as`Filter Teams (Cycle player)`
2828
setting.cui-cyclePlayersIgnoreNoCore.name =Cycle Players ignores players w/o cores
2929
setting.cui-cyclePlayersIgnoreNoCore.description =Useful for cases where a team losses their core
30+
setting.cui-trackOnLostFocus.name =Track in background
31+
setting.cui-trackOnLostFocus.description =Whether tracking continues if you click off the window
32+
setting.cui-trackwhileChatting.name =Track while Typing
33+
setting.cui-trackwhileChatting.description =Whether tracking continues if you're typing in a text box
34+
setting.cui-trackwhileMap.name =Track while Map is open
35+
setting.cui-trackwhileDialog.name =Track with any Dialog is open
3036
3137
setting.cui-counter-category.name =Counters options
3238
setting.cui-ShowPlayerList.name =Mini Player Table
@@ -76,7 +82,7 @@ setting.cui-alertStyle.description =Default: Circle
7682
setting.cui-AlertsUseBottom.name =Bottom Toasts alerts
7783
setting.cui-AlertsHideWithUi.name =Custom Toasts
7884
setting.cui-AlertsHideWithUi.description =Whether to use custom toast or built in ones \nreduces conflict with world logic toasts
79-
setting.cui-SendChatCoreLost.name =Send a CHAT message on a Core's Death
85+
setting.cui-SendChatCoreLost.name =Send CHAT message on a Core's Death
8086
setting.cui-ShowAlertsCircles.name =Draw a Circle on a Core's Death
8187
setting.cui-alertCircleSpeed.name =Alert Grow speed:
8288
setting.cui-alertCircleSpeed.description =Do note that this is constant and doesn't scale with map size\nWon't matter much unless Reverse Growth is enabled\nDefault: 6.0x
@@ -127,6 +133,7 @@ setting.cui-blockinfoSide.name =Block Info Side:
127133
setting.cui-blockinfoSide.description =Default: Left\nApplies next map change / Ui rebuilt
128134
setting.cui-blockinfo-x.name =Block Info X Offset:
129135
setting.cui-blockinfo-y.name =Block Info Y Offset:
136+
setting.cui-blockinfo-colour.name =Block info Team colour background
130137
setting.cui-domination-toggle.name =[accent]Show Block Counter
131138
setting.cui-domination-vertical.name =Vertical Block Counter
132139
setting.cui-domination-TeamIcons.name =Show Team Icons
@@ -161,6 +168,7 @@ setting.cui-animateSettings.name =Animate settings category
161168
setting.cui-TeamItemsUpdateRate.name =Team Items Update rate
162169
setting.cui-TeamItemsUpdateRate.description =Default: Normal, \nFast to use every tick, \nNormal to update every (update speed * 2)~\nSlow to update every (update speed * 5)~
163170
setting.cui-updateAvailable = Cui {0} is out! kindly update the mod thx
171+
setting.cui-killswitchEnables.name =Kill switch also turns mod on
164172

165173
setting.cui-teams-category.name =Team options
166174
setting.cui-ShowTeamItems.name =[accent]Display Team items
@@ -316,4 +324,4 @@ cui-cmd-limits3 =ALL units
316324
cui-filter0 =Domination
317325
cui-filter1 =Units
318326
cui-filter2 =Core Items
319-
cui-filter3 =Cycle players
327+
cui-filter3 =Cycle players

mod.hjson

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ name: "caster-ui-java"
22
displayName: "Caster User interface"
33
description: "Aming to make the client a bit better for casting! with ease of use, simplicity and elegance in mind \n \n Java rewrite of 'JiroCab/Caster-Ui' which was based off 'Ferlern/extended-UI' \nconflicts with 'Ferlern/extended-UI' \n\nPLEASE DON'T THIS FOR AN ADVANTAGE IN PVP THANKS"
44
author: "RushieWashie, WMF Industries"
5-
subtitle: "v4.9 Helping you cast games~"
6-
version: 4.9
5+
subtitle: "v5.1 (v7) Helping you cast games~"
6+
version: 5.1
77

88
minGameVersion: 140.4
99
hidden: true

src/casterui/CuiVars.java

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
package casterui;
22

3-
import arc.Core;
4-
import arc.Graphics;
5-
import arc.graphics.Pixmap;
6-
import arc.graphics.Pixmaps;
3+
import arc.*;
4+
import arc.graphics.*;
75
import arc.math.geom.*;
86
import arc.scene.ui.layout.*;
9-
import arc.struct.*;
107
import arc.util.*;
11-
import casterui.io.CuiInputs;
12-
import casterui.io.ui.CuiFragment;
13-
import casterui.io.ui.CuiWorldRenderer;
8+
import casterui.io.*;
9+
import casterui.io.ui.*;
1410
import casterui.io.ui.dialog.*;
1511
import casterui.util.*;
16-
import mindustry.Vars;
12+
import mindustry.*;
1713
import mindustry.game.*;
18-
import mindustry.gen.Player;
19-
import mindustry.gen.Unit;
20-
import mindustry.mod.Mods;
21-
import mindustry.ui.Fonts;
22-
import mindustry.world.Tile;
23-
import mindustry.world.blocks.storage.CoreBlock;
14+
import mindustry.gen.*;
15+
import mindustry.mod.*;
16+
import mindustry.ui.*;
17+
import mindustry.world.*;
18+
import mindustry.world.blocks.storage.*;
2419

25-
import java.text.DecimalFormat;
26-
import java.util.HashMap;
27-
import java.util.Map;
20+
import java.text.*;
21+
import java.util.*;
2822

2923
import static arc.Core.settings;
24+
import static casterui.io.CuiBinding.toggle_cui_kill_switch;
3025

3126
public class CuiVars {
3227
public static CuiWorldRenderer renderer = new CuiWorldRenderer();
@@ -46,7 +41,7 @@ public class CuiVars {
4641
public static Vec2[] savedCameras = new Vec2[11];
4742

4843
public static DecimalFormat decFor = new DecimalFormat("#.##"), decForMini = new DecimalFormat("#.#");
49-
public static boolean[] dominationSettings = new boolean[14];
44+
public static boolean[] dominationSettings = new boolean[15];
5045
public static boolean
5146
showBlockInfo = false, showCountersUnits = false, showCountersPlayers = false, showCountersButton = false,
5247
countersSeparateTeams = false, countersCoreUnits = false, countersCoreFlagged = false, countersTotals = false,
@@ -85,6 +80,7 @@ public static void postInt(){
8580

8681
public static void update(){
8782
globalShow = !Core.settings.getBool("cui-killswitch");
83+
if(inputs.cuiKeyTap(toggle_cui_kill_switch) && (globalShow || settings.getBool("cui-killswitchEnables"))) settings.put("cui-killswitch", !settings.getBool("cui-killswitch")); //haha this will be one way but lulz
8884
if (!globalShow) return;
8985
inputs.update();
9086
fragment.UpdateTables();
@@ -147,6 +143,7 @@ public static void updateSettings(boolean full){
147143
dominationSettings[11] = settings.getBool("cui-domination-core");
148144
dominationSettings[12] = settings.getBool("cui-domination-percent");
149145
dominationSettings[13] = settings.getBool("cui-domination-raw");
146+
dominationSettings[14] = settings.getBool("cui-domination-graph");
150147

151148
if(!full) return;
152149

@@ -178,6 +175,4 @@ public static void updateHiddenTeams(){
178175
}
179176
}
180177

181-
182-
183178
}

src/casterui/io/CuiInputs.java

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,13 @@
11
package casterui.io;
22

3-
import arc.Core;
4-
import arc.KeyBinds;
53
import arc.KeyBinds.*;
6-
import arc.func.*;
7-
import arc.input.KeyCode;
4+
import arc.input.*;
85
import arc.math.geom.*;
9-
import arc.scene.*;
10-
import arc.scene.event.*;
11-
import arc.struct.Seq;
12-
import arc.util.*;
13-
import casterui.CuiVars;
14-
import mindustry.Vars;
15-
import mindustry.game.Teams;
6+
import arc.struct.*;
7+
import casterui.*;
168
import mindustry.game.Teams.*;
179
import mindustry.gen.*;
18-
import mindustry.input.Binding;
19-
import mindustry.input.DesktopInput;
20-
import mindustry.world.Build;
21-
import mindustry.world.blocks.storage.CoreBlock;
10+
import mindustry.input.*;
2211
import mindustry.world.blocks.storage.CoreBlock.*;
2312

2413
import static arc.Core.*;
@@ -34,11 +23,12 @@ public class CuiInputs {
3423
public Vec2 out = new Vec2() ;
3524

3625
public void update(){
37-
if (settings.getBool("cui-respectCommandMode") && control.input.commandMode) return;
38-
if (settings.getBool("cui-respectTyping") && (ui.chatfrag.shown() || scene.getKeyboardFocus() != null) || ui.consolefrag.shown())return;
26+
if (state.isMenu()) return;
27+
updateTracking();
3928
if (settings.getBool("cui-respectLockInputs") && control.input.locked())return;
29+
if (settings.getBool("cui-respectCommandMode") && control.input.commandMode) return;
4030
if(settings.getBool("cui-respectDialog") && scene.hasDialog()) return;
41-
if (state.isMenu()) return;
31+
if (settings.getBool("cui-respectTyping") && (ui.chatfrag.shown() || scene.getKeyboardFocus() != null) || ui.consolefrag.shown())return;
4232

4333
if(cuiKeyTap(toggle_cui_menu) && !settings.getBool("cui-hideWithMenus")) CuiVars.globalHidden = !CuiVars.globalHidden;
4434
else if(settings.getBool("cui-hideWithMenus")) CuiVars.globalHidden = ui.hudfrag.shown;
@@ -96,16 +86,20 @@ public void update(){
9686
if(cuiKeyTap(map_player_9) && CuiVars.mappedPlayers.get(9) != null) CuiVars.clickedPlayer = CuiVars.mappedPlayers.get(9);
9787

9888
if (scene.hasField()) return;
99-
tracking = false;
100-
101-
float cameraFloat = 0.085F; //TODO:ALLOW THIS TO BE CHANGED
102-
if (!settings.getBool("smoothcamera")){ cameraFloat = 1;}
103-
10489
if(cuiKeyTap(spectate_next_player)) cyclePlayers(true);
10590
if(cuiKeyTap(spectate_previous_player)) cyclePlayers(false);
10691
if(cuiKeyTap(spectate_next_core)) cycleCore(true);
10792
if(cuiKeyTap(spectate_previous_core)) cycleCore(false);
93+
}
10894

95+
public void updateTracking(){
96+
if(!settings.getBool("cui-trackwhileChatting") &&((ui.chatfrag.shown() || scene.getKeyboardFocus() != null) || ui.consolefrag.shown())) return;
97+
if(!settings.getBool("cui-trackwhileMap") && ui.minimapfrag.shown()) return;
98+
if(!settings.getBool("cui-trackwhileDialog") && (!ui.minimapfrag.shown() && scene.hasDialog())) return;
99+
tracking = false;
100+
101+
float cameraFloat = 0.085F; //TODO:ALLOW THIS TO BE CHANGED
102+
if (!settings.getBool("smoothcamera")){ cameraFloat = 1;}
109103
if (CuiVars.lastCoreDestroyEvent != null && cuiKeyDown(last_destroyed_core) && !tracking){
110104
if(control.input instanceof DesktopInput input) input.panning = true;
111105
stopTracking();
@@ -148,7 +142,7 @@ public void update(){
148142

149143
if (CuiVars.clickedPlayer != null && CuiVars.clickedPlayer.unit() != null && state.isPlaying() && !tracking){
150144
startTracking();
151-
trackingType = 4;
145+
trackingType = 3;
152146

153147
//workaround for when in multiplayer, sometimes respawning puts you in 0,0 during the animation before moving your unit
154148
if (CuiVars.clickedPlayer != null && (CuiVars.clickedPlayer.unit() == null || CuiVars.clickedPlayer.unit().x == 0 && CuiVars.clickedPlayer.unit().y == 0) && CuiVars.clickedPlayer.team().data().hasCore()) trackingType = 3;
@@ -158,6 +152,7 @@ public void update(){
158152
if (keepMouseTracking && !settings.getBool("cui-playerHoldTrackMouse")) trackingType = 2;
159153
if (!keepMouseTracking && !settings.getBool("cui-playerHoldTrackMouse") && CuiVars.clickedPlayer.unit() != null) trackingType = 1;
160154
if (!keepMouseTracking && !settings.getBool("cui-playerHoldTrackMouse") && CuiVars.clickedPlayer.unit() == null) trackingType = 3;
155+
if(trackingType == 3 && (CuiVars.clickedPlayer == null ||CuiVars.clickedPlayer.bestCore() == null)) trackingType = 4;
161156

162157
/* so many if statements, enjoy >;3c */
163158
switch (trackingType) {
@@ -180,9 +175,8 @@ public void update(){
180175
}
181176

182177
}
183-
184-
185178
}
179+
186180
void handSavedCams(int num, boolean save){
187181
if(save) CuiVars.savedCameras[num] = new Vec2(player.mouseX(), player.mouseY());
188182
else if(CuiVars.savedCameras[num] != null && !CuiVars.savedCameras[num].isZero()) out.set(CuiVars.savedCameras[num]);
@@ -191,8 +185,11 @@ void handSavedCams(int num, boolean save){
191185

192186
void cyclePlayers(boolean increment){
193187
ply.clear();
188+
boolean core = settings.getBool("cui-cyclePlayersIgnoreNoCore.name"), nu = settings.getBool("cui-hideNoUnitPlayers");
194189
for (Player p : Groups.player) {
195-
if (settings.getBool("cui-hideNoUnitPlayers") && (p.unit() == null && !p.team().data().hasCore())) continue;
190+
if(CuiVars.hiddenCycleTeam[p.team().id]) continue;
191+
if(!core && p.team().cores().size <= 0) continue;
192+
if (nu && (p.unit() == null && !p.team().data().hasCore())) continue;
196193
if (p != player) ply.add(p);
197194
}
198195
ply.remove(player);
@@ -242,7 +239,16 @@ public void stopTracking(){
242239
}
243240

244241
public void startTracking(){
245-
if((Math.abs(input.axis(Binding.move_x)) > 0 || Math.abs(input.axis(Binding.move_y)) > 0 || input.keyTap(Binding.mouse_move) || input.keyTap(Binding.pan)) && (!scene.hasField())){
242+
boolean
243+
focus = settings.getBool("cui-trackOnLostFocus") ,
244+
feild = !settings.getBool("cui-trackwhileChatting") && scene.hasField(),
245+
mmPan = ui.minimapfrag.shown() && input.keyTap(KeyCode.mouseRight),
246+
//input.justTouched() crashes mobile!
247+
move = Math.abs(input.axis(Binding.move_x)) > 0 || Math.abs(input.axis(Binding.move_y)) > 0,
248+
cam = input.keyTap(Binding.mouse_move) || input.keyTap(Binding.pan);
249+
;
250+
251+
if(move || cam || mmPan || feild){
246252
stopTracking();
247253
return;
248254
}

src/casterui/io/ui/BarHelper.java

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package casterui.io.ui;
2+
3+
import arc.*;
4+
import arc.func.*;
5+
import arc.graphics.*;
6+
import arc.graphics.g2d.*;
7+
import arc.math.*;
8+
import arc.math.geom.*;
9+
import arc.scene.style.*;
10+
import arc.util.pooling.*;
11+
import mindustry.gen.*;
12+
import mindustry.ui.*;
13+
14+
public class BarHelper extends Bar{
15+
private static Rect scissor = new Rect();
16+
17+
private Floatp fraction;
18+
private CharSequence name = "";
19+
private float value, lastValue, blink, outlineRadius;
20+
private Color blinkColor = new Color(), outlineColor = new Color();
21+
22+
public BarHelper(String name, Color color, Floatp fraction){
23+
this.fraction = fraction;
24+
this.name = Core.bundle.get(name, name);
25+
this.blinkColor.set(color);
26+
lastValue = value = fraction.get();
27+
setColor(color);
28+
}
29+
30+
public BarHelper(Prov<CharSequence> name, Prov<Color> color, Floatp fraction){
31+
this.fraction = fraction;
32+
lastValue = value = Mathf.clamp(fraction.get());
33+
update(() -> {
34+
this.name = name.get();
35+
this.blinkColor.set(color.get());
36+
setColor(color.get());
37+
});
38+
}
39+
40+
public BarHelper(){
41+
42+
}
43+
44+
@Override
45+
public void draw(){
46+
if(fraction == null) return;
47+
48+
float computed = Mathf.clamp(fraction.get());
49+
50+
51+
if(lastValue > computed){
52+
blink = 1f;
53+
lastValue = computed;
54+
}
55+
56+
if(Float.isNaN(lastValue)) lastValue = 0;
57+
if(Float.isInfinite(lastValue)) lastValue = 1f;
58+
if(Float.isNaN(value)) value = 0;
59+
if(Float.isInfinite(value)) value = 1f;
60+
if(Float.isNaN(computed)) computed = 0;
61+
if(Float.isInfinite(computed)) computed = 1f;
62+
63+
blink = Mathf.lerpDelta(blink, 0f, 0.2f);
64+
value = Mathf.lerpDelta(value, computed, 0.15f);
65+
66+
Drawable bar = Tex.bar;
67+
68+
if(outlineRadius > 0){
69+
Draw.color(outlineColor);
70+
bar.draw(x - outlineRadius, y - outlineRadius, width + outlineRadius*2, height + outlineRadius*2);
71+
}
72+
73+
Draw.colorl(0.1f);
74+
Draw.alpha(parentAlpha);
75+
bar.draw(x, y, width, height);
76+
Draw.color(color, blinkColor, blink);
77+
Draw.alpha(parentAlpha);
78+
79+
Drawable top = Tex.barTop;
80+
float topWidth = width * value;
81+
82+
if(topWidth > Core.atlas.find("bar-top").width){
83+
top.draw(x, y, topWidth, height);
84+
}else{
85+
if(ScissorStack.push(scissor.set(x, y, topWidth, height))){
86+
top.draw(x, y, Core.atlas.find("bar-top").width, height);
87+
ScissorStack.pop();
88+
}
89+
}
90+
91+
Draw.color();
92+
93+
Font font = Fonts.def;
94+
GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
95+
lay.setText(font, name);
96+
97+
float prevSX = font.getData().scaleX, prevSY = font.getData().scaleX;
98+
font.getData().setScale(0.8f);
99+
font.setColor(1f, 1f, 1f, 1f);
100+
font.getCache().clear();
101+
102+
font.getCache().addText(name, x + width / 2.2f - lay.width / 2.2f, y + height / 2.2f + lay.height / 2.2f + 1);
103+
font.getCache().draw(parentAlpha);
104+
font.getData().setScale(prevSX, prevSY);
105+
106+
Pools.free(lay);
107+
}
108+
}

0 commit comments

Comments
 (0)