diff --git a/data/font/8bithud.fnt b/data/fonts/8bithud.fnt similarity index 100% rename from data/font/8bithud.fnt rename to data/fonts/8bithud.fnt diff --git a/data/font/8bithud.gif b/data/fonts/8bithud.gif similarity index 100% rename from data/font/8bithud.gif rename to data/fonts/8bithud.gif diff --git a/data/fonts/ari-w9500-bold.fnt b/data/fonts/ari-w9500-bold.fnt new file mode 100644 index 0000000..066e489 --- /dev/null +++ b/data/fonts/ari-w9500-bold.fnt @@ -0,0 +1,132 @@ +# Font: ari-w9500-bold — generado desde ari-w9500-bold.ttf size 11 +# Generado con tools/font_gen/font_gen.py + +box_width 13 +box_height 11 +columns 15 + +# codepoint_decimal ancho_visual +32 3 # U+0020 +33 3 # ! +34 6 # " +35 9 # # +36 7 # $ +37 12 # % +38 8 # & +39 3 # ' +40 5 # ( +41 5 # ) +42 5 # * +43 7 # + +44 3 # , +45 5 # - +46 3 # . +47 6 # / +48 7 # 0 +49 6 # 1 +50 7 # 2 +51 7 # 3 +52 7 # 4 +53 7 # 5 +54 7 # 6 +55 7 # 7 +56 7 # 8 +57 7 # 9 +58 3 # : +59 3 # ; +60 7 # < +61 7 # = +62 7 # > +63 7 # ? +64 13 # @ +65 9 # A +66 8 # B +67 8 # C +68 8 # D +69 7 # E +70 7 # F +71 8 # G +72 8 # H +73 3 # I +74 6 # J +75 8 # K +76 7 # L +77 10 # M +78 9 # N +79 9 # O +80 8 # P +81 9 # Q +82 8 # R +83 8 # S +84 7 # T +85 8 # U +86 8 # V +87 11 # W +88 9 # X +89 9 # Y +90 9 # Z +91 5 # [ +92 6 # \ +93 5 # ] +94 6 # ^ +95 7 # _ +96 4 # ` +97 7 # a +98 7 # b +99 7 # c +100 7 # d +101 7 # e +102 5 # f +103 7 # g +104 7 # h +105 3 # i +106 3 # j +107 7 # k +108 3 # l +109 9 # m +110 7 # n +111 7 # o +112 7 # p +113 7 # q +114 5 # r +115 6 # s +116 5 # t +117 7 # u +118 7 # v +119 9 # w +120 7 # x +121 7 # y +122 7 # z +123 6 # { +124 3 # | +125 6 # } +126 8 # ~ +192 9 # À +193 9 # Á +200 7 # È +201 7 # É +204 3 # Ì +205 3 # Í +210 9 # Ò +211 9 # Ó +217 8 # Ù +218 8 # Ú +209 9 # Ñ +199 8 # Ç +224 7 # à +225 7 # á +232 7 # è +233 7 # é +236 3 # ì +237 4 # í +242 7 # ò +243 7 # ó +249 7 # ù +250 7 # ú +241 7 # ñ +231 7 # ç +161 3 # ¡ +191 6 # ¿ +171 9 # « +187 9 # » +183 3 # · diff --git a/data/fonts/ari-w9500-bold.gif b/data/fonts/ari-w9500-bold.gif new file mode 100644 index 0000000..4ca1fc6 Binary files /dev/null and b/data/fonts/ari-w9500-bold.gif differ diff --git a/data/fonts/ari-w9500-condensed-bold.fnt b/data/fonts/ari-w9500-condensed-bold.fnt new file mode 100644 index 0000000..178b56b --- /dev/null +++ b/data/fonts/ari-w9500-condensed-bold.fnt @@ -0,0 +1,132 @@ +# Font: ari-w9500-condensed-bold — generado desde ari-w9500-condensed-bold.ttf size 11 +# Generado con tools/font_gen/font_gen.py + +box_width 12 +box_height 11 +columns 15 + +# codepoint_decimal ancho_visual +32 2 # U+0020 +33 3 # ! +34 6 # " +35 9 # # +36 6 # $ +37 10 # % +38 7 # & +39 3 # ' +40 5 # ( +41 5 # ) +42 5 # * +43 7 # + +44 3 # , +45 5 # - +46 3 # . +47 5 # / +48 6 # 0 +49 5 # 1 +50 6 # 2 +51 6 # 3 +52 6 # 4 +53 6 # 5 +54 6 # 6 +55 6 # 7 +56 6 # 8 +57 6 # 9 +58 3 # : +59 3 # ; +60 7 # < +61 7 # = +62 7 # > +63 6 # ? +64 12 # @ +65 8 # A +66 7 # B +67 7 # C +68 7 # D +69 6 # E +70 6 # F +71 7 # G +72 7 # H +73 3 # I +74 6 # J +75 7 # K +76 7 # L +77 8 # M +78 8 # N +79 8 # O +80 7 # P +81 8 # Q +82 7 # R +83 7 # S +84 7 # T +85 7 # U +86 7 # V +87 9 # W +88 7 # X +89 7 # Y +90 7 # Z +91 5 # [ +92 5 # \ +93 5 # ] +94 6 # ^ +95 6 # _ +96 4 # ` +97 6 # a +98 6 # b +99 6 # c +100 6 # d +101 6 # e +102 5 # f +103 6 # g +104 6 # h +105 3 # i +106 3 # j +107 6 # k +108 3 # l +109 8 # m +110 6 # n +111 6 # o +112 6 # p +113 6 # q +114 5 # r +115 6 # s +116 5 # t +117 6 # u +118 6 # v +119 8 # w +120 6 # x +121 6 # y +122 6 # z +123 6 # { +124 3 # | +125 6 # } +126 8 # ~ +192 8 # À +193 8 # Á +200 6 # È +201 6 # É +204 3 # Ì +205 3 # Í +210 8 # Ò +211 8 # Ó +217 7 # Ù +218 7 # Ú +209 8 # Ñ +199 7 # Ç +224 6 # à +225 6 # á +232 6 # è +233 6 # é +236 3 # ì +237 4 # í +242 6 # ò +243 6 # ó +249 6 # ù +250 6 # ú +241 6 # ñ +231 6 # ç +161 3 # ¡ +191 6 # ¿ +171 9 # « +187 9 # » +183 3 # · diff --git a/data/fonts/ari-w9500-condensed-bold.gif b/data/fonts/ari-w9500-condensed-bold.gif new file mode 100644 index 0000000..63c81c5 Binary files /dev/null and b/data/fonts/ari-w9500-condensed-bold.gif differ diff --git a/data/fonts/ari-w9500-condensed-display.fnt b/data/fonts/ari-w9500-condensed-display.fnt new file mode 100644 index 0000000..7314c59 --- /dev/null +++ b/data/fonts/ari-w9500-condensed-display.fnt @@ -0,0 +1,132 @@ +# Font: ari-w9500-condensed-display — generado desde ari-w9500-condensed-display.ttf size 11 +# Generado con tools/font_gen/font_gen.py + +box_width 12 +box_height 11 +columns 15 + +# codepoint_decimal ancho_visual +32 3 # U+0020 +33 3 # ! +34 6 # " +35 9 # # +36 7 # $ +37 11 # % +38 8 # & +39 3 # ' +40 5 # ( +41 5 # ) +42 5 # * +43 7 # + +44 4 # , +45 6 # - +46 3 # . +47 6 # / +48 7 # 0 +49 6 # 1 +50 7 # 2 +51 7 # 3 +52 8 # 4 +53 7 # 5 +54 7 # 6 +55 7 # 7 +56 7 # 8 +57 7 # 9 +58 3 # : +59 4 # ; +60 7 # < +61 7 # = +62 7 # > +63 7 # ? +64 12 # @ +65 8 # A +66 7 # B +67 8 # C +68 8 # D +69 7 # E +70 7 # F +71 8 # G +72 7 # H +73 3 # I +74 6 # J +75 8 # K +76 7 # L +77 9 # M +78 8 # N +79 9 # O +80 7 # P +81 9 # Q +82 7 # R +83 7 # S +84 7 # T +85 7 # U +86 7 # V +87 10 # W +88 8 # X +89 7 # Y +90 8 # Z +91 5 # [ +92 6 # \ +93 5 # ] +94 6 # ^ +95 7 # _ +96 5 # ` +97 7 # a +98 7 # b +99 7 # c +100 7 # d +101 7 # e +102 6 # f +103 7 # g +104 7 # h +105 3 # i +106 3 # j +107 7 # k +108 3 # l +109 9 # m +110 7 # n +111 7 # o +112 7 # p +113 7 # q +114 6 # r +115 6 # s +116 6 # t +117 7 # u +118 7 # v +119 8 # w +120 7 # x +121 7 # y +122 7 # z +123 6 # { +124 3 # | +125 6 # } +126 8 # ~ +192 8 # À +193 8 # Á +200 7 # È +201 7 # É +204 3 # Ì +205 3 # Í +210 9 # Ò +211 9 # Ó +217 7 # Ù +218 7 # Ú +209 8 # Ñ +199 8 # Ç +224 7 # à +225 7 # á +232 7 # è +233 7 # é +236 4 # ì +237 3 # í +242 7 # ò +243 7 # ó +249 7 # ù +250 7 # ú +241 7 # ñ +231 7 # ç +161 3 # ¡ +191 7 # ¿ +171 10 # « +187 10 # » +183 3 # · diff --git a/data/fonts/ari-w9500-condensed-display.gif b/data/fonts/ari-w9500-condensed-display.gif new file mode 100644 index 0000000..b293b0d Binary files /dev/null and b/data/fonts/ari-w9500-condensed-display.gif differ diff --git a/data/fonts/ari-w9500-condensed.fnt b/data/fonts/ari-w9500-condensed.fnt new file mode 100644 index 0000000..4264e73 --- /dev/null +++ b/data/fonts/ari-w9500-condensed.fnt @@ -0,0 +1,132 @@ +# Font: ari-w9500-condensed — generado desde ari-w9500-condensed.ttf size 11 +# Generado con tools/font_gen/font_gen.py + +box_width 9 +box_height 11 +columns 15 + +# codepoint_decimal ancho_visual +32 2 # U+0020 +33 2 # ! +34 4 # " +35 8 # # +36 5 # $ +37 8 # % +38 6 # & +39 2 # ' +40 4 # ( +41 4 # ) +42 4 # * +43 6 # + +44 2 # , +45 4 # - +46 2 # . +47 4 # / +48 5 # 0 +49 4 # 1 +50 5 # 2 +51 5 # 3 +52 5 # 4 +53 5 # 5 +54 5 # 6 +55 5 # 7 +56 5 # 8 +57 5 # 9 +58 2 # : +59 2 # ; +60 4 # < +61 6 # = +62 4 # > +63 5 # ? +64 9 # @ +65 6 # A +66 6 # B +67 6 # C +68 6 # D +69 6 # E +70 6 # F +71 6 # G +72 6 # H +73 2 # I +74 4 # J +75 6 # K +76 6 # L +77 6 # M +78 6 # N +79 7 # O +80 6 # P +81 7 # Q +82 6 # R +83 6 # S +84 6 # T +85 6 # U +86 6 # V +87 8 # W +88 6 # X +89 6 # Y +90 6 # Z +91 4 # [ +92 4 # \ +93 4 # ] +94 6 # ^ +95 5 # _ +96 3 # ` +97 5 # a +98 5 # b +99 5 # c +100 5 # d +101 5 # e +102 4 # f +103 5 # g +104 5 # h +105 2 # i +106 2 # j +107 5 # k +108 2 # l +109 6 # m +110 5 # n +111 5 # o +112 5 # p +113 5 # q +114 4 # r +115 5 # s +116 4 # t +117 5 # u +118 5 # v +119 6 # w +120 5 # x +121 5 # y +122 5 # z +123 5 # { +124 2 # | +125 5 # } +126 6 # ~ +192 6 # À +193 6 # Á +200 6 # È +201 6 # É +204 2 # Ì +205 2 # Í +210 7 # Ò +211 7 # Ó +217 6 # Ù +218 6 # Ú +209 6 # Ñ +199 6 # Ç +224 5 # à +225 5 # á +232 5 # è +233 5 # é +236 2 # ì +237 3 # í +242 5 # ò +243 5 # ó +249 5 # ù +250 5 # ú +241 5 # ñ +231 5 # ç +161 2 # ¡ +191 5 # ¿ +171 7 # « +187 7 # » +183 2 # · diff --git a/data/fonts/ari-w9500-condensed.gif b/data/fonts/ari-w9500-condensed.gif new file mode 100644 index 0000000..19b085c Binary files /dev/null and b/data/fonts/ari-w9500-condensed.gif differ diff --git a/data/fonts/ari-w9500-display.fnt b/data/fonts/ari-w9500-display.fnt new file mode 100644 index 0000000..74dac58 --- /dev/null +++ b/data/fonts/ari-w9500-display.fnt @@ -0,0 +1,132 @@ +# Font: ari-w9500-display — generado desde ari-w9500-display.ttf size 11 +# Generado con tools/font_gen/font_gen.py + +box_width 12 +box_height 11 +columns 15 + +# codepoint_decimal ancho_visual +32 3 # U+0020 +33 3 # ! +34 6 # " +35 9 # # +36 8 # $ +37 12 # % +38 9 # & +39 3 # ' +40 5 # ( +41 5 # ) +42 5 # * +43 7 # + +44 4 # , +45 6 # - +46 3 # . +47 6 # / +48 8 # 0 +49 6 # 1 +50 8 # 2 +51 8 # 3 +52 8 # 4 +53 8 # 5 +54 8 # 6 +55 8 # 7 +56 8 # 8 +57 8 # 9 +58 3 # : +59 4 # ; +60 7 # < +61 7 # = +62 7 # > +63 8 # ? +64 12 # @ +65 9 # A +66 8 # B +67 9 # C +68 9 # D +69 8 # E +70 8 # F +71 9 # G +72 8 # H +73 3 # I +74 7 # J +75 9 # K +76 8 # L +77 10 # M +78 9 # N +79 10 # O +80 8 # P +81 10 # Q +82 8 # R +83 8 # S +84 9 # T +85 8 # U +86 9 # V +87 12 # W +88 9 # X +89 9 # Y +90 9 # Z +91 5 # [ +92 6 # \ +93 5 # ] +94 7 # ^ +95 7 # _ +96 5 # ` +97 8 # a +98 8 # b +99 8 # c +100 8 # d +101 8 # e +102 6 # f +103 8 # g +104 8 # h +105 3 # i +106 4 # j +107 8 # k +108 3 # l +109 11 # m +110 8 # n +111 8 # o +112 8 # p +113 8 # q +114 6 # r +115 7 # s +116 6 # t +117 8 # u +118 8 # v +119 9 # w +120 8 # x +121 8 # y +122 8 # z +123 6 # { +124 3 # | +125 6 # } +126 9 # ~ +192 9 # À +193 9 # Á +200 8 # È +201 8 # É +204 3 # Ì +205 3 # Í +210 10 # Ò +211 10 # Ó +217 8 # Ù +218 8 # Ú +209 9 # Ñ +199 9 # Ç +224 8 # à +225 8 # á +232 8 # è +233 8 # é +236 4 # ì +237 3 # í +242 8 # ò +243 8 # ó +249 8 # ù +250 8 # ú +241 8 # ñ +231 8 # ç +161 3 # ¡ +191 8 # ¿ +171 10 # « +187 10 # » +183 3 # · diff --git a/data/fonts/ari-w9500-display.gif b/data/fonts/ari-w9500-display.gif new file mode 100644 index 0000000..11c0d38 Binary files /dev/null and b/data/fonts/ari-w9500-display.gif differ diff --git a/data/fonts/ari-w9500.fnt b/data/fonts/ari-w9500.fnt new file mode 100644 index 0000000..449e8a2 --- /dev/null +++ b/data/fonts/ari-w9500.fnt @@ -0,0 +1,132 @@ +# Font: ari-w9500 — generado desde ari-w9500.ttf size 11 +# Generado con tools/font_gen/font_gen.py + +box_width 12 +box_height 11 +columns 15 + +# codepoint_decimal ancho_visual +32 3 # U+0020 +33 2 # ! +34 4 # " +35 9 # # +36 6 # $ +37 10 # % +38 7 # & +39 2 # ' +40 4 # ( +41 4 # ) +42 4 # * +43 6 # + +44 2 # , +45 4 # - +46 2 # . +47 5 # / +48 6 # 0 +49 5 # 1 +50 6 # 2 +51 6 # 3 +52 6 # 4 +53 6 # 5 +54 6 # 6 +55 6 # 7 +56 6 # 8 +57 6 # 9 +58 2 # : +59 2 # ; +60 6 # < +61 6 # = +62 6 # > +63 6 # ? +64 12 # @ +65 8 # A +66 7 # B +67 8 # C +68 8 # D +69 7 # E +70 7 # F +71 8 # G +72 7 # H +73 2 # I +74 5 # J +75 7 # K +76 7 # L +77 8 # M +78 7 # N +79 8 # O +80 7 # P +81 8 # Q +82 7 # R +83 7 # S +84 6 # T +85 7 # U +86 7 # V +87 10 # W +88 8 # X +89 8 # Y +90 8 # Z +91 4 # [ +92 5 # \ +93 4 # ] +94 6 # ^ +95 6 # _ +96 3 # ` +97 6 # a +98 6 # b +99 6 # c +100 6 # d +101 6 # e +102 4 # f +103 6 # g +104 6 # h +105 2 # i +106 2 # j +107 6 # k +108 2 # l +109 8 # m +110 6 # n +111 6 # o +112 6 # p +113 6 # q +114 4 # r +115 5 # s +116 4 # t +117 6 # u +118 6 # v +119 8 # w +120 6 # x +121 6 # y +122 6 # z +123 5 # { +124 2 # | +125 5 # } +126 6 # ~ +192 8 # À +193 8 # Á +200 7 # È +201 7 # É +204 2 # Ì +205 2 # Í +210 8 # Ò +211 8 # Ó +217 7 # Ù +218 7 # Ú +209 7 # Ñ +199 8 # Ç +224 6 # à +225 6 # á +232 6 # è +233 6 # é +236 2 # ì +237 3 # í +242 6 # ò +243 6 # ó +249 6 # ù +250 6 # ú +241 6 # ñ +231 6 # ç +161 2 # ¡ +191 6 # ¿ +171 7 # « +187 7 # » +183 2 # · diff --git a/data/fonts/ari-w9500.gif b/data/fonts/ari-w9500.gif new file mode 100644 index 0000000..994cb1b Binary files /dev/null and b/data/fonts/ari-w9500.gif differ diff --git a/source/core/rendering/gif.cpp b/source/core/rendering/gif.cpp index c3182f1..49d819d 100644 --- a/source/core/rendering/gif.cpp +++ b/source/core/rendering/gif.cpp @@ -198,10 +198,33 @@ namespace GIF { readBytes(buffer, &lzw_code_size, sizeof(uint8_t)); std::vector compressed_data = readSubBlocks(buffer); - int uncompressed_data_length = image_descriptor.image_width * image_descriptor.image_height; - std::vector uncompressed_data(uncompressed_data_length); + const int IMG_W = image_descriptor.image_width; + const int IMG_H = image_descriptor.image_height; + std::vector uncompressed_data(static_cast(IMG_W) * IMG_H); decompress(lzw_code_size, compressed_data.data(), static_cast(compressed_data.size()), uncompressed_data.data()); + + // Interlaced GIF (flag 0x40 al byte de fields): les files no arriben + // en ordre lineal, sinó en 4 passades (8:0, 8:4, 4:2, 2:1). Reordena + // al buffer lineal que espera Surface. Sense aquest pas, les fuentes + // i qualsevol GIF entrellaçat es veien completament trinxats. + constexpr uint8_t INTERLACE_FLAG = 0x40; + if ((image_descriptor.fields & INTERLACE_FLAG) != 0) { + constexpr int PASS_START[4] = {0, 4, 2, 1}; + constexpr int PASS_STEP[4] = {8, 8, 4, 2}; + std::vector deinterlaced(static_cast(IMG_W) * IMG_H); + int src_row = 0; + for (int pass = 0; pass < 4; ++pass) { + for (int dst_row = PASS_START[pass]; dst_row < IMG_H; dst_row += PASS_STEP[pass]) { + std::memcpy(deinterlaced.data() + (static_cast(dst_row) * IMG_W), + uncompressed_data.data() + (static_cast(src_row) * IMG_W), + IMG_W); + ++src_row; + } + } + return deinterlaced; + } + return uncompressed_data; } diff --git a/source/core/system/director.cpp b/source/core/system/director.cpp index 03cdc18..0226f82 100644 --- a/source/core/system/director.cpp +++ b/source/core/system/director.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "core/audio/audio.hpp" @@ -80,11 +81,16 @@ Director::Director() { // Hotkeys globals. GlobalInputs::update() les consumirà a cada frame. KeyConfig::get().load("data/input/keys.yaml"); - // Recursos compartits d'UI (paleta + font). Es carreguen abans que els - // overlays perquè tots els reaprofiten sense duplicar la lògica. + // Recursos compartits d'UI (paleta + fonts). Es carreguen abans que els + // overlays perquè tots els reaprofiten sense duplicar la lògica. Els + // noms de font viuen a Defaults::UI::Font (un únic lloc per canviar-los). Resource::Cache::get().loadPalette("ui", "data/palettes/sega-cube.pal"); - Resource::Cache::get().loadSurface("8bithud.gif", "data/font/8bithud.gif"); - Resource::Cache::get().getSurface("8bithud.gif")->setPalette(Resource::Cache::get().getPalette("ui")); + const std::string HUD_FONT_GIF_KEY = std::string(Defaults::UI::Font::HUD_NAME) + ".gif"; + Resource::Cache::get().loadSurface(HUD_FONT_GIF_KEY, Defaults::UI::Font::HUD_GIF); + Resource::Cache::get().getSurface(HUD_FONT_GIF_KEY)->setPalette(Resource::Cache::get().getPalette("ui")); + const std::string PLACEHOLDER_FONT_GIF_KEY = std::string(Defaults::UI::Font::PLACEHOLDER_NAME) + ".gif"; + Resource::Cache::get().loadSurface(PLACEHOLDER_FONT_GIF_KEY, Defaults::UI::Font::PLACEHOLDER_GIF); + Resource::Cache::get().getSurface(PLACEHOLDER_FONT_GIF_KEY)->setPalette(Resource::Cache::get().getPalette("ui")); // Música de la piràmide 1 (primer i únic track de moment). Carreguem ací // perquè forma part del preload d'assets, com la font i la paleta. @@ -98,13 +104,19 @@ Director::Director() { // Font compartida pels overlays: construïm una sola instància de Text // i la injectem als consumidors (Notifier, RenderInfo) per a que cap // d'ells hagi de conèixer els noms dels recursos concrets. - auto hud_font_surface = Resource::Cache::get().getSurface("8bithud.gif"); - auto hud_text = std::make_shared(hud_font_surface, "data/font/8bithud.fnt"); + auto hud_font_surface = Resource::Cache::get().getSurface(HUD_FONT_GIF_KEY); + auto hud_text = std::make_shared(hud_font_surface, Defaults::UI::Font::HUD_FNT); const auto& ui_palette = Resource::Cache::get().getPalette("ui"); RenderInfo::get().init(Options::buildRenderInfoFrame(UiColor::RENDER_INFO_TEXT, UiColor::RENDER_INFO_SHADOW), hud_text); Notifier::get().init(hud_text, ui_palette); + // Font dels placeholders (LOGO / TITLE / INTRO). És una font distinta a + // la de HUD perquè els placeholders desapareixeran amb les seues escenes + // finals; mentrestant tenen estètica pròpia. + auto placeholder_font_surface = Resource::Cache::get().getSurface(PLACEHOLDER_FONT_GIF_KEY); + auto placeholder_text = std::make_shared(placeholder_font_surface, Defaults::UI::Font::PLACEHOLDER_FNT); + // Flux d'escenes LOGO → TITLE → INTRO → GAME. Cada placeholder rep una // factory que construeix la següent, construïda bottom-up des de GAME. // @@ -123,16 +135,16 @@ Director::Director() { std::cout << "Director: start_scene=" << DebugConfig::toString(START) << '\n'; auto make_game = []() -> std::unique_ptr { return std::make_unique(); }; - auto make_intro = [hud_text, make_game]() -> std::unique_ptr { - return std::make_unique(hud_text, make_game); + auto make_intro = [placeholder_text, make_game]() -> std::unique_ptr { + return std::make_unique(placeholder_text, make_game); }; - auto make_title = [hud_text, make_intro]() -> std::unique_ptr { - return std::make_unique(hud_text, make_intro); + auto make_title = [placeholder_text, make_intro]() -> std::unique_ptr { + return std::make_unique(placeholder_text, make_intro); }; switch (START) { case DebugConfig::StartScene::LOGO: - current_scene_ = std::make_unique(hud_text, make_title); + current_scene_ = std::make_unique(placeholder_text, make_title); break; case DebugConfig::StartScene::TITLE: current_scene_ = make_title(); diff --git a/source/utils/defaults.hpp b/source/utils/defaults.hpp index 8ec1916..4e8b767 100644 --- a/source/utils/defaults.hpp +++ b/source/utils/defaults.hpp @@ -90,6 +90,24 @@ namespace Defaults { // pel codi. Si algun dia es volen temes múltiples, es pot moure a YAML // sense més impacte que dos accessors extra. namespace UI { + // Fonts d'UI centralitzades: un únic lloc per conèixer la carpeta + // (data/fonts/), el nom-clau al Resource::Cache i els fitxers .gif / + // .fnt de cada font. Afegir-ne una nova és una constant ací i ja. + namespace Font { + constexpr const char* DIR = "data/fonts/"; + + // HUD/Notifier/RenderInfo: font principal de UI del joc. + constexpr const char* HUD_NAME = "8bithud"; + constexpr const char* HUD_GIF = "data/fonts/8bithud.gif"; + constexpr const char* HUD_FNT = "data/fonts/8bithud.fnt"; + + // Placeholders (LOGO / TITLE / INTRO): font temporal fins que els + // placeholders es substitueixin per les seues escenes finals. + constexpr const char* PLACEHOLDER_NAME = "ari-w9500"; + constexpr const char* PLACEHOLDER_GIF = "data/fonts/ari-w9500.gif"; + constexpr const char* PLACEHOLDER_FNT = "data/fonts/ari-w9500.fnt"; + } // namespace Font + // Overlay de RenderInfo (F12). constexpr Uint8 RENDER_INFO_TEXT = 47; constexpr Uint8 RENDER_INFO_SHADOW = 34; diff --git a/source/utils/defines.hpp b/source/utils/defines.hpp index 62e2fcf..2a572a2 100644 --- a/source/utils/defines.hpp +++ b/source/utils/defines.hpp @@ -3,7 +3,7 @@ namespace Texts { constexpr const char* WINDOW_TITLE = "© 2026 Aventures en Egipte — JailDesigner"; constexpr const char* COPYRIGHT = "© 2026 JailDesigner"; - constexpr const char* VERSION = "0.18.0"; // Single source of truth — Makefile el grep + constexpr const char* VERSION = "0.19.0"; // Single source of truth — Makefile el grep } // namespace Texts namespace GameCanvas {