1
0
mirror of synced 2024-11-30 18:24:32 +01:00

Add an option to ignore song unlockables for lazy people, minor fix and skin issue (fix softlock)

This commit is contained in:
0auBSQ 2024-10-17 03:01:29 +09:00
parent b3e0ba1f72
commit 223259ecb3
10 changed files with 1741 additions and 1719 deletions

View File

@ -6,7 +6,8 @@
// "Language" should include the name of your language in its native text, as well as its English variant in parentheses.
// i.e. "日本語 (Japanese)"
"Language": "English",
"Language": "English",
"Version": "0.6.0.0",
"Entries": {
// Common
@ -196,6 +197,10 @@
"SETTINGS_TRAINING_JUMPINTERVAL": "Measure Jump Time Interval",
"SETTINGS_TRAINING_JUMPINTERVAL_DESC": "The amount of time in milliseconds needed to\nrepeatedly hit the Left/Right Blue keys in\norder to jump to a bookmarked measure in\nTraining Mode.",
// Settings - Gameplay - Unlockables
"SETTINGS_GAME_IGNORESONGUNLOCKABLES": "Ignore Song Unlockables",
"SETTINGS_GAME_IGNORESONGUNLOCKABLES_DESC": "Make all songs available ignoring SongUnlockables.db3.\nThis does not add unlock entries to Saves.db3.\nUnlock notifications will still appear on results.\n\n<c.#f0ad4e>WARNING\nHaving this option ON invalidates any speedrun.</c>",
// Settings - Broken/Unused/Might Deprecate/Might Update
// Translate these anyways, even if their future is uncertain.
"SETTINGS_SYSTEM_IMAGEPREVIEWBUFFER": "Image Preview Buffer",

View File

@ -196,6 +196,11 @@
"SETTINGS_TRAINING_JUMPINTERVAL": "Measure Jump Time Interval",
"SETTINGS_TRAINING_JUMPINTERVAL_DESC": "The amount of time in milliseconds needed to\nrepeatedly hit the Left/Right Blue keys in\norder to jump to a bookmarked measure in\nTraining Mode.",
// Settings - Gameplay - Unlockables
"SETTINGS_GAME_IGNORESONGUNLOCKABLES": "Ignorer SongUnlockables.db3",
"SETTINGS_GAME_IGNORESONGUNLOCKABLES_DESC": "Rend tout les sons accessibles.\nNe modifie pas directement Saves.db3.\nLes sons sont toujours débloqués normalement.\n\n<c.#f0ad4e>ATTENTION\nActiver cette option rend les speedruns invalides.</c>",
// Settings - Broken/Unused/Might Deprecate/Might Update
// Translate these anyways, even if their future is uncertain.
"SETTINGS_SYSTEM_IMAGEPREVIEWBUFFER": "Délai avant l'image",

View File

@ -196,6 +196,10 @@
"SETTINGS_TRAINING_JUMPINTERVAL": "Measure Jump Time Interval",
"SETTINGS_TRAINING_JUMPINTERVAL_DESC": "The amount of time in milliseconds needed to\nrepeatedly hit the Left/Right Blue keys in\norder to jump to a bookmarked measure in\nTraining Mode.",
// Settings - Gameplay - Unlockables
"SETTINGS_GAME_IGNORESONGUNLOCKABLES": "ロックされた曲のプレイ許可",
"SETTINGS_GAME_IGNORESONGUNLOCKABLES_DESC": "SongUnlockables.db3を無視してすべての曲を利用可能にする。\nSaves.db3にアンロックデータを追加されていません。\nアンロック通知は普通に結果画面に表示されます。\n\n<c.#f0ad4e>警告\nONにするとスピードランが無効になります。</c>",
// Settings - Broken/Unused/Might Deprecate/Might Update
// Translate these anyways, even if their future is uncertain.
"SETTINGS_SYSTEM_IMAGEPREVIEWBUFFER": "PreImageWait",

View File

@ -89,7 +89,7 @@ function registerNewModal(player, rarity, modal_type, modal_asset_informations,
-- > modal_asset_informations: CSongListNode
-- > modal_asset_visual_references: CTexture (Preimage)
_modal_header = getLocalizedString("MODAL_TITLE_SONG")
_modal_body = modal_current_info.ldTitle:GetString("")
_modal_body = (modal_current_info ~= nil) and modal_current_info.ldTitle:GetString("") or "??? (Not found)"
end
@ -99,7 +99,7 @@ function registerNewModal(player, rarity, modal_type, modal_asset_informations,
end
-- Tmp
modal_asset_id = math.max(1, math.min(5, modal_current_rarity))
modal_asset_id = math.max(1, math.min(5, modal_current_rarity + 1))
if modal_type ~= 0 then
modal_sfx[modal_asset_id]:PlayStart()

View File

@ -1178,6 +1178,7 @@ namespace OpenTaiko {
public bool bDisplayDebugInfo;
public bool bEnableVSync;
public bool bFullScreen;
public bool bIgnoreSongUnlockables;
public int nWindowBaseXPosition; // #30675 2013.02.04 ikanick add
public int nWindowBaseYPosition;
public int nWindowWidth; // #23510 2010.10.31 yyagi add
@ -1658,6 +1659,7 @@ namespace OpenTaiko {
public CConfigIni() {
this.strSongsPath = "Songs" + Path.DirectorySeparatorChar;
this.bFullScreen = false;
this.bIgnoreSongUnlockables = false;
this.bEnableVSync = true;
this.nWindowBaseXPosition = 100; // #30675 2013.02.04 ikanick add
this.nWindowBaseYPosition = 100;
@ -1970,6 +1972,9 @@ namespace OpenTaiko {
sw.WriteLine("; File paths on the Saves folder.");
sw.WriteLine("SaveFileName={0}", String.Join(",", this.sSaveFile));
sw.WriteLine();
sw.WriteLine("; Ignore song unlockables (0: No, 1: Yes)");
sw.WriteLine("IgnoreSongUnlockables={0}", this.bIgnoreSongUnlockables ? 1 : 0);
sw.WriteLine();
#endregion
@ -2728,6 +2733,8 @@ namespace OpenTaiko {
this.sSaveFile[i] = _s[i];
}
}
} else if (str3.Equals("IgnoreSongUnlockables")) {
this.bIgnoreSongUnlockables = CConversion.bONorOFF(str4[0]);
}
#region [ skin関係 ]

View File

@ -14,12 +14,6 @@
_modalQueues[player].Enqueue(mp);
}
public Modal tPopModal(int player) {
if (!tIsQueueEmpty(player))
return _modalQueues[player].Dequeue();
return null;
}
// 1P => 2P => 3P => 4P => 5P
public Modal? tPopModalInOrder() {
for (int i = 0; i < OpenTaiko.ConfigIni.nPlayerCount; i++) {

View File

@ -72,7 +72,7 @@ namespace OpenTaiko {
mq.tAddModal(
new Modal(
Modal.EModalType.Title,
HRarity.tRarityToLangInt(item.Value.rarity),
HRarity.tRarityToModalInt(item.Value.rarity),
item,
OpenTaiko.NamePlate.lcNamePlate
),

View File

@ -6,12 +6,14 @@ namespace OpenTaiko {
internal class DBSongUnlockables : CSavableT<Dictionary<string, SongUnlockable>> {
/* DISPLAYED : Song displayed in song select, only a lock appearing on the side, audio preview plays
* GRAYED : Box grayed, song preview does not play
* BLURED : Like grayed, but with a glitch effect on the song title and preimage making it unreadable
* HIDDEN : Song not appears on the song select list until being unlocked
*/
public enum EHiddenIndex {
DISPLAYED = 0,
GRAYED = 1,
HIDDEN = 2
BLURED = 2,
HIDDEN = 3
}
public DBSongUnlockables() {
@ -92,7 +94,7 @@ namespace OpenTaiko {
}
public bool tIsSongLocked(CSongListNode? song) {
if (song == null) return false;
if (song == null || OpenTaiko.ConfigIni.bIgnoreSongUnlockables) return false;
return !OpenTaiko.SaveFileInstances[OpenTaiko.SaveFile].data.UnlockedSongs.Contains(song.tGetUniqueId())
&& data.ContainsKey(song.tGetUniqueId());
}

View File

@ -374,6 +374,10 @@ namespace OpenTaiko {
CLangManager.LangInstance.GetString("SETTINGS_TRAINING_JUMPINTERVAL_DESC"));
this.list項目リスト.Add(TokkunMashInterval);
this.iTaikoIgnoreSongUnlockables = new CItemToggle(CLangManager.LangInstance.GetString("SETTINGS_GAME_IGNORESONGUNLOCKABLES"), OpenTaiko.ConfigIni.bIgnoreSongUnlockables,
CLangManager.LangInstance.GetString("SETTINGS_GAME_IGNORESONGUNLOCKABLES_DESC"));
this.list項目リスト.Add(this.iTaikoIgnoreSongUnlockables);
this.iDrumsGoToKeyAssign = new CItemBase(CLangManager.LangInstance.GetString("SETTINGS_KEYASSIGN_GAME"), CItemBase.EPanelType.Normal,
CLangManager.LangInstance.GetString("SETTINGS_KEYASSIGN_GAME_DESC"));
this.list項目リスト.Add(this.iDrumsGoToKeyAssign);
@ -1242,8 +1246,7 @@ namespace OpenTaiko {
if (this.list項目リスト[nItem] == this.iCommonPlaySpeed) {
double d = ((double)((CItemInteger)this.list項目リスト[nItem]).n現在の値) / 20.0;
strParam = d.ToString("0.000");
}
else {
} else {
strParam = ((CItemInteger)this.list項目リスト[nItem]).n現在の値.ToString();
}
b強調 = centerFlag && this.b要素値にフォーカス中;
@ -1519,6 +1522,7 @@ namespace OpenTaiko {
private CItemToggle iTaikoAutoPlay;
private CItemToggle iTaikoAutoPlay2P;
private CItemToggle iTaikoAutoRoll;
private CItemToggle iTaikoIgnoreSongUnlockables;
private CItemInteger iRollsPerSec;
private CItemInteger iAILevel;
@ -1660,6 +1664,7 @@ namespace OpenTaiko {
OpenTaiko.ConfigIni.bTight = this.iDrumsTight.bON;
OpenTaiko.ConfigIni.nGlobalOffsetMs = this.iGlobalOffsetMs.n現在の値;
OpenTaiko.ConfigIni.bIgnoreSongUnlockables = this.iTaikoIgnoreSongUnlockables.bON;
OpenTaiko.ConfigIni.nMinDisplayedCombo.Drums = this.iSystemMinComboDrums.n現在の値;
OpenTaiko.ConfigIni.nRisky = this.iSystemRisky.n現在の値; // #23559 2911.7.27 yyagi