Merge pull request #17 from Xpl0itU/configMenu

Config menu
This commit is contained in:
Xpl0itU 2022-10-23 19:10:48 +02:00 committed by GitHub
commit b16d42d2ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 321 additions and 149 deletions

View File

@ -6,6 +6,7 @@ on:
push:
branches:
- refactor
- configMenu
jobs:
build-binary:

3
include/configMenu.h Normal file
View File

@ -0,0 +1,3 @@
#pragma once
void configMenu();

View File

@ -7,6 +7,7 @@
typedef enum Button {
PAD_BUTTON_A,
PAD_BUTTON_B,
PAD_BUTTON_X,
PAD_BUTTON_UP,
PAD_BUTTON_DOWN,
PAD_BUTTON_LEFT,

View File

@ -5,11 +5,10 @@
class Date {
public:
Date(uint32_t high, uint32_t low, uint8_t s) {
highID = high;
lowID = low;
slot = s;
path = stringFormat("sd:/wiiu/backups/%08x%08x/%u/savemiiMeta.json", highID, lowID, slot);
Date(uint32_t high, uint32_t low, uint8_t s) : highID(high),
lowID(low),
slot(s),
path(stringFormat("sd:/wiiu/backups/%08x%08x/%u/savemiiMeta.json", highID, lowID, slot)) {
}
std::string get();
bool set(std::string date);

View File

@ -1,6 +1,7 @@
#pragma once
#include <romfs-wiiu.h>
#include <string>
#include <wut_types.h>
#include <coreinit/memdefaultheap.h>
@ -26,6 +27,7 @@ typedef enum {
} Swkbd_LanguageType;
void loadLanguage(Swkbd_LanguageType language) __attribute__((cold));
std::string getLoadedLanguage();
Swkbd_LanguageType getSystemLanguage() __attribute__((cold));
bool gettextLoadLanguage(const char *langFile);
void gettextCleanUp() __attribute__((__cold__));

View File

@ -18,6 +18,7 @@
#endif
bool WHBLogFreetypeInit() __attribute__((cold));
bool setFont(OSSharedDataType font);
void WHBLogFreetypeFree() __attribute__((cold));
void drawPixel(int32_t x, int32_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t a);
void ttfFontColor32(uint32_t color);

View File

@ -20,7 +20,12 @@
#include <mocha/disc_interface.h>
#include <mocha/mocha.h>
#define PATH_SIZE 0x400
#define PATH_SIZE 0x400
#define VERSION_MAJOR 1
#define VERSION_MINOR 4
#define VERSION_MICRO 9
#define M_OFF 1
typedef struct {
uint32_t highID;

View File

@ -14,7 +14,7 @@
" Wii U Save Management (%u Title%s)": " Wii U保存数据管理%u 软件%s",
" vWii Save Management (%u Title%s)": " vWii保存数据管理%u 软件%s",
" Batch Backup": " 批量备份",
"\ue000: Select Mode": "\ue000选择模式",
"\uE002: Options \ue000: Select Mode": "\uE002选项 \ue000选择模式",
" Backup All (%u Title%s)": " 备份所有保存数据(%u 软件%s",
" Backup Wii U (%u Title%s)": " 备份Wii U软件的保存数据%u 软件%s",
" Backup vWii (%u Title%s)": " 备份vWii软件的保存数据%u 软件%s",

View File

@ -14,7 +14,7 @@
" Wii U Save Management (%u Title%s)": " Wii U保存資料管理%u軟體%s",
" vWii Save Management (%u Title%s)": " vWii保存資料管理%u軟體%s",
" Batch Backup": " 批量備份",
"\ue000: Select Mode": "\ue000選擇模式",
"\uE002: Options \ue000: Select Mode": "\uE002選項 \ue000選擇模式",
" Backup All (%u Title%s)": " 全部備份(%u 標題%s",
" Backup Wii U (%u Title%s)": " 備份Wii U軟體%u Title%s",
" Backup vWii (%u Title%s)": " 備份vWii軟體%u軟體%s",
@ -95,4 +95,4 @@
"Failed to delete user folder.\n%s": "無法刪除使用者資料夾。\n%s",
"Failed to import savedata from loadiine.": "無法從loadiine導入保存數據。",
"Failed to export savedata to loadiine.": "無法導出保存數據到Loadiine。"
}
}

View File

@ -1,98 +1,98 @@
{
"Disclaimer:": "",
"There is always the potential for a brick.": "",
"Everything you do with this software is your own responsibility": "",
"Out of memory.": "",
"Loaded %i Wii U titles.": "",
"%s%s (No banner.bin)": "",
"Loaded %i Wii titles.": "",
"None": "",
"Name": "",
"Storage": "",
"Storage+Name": "",
"initFS failed. Please make sure your MochaPayload is up-to-date": "",
" Wii U Save Management (%u Title%s)": "",
" vWii Save Management (%u Title%s)": "",
" Batch Backup": "",
"\ue000: Select Mode": "",
" Backup All (%u Title%s)": "",
" Backup Wii U (%u Title%s)": "",
" Backup vWii (%u Title%s)": "",
"\ue000: Backup \ue001: Back": "",
"%s Sort: %s \ue084": "",
" [Not Init]": "",
"\ue000: Select Game \ue001: Back": "",
" Backup savedata": "",
" Restore savedata": "",
" Wipe savedata": "",
" Import from loadiine": "",
" Export to loadiine": "",
" Copy Savedata to Title in %s": "",
"\ue000: Select Task \ue001: Back": "",
"Destination:": "",
"Select %s:": "",
"version": "",
"Delete from:": "",
"slot": "",
"Empty": "",
"Used": "",
"Select SD user to copy from:": "",
"all users": "",
"Has Save": "",
"Select Wii U user to delete from:": "",
"Select Wii U user%s:": "",
" to copy from": "",
" to copy to": "",
"Date: %s": "",
"Include 'common' save?": "",
"yes": "",
"no ": "",
"No 'common' save found.": "",
"\ue000: Restore \ue001: Back": "",
"\ue000: Wipe \ue001: Back": "",
"\ue000: Import \ue001: Back": "",
"\ue000: Export \ue001: Back": "",
"\ue000: Copy \ue001: Back": "",
"Press \ue044 to exit.": "",
"No Wii U titles found.": "",
"No vWii saves found.": "",
"CBHC save. Could be dangerous to modify. Continue?": "",
"Are you REALLY sure?": "",
"vWii saves are in the vWii section. Continue?": "",
"Recommended to run Game at least one time. Continue?": "",
"No save to Backup.": "",
"No save to Wipe.": "",
"No save to Export.": "",
"No save to Copy.": "",
"Copying file: %s": "",
"From: %s": "",
"To: %s": "",
"\ue000 Yes - \ue001 No": "",
"\ue000 Confirm - \ue001 Cancel": "",
"Filesize: %d bytes": "",
"Deleting folder %s": "",
"From: \n%s": "",
"Failed to delete folder %s\n%s": "",
"Deleting file %s": "",
"Failed to delete file %s\n%s": "",
"Loadiine game folder not found.": "",
"Failed to open Loadiine game save directory.": "",
"Are you sure?": "",
"Backup current savedata first to next empty slot?": "",
"Backup done. Now copying Savedata.": "",
"Common save not found.": "",
"Copy failed.": "",
"Backup failed.": "",
"Backup found on this slot. Overwrite it?": "",
"No save found for this user.": "",
"Backup failed. DO NOT restore from this slot.": "",
"No backup found on selected slot.": "",
"Restore failed.": "",
"Hm, are you REALLY sure?": "",
"Backup current savedata first?": "",
"Failed to delete common folder.\n%s": "",
"Failed to delete savefile.": "",
"Failed to delete user folder.\n%s": "",
"Failed to import savedata from loadiine.": "",
"Failed to export savedata to loadiine.": ""
"Disclaimer:": "Disclaimer:",
"There is always the potential for a brick.": "There is always the potential for a brick.",
"Everything you do with this software is your own responsibility": "Everything you do with this software is your own responsibility",
"Out of memory.": "Out of memory.",
"Loaded %i Wii U titles.": "Loaded %i Wii U titles.",
"%s%s (No banner.bin)": "%s%s (No banner.bin)",
"Loaded %i Wii titles.": "Loaded %i Wii titles.",
"None": "None",
"Name": "Name",
"Storage": "Storage",
"Storage+Name": "Storage+Name",
"initFS failed. Please make sure your MochaPayload is up-to-date": "initFS failed. Please make sure your MochaPayload is up-to-date",
" Wii U Save Management (%u Title%s)": " Wii U Save Management (%u Title%s)",
" vWii Save Management (%u Title%s)": " vWii Save Management (%u Title%s)",
" Batch Backup": " Batch Backup",
"\uE002: Options \ue000: Select Mode": "\uE002: Options \ue000: Select Mode",
" Backup All (%u Title%s)": " Backup All (%u Title%s)",
" Backup Wii U (%u Title%s)": " Backup Wii U (%u Title%s)",
" Backup vWii (%u Title%s)": " Backup vWii (%u Title%s)",
"\ue000: Backup \ue001: Back": "\ue000: Backup \ue001: Back",
"%s Sort: %s \ue084": "%s Sort: %s \ue084",
" [Not Init]": " [Not Init]",
"\ue000: Select Game \ue001: Back": "\ue000: Select Game \ue001: Back",
" Backup savedata": " Backup savedata",
" Restore savedata": " Restore savedata",
" Wipe savedata": " Wipe savedata",
" Import from loadiine": " Import from loadiine",
" Export to loadiine": " Export to loadiine",
" Copy Savedata to Title in %s": " Copy Savedata to Title in %s",
"\ue000: Select Task \ue001: Back": "\ue000: Select Task \ue001: Back",
"Destination:": "Destination:",
"Select %s:": "Select %s:",
"version": "version",
"Delete from:": "Delete from:",
"slot": "slot",
"Empty": "Empty",
"Used": "Used",
"Select SD user to copy from:": "Select SD user to copy from:",
"all users": "all users",
"Has Save": "Has Save",
"Select Wii U user to delete from:": "Select Wii U user to delete from:",
"Select Wii U user%s:": "Select Wii U user%s:",
" to copy from": " to copy from",
" to copy to": " to copy to",
"Date: %s": "Date: %s",
"Include 'common' save?": "Include 'common' save?",
"yes": "yes",
"no ": "no ",
"No 'common' save found.": "No 'common' save found.",
"\ue000: Restore \ue001: Back": "\ue000: Restore \ue001: Back",
"\ue000: Wipe \ue001: Back": "\ue000: Wipe \ue001: Back",
"\ue000: Import \ue001: Back": "\ue000: Import \ue001: Back",
"\ue000: Export \ue001: Back": "\ue000: Export \ue001: Back",
"\ue000: Copy \ue001: Back": "\ue000: Copy \ue001: Back",
"Press \ue044 to exit.": "Press \ue044 to exit.",
"No Wii U titles found.": "No Wii U titles found.",
"No vWii saves found.": "No vWii saves found.",
"CBHC save. Could be dangerous to modify. Continue?": "CBHC save. Could be dangerous to modify. Continue?",
"Are you REALLY sure?": "Are you REALLY sure?",
"vWii saves are in the vWii section. Continue?": "vWii saves are in the vWii section. Continue?",
"Recommended to run Game at least one time. Continue?": "Recommended to run Game at least one time. Continue?",
"No save to Backup.": "No save to Backup.",
"No save to Wipe.": "No save to Wipe.",
"No save to Export.": "No save to Export.",
"No save to Copy.": "No save to Copy.",
"Copying file: %s": "Copying file: %s",
"From: %s": "From: %s",
"To: %s": "To: %s",
"\ue000 Yes - \ue001 No": "\ue000 Yes - \ue001 No",
"\ue000 Confirm - \ue001 Cancel": "\ue000 Confirm - \ue001 Cancel",
"Filesize: %d bytes": "Filesize: %d bytes",
"Deleting folder %s": "Deleting folder %s",
"From: \n%s": "From: \n%s",
"Failed to delete folder %s\n%s": "Failed to delete folder %s\n%s",
"Deleting file %s": "Deleting file %s",
"Failed to delete file %s\n%s": "Failed to delete file %s\n%s",
"Loadiine game folder not found.": "Loadiine game folder not found.",
"Failed to open Loadiine game save directory.": "Failed to open Loadiine game save directory.",
"Are you sure?": "Are you sure?",
"Backup current savedata first to next empty slot?": "Backup current savedata first to next empty slot?",
"Backup done. Now copying Savedata.": "Backup done. Now copying Savedata.",
"Common save not found.": "Common save not found.",
"Copy failed.": "Copy failed.",
"Backup failed.": "Backup failed.",
"Backup found on this slot. Overwrite it?": "Backup found on this slot. Overwrite it?",
"No save found for this user.": "No save found for this user.",
"Backup failed. DO NOT restore from this slot.": "Backup failed. DO NOT restore from this slot.",
"No backup found on selected slot.": "No backup found on selected slot.",
"Restore failed.": "Restore failed.",
"Hm, are you REALLY sure?": "Hm, are you REALLY sure?",
"Backup current savedata first?": "Backup current savedata first?",
"Failed to delete common folder.\n%s": "Failed to delete common folder.\n%s",
"Failed to delete savefile.": "Failed to delete savefile.",
"Failed to delete user folder.\n%s": "Failed to delete user folder.\n%s",
"Failed to import savedata from loadiine.": "Failed to import savedata from loadiine.",
"Failed to export savedata to loadiine.": "Failed to export savedata to loadiine."
}

View File

@ -14,14 +14,14 @@
" Wii U Save Management (%u Title%s)": " Gestione di salvataggio Wii U (%u Titolo%s)",
" vWii Save Management (%u Title%s)": " gestione di salvataggio vWii (%u Titolo%s)",
" Batch Backup": " Backup Batch",
"\ue000: Select Mode": "\ue000: Seleziona La Modalità",
"\uE002: Options \ue000: Select Mode": "\uE002: Opzioni \ue000: Seleziona La Modalità",
" Backup All (%u Title%s)": " Backup di tutto (%u titolo%s)",
" Backup Wii U (%u Title%s)": " Backup Wii U (%u Titolo%s)",
" Backup vWii (%u Title%s)": " Backup vWii (%u Titolo%s)",
"\ue000: Backup \ue001: Back": "\ue000: Backup <unk>: Indietro",
"\ue000: Backup \ue001: Back": "\ue000: Backup \ue001: Indietro",
"%s Sort: %s \ue084": "%s Ordinamento: %s \ue084",
" [Not Init]": " [Non Init]",
"\ue000: Select Game \ue001: Back": "\ue000: Seleziona Partita \ue001:Indietro",
"\ue000: Select Game \ue001: Back": "\ue000: Seleziona Partita \ue001: Indietro",
" Backup savedata": " Backup salvataggio",
" Restore savedata": " Ripristina salvataggio",
" Wipe savedata": " Pulisci salvataggio",
@ -44,15 +44,15 @@
" to copy from": " per copiare da",
" to copy to": " per copiare su",
"Date: %s": "Data: %s",
"Include 'common' save?": "Includi salvataggio 'comuni'?",
"Include 'common' save?": "Includi salvataggio 'common'?",
"yes": "sì",
"no ": "no ",
"No 'common' save found.": "Nessun salvataggio 'comune' trovato.",
"\ue000: Restore \ue001: Back": "\ue000: Ripristina \ue001: Indietro",
"\ue000: Wipe \ue001: Back": "\ue000: Pulire \ue001:Indietro",
"\ue000: Import \ue001: Back": "\ue000: Importa \ue001:Indietro",
"\ue000: Export \ue001: Back": "\ue000: Esporta \ue001:Indietro",
"\ue000: Copy \ue001: Back": "\ue000: Copia \ue001:Indietro",
"\ue000: Wipe \ue001: Back": "\ue000: Pulire \ue001: Indietro",
"\ue000: Import \ue001: Back": "\ue000: Importa \ue001: Indietro",
"\ue000: Export \ue001: Back": "\ue000: Esporta \ue001: Indietro",
"\ue000: Copy \ue001: Back": "\ue000: Copia \ue001: Indietro",
"Press \ue044 to exit.": "Premi \ue044 per uscire.",
"No Wii U titles found.": "Nessun titolo Wii U trovato.",
"No vWii saves found.": "Nessun salvataggio vWii trovato.",
@ -70,11 +70,11 @@
"\ue000 Yes - \ue001 No": "\ue000 Sì - \ue001 No",
"\ue000 Confirm - \ue001 Cancel": "\ue000 Conferma - \ue001 Annulla",
"Filesize: %d bytes": "Dimensione file: %d byte",
"Deleting folder %s": "Eliminazione cartella '%s'",
"From: \n%s": "Da: %s",
"Failed to delete folder %s\n%s": "Non è stato possibile eliminare il file %s %s",
"Deleting file %s": "Eliminazione cartella '%s'",
"Failed to delete file %s\n%s": "Non è stato possibile eliminare il file %s %s",
"Deleting folder %s": "Eliminazione cartella %s",
"From: \n%s": "Da: \n%s",
"Failed to delete folder %s\n%s": "Non è stato possibile eliminare il file %s\n%s",
"Deleting file %s": "Eliminazione cartella %s",
"Failed to delete file %s\n%s": "Non è stato possibile eliminare il file %s\n%s",
"Loadiine game folder not found.": "Cartella di gioco Loadiine non trovata.",
"Failed to open Loadiine game save directory.": "Apertura della directory di salvataggio del gioco Loadiine non riuscita.",
"Are you sure?": "Sei sicuro?",
@ -92,7 +92,7 @@
"Backup current savedata first?": "Salvare prima il salvataggio corrente?",
"Failed to delete common folder.\n%s": "Impossibile eliminare la cartella comune.\n%s",
"Failed to delete savefile.": "Non è stato possibile eliminare il salvataggio.",
"Failed to delete user folder.\n%s": "Impossibile eliminare la cartella. %s",
"Failed to delete user folder.\n%s": "Impossibile eliminare la cartella.\n%s",
"Failed to import savedata from loadiine.": "Impossibile importare salvataggi da loadiine.",
"Failed to export savedata to loadiine.": "Impossibile importare salvataggi da loadiine."
}

View File

@ -11,23 +11,23 @@
"Storage": "ストレージ",
"Storage+Name": "ストレージ+名前",
"initFS failed. Please make sure your MochaPayload is up-to-date": "initFS が失敗しました。 MochaPayload が最新であることを確認してください",
" Wii U Save Management (%u Title%s)": "Wii U セーブ管理 (%u タイトル%s)",
" vWii Save Management (%u Title%s)": "vWii セーブ管理 (%u タイトル%s)",
" Batch Backup": "バッチバックアップ",
"\ue000: Select Mode": "\ue000: モードの選択",
" Backup All (%u Title%s)": "すべてバックアップ (%u タイトル%s)",
" Backup Wii U (%u Title%s)": "バックアップ Wii U (%u タイトル%s)",
" Backup vWii (%u Title%s)": "バックアップ vWii (%u タイトル%s)",
" Wii U Save Management (%u Title%s)": " Wii U セーブ管理 (%u タイトル%s)",
" vWii Save Management (%u Title%s)": " vWii セーブ管理 (%u タイトル%s)",
" Batch Backup": " バッチバックアップ",
"\uE002: Options \ue000: Select Mode": "\uE002: オプション \ue000: モードの選択",
" Backup All (%u Title%s)": " すべてバックアップ (%u タイトル%s)",
" Backup Wii U (%u Title%s)": " バックアップ Wii U (%u タイトル%s)",
" Backup vWii (%u Title%s)": " バックアップ vWii (%u タイトル%s)",
"\ue000: Backup \ue001: Back": "\ue000: バックアップ \ue001: 戻る",
"%s Sort: %s \ue084": "%s 並べ替え: %s \ue084",
" [Not Init]": "[初期化しない]",
"\ue000: Select Game \ue001: Back": "\ue000: ゲームを選択 \ue001: 戻る",
" Backup savedata": "セーブデータのバックアップ",
" Restore savedata": "セーブデータの復元",
" Wipe savedata": "セーブデータを消去",
" Import from loadiine": "ローディーンからインポート",
" Export to loadiine": "ローディーンにエクスポート",
" Copy Savedata to Title in %s": "セーブデータを %s のタイトルにコピー",
" Backup savedata": " セーブデータのバックアップ",
" Restore savedata": " セーブデータの復元",
" Wipe savedata": " セーブデータを消去",
" Import from loadiine": " ローディーンからインポート",
" Export to loadiine": " ローディーンにエクスポート",
" Copy Savedata to Title in %s": " セーブデータを %s のタイトルにコピー",
"\ue000: Select Task \ue001: Back": "\ue000: タスクを選択 \ue001: 戻る",
"Destination:": "行き先:",
"Select %s:": "%s を選択:",
@ -41,8 +41,8 @@
"Has Save": "保存あり",
"Select Wii U user to delete from:": "削除するWii Uユーザーを選択:",
"Select Wii U user%s:": "Wii Uユーザー%sを選択:",
" to copy from": "からコピーする",
" to copy to": "コピーする",
" to copy from": " からコピーする",
" to copy to": " コピーする",
"Date: %s": "日付: %s",
"Include 'common' save?": "「共通」保存を含めますか?",
"yes": "はい",
@ -95,4 +95,4 @@
"Failed to delete user folder.\n%s": "ユーザー フォルダの削除に失敗しました。\n%s",
"Failed to import savedata from loadiine.": "loadiine からセーブデータをインポートできませんでした。",
"Failed to export savedata to loadiine.": "セーブデータを loadiine にエクスポートできませんでした。"
}
}

