23
23
import arc .struct .*;
24
24
import arc .util .*;
25
25
import cloud .commandframework .meta .*;
26
- import fr .xpdustry .distributor .api .*;
27
- import fr .xpdustry .distributor .api .event .*;
26
+ import fr .xpdustry .distributor .api .plugin . *;
27
+ import fr .xpdustry .distributor .api .util .*;
28
28
import java .util .*;
29
29
import mindustry .*;
30
30
import mindustry .content .*;
33
33
import mindustry .gen .*;
34
34
import mindustry .graphics .*;
35
35
36
- public final class DominationRenderer implements Runnable , EventBusListener {
36
+ public final class DominationRenderer implements PluginListener {
37
37
38
38
private static final Seq <Effect > EFFECTS = Seq .with (Fx .mine , Fx .mineBig , Fx .mineHuge );
39
39
40
- private final DominationPlugin plugin ;
40
+ private final Interval interval = new Interval () ;
41
41
private final Map <Zone , WorldLabel > labels = new HashMap <>();
42
42
private final Set <Player > viewers = new HashSet <>();
43
+ private final DominationPlugin domination ;
43
44
44
- public DominationRenderer (final DominationPlugin plugin ) {
45
- this .plugin = plugin ;
46
- EventBus .mindustry ().register (this );
47
- DistributorProvider .get ().getPluginScheduler ().syncRepeatingDelayedTask (this .plugin , this , 10 , 10 );
48
- plugin .getClientCommandManager ().command (plugin .getClientCommandManager ()
45
+ public DominationRenderer (final DominationPlugin domination ) {
46
+ this .domination = domination ;
47
+ }
48
+
49
+ @ Override
50
+ public void onPluginLoad () {
51
+ MoreEvents .subscribe (EventType .PlayEvent .class , event -> {
52
+ labels .clear ();
53
+ });
54
+
55
+ MoreEvents .subscribe (EventType .PlayerLeave .class , event -> {
56
+ viewers .remove (event .player );
57
+ });
58
+
59
+ domination .getClientCommandManager ().command (domination .getClientCommandManager ()
49
60
.commandBuilder ("domination" )
50
61
.literal ("zone" )
51
62
.literal ("view" )
@@ -62,20 +73,10 @@ public DominationRenderer(final DominationPlugin plugin) {
62
73
}));
63
74
}
64
75
65
- @ EventHandler
66
- public void onPlayEvent (final EventType .PlayEvent event ) {
67
- labels .clear ();
68
- }
69
-
70
- @ EventHandler
71
- public void onPlayerQuit (final EventType .PlayerLeave event ) {
72
- viewers .remove (event .player );
73
- }
74
-
75
76
@ Override
76
- public void run () {
77
- if (Vars .state .isPlaying ()) {
78
- if (plugin .isEnabled ()) {
77
+ public void onPluginUpdate () {
78
+ if (interval . get ( Time . toSeconds / 6 ) && Vars .state .isPlaying ()) {
79
+ if (domination .isEnabled ()) {
79
80
// Graphics
80
81
Groups .player .forEach (this ::drawZoneCircles );
81
82
labels .forEach ((zone , label ) -> {
@@ -84,24 +85,24 @@ public void run() {
84
85
85
86
// HUD text
86
87
final var builder = new StringBuilder (100 )
87
- .append ("Time remaining > " ).append (Strings .formatMillis (plugin .getState ().getRemainingTime ().toMillis ()));
88
+ .append ("Time remaining > " ).append (Strings .formatMillis (domination .getState ().getRemainingTime ().toMillis ()));
88
89
89
90
// Leaderboard
90
- plugin .getState ().getLeaderboard ().entrySet ()
91
+ domination .getState ().getLeaderboard ().entrySet ()
91
92
.stream ()
92
93
.sorted (Comparator .comparingDouble (Map .Entry ::getValue ))
93
94
.forEach (e -> {
94
95
builder
95
96
.append ("\n [#" ).append (e .getKey ().color ).append (']' )
96
97
.append (e .getKey () == Team .derelict ? "Unclaimed" : Strings .capitalize (e .getKey ().name ))
97
- .append ("[] > " ).append (e .getValue () / plugin .getState ().getZones ().size ()).append ('%' );
98
+ .append ("[] > " ).append (e .getValue () / domination .getState ().getZones ().size ()).append ('%' );
98
99
}
99
100
);
100
101
101
102
Call .setHudText (builder .toString ());
102
103
103
104
// Update labels
104
- final var zones = new HashSet <>(plugin .getState ().getZones ());
105
+ final var zones = new HashSet <>(domination .getState ().getZones ());
105
106
final var entries = labels .entrySet ().iterator ();
106
107
while (entries .hasNext ()) {
107
108
final var entry = entries .next ();
@@ -124,7 +125,7 @@ public void run() {
124
125
} else {
125
126
for (final var viewer : viewers ) {
126
127
drawZoneCircles (viewer );
127
- for (final var zone : this .plugin .getState ().getZones ()) {
128
+ for (final var zone : this .domination .getState ().getZones ()) {
128
129
Call .label (viewer .con (), "[#" + zone .getTeam ().color + "]" + Iconc .star , 1F / 6 , zone .getX (), zone .getY ());
129
130
}
130
131
}
@@ -133,7 +134,7 @@ public void run() {
133
134
}
134
135
135
136
private void drawZoneCircles (final Player player ) {
136
- for (final var zone : this .plugin .getState ().getZones ()) {
137
+ for (final var zone : this .domination .getState ().getZones ()) {
137
138
final var circle = Geometry .regPoly ((int ) (Mathf .pi * (zone .getRadius () / Vars .tilesize )), zone .getRadius ());
138
139
Geometry .iteratePolygon ((px , py ) -> {
139
140
Call .effect (player .con (), EFFECTS .random (), px + zone .getX (), py + zone .getY (), 0 , zone .getTeam ().color );
0 commit comments