diff --git a/src/sys/localization.cpp b/src/sys/localization.cpp index c50d642..e813314 100644 --- a/src/sys/localization.cpp +++ b/src/sys/localization.cpp @@ -1,34 +1,30 @@ #include "localization.h" +#include "encoding.h" -namespace strings { - -const char* back[] = { - "\x96\xDF\x82\xE9", // "戻る" in SJIS - "Back", -}; -const char* next_page[] = { - "\x8E\x9F\x82\xCC\x83\x79\x81\x5B\x83\x57", // "次のページ" in SJIS - "Next Page", -}; -const char* dps_initial_tvars[][7] = { - { - "\x83\x4A\x83\x58\x83\x5E\x83\x80", // "カスタム" in SJIS - "\x83\x8A\x81\x5B\x83\x69\x83\x58", // "リーナス" in SJIS - "\x82\xA9\x82\xC2\x82\xDD", // "かつみ" in SJIS - "\x97\x52\x94\xFC\x8E\x71", // "由美子" in SJIS - "\x82\xA2\x82\xC2\x82\xDD", // "いつみ" in SJIS - "\x82\xD0\x82\xC6\x82\xDD", // "ひとみ" in SJIS - "\x90\x5E\x97\x9D\x8E\x71", // "真理子" in SJIS - }, - { - "Custom", - "Linus", - "Katsumi", - "Yumiko", - "Itsumi", - "Hitomi", - "Mariko", - }, -}; - -} // namespace strings +Strings::Strings(Language lang, Encoding* encoding) +{ + switch (lang) { + case JAPANESE: + back = encoding->fromUtf8(u8"戻る"); + next_page = encoding->fromUtf8(u8"次のページ"); + dps_initial_tvars[0] = encoding->fromUtf8(u8"カスタム"); + dps_initial_tvars[1] = encoding->fromUtf8(u8"リーナス"); + dps_initial_tvars[2] = encoding->fromUtf8(u8"かつみ"); + dps_initial_tvars[3] = encoding->fromUtf8(u8"由美子"); + dps_initial_tvars[4] = encoding->fromUtf8(u8"いつみ"); + dps_initial_tvars[5] = encoding->fromUtf8(u8"ひとみ"); + dps_initial_tvars[6] = encoding->fromUtf8(u8"真理子"); + break; + case ENGLISH: + back = "Back"; + next_page = "Next Page"; + dps_initial_tvars[0] = "Custom"; + dps_initial_tvars[1] = "Linus"; + dps_initial_tvars[2] = "Katsumi"; + dps_initial_tvars[3] = "Yumiko"; + dps_initial_tvars[4] = "Itsumi"; + dps_initial_tvars[5] = "Hitomi"; + dps_initial_tvars[6] = "Mariko"; + break; + } +} diff --git a/src/sys/localization.h b/src/sys/localization.h index ae03b5b..e4ab3c0 100644 --- a/src/sys/localization.h +++ b/src/sys/localization.h @@ -1,17 +1,19 @@ #ifndef _LOCALIZATION_H_ #define _LOCALIZATION_H_ +class Encoding; + enum Language { JAPANESE = 0, ENGLISH = 1, }; -namespace strings { +struct Strings { + Strings(Language lang, Encoding* encoding); -extern const char* back[]; -extern const char* next_page[]; -extern const char* dps_initial_tvars[][7]; - -} // namespace strings + const char* back; + const char* next_page; + const char* dps_initial_tvars[7]; +}; #endif // _LOCALIZATION_H_ diff --git a/src/sys/nact.cpp b/src/sys/nact.cpp index 2806fb9..b6e9d3e 100644 --- a/src/sys/nact.cpp +++ b/src/sys/nact.cpp @@ -23,8 +23,8 @@ NACT::NACT(int sys_ver, uint32 crc32_a, uint32 crc32_b, const Config& config) : sys_ver(sys_ver), crc32_a(crc32_a), crc32_b(crc32_b), - lang(get_language()), - encoding(Encoding::create(get_encoding_name(config))) + encoding(Encoding::create(get_encoding_name(config))), + strings(get_language(), encoding.get()) { platform_initialize(); diff --git a/src/sys/nact.h b/src/sys/nact.h index bbd4e6a..912ba56 100644 --- a/src/sys/nact.h +++ b/src/sys/nact.h @@ -266,8 +266,8 @@ public: int sys_ver; uint32 crc32_a; // ADISK uint32 crc32_b; // BDISK for D.P.S -SG- and Super D.P.S - Language lang; std::unique_ptr encoding; + Strings strings; // for Y27 char tvar[10][33]; diff --git a/src/sys/nact_sys1.cpp b/src/sys/nact_sys1.cpp index e1258f2..196065c 100644 --- a/src/sys/nact_sys1.cpp +++ b/src/sys/nact_sys1.cpp @@ -76,7 +76,7 @@ NACT_Sys1::NACT_Sys1(uint32 crc32_a, uint32 crc32_b, const Config& config) case CRC32_DPS_SG3: text_refresh = false; for (int i = 0; i < 7; i++) - strcpy(tvar[i], strings::dps_initial_tvars[lang][i]); + strcpy(tvar[i], strings.dps_initial_tvars[i]); break; case CRC32_INTRUDER: paint_x = paint_y = map_page = 0; @@ -419,7 +419,7 @@ top2: // 次のページを追加 ags->menu_dest_x = 2; ags->menu_dest_y += 2; - ags->draw_text(strings::next_page[lang]); + ags->draw_text(strings.next_page); id[index++] = -1; ags->menu_dest_y += ags->menu_font_size + 2; } @@ -490,7 +490,7 @@ top: // 戻るを追加 ags->menu_dest_x = 2; ags->menu_dest_y += 2; - ags->draw_text(strings::back[lang]); + ags->draw_text(strings.back); id[index++] = 0; ags->menu_dest_y += ags->menu_font_size + 2; } else { @@ -516,14 +516,14 @@ top2: // 戻るを追加 ags->menu_dest_x = 2; ags->menu_dest_y += 2; - ags->draw_text(strings::back[lang]); + ags->draw_text(strings.back); id[index++] = 0; ags->menu_dest_y += ags->menu_font_size + 2; // 次のページを追加 ags->menu_dest_x = 2; ags->menu_dest_y += 2; - ags->draw_text(strings::next_page[lang]); + ags->draw_text(strings.next_page); id[index++] = -1; ags->menu_dest_y += ags->menu_font_size + 2; } diff --git a/src/sys/nact_sys2.cpp b/src/sys/nact_sys2.cpp index 3decff1..7a16b0d 100644 --- a/src/sys/nact_sys2.cpp +++ b/src/sys/nact_sys2.cpp @@ -490,7 +490,7 @@ void NACT_Sys2::cmd_open_obj(int verb) // 戻るを追加 ags->menu_dest_x = 2; ags->menu_dest_y += 2; - ags->draw_text(strings::back[lang]); + ags->draw_text(strings.back); id[index++] = 0; ags->menu_dest_y += ags->menu_font_size + 2; ags->draw_menu = false; diff --git a/src/sys/nact_sys3.cpp b/src/sys/nact_sys3.cpp index 92a11e0..810cdea 100644 --- a/src/sys/nact_sys3.cpp +++ b/src/sys/nact_sys3.cpp @@ -265,7 +265,7 @@ void NACT_Sys3::cmd_open_obj(int verb) // 戻るを追加 ags->menu_dest_x = 2; ags->menu_dest_y += 2; - ags->draw_text(strings::back[lang]); + ags->draw_text(strings.back); id[index++] = 0; ags->menu_dest_y += ags->menu_font_size + 2; ags->draw_menu = false;