View File

@ -14,7 +14,7 @@
" Wii U Save Management (%u Title%s)": " Wii U 저장 관리 (%u 타이틀%s)",
" vWii Save Management (%u Title%s)": " vWii 저장 관리(%u 타이틀%s)",
" Batch Backup": " 일괄 백업",
"\ue000: Select Mode": "\ue000: 모드 선택",
"\uE002: Options \ue000: Select Mode": "\uE002: 옵션 \ue000: 모드 선택",
" Backup All (%u Title%s)": " 모두 백업 (%u 타이틀%s)",
" Backup Wii U (%u Title%s)": " Wii U 백업 (%u 타이틀%s)",
" Backup vWii (%u Title%s)": " vWii 백업 (%u 타이틀%s)",
@ -95,4 +95,4 @@
"Failed to delete user folder.\n%s": "사용자 폴더를 삭제하지 못했습니다.\n%s",
"Failed to import savedata from loadiine.": "loadiine에서 저장 데이터를 가져오지 못했습니다.",
"Failed to export savedata to loadiine.": "저장 데이터를 loadiine으로 내보내지 못했습니다."
}
}

View File

@ -14,7 +14,7 @@
" Wii U Save Management (%u Title%s)": " Управление сохранениями Wii U (%u Имя%s)",
" vWii Save Management (%u Title%s)": " Управление сохранениями vWii (%u Имя%s)",
" Batch Backup": " Пакетный бекап",
": Select Mode": ": Выбор режима",
"\uE002: Options \ue000: Select Mode": "\uE002: Опции \ue000: Выбор режима",
" Backup All (%u Title%s)": " Сделать бекап для всех (%u Имя%s)",
" Backup Wii U (%u Title%s)": " Бекап только для Wii U (%u Имя%s)",
" Backup vWii (%u Title%s)": " Бекап только для vWii (%u Имя%s)",

