5
5
import dev .heliosclient .event .events .TickEvent ;
6
6
import dev .heliosclient .event .events .heliosclient .FontChangeEvent ;
7
7
import dev .heliosclient .event .listener .Listener ;
8
+ import dev .heliosclient .util .fontutils .BetterFontRenderer ;
8
9
import dev .heliosclient .util .fontutils .FontLoader ;
9
10
import dev .heliosclient .util .fontutils .FontRenderers ;
10
- import dev .heliosclient .util .fontutils .fxFontRenderer ;
11
11
import me .x150 .renderer .font .FontRenderer ;
12
12
13
13
import java .awt .*;
14
- import java .util .ArrayList ;
14
+ import java .util .HashMap ;
15
+ import java .util .Map ;
15
16
16
17
public class FontManager implements Listener {
17
- public static Font [] fonts , iconFonts ;
18
- public static Font font , iconFont ;
19
- public static Font [] originalFonts ;
20
- public static int hudFontSize = 8 , clientFontSize = 8 ;
21
- public static ArrayList < String > fontNames = new ArrayList <>() ;
18
+ public static final Map < String , Font > FONTS = new HashMap <>() ;
19
+ public static final Map < String , Font > ICON_FONTS = new HashMap <>() ;
20
+ public static Font ACTIVE_FONT ;
21
+ public static Font ACTIVE_ICON_FONT ;
22
+ public static int HUD_FONT_SIZE = 8 , GLOBAL_FONT_SIZE = 8 ;
22
23
public static FontManager INSTANCE = new FontManager ();
23
24
24
- public FontManager () {
25
+ private FontManager (){
25
26
refresh ();
26
27
}
27
28
28
- public void refresh () {
29
- fontNames .clear ();
30
- fonts = FontLoader .loadFonts ();
31
- font = fonts [0 ];
32
- iconFonts = FontLoader .loadIconFonts ();
33
- iconFont = iconFonts [0 ];
34
- originalFonts = fonts .clone ();
35
- for (Font font : originalFonts ) {
36
- fontNames .add (font .getName ());
37
- }
38
- EventManager .register (this );
29
+ public void refresh (){
30
+ FONTS .clear ();
31
+ ICON_FONTS .clear ();
32
+ ACTIVE_FONT = null ;
33
+ ACTIVE_ICON_FONT = null ;
34
+
35
+ FontLoader .getFonts ().forEach (FontManager ::registerFont );
36
+ FontLoader .getFonts ().forEach (FontManager ::registerIconFont );
39
37
}
40
38
41
39
@ SubscribeEvent (priority = SubscribeEvent .Priority .HIGHEST )
@@ -47,28 +45,63 @@ public void onTick(TickEvent.CLIENT event) {
47
45
}
48
46
49
47
public void registerFonts () {
50
- FontRenderers .fontRenderer = new FontRenderer (font , hudFontSize );
51
- FontRenderers .fxfontRenderer = new fxFontRenderer ( font , clientFontSize );
52
- FontRenderers .iconRenderer = new fxFontRenderer ( iconFont , 10f );
48
+ FontRenderers .fontRenderer = new FontRenderer (ACTIVE_FONT , HUD_FONT_SIZE );
49
+ FontRenderers .fxfontRenderer = new BetterFontRenderer ( ACTIVE_FONT , GLOBAL_FONT_SIZE );
50
+ FontRenderers .iconRenderer = new BetterFontRenderer ( ACTIVE_ICON_FONT , 10f );
53
51
54
- FontRenderers .Super_Small_fxfontRenderer = new fxFontRenderer ( font , 4f );
55
- FontRenderers .Super_Small_iconRenderer = new fxFontRenderer ( iconFont , 4f );
52
+ FontRenderers .Super_Small_fxfontRenderer = new BetterFontRenderer ( ACTIVE_FONT , 4f );
53
+ FontRenderers .Super_Small_iconRenderer = new BetterFontRenderer ( ACTIVE_ICON_FONT , 4f );
56
54
57
- FontRenderers .Small_fxfontRenderer = new fxFontRenderer ( font , 6f );
58
- FontRenderers .Small_iconRenderer = new fxFontRenderer ( iconFont , 6f );
55
+ FontRenderers .Small_fxfontRenderer = new BetterFontRenderer ( ACTIVE_FONT , 6f );
56
+ FontRenderers .Small_iconRenderer = new BetterFontRenderer ( ACTIVE_ICON_FONT , 6f );
59
57
60
- FontRenderers .Mid_fxfontRenderer = new fxFontRenderer ( font , 8f );
61
- FontRenderers .Mid_iconRenderer = new fxFontRenderer ( iconFont , 8f );
58
+ FontRenderers .Mid_fxfontRenderer = new BetterFontRenderer ( ACTIVE_FONT , 8f );
59
+ FontRenderers .Mid_iconRenderer = new BetterFontRenderer ( ACTIVE_ICON_FONT , 8f );
62
60
63
- FontRenderers .Large_fxfontRenderer = new fxFontRenderer ( font , 13f );
64
- FontRenderers .Large_iconRenderer = new fxFontRenderer ( iconFont , 13f );
61
+ FontRenderers .Large_fxfontRenderer = new BetterFontRenderer ( ACTIVE_FONT , 13f );
62
+ FontRenderers .Large_iconRenderer = new BetterFontRenderer ( ACTIVE_ICON_FONT , 13f );
65
63
66
64
if (FontLoader .COMICALFONTS != null )
67
- FontRenderers .Comical_fxfontRenderer = new fxFontRenderer (FontLoader .COMICALFONTS [0 ], 12f );
65
+ FontRenderers .Comical_fxfontRenderer = new BetterFontRenderer (FontLoader .COMICALFONTS [0 ], 12f );
68
66
69
- FontRenderers .Ultra_Large_iconRenderer = new fxFontRenderer ( iconFont , 25f );
67
+ FontRenderers .Ultra_Large_iconRenderer = new BetterFontRenderer ( ACTIVE_ICON_FONT , 25f );
70
68
71
69
//Post the font change event to the EventManager
72
- EventManager .postEvent (new FontChangeEvent (FontManager .fonts ));
70
+ EventManager .postEvent (new FontChangeEvent ());
71
+ }
72
+
73
+ private static void registerFont (Font font ) {
74
+ FONTS .put (font .getFontName (), font );
75
+ if (ACTIVE_FONT == null ) ACTIVE_FONT = font ;
76
+ }
77
+
78
+ private static void registerIconFont (Font font ) {
79
+ ICON_FONTS .put (font .getFontName (), font );
80
+ if (ACTIVE_ICON_FONT == null ) ACTIVE_ICON_FONT = font ;
81
+ }
82
+ private static void setActiveIconFont (Font font ) {
83
+ if (!ICON_FONTS .containsValue (font )) {
84
+ ICON_FONTS .put (font .getFontName (), font );
85
+ }
86
+ ACTIVE_ICON_FONT = font ;
87
+ }
88
+
89
+ private static void setActiveFont (Font font ) {
90
+ if (!FONTS .containsValue (font )) {
91
+ FONTS .put (font .getFontName (), font );
92
+ }
93
+ ACTIVE_FONT = font ;
94
+ }
95
+
96
+ public static Font getFont (String key ) {
97
+ return FONTS .getOrDefault (key , ACTIVE_FONT );
98
+ }
99
+
100
+ public static Font getIconFont (String key ) {
101
+ return ICON_FONTS .getOrDefault (key , ACTIVE_ICON_FONT );
102
+ }
103
+
104
+ public static boolean areFontsAvailable (){
105
+ return !FONTS .isEmpty ();
73
106
}
74
107
}
0 commit comments