1
0
mirror of synced 2024-11-27 17:00:50 +01:00

Add visuals while importing Score.ini files (#680)

This commit is contained in:
DragonRatTiger / リュウコ 2024-09-28 02:56:00 -05:00 committed by GitHub
parent 35664808bf
commit be18ecd036
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 4225 additions and 4099 deletions

View File

@ -50,8 +50,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "Reload the song folder.",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "Reload Songs (Hard Reload)",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Clear the existing cache and\nreload the song folder from scratch.",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "Hide Dan/Tower",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Hide Dan and Tower charts\nin the Taiko Mode menu.\nNote: Reload songs to make\n this setting take effect.",

View File

@ -51,8 +51,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "Recarga y actualiza la lista de canciones.",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "Reload Songs (Hard Reload)",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Clear the existing cache and\nreload the song folder from scratch.",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "Ocultar Dans/Torres",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Ocultar charts de Dans y torres\nen el menú de Modo Taiko.\nNota: Recarga las canciones para\n aplicar los cambios.",

View File

@ -50,8 +50,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "Met à jour et récupère les\nmodifications effectuées sur\nla liste de sons.",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "Vider le cache et recharger les sons",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Supprime le fichier de base\nde données et recharge les sons.",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "Masquer Dan/Tour",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Masque les sons de type Dan ou\nTour dans le menu Partie rapide.\nNote: Cette option prend effet\n après le rechargement des sons.",

View File

@ -50,8 +50,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "曲データの一覧情報を取得し直します。",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "キャッシュをクリアして曲データ再読み込み",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "キャッシュをクリアして曲データの一覧情報を取得し直します。",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "段・タワー譜面省略",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "演奏選曲画面にタワー及び\n段の譜面を省略設定です。\nONに設けると別々の画面\nにしか表示されていません。\n※ 設定は譜面の再読み込み時\n に有効になります。",

View File

@ -50,8 +50,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "Reload the song folder.",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "Reload Songs (Hard Reload)",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Clear the existing cache and\nreload the song folder from scratch.",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "Hide Dan/Tower",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Hide Dan and Tower charts\nin the Taiko Mode menu.\nNote: Reload songs to make\n this setting take effect.",

View File

@ -51,6 +51,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "Herlaad de folder voor nummers.",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "Nummers Herladen (Hard Herladen)",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Wist de opgeslagen cache en \nherlaadt de Nummers map vanaf nul.",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "Dan/Toren Verbergen",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Verberg de Dan en Toren nummers\nin de Taiko Modus.\nOpmerking: Herlaad de nummers\nom dit te activeren.",

View File

@ -50,8 +50,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "Перезагружает папки песен.",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "Перезагрузка песен (Жёсткая)",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "Удаляет существующую базу данных и\nперезагружает папки песен с нуля.",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "Спрятать Дан и Башни",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "Скрыт партитуры Дан и Башен в меню Режима\nТайко.\nПримечание: Перезагрузите песни, чтобы\n настройки вступили в силу.",

View File

@ -50,8 +50,18 @@
"SETTINGS_SYSTEM_RELOADSONG_DESC": "重新扫描曲目文件夹并载入曲目。",
"SETTINGS_SYSTEM_RELOADSONGCACHE": "重新载入曲目(硬重新加载)",
"SETTINGS_SYSTEM_RELOADSONGCACHE_DESC": "删除既有数据库并从空白重新扫描曲目文件夹并载入曲目。",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, Adlib, Bomb, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI": "Import Score.ini Files",
"SETTINGS_SYSTEM_IMPORTSCOREINI_DESC": "Imports Score.ini files to the database.\n\n<c.#f0ad4e>WARNING\nThe following will not be transferred:\n- Clear statuses\n- Gameplay modifiers\n- # of hits (Good, Ok, Bad, Drumroll, etc.)\n- Dan exam scores",
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1": "Searching for scores...",
// {0}: Total # of score.ini files to be processed
// {1}: # of score.ini files successfully imported
// {2}: # of score.ini files currently processed
// {3}: # of score.ini files skipped
// {4}: # of score.ini files that failed to import due to an error
// {5}: Name of the current score.ini file being processed.
"SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2": "Processing {0} scores...\n<c.#0bb000>{1} of {2} imported</c> (<c.#f0ad4e>{3} skipped</c> / <c.#b00000>{4} failed</c>)\n\n{5}",
"SETTINGS_SYSTEM_HIDEDANTOWER": "隐藏段位/塔",
"SETTINGS_SYSTEM_HIDEDANTOWER_DESC": "在太鼓模式菜单中隐藏段位和塔谱面。\n重新载入曲目以使此选项生效。",

View File

@ -8,7 +8,9 @@ namespace OpenTaiko {
public static void ImportScoreInisToSavesDb3() {
Trace.TraceInformation("Importing score.ini files to Saves.db3 database!");
Status = "Establishing connection to database...";
//Status = "Establishing connection to database..."; // I don't think the player needs to know this info ¯\_(ツ)_/¯
Status = CLangManager.LangInstance.GetString("SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS1");
SqliteConnection? connection = DBSaves.GetSavesDBConnection();
if (connection == null) {
Trace.TraceError("Could not establish a connection to Saves.db3 database. Aborting score import.");
@ -16,16 +18,23 @@ namespace OpenTaiko {
return;
}
Status = "Searching for scores...";
List<string> _scoreFiles = new List<string>();
foreach (string path in OpenTaiko.ConfigIni.strSongsPath.Split(';', StringSplitOptions.RemoveEmptyEntries)) {
_scoreFiles.AddRange(Directory.GetFiles(path, "*.score.ini", SearchOption.AllDirectories));
}
Trace.TraceInformation($"{_scoreFiles.Count} score.ini files have been found. Beginning import.");
int importcount = 0;
Status = "Importing scores...";
int totalcount = 0;
int successcount = 0;
int skipcount = 0;
int errorcount = 0;
foreach (string _score in _scoreFiles) {
Status = CLangManager.LangInstance.GetString("SETTINGS_SYSTEM_IMPORTSCOREINI_STATUS2", _scoreFiles.Count, successcount, totalcount, skipcount, errorcount, Path.GetFileName(_score));
//Status = $"Importing {_scoreFiles.Count} scores...\n{importcount} of {totalcount} imported ({skipcount} skipped / {errorcount} failed)\n\n{Path.GetFileName(_score)}";
//Trace.TraceInformation(Status);
try {
string directory = Path.GetDirectoryName(_score);
DirectoryInfo dir_parent = Directory.GetParent(directory);
@ -187,6 +196,7 @@ namespace OpenTaiko {
}
}
bool success = false;
for (int i = 0; i < Level.Length; i++) {
int score_index = i < 5 ? i : 0;
if (Level[i] != -1 && HighScore[score_index] > 0) {
@ -224,15 +234,17 @@ namespace OpenTaiko {
)
ON CONFLICT(ChartUniqueId,ChartDifficulty,PlayMods) DO NOTHING
";
if (cmd.ExecuteNonQuery() > 0)
importcount++;
if (cmd.ExecuteNonQuery() > 0) { successcount++; success = true; }
}
}
if (!success) { skipcount++; }
} catch (Exception ex) {
Trace.TraceWarning($"Failed to import {_score} into new database. More details:\n{ex}");
errorcount++;
}
finally { totalcount++; }
}
Trace.TraceInformation($"Imported {importcount} of {_scoreFiles.Count} scores from score.ini files.");
Trace.TraceInformation($"Imported {successcount} of {_scoreFiles.Count} scores from score.ini files. ({errorcount} failed imports; {skipcount} skipped imports;)");
Status = "";
}

View File

@ -706,8 +706,8 @@ namespace OpenTaiko {
OpenTaiko.stageSongSelect.actSongList.ResetSongIndex();
} else if (this.list項目リスト[this.n現在の選択項目] == this.isSystemImportingScore) {
// Running in a separate thread so the game doesn't freeze
Thread thread = new Thread(CScoreIni_Importer.ImportScoreInisToSavesDb3);
thread.Start();
ScoreIniImportThread = new Thread(CScoreIni_Importer.ImportScoreInisToSavesDb3);
ScoreIniImportThread.Start();
}
#endregion
}
@ -1681,6 +1681,16 @@ namespace OpenTaiko {
private CItemBase isSystemImportingScore;
//private CItemInteger iSystemMasterVolume; // #33700 2014.4.26 yyagi
public Thread ScoreIniImportThread { get; private set; }
public bool ScoreIniImportThreadIsActive
{
get
{
if (ScoreIniImportThread == null) return false;
return ScoreIniImportThread.IsAlive;
}
}
private int t前の項目(int nItem) {
if (--nItem < 0) {
nItem = this.list項目リスト.Count - 1;

View File

@ -377,6 +377,28 @@ namespace OpenTaiko {
actCalibrationMode.Update();
actCalibrationMode.Draw();
}
else if (actList.ScoreIniImportThreadIsActive) {
if (OpenTaiko.Tx.Tile_Black != null) {
OpenTaiko.Tx.Tile_Black.Opacity = 191;
for (int i = 0; i <= SampleFramework.GameWindowSize.Width; i += OpenTaiko.Tx.Tile_Black.szTextureSize.Width) {
for (int j = 0; j <= SampleFramework.GameWindowSize.Height; j += OpenTaiko.Tx.Tile_Black.szTextureSize.Height) {
OpenTaiko.Tx.Tile_Black.t2D描画(i, j);
}
}
OpenTaiko.Tx.Tile_Black.Opacity = 255;
}
using (var prvFont = HPrivateFastFont.tInstantiateMainFont(OpenTaiko.Skin.Config_Font_Scale)) {
using (var status_text = new CTexture(prvFont.DrawText(
CScoreIni_Importer.Status,
Color.White,
Color.Black,
null,
30,
true))) {
status_text.t2D_DisplayImage_AnchorCenter(SampleFramework.GameWindowSize.Width / 2, SampleFramework.GameWindowSize.Height / 2);
}
}
}
// 曲データの一覧取得中は、キー入力を無効化する
else if (!OpenTaiko.EnumSongs.IsEnumerating || OpenTaiko.actEnumSongs.bコマンドでの曲データ取得 != true) {
if (!OpenTaiko.Skin.bgmコンフィグ画面.bIsPlaying)