View File

@ -14,7 +14,7 @@
" Wii U Save Management (%u Title%s)": " Gestión de saves de Wii U (%u Título%s)",
" vWii Save Management (%u Title%s)": " Gestión de saves de vWii (%u Título%s)",
" Batch Backup": " Copia de seguridad en masa",
"\ue000: Select Mode": "\ue000: Seleccionar",
"\uE002: Options \ue000: Select Mode": "\uE002: Opciones \ue000: Seleccionar",
" Backup All (%u Title%s)": " Copiar Todo (%u Título%s)",
" Backup Wii U (%u Title%s)": " Copiar Wii U (%u Título%s)",
" Backup vWii (%u Title%s)": " Copiar vWii (%u Título%s)",

79
src/configMenu.cpp Normal file
View File

@ -0,0 +1,79 @@
#include <configMenu.h>
#include <cstring>
#include <draw.h>
#include <input.h>
#include <language.h>
#include <savemng.h>
#include <state.h>
static int cursorPos = 0;
static bool redraw = true;
static std::string language = "";
static void drawConfigMenuFrame() {
OSScreenClearBufferEx(SCREEN_DRC, 0x00006F00);
OSScreenClearBufferEx(SCREEN_TV, 0x00006F00);
consolePrintPos(0, 0, "SaveMii v%u.%u.%u", VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO);
consolePrintPos(0, 1, "----------------------------------------------------------------------------");
consolePrintPos(M_OFF, 2, gettext(" Language: %s"), language.c_str());
consolePrintPos(M_OFF, 2 + cursorPos, "\u2192");
consolePrintPos(0, 16, "----------------------------------------------------------------------------");
consolePrintPos(0, 17, gettext("Press \ue044 to exit."));
flipBuffers();
WHBLogFreetypeDraw();
}
void configMenu() {
Input input;
language = getLoadedLanguage();
while (AppRunning()) {
input.read();
if (input.get(TRIGGER, PAD_BUTTON_ANY))
redraw = true;
if (input.get(TRIGGER, PAD_BUTTON_B))
break;
if (input.get(TRIGGER, PAD_BUTTON_RIGHT)) {
if (language == gettext("Japanese"))
loadLanguage(Swkbd_LanguageType__Italian);
else if (language == gettext("Italian"))
loadLanguage(Swkbd_LanguageType__Spanish);
else if (language == gettext("Spanish"))
loadLanguage(Swkbd_LanguageType__Chinese1);
else if (language == gettext("Traditional Chinese"))
loadLanguage(Swkbd_LanguageType__Korean);
else if (language == gettext("Korean"))
loadLanguage(Swkbd_LanguageType__Russian);
else if (language == gettext("Russian"))
loadLanguage(Swkbd_LanguageType__Chinese2);
else if (language == gettext("Simplified Chinese"))
loadLanguage(Swkbd_LanguageType__English);
else if (language == gettext("English"))
loadLanguage(Swkbd_LanguageType__Japanese);
}
if (input.get(TRIGGER, PAD_BUTTON_LEFT)) {
if (language == gettext("Japanese"))
loadLanguage(Swkbd_LanguageType__English);
else if (language == gettext("English"))
loadLanguage(Swkbd_LanguageType__Chinese2);
else if (language == gettext("Simplified Chinese"))
loadLanguage(Swkbd_LanguageType__Russian);
else if (language == gettext("Russian"))
loadLanguage(Swkbd_LanguageType__Korean);
else if (language == gettext("Korean"))
loadLanguage(Swkbd_LanguageType__Chinese1);
else if (language == gettext("Traditional Chinese"))
loadLanguage(Swkbd_LanguageType__Spanish);
else if (language == gettext("Spanish"))
loadLanguage(Swkbd_LanguageType__Italian);
else if (language == gettext("Italian"))
loadLanguage(Swkbd_LanguageType__Japanese);
}
if (redraw) {
language = getLoadedLanguage();
drawConfigMenuFrame();
redraw = false;
}
}
return;
}

