mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Added FONT_SPECIAL (#556)
* Fixed player and mod lists not updating on language change * Added `FONT_SPECIAL` which is based on the special controls letters in dialog boxes
This commit is contained in:
parent
e3c1b20f6b
commit
6757a3abb7
10 changed files with 73 additions and 8 deletions
|
|
@ -3231,7 +3231,10 @@ FONT_CUSTOM_HUD = 4
|
||||||
FONT_RECOLOR_HUD = 5
|
FONT_RECOLOR_HUD = 5
|
||||||
|
|
||||||
--- @type DjuiFontType
|
--- @type DjuiFontType
|
||||||
FONT_COUNT = 6
|
FONT_SPECIAL = 6
|
||||||
|
|
||||||
|
--- @type DjuiFontType
|
||||||
|
FONT_COUNT = 7
|
||||||
|
|
||||||
--- @class HudUtilsFilter
|
--- @class HudUtilsFilter
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ const f32 font_normal_widths[] = {
|
||||||
/* : ; < = > ? @ */
|
/* : ; < = > ? @ */
|
||||||
0.2500f, 0.2500f, 0.3125f, 0.3750f, 0.3125f, 0.4375f, 0.5750f,
|
0.2500f, 0.2500f, 0.3125f, 0.3750f, 0.3125f, 0.4375f, 0.5750f,
|
||||||
/* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z */
|
/* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z */
|
||||||
0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3125f, 0.3750f, 0.3750f, 0.3125f, 0.5000f, 0.5000f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3125f, 0.3750f, 0.3750f, 0.5000f, 0.4375f, 0.3750f, 0.3750f,
|
0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3125f, 0.3750f, 0.3750f, 0.3125f, 0.5000f, 0.5000f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3750f, 0.3125f, 0.3750f, 0.3750f, 0.5000f, 0.4375f, 0.3750f, 0.3750f,
|
||||||
/* [ \ ] ^ _ ` */
|
/* [ \ ] ^ _ ` */
|
||||||
0.3125f, 0.3125f, 0.3125f, 0.3750f, 0.3750f, 0.2500f,
|
0.3125f, 0.3125f, 0.3125f, 0.3750f, 0.3750f, 0.2500f,
|
||||||
/* a b c d e f g h i j k l m n o p q r s t u v w x y z */
|
/* a b c d e f g h i j k l m n o p q r s t u v w x y z */
|
||||||
|
|
@ -24,7 +24,6 @@ const f32 font_normal_widths[] = {
|
||||||
0.3125f, 0.2500f, 0.3125f, 0.5000f, 0.5000f
|
0.3125f, 0.2500f, 0.3125f, 0.5000f, 0.5000f
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////
|
||||||
|
|
||||||
ALIGNED8 const u8 texture_font_title[] = {
|
ALIGNED8 const u8 texture_font_title[] = {
|
||||||
|
|
@ -99,3 +98,26 @@ const f32 font_hud_widths[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
ALIGNED8 const u8 texture_font_special[] = {
|
||||||
|
#include "textures/custom_font/custom_font_special.rgba32.inc.c"
|
||||||
|
};
|
||||||
|
|
||||||
|
const f32 font_special_widths[] = {
|
||||||
|
/* ! " # $ % & ' ( ) * + , - . / */
|
||||||
|
0.1875f, 0.3750f, 0.5000f, 0.4375f, 0.4375f, 0.4375f, 0.2500f, 0.3125f, 0.3125f, 0.2500f, 0.4375f, 0.2500f, 0.3750f, 0.2500f, 0.3125f,
|
||||||
|
/* 0 1 2 3 4 5 6 7 8 9 */
|
||||||
|
0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f,
|
||||||
|
/* : ; < = > ? @ */
|
||||||
|
0.2500f, 0.2500f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.5625f,
|
||||||
|
/* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z */
|
||||||
|
0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.5000f, 0.5000f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.5000f, 0.4375f, 0.4375f, 0.4375f,
|
||||||
|
/* [ \ ] ^ _ ` */
|
||||||
|
0.3125f, 0.3125f, 0.3125f, 0.3750f, 0.4375f, 0.2500f,
|
||||||
|
/* a b c d e f g h i j k l m n o p q r s t u v w x y z */
|
||||||
|
0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.5000f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.4375f, 0.5000f, 0.4375f, 0.4375f, 0.4375f,
|
||||||
|
/* { | } ~ DEL */
|
||||||
|
0.3125f, 0.1875f, 0.3125f, 0.4375f, 0.5000f
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
|
|
@ -1543,6 +1543,7 @@ extern ALIGNED8 const Texture texture_font_aliased[];
|
||||||
extern ALIGNED8 const Texture texture_font_title[];
|
extern ALIGNED8 const Texture texture_font_title[];
|
||||||
extern ALIGNED8 const Texture texture_font_hud[];
|
extern ALIGNED8 const Texture texture_font_hud[];
|
||||||
extern ALIGNED8 const Texture texture_font_hud_recolor[];
|
extern ALIGNED8 const Texture texture_font_hud_recolor[];
|
||||||
|
extern ALIGNED8 const Texture texture_font_special[];
|
||||||
extern ALIGNED8 const Texture texture_selectionbox_back_icon[];
|
extern ALIGNED8 const Texture texture_selectionbox_back_icon[];
|
||||||
extern ALIGNED8 const Texture texture_selectionbox_forward_icon[];
|
extern ALIGNED8 const Texture texture_selectionbox_forward_icon[];
|
||||||
extern ALIGNED8 const Texture texture_coopdx_logo[];
|
extern ALIGNED8 const Texture texture_coopdx_logo[];
|
||||||
|
|
|
||||||
|
|
@ -1144,6 +1144,9 @@ static const struct BuiltinTexInfo sDynosBuiltinTexs[] = {
|
||||||
define_builtin_tex(texture_font_title, "textures/custom_font/custom_font_title.rgba32.png", 1024, 512, 32),
|
define_builtin_tex(texture_font_title, "textures/custom_font/custom_font_title.rgba32.png", 1024, 512, 32),
|
||||||
define_builtin_tex(texture_font_hud, "textures/custom_font/custom_font_normal.rgba32.png", 512, 512, 32),
|
define_builtin_tex(texture_font_hud, "textures/custom_font/custom_font_normal.rgba32.png", 512, 512, 32),
|
||||||
define_builtin_tex(texture_font_hud_recolor, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 512, 32),
|
define_builtin_tex(texture_font_hud_recolor, "textures/custom_font/custom_font_aliased.rgba32.png", 512, 512, 32),
|
||||||
|
define_builtin_tex(texture_font_special, "textures/custom_font/custom_font_special.rgba32.png", 512, 512, 32),
|
||||||
|
|
||||||
|
// Logo
|
||||||
define_builtin_tex(texture_selectionbox_back_icon, "textures/segment2/custom_selectionbox_back_icon.rgba16.png", 16, 16, 16),
|
define_builtin_tex(texture_selectionbox_back_icon, "textures/segment2/custom_selectionbox_back_icon.rgba16.png", 16, 16, 16),
|
||||||
define_builtin_tex(texture_selectionbox_forward_icon, "textures/segment2/custom_selectionbox_forward_icon.rgba16.png", 16, 16, 16),
|
define_builtin_tex(texture_selectionbox_forward_icon, "textures/segment2/custom_selectionbox_forward_icon.rgba16.png", 16, 16, 16),
|
||||||
define_builtin_tex(texture_coopdx_logo, "textures/segment2/custom_coopdx_logo.rgba32.png", 2048, 1024, 32),
|
define_builtin_tex(texture_coopdx_logo, "textures/segment2/custom_coopdx_logo.rgba32.png", 2048, 1024, 32),
|
||||||
|
|
|
||||||
|
|
@ -1114,7 +1114,8 @@
|
||||||
| FONT_ALIASED | 3 |
|
| FONT_ALIASED | 3 |
|
||||||
| FONT_CUSTOM_HUD | 4 |
|
| FONT_CUSTOM_HUD | 4 |
|
||||||
| FONT_RECOLOR_HUD | 5 |
|
| FONT_RECOLOR_HUD | 5 |
|
||||||
| FONT_COUNT | 6 |
|
| FONT_SPECIAL | 6 |
|
||||||
|
| FONT_COUNT | 7 |
|
||||||
|
|
||||||
### [enum HudUtilsFilter](#HudUtilsFilter)
|
### [enum HudUtilsFilter](#HudUtilsFilter)
|
||||||
| Identifier | Value |
|
| Identifier | Value |
|
||||||
|
|
|
||||||
|
|
@ -224,6 +224,38 @@ static const struct DjuiFont sDjuiFontCustomHudRecolor = {
|
||||||
.char_width = djui_font_custom_hud_char_width,
|
.char_width = djui_font_custom_hud_char_width,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///////////////////////////
|
||||||
|
// font 6 (special font) //
|
||||||
|
///////////////////////////
|
||||||
|
|
||||||
|
static void djui_font_special_render_char(char* c) {
|
||||||
|
// replace undisplayable characters
|
||||||
|
if (*c == ' ') { return; }
|
||||||
|
|
||||||
|
u32 index = djui_unicode_get_sprite_index(c);
|
||||||
|
u32 tx = index % 32;
|
||||||
|
u32 ty = index / 32;
|
||||||
|
|
||||||
|
extern ALIGNED8 const u8 texture_font_special[];
|
||||||
|
djui_gfx_render_texture_tile(texture_font_special, 256, 128, 32, tx * 8, ty * 16, 8, 16, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static f32 djui_font_special_char_width(char* c) {
|
||||||
|
if (*c == ' ') { return 0.5f; }
|
||||||
|
extern const f32 font_special_widths[];
|
||||||
|
return djui_unicode_get_sprite_width(c, font_special_widths, 32.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct DjuiFont sDjuiFontSpecial = {
|
||||||
|
.charWidth = 0.5f,
|
||||||
|
.charHeight = 1.0f,
|
||||||
|
.lineHeight = 0.8125f,
|
||||||
|
.defaultFontScale = 32.0f,
|
||||||
|
.textBeginDisplayList = NULL,
|
||||||
|
.render_char = djui_font_special_render_char,
|
||||||
|
.char_width = djui_font_special_char_width,
|
||||||
|
};
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
// font list //
|
// font list //
|
||||||
///////////////
|
///////////////
|
||||||
|
|
@ -234,5 +266,6 @@ const struct DjuiFont* gDjuiFonts[] = {
|
||||||
&sDjuiFontHud,
|
&sDjuiFontHud,
|
||||||
&sDjuiFontAliased,
|
&sDjuiFontAliased,
|
||||||
&sDjuiFontCustomHud,
|
&sDjuiFontCustomHud,
|
||||||
&sDjuiFontCustomHudRecolor
|
&sDjuiFontCustomHudRecolor,
|
||||||
};
|
&sDjuiFontSpecial
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ enum DjuiFontType {
|
||||||
FONT_ALIASED,
|
FONT_ALIASED,
|
||||||
FONT_CUSTOM_HUD,
|
FONT_CUSTOM_HUD,
|
||||||
FONT_RECOLOR_HUD,
|
FONT_RECOLOR_HUD,
|
||||||
|
FONT_SPECIAL,
|
||||||
FONT_COUNT,
|
FONT_COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1252,7 +1252,8 @@ char gSmluaConstants[] = ""
|
||||||
"FONT_ALIASED = 3\n"
|
"FONT_ALIASED = 3\n"
|
||||||
"FONT_CUSTOM_HUD = 4\n"
|
"FONT_CUSTOM_HUD = 4\n"
|
||||||
"FONT_RECOLOR_HUD = 5\n"
|
"FONT_RECOLOR_HUD = 5\n"
|
||||||
"FONT_COUNT = 6\n"
|
"FONT_SPECIAL = 6\n"
|
||||||
|
"FONT_COUNT = 7\n"
|
||||||
"DJUI_RAINBOW_COLOR_RED = 0\n"
|
"DJUI_RAINBOW_COLOR_RED = 0\n"
|
||||||
"DJUI_RAINBOW_COLOR_GREEN = 1\n"
|
"DJUI_RAINBOW_COLOR_GREEN = 1\n"
|
||||||
"DJUI_RAINBOW_COLOR_BLUE = 2\n"
|
"DJUI_RAINBOW_COLOR_BLUE = 2\n"
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ void nametags_render(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
djui_hud_set_resolution(RESOLUTION_N64);
|
djui_hud_set_resolution(RESOLUTION_N64);
|
||||||
djui_hud_set_font(FONT_NORMAL);
|
djui_hud_set_font(FONT_SPECIAL);
|
||||||
|
|
||||||
for (u8 i = gNametagsSettings.showSelfTag ? 0 : 1; i < MAX_PLAYERS; i++) {
|
for (u8 i = gNametagsSettings.showSelfTag ? 0 : 1; i < MAX_PLAYERS; i++) {
|
||||||
struct MarioState* m = &gMarioStates[i];
|
struct MarioState* m = &gMarioStates[i];
|
||||||
|
|
|
||||||
BIN
textures/custom_font/custom_font_special.rgba32.png
Normal file
BIN
textures/custom_font/custom_font_special.rgba32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
Loading…
Add table
Reference in a new issue