View File

@ -55,6 +55,12 @@ bool Input::get(ButtonState state, Button button) {
if (kpadClassicState & WPAD_CLASSIC_BUTTON_B) return true;
if (kpadProState & WPAD_PRO_BUTTON_B) return true;
break;
case PAD_BUTTON_X:
if (vpadState & VPAD_BUTTON_X) return true;
if (kpadState & WPAD_BUTTON_1) return true;
if (kpadClassicState & WPAD_CLASSIC_BUTTON_X) return true;
if (kpadProState & WPAD_PRO_BUTTON_X) return true;
break;
case PAD_BUTTON_UP:
if (vpadState & VPAD_BUTTON_UP) return true;
if (vpadState & VPAD_STICK_L_EMULATION_UP) return true;

View File

@ -1,3 +1,5 @@
#include "log_freetype.h"
#include <cstdio>
#include <language.h>
#include <savemng.h>
@ -20,14 +22,19 @@ static MSG *baseMSG = NULL;
Swkbd_LanguageType sysLang;
Swkbd_LanguageType loadedLang;
void loadLanguage(Swkbd_LanguageType language) {
loadedLang = language;
switch (language) {
case Swkbd_LanguageType__Japanese:
setFont(OS_SHAREDDATATYPE_FONT_STANDARD);
gettextLoadLanguage("romfs:/japanese.json");
break;
/*case Swkbd_LanguageType__English:
gettextLoadLanguage("romfs:/english.json");
break;*/
case Swkbd_LanguageType__English:
setFont(OS_SHAREDDATATYPE_FONT_STANDARD);
gettextLoadLanguage("romfs:/english.json");
break;
/*case Swkbd_LanguageType__French:
gettextLoadLanguage("romfs:/french.json");
break;
@ -35,15 +42,19 @@ void loadLanguage(Swkbd_LanguageType language) {
gettextLoadLanguage("romfs:/german.json");
break;*/
case Swkbd_LanguageType__Italian:
setFont(OS_SHAREDDATATYPE_FONT_STANDARD);
gettextLoadLanguage("romfs:/italian.json");
break;
case Swkbd_LanguageType__Spanish:
setFont(OS_SHAREDDATATYPE_FONT_STANDARD);
gettextLoadLanguage("romfs:/spanish.json");
break;
case Swkbd_LanguageType__Chinese1:
setFont(OS_SHAREDDATATYPE_FONT_CHINESE);
gettextLoadLanguage("romfs:/TChinese.json");
break;
case Swkbd_LanguageType__Korean:
setFont(OS_SHAREDDATATYPE_FONT_KOREAN);
gettextLoadLanguage("romfs:/korean.json");
break;
/*
@ -54,13 +65,61 @@ void loadLanguage(Swkbd_LanguageType language) {
gettextLoadLanguage("romfs:/portuguese.json");
break;*/
case Swkbd_LanguageType__Russian:
setFont(OS_SHAREDDATATYPE_FONT_STANDARD);
gettextLoadLanguage("romfs:/russian.json");
break;
case Swkbd_LanguageType__Chinese2:
setFont(OS_SHAREDDATATYPE_FONT_CHINESE);
gettextLoadLanguage("romfs:/SChinese.json");
break;
default:
//gettextLoadLanguage("romfs:/english.json");
setFont(OS_SHAREDDATATYPE_FONT_STANDARD);
gettextLoadLanguage("romfs:/english.json");
break;
}
}
std::string getLoadedLanguage() {
switch (loadedLang) {
case Swkbd_LanguageType__Japanese:
return gettext("Japanese");
break;
case Swkbd_LanguageType__English:
return gettext("English");
break;
/*case Swkbd_LanguageType__French:
gettextLoadLanguage("romfs:/french.json");
break;
case Swkbd_LanguageType__German:
gettextLoadLanguage("romfs:/german.json");
break;*/
case Swkbd_LanguageType__Italian:
return gettext("Italian");
break;
case Swkbd_LanguageType__Spanish:
return gettext("Spanish");
break;
case Swkbd_LanguageType__Chinese1:
return gettext("Traditional Chinese");
break;
case Swkbd_LanguageType__Korean:
return gettext("Korean");
break;
/*
case Swkbd_LanguageType__Dutch:
gettextLoadLanguage("romfs:/dutch.json");
break;
case Swkbd_LanguageType__Potuguese:
gettextLoadLanguage("romfs:/portuguese.json");
break;*/
case Swkbd_LanguageType__Russian:
return gettext("Russian");
break;
case Swkbd_LanguageType__Chinese2:
return gettext("Simplified Chinese");
break;
default:
return gettext("English");
break;
}
}

View File

@ -143,6 +143,23 @@ bool WHBLogFreetypeInit() {
return false;
}
bool setFont(OSSharedDataType font) {
FT_Error result;
if ((result = FT_Init_FreeType(&fontLibrary)) != 0)
return true;
uint32_t fontSize;
OSGetSharedData(font, 0, (void **) &fontBuffer, &fontSize);
if ((result = FT_New_Memory_Face(fontLibrary, fontBuffer, fontSize, 0, &fontFace)) != 0)
return true;
if ((result = FT_Select_Charmap(fontFace, FT_ENCODING_UNICODE)) != 0)
return true;
if ((result = FT_Set_Pixel_Sizes(fontFace, 0, 22)))
return true;
return false;
}
void WHBLogFreetypeFree() {
FT_Done_Face(fontFace);
FT_Done_FreeType(fontLibrary);

View File

@ -1,4 +1,6 @@
#include <configMenu.h>
#include <icon.h>
#include <input.h>
#include <json.h>
#include <language.h>
#include <log_freetype.h>
@ -8,11 +10,6 @@
#include <state.h>
#include <string.hpp>
#define VERSION_MAJOR 1
#define VERSION_MINOR 4
#define VERSION_MICRO 8
#define M_OFF 1
static uint8_t slot = 0;
static int8_t allusers = -1, allusers_d = -1, sdusers = -1;
static bool common = true;
@ -476,7 +473,7 @@ int main() {
(vWiiTitlesCount > 1) ? "s" : "");
consolePrintPos(M_OFF, 4, gettext(" Batch Backup"));
consolePrintPos(M_OFF, 2 + cursor, "\u2192");
consolePrintPosAligned(17, 4, 2, gettext("\ue000: Select Mode"));
consolePrintPosAligned(17, 4, 2, gettext("\uE002: Options \ue000: Select Mode"));
} break;
case selectTitle: {
if (mode == batchBackup) {
@ -1055,6 +1052,8 @@ int main() {
}
if (menu == selectTask)
cursor = cursort;
} else if (input.get(TRIGGER, PAD_BUTTON_X) && menu == mainMenu) {
configMenu();
}
}