remove deprecated DTX plugin references
This commit is contained in:
parent
b28c2f6c56
commit
4957d54710
@ -1,5 +1,4 @@
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Reflection;
|
||||
@ -370,7 +369,6 @@ namespace OpenTaiko {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
internal static IPluginActivity act現在入力を占有中のプラグイン = null;
|
||||
public bool b次のタイミングで垂直帰線同期切り替えを行う {
|
||||
get;
|
||||
set;
|
||||
@ -379,22 +377,6 @@ namespace OpenTaiko {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public CPluginHost PluginHost {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
public List<STPlugin> PluginList = new List<STPlugin>();
|
||||
public struct STPlugin {
|
||||
public IPluginActivity plugin;
|
||||
public string pluginDirectory;
|
||||
public string assemblyName;
|
||||
public Version Version;
|
||||
}
|
||||
private static Size currentClientSize // #23510 2010.10.27 add yyagi to keep current window size
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public static DiscordRpcClient DiscordClient;
|
||||
|
||||
// 0 : 1P, 1 : 2P
|
||||
@ -550,24 +532,12 @@ namespace OpenTaiko {
|
||||
foreach (CActivity activity in this.listトップレベルActivities)
|
||||
activity.CreateUnmanagedResource();
|
||||
}
|
||||
|
||||
foreach (STPlugin st in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(st.pluginDirectory);
|
||||
st.plugin.OnUnmanagedリソースの作成();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
}
|
||||
protected override void UnloadContent() {
|
||||
if (this.listトップレベルActivities != null) {
|
||||
foreach (CActivity activity in this.listトップレベルActivities)
|
||||
activity.ReleaseUnmanagedResource();
|
||||
}
|
||||
|
||||
foreach (STPlugin st in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(st.pluginDirectory);
|
||||
st.plugin.OnUnmanagedリソースの解放();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
}
|
||||
protected override void OnExiting() {
|
||||
ConfigIni.nWindowBaseXPosition = WindowPosition.X;
|
||||
@ -607,22 +577,6 @@ namespace OpenTaiko {
|
||||
OpenTaiko.NamePlate.lcNamePlate.Update();
|
||||
this.n進行描画の戻り値 = (r現在のステージ != null) ? r現在のステージ.Draw() : 0;
|
||||
|
||||
#region [ プラグインの進行描画 ]
|
||||
//---------------------
|
||||
foreach (STPlugin sp in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(sp.pluginDirectory);
|
||||
|
||||
if (OpenTaiko.act現在入力を占有中のプラグイン == null || OpenTaiko.act現在入力を占有中のプラグイン == sp.plugin)
|
||||
sp.plugin.On進行描画(OpenTaiko.Pad, OpenTaiko.InputManager.Keyboard);
|
||||
else
|
||||
sp.plugin.On進行描画(null, null);
|
||||
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
|
||||
CScoreIni scoreIni = null;
|
||||
|
||||
#region [ 曲検索スレッドの起動/終了 ]
|
||||
@ -726,11 +680,6 @@ namespace OpenTaiko {
|
||||
}
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stageタイトル;
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
}
|
||||
@ -940,12 +889,6 @@ namespace OpenTaiko {
|
||||
#endregion
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
//-----------------------------
|
||||
@ -976,12 +919,6 @@ namespace OpenTaiko {
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stageタイトル;
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1005,12 +942,6 @@ namespace OpenTaiko {
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stageSongSelect;
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1051,16 +982,6 @@ namespace OpenTaiko {
|
||||
ConfigIni.nPlayerCount = ConfigIni.nPreviousPlayerCount;
|
||||
ConfigIni.bAIBattleMode = false;
|
||||
}
|
||||
/*
|
||||
Skin.bgm選曲画面イン.t停止する();
|
||||
Skin.bgm選曲画面.t停止する();
|
||||
*/
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
@ -1092,12 +1013,6 @@ namespace OpenTaiko {
|
||||
CSongSelectSongManager.stopSong();
|
||||
CSongSelectSongManager.enable();
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1146,12 +1061,6 @@ namespace OpenTaiko {
|
||||
CSongSelectSongManager.stopSong();
|
||||
CSongSelectSongManager.enable();
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1207,12 +1116,6 @@ namespace OpenTaiko {
|
||||
CSongSelectSongManager.stopSong();
|
||||
CSongSelectSongManager.enable();
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1237,12 +1140,6 @@ namespace OpenTaiko {
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage曲読み込み;
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1275,12 +1172,6 @@ namespace OpenTaiko {
|
||||
CSongSelectSongManager.stopSong();
|
||||
CSongSelectSongManager.enable();
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1341,12 +1232,6 @@ namespace OpenTaiko {
|
||||
// Seek latest registered song select screen
|
||||
r現在のステージ = OpenTaiko.latestSongSelect;
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
#endregion
|
||||
@ -1367,11 +1252,6 @@ for (int i = 0; i < 3; i++) {
|
||||
#endif
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage演奏ドラム画面;
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
}
|
||||
@ -1417,16 +1297,6 @@ for (int i = 0; i < 3; i++) {
|
||||
#region [ 演奏キャンセル ]
|
||||
//-----------------------------
|
||||
|
||||
#region [ プラグイン On演奏キャンセル() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.On演奏キャンセル(scoreIni);
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
DTX.t全チップの再生停止();
|
||||
DTX.DeActivate();
|
||||
DTX.ReleaseManagedResource();
|
||||
@ -1437,27 +1307,6 @@ for (int i = 0; i < 3; i++) {
|
||||
r現在のステージ.ReleaseUnmanagedResource();
|
||||
}
|
||||
|
||||
// Play cancelled return screen
|
||||
|
||||
/*
|
||||
if(stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
||||
{
|
||||
Trace.TraceInformation("----------------------");
|
||||
Trace.TraceInformation("■ 段位選択");
|
||||
stage段位選択.On活性化();
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage段位選択;
|
||||
}
|
||||
else
|
||||
{
|
||||
Trace.TraceInformation("----------------------");
|
||||
Trace.TraceInformation("■ 選曲");
|
||||
stage選曲.On活性化();
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage選曲;
|
||||
}
|
||||
*/
|
||||
|
||||
Trace.TraceInformation("----------------------");
|
||||
Trace.TraceInformation("■ Return to song select menu");
|
||||
OpenTaiko.latestSongSelect.Activate();
|
||||
@ -1468,17 +1317,7 @@ for (int i = 0; i < 3; i++) {
|
||||
r直前のステージ = r現在のステージ;
|
||||
|
||||
// Seek latest registered song select screen
|
||||
r現在のステージ = OpenTaiko.latestSongSelect;
|
||||
|
||||
#region [ プラグイン Onステージ変更() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
r現在のステージ = OpenTaiko.latestSongSelect;
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
this.tガベージコレクションを実行する();
|
||||
@ -1490,16 +1329,6 @@ for (int i = 0; i < 3; i++) {
|
||||
#region [ 演奏失敗(StageFailed) ]
|
||||
//-----------------------------
|
||||
|
||||
#region [ プラグイン On演奏失敗() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.On演奏失敗(scoreIni);
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
DTX.t全チップの再生停止();
|
||||
DTX.DeActivate();
|
||||
DTX.ReleaseManagedResource();
|
||||
@ -1518,17 +1347,7 @@ for (int i = 0; i < 3; i++) {
|
||||
stageSongSelect.CreateUnmanagedResource();
|
||||
}
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stageSongSelect;
|
||||
|
||||
#region [ プラグイン Onステージ変更() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
r現在のステージ = stageSongSelect;
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
@ -1541,18 +1360,7 @@ for (int i = 0; i < 3; i++) {
|
||||
|
||||
// Fetch the results of the finished play
|
||||
CScoreIni.C演奏記録 c演奏記録_Drums;
|
||||
stage演奏ドラム画面.t演奏結果を格納する(out c演奏記録_Drums);
|
||||
|
||||
|
||||
#region [ プラグイン On演奏クリア() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.On演奏クリア(scoreIni);
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
stage演奏ドラム画面.t演奏結果を格納する(out c演奏記録_Drums);
|
||||
|
||||
r現在のステージ.DeActivate();
|
||||
if (!ConfigIni.PreAssetsLoading) {
|
||||
@ -1568,17 +1376,7 @@ for (int i = 0; i < 3; i++) {
|
||||
stage結果.CreateUnmanagedResource();
|
||||
}
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage結果;
|
||||
|
||||
#region [ プラグイン Onステージ変更() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
r現在のステージ = stage結果;
|
||||
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1640,12 +1438,6 @@ for (int i = 0; i < 3; i++) {
|
||||
|
||||
stageSongSelect.NowSong++;
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
}
|
||||
//-----------------------------
|
||||
@ -1677,12 +1469,6 @@ for (int i = 0; i < 3; i++) {
|
||||
CSongSelectSongManager.stopSong();
|
||||
CSongSelectSongManager.enable();
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1707,12 +1493,6 @@ for (int i = 0; i < 3; i++) {
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage曲読み込み;
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1780,12 +1560,6 @@ for (int i = 0; i < 3; i++) {
|
||||
CSongSelectSongManager.stopSong();
|
||||
CSongSelectSongManager.enable();
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -2408,44 +2182,6 @@ for (int i = 0; i < 3; i++) {
|
||||
this.listトップレベルActivities.Add(stage結果);
|
||||
this.listトップレベルActivities.Add(stageChangeSkin);
|
||||
this.listトップレベルActivities.Add(stage終了);
|
||||
//---------------------
|
||||
#endregion
|
||||
#region [ プラグインの検索と生成 ]
|
||||
//---------------------
|
||||
PluginHost = new CPluginHost();
|
||||
|
||||
Trace.TraceInformation("Initializing and generating plugins...");
|
||||
Trace.Indent();
|
||||
try {
|
||||
this.tプラグイン検索と生成();
|
||||
Trace.TraceInformation("Plugin generation and initialization complete.");
|
||||
} finally {
|
||||
Trace.Unindent();
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
#region [ プラグインの初期化 ]
|
||||
//---------------------
|
||||
if (this.PluginList != null && this.PluginList.Count > 0) {
|
||||
Trace.TraceInformation("Initializing plugin(s)...");
|
||||
Trace.Indent();
|
||||
try {
|
||||
foreach (STPlugin st in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(st.pluginDirectory);
|
||||
st.plugin.On初期化(this.PluginHost);
|
||||
st.plugin.OnManagedリソースの作成();
|
||||
st.plugin.OnUnmanagedリソースの作成();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
Trace.TraceInformation("All plugins have been initialized.");
|
||||
} catch {
|
||||
Trace.TraceError("Plugins could not be initialized.");
|
||||
throw;
|
||||
} finally {
|
||||
Trace.Unindent();
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
@ -2535,27 +2271,7 @@ for (int i = 0; i < 3; i++) {
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
#region [ プラグインの終了処理 ]
|
||||
//--------------------- from this point this is where i gave up - tfd500
|
||||
if (this.PluginList != null && this.PluginList.Count > 0) {
|
||||
Trace.TraceInformation("Ending all plugins...");
|
||||
Trace.Indent();
|
||||
try {
|
||||
foreach (STPlugin st in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(st.pluginDirectory);
|
||||
st.plugin.OnUnmanagedリソースの解放();
|
||||
st.plugin.OnManagedリソースの解放();
|
||||
st.plugin.On終了();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
PluginHost = null;
|
||||
Trace.TraceInformation("All plugins have been terminated.");
|
||||
} finally {
|
||||
Trace.Unindent();
|
||||
}
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
#region Discordの処理
|
||||
DiscordClient?.Dispose();
|
||||
#endregion
|
||||
@ -2756,17 +2472,6 @@ for (int i = 0; i < 3; i++) {
|
||||
GC.WaitForPendingFinalizers();
|
||||
GC.Collect(GC.MaxGeneration);
|
||||
}
|
||||
private void tプラグイン検索と生成() {
|
||||
this.PluginList = new List<STPlugin>();
|
||||
|
||||
string PluginActivityName = typeof(IPluginActivity).FullName;
|
||||
string PluginFolderPath = strEXEのあるフォルダ + "Plugins" + Path.DirectorySeparatorChar;
|
||||
|
||||
this.SearchAndGeneratePluginsInFolder(PluginFolderPath, PluginActivityName);
|
||||
|
||||
if (this.PluginList.Count > 0)
|
||||
Trace.TraceInformation(this.PluginList.Count + "Plugins loaded.");
|
||||
}
|
||||
|
||||
private void ChangeResolution(int nWidth, int nHeight) {
|
||||
GameWindowSize.Width = nWidth;
|
||||
@ -2800,51 +2505,6 @@ for (int i = 0; i < 3; i++) {
|
||||
CActSelectPopupMenu.RefleshSkin();
|
||||
CActSelect段位リスト.RefleshSkin();
|
||||
}
|
||||
#region [ Windowイベント処理 ]
|
||||
private void SearchAndGeneratePluginsInFolder(string PluginFolderPath, string PluginTypeName) {
|
||||
// 指定されたパスが存在しないとエラー
|
||||
if (!Directory.Exists(PluginFolderPath)) {
|
||||
Trace.TraceWarning("The plugin folder does not exist. (" + PluginFolderPath + ")");
|
||||
return;
|
||||
}
|
||||
|
||||
// (1) すべての *.dll について…
|
||||
string[] strDLLs = System.IO.Directory.GetFiles(PluginFolderPath, "*.dll");
|
||||
foreach (string dllName in strDLLs) {
|
||||
try {
|
||||
// (1-1) dll をアセンブリとして読み込む。
|
||||
System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(dllName);
|
||||
|
||||
// (1-2) アセンブリ内のすべての型について、プラグインとして有効か調べる
|
||||
foreach (Type t in asm.GetTypes()) {
|
||||
// (1-3) ↓クラスであり↓Publicであり↓抽象クラスでなく↓IPlugin型のインスタンスが作れる 型を持っていれば有効
|
||||
if (t.IsClass && t.IsPublic && !t.IsAbstract && t.GetInterface(PluginTypeName) != null) {
|
||||
// (1-4) クラス名からインスタンスを作成する
|
||||
var st = new STPlugin() {
|
||||
plugin = (IPluginActivity)asm.CreateInstance(t.FullName),
|
||||
pluginDirectory = Path.GetDirectoryName(dllName),
|
||||
assemblyName = asm.GetName().Name,
|
||||
Version = asm.GetName().Version,
|
||||
};
|
||||
|
||||
// (1-5) プラグインリストへ登録
|
||||
this.PluginList.Add(st);
|
||||
Trace.TraceInformation("Plugin {0} ({1}, {2}, {3}) has been loaded.", t.FullName, Path.GetFileName(dllName), st.assemblyName, st.Version.ToString());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Trace.TraceError(e.ToString());
|
||||
Trace.TraceInformation(dllName + "could not be used to generate a plugin. Skipping plugin.");
|
||||
}
|
||||
}
|
||||
|
||||
// (2) サブフォルダがあれば再帰する
|
||||
string[] strDirs = Directory.GetDirectories(PluginFolderPath, "*");
|
||||
foreach (string dir in strDirs)
|
||||
this.SearchAndGeneratePluginsInFolder(dir + Path.DirectorySeparatorChar, PluginTypeName);
|
||||
}
|
||||
//-----------------
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region [ EXTENDED VARIABLES ]
|
||||
|
@ -1,61 +0,0 @@
|
||||
using System.Drawing;
|
||||
using FDK;
|
||||
|
||||
namespace OpenTaiko {
|
||||
internal class CPluginHost : IPluginHost {
|
||||
// Constructor
|
||||
|
||||
public CPluginHost() {
|
||||
this._DTXManiaVersion = new CDTXVersion(OpenTaiko.VERSION);
|
||||
}
|
||||
|
||||
|
||||
// IPluginHost 実装
|
||||
|
||||
public CDTXVersion DTXManiaVersion {
|
||||
get { return this._DTXManiaVersion; }
|
||||
}
|
||||
public CTimer Timer {
|
||||
get { return OpenTaiko.Timer; }
|
||||
}
|
||||
public SoundManager Sound管理 {
|
||||
get { return OpenTaiko.SoundManager; }
|
||||
}
|
||||
public Size ClientSize {
|
||||
get { return new Size(OpenTaiko.app.Window_.Size.X, OpenTaiko.app.Window_.Size.Y); }
|
||||
}
|
||||
public CStage.EStage e現在のステージ {
|
||||
get { return (OpenTaiko.r現在のステージ != null) ? OpenTaiko.r現在のステージ.eStageID : CStage.EStage.None; }
|
||||
}
|
||||
public CStage.EPhase e現在のフェーズ {
|
||||
get { return (OpenTaiko.r現在のステージ != null) ? OpenTaiko.r現在のステージ.ePhaseID : CStage.EPhase.Common_NORMAL; }
|
||||
}
|
||||
public bool t入力を占有する(IPluginActivity act) {
|
||||
if (OpenTaiko.act現在入力を占有中のプラグイン != null)
|
||||
return false;
|
||||
|
||||
OpenTaiko.act現在入力を占有中のプラグイン = act;
|
||||
return true;
|
||||
}
|
||||
public bool t入力の占有を解除する(IPluginActivity act) {
|
||||
if (OpenTaiko.act現在入力を占有中のプラグイン == null || OpenTaiko.act現在入力を占有中のプラグイン != act)
|
||||
return false;
|
||||
|
||||
OpenTaiko.act現在入力を占有中のプラグイン = null;
|
||||
return true;
|
||||
}
|
||||
public void tシステムサウンドを再生する(Eシステムサウンド sound) {
|
||||
if (OpenTaiko.Skin != null)
|
||||
OpenTaiko.Skin[sound].tPlay();
|
||||
}
|
||||
|
||||
|
||||
// その他
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
private CDTXVersion _DTXManiaVersion;
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
namespace OpenTaiko {
|
||||
/// <summary>
|
||||
/// <para>Activity プラグインへのインターフェース。</para>
|
||||
/// <para>DTXMania は、IPluginActivity に対して、以下のライフサイクルを実行します。</para>
|
||||
/// <para>(1) DTXMania の起動処理の最後(セットアップ画面が表示される直前)に一度だけ、On初期化()_OnManagedリソースの作成()_OnUnmanagedリソースの作成() をこの順番で1回ずつ呼び出します。</para>
|
||||
/// <para>(2) DTXMania の終了処理の最初(Thank you for playing が消えた直後)に一度だけ、OnUnmanagedリソースの解放()_OnManagedリソースの解放()_On終了() をこの順番で1回ずつ呼び出します。</para>
|
||||
/// <para>(3) DTXMania の起動中、すなわち(1)~(2)の間は、どんなシーンであっても、常に On進行描画() を1フレームにつき1回ずつ呼び出します。</para>
|
||||
/// <para>(4) Direct3D デバイスのリセット時には、デバイスのリセット前に OnUnmanagedリソースの解放() を1回呼び出し、デバイスをリセットしたのち、OnUnmanagedリソースの作成() を1回呼び出します。</para>
|
||||
/// <para>(5) Direct3D デバイスのロスト時には、デバイスの再生成前に OnUnmanagedリソースの解放()_OnManagedリソースの解放() を1回ずつ呼び出し、デバイスを再生成したのち、OnManagedリソースの作成()_OnUnmanagedリソースの作成() を1回ずつ呼び出します。</para>
|
||||
/// </summary>
|
||||
public interface IPluginActivity {
|
||||
/// <summary>
|
||||
/// <para>プラグインの初期化を行います。</para>
|
||||
/// <para>DTXMania の起動処理の最後(セットアップ画面が表示される直前)に、DTXMania から一度だけ呼び出されます。</para>
|
||||
/// <param name="PluginHost">プラグインが、ホスト(DTXMania)の情報にアクセスするためのオブジェクト。</param>
|
||||
/// </summary>
|
||||
void On初期化(global::OpenTaiko.IPluginHost PluginHost);
|
||||
|
||||
/// <summary>
|
||||
/// <para>プラグインの終了処理を行います。</para>
|
||||
/// <para>DTXMania の終了処理の最初(Thank you for playing が消えた直後)に、DTXMania から一度だけ呼び出されます。</para>
|
||||
/// </summary>
|
||||
void On終了();
|
||||
|
||||
/// <summary>
|
||||
/// Managed リソースを作成します。
|
||||
/// </summary>
|
||||
void OnManagedリソースの作成();
|
||||
|
||||
/// <summary>
|
||||
/// Unmanaged リソースを作成します。
|
||||
/// </summary>
|
||||
void OnUnmanagedリソースの作成();
|
||||
|
||||
/// <summary>
|
||||
/// Unmanaged リソースを解放します。
|
||||
/// </summary>
|
||||
void OnUnmanagedリソースの解放();
|
||||
|
||||
/// <summary>
|
||||
/// Managed リソースを解放します。
|
||||
/// </summary>
|
||||
void OnManagedリソースの解放();
|
||||
|
||||
/// <summary>
|
||||
/// <para>プラグインの進行と描画を行います。</para>
|
||||
/// <para>※現在の DTXMania では、進行と描画は分離されていません。</para>
|
||||
/// <para>※BeginScene()/EndScene() は DTXMania 側で行うため、プラグイン側では不要です。</para>
|
||||
/// <para>※keyboard.tポーリング() は DTXMania 側で行いますのでプラグイン側では行わないで下さい。</para>
|
||||
/// <param name="pad">パッド入力。他のプラグインが入力占有中である場合は null が渡されます。</param>
|
||||
/// <param name="keyboard">キーボード入力。他のプラグインが入力占有中である場合は null が渡されます。</param>
|
||||
/// </summary>
|
||||
void On進行描画(global::OpenTaiko.CPad pad, FDK.IInputDevice keyboard);
|
||||
|
||||
/// <summary>
|
||||
/// <para>ステージが変わる度に呼び出されます。</para>
|
||||
/// <para>呼び出しタイミングは、新しいステージの活性化直後かつ描画開始前です。</para>
|
||||
/// </summary>
|
||||
void Onステージ変更();
|
||||
|
||||
/// <summary>
|
||||
/// <para>選曲画面で選択曲が変更された場合に呼び出されます。</para>
|
||||
/// <para>同じ set.def に属する曲の難易度が(HH×2で)変更された場合でも呼び出されます。</para>
|
||||
/// <para>ただし、選択が曲でない(BOX, BACK, RANDOM など)場合には呼び出されません。</para>
|
||||
/// </summary>
|
||||
/// <param name="str選択曲ファイル名">選択されている曲のファイルの名前。絶対パス。</param>
|
||||
/// <param name="n曲番号inブロック">選択されている曲のブロック内の曲番号(0~4)。</param>
|
||||
void On選択曲変更(string str選択曲ファイル名, int n曲番号inブロック);
|
||||
|
||||
void On演奏クリア(global::OpenTaiko.CScoreIni scoreIni);
|
||||
void On演奏失敗(global::OpenTaiko.CScoreIni scoreIni);
|
||||
void On演奏キャンセル(global::OpenTaiko.CScoreIni scoreIni);
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
|
||||
namespace OpenTaiko {
|
||||
/// <summary>
|
||||
/// <para>プラグインホスト情報提供インターフェース。</para>
|
||||
/// <para>プラグインでは、On初期化() で渡されるこのインターフェースオブジェクトを通じて、
|
||||
/// DTXMania の持つ様々なリソースにアクセスできます。</para>
|
||||
/// </summary>
|
||||
public interface IPluginHost {
|
||||
/// <summary>
|
||||
/// DTXMania のバージョンを表します。
|
||||
/// </summary>
|
||||
global::OpenTaiko.CDTXVersion DTXManiaVersion { get; }
|
||||
|
||||
/// <summary>
|
||||
/// <para>DirectSound の管理クラス。</para>
|
||||
/// <para>WAV, XA, OGG, MP3 のサウンドファイルから CSound オブジェクトを生成できます。</para>
|
||||
/// </summary>
|
||||
FDK.SoundManager Sound管理 { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 描画エリアのサイズを返します(ピクセル単位)。
|
||||
/// </summary>
|
||||
System.Drawing.Size ClientSize { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 現在のステージのIDを表します。
|
||||
/// </summary>
|
||||
global::OpenTaiko.CStage.EStage e現在のステージ { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 現在のステージにおけるフェーズのIDを表します。
|
||||
/// </summary>
|
||||
global::OpenTaiko.CStage.EPhase e現在のフェーズ { get; }
|
||||
|
||||
/// <summary>
|
||||
/// <para>自分以外は入力データを扱ってはならないことを宣言します。</para>
|
||||
/// <para>DTXMania 本体は入力データのポーリングのみを行い、他のプラグインに対しては、On進行描画() の2つの入力に null を渡します。</para>
|
||||
/// </summary>
|
||||
/// <param name="act">宣言するプラグイン(すなわち this を指定する)</param>
|
||||
/// <returns>占有に成功すれば true を返し、既に誰かが占有中である場合には false を返します。</returns>
|
||||
bool t入力を占有する(IPluginActivity act);
|
||||
|
||||
/// <summary>
|
||||
/// <para>自分以外が入力データを扱って良いことを宣言します。</para>
|
||||
/// <para>DTXMania 本体はポーリング以外の入力処理を開始し、他のプラグインに対しては、On進行描画() の2つの引数に有効な値を渡します。</para>
|
||||
/// </summary>
|
||||
/// <param name="act">宣言するプラグイン(すなわち this を指定する)</param>
|
||||
/// <returns>占有解除に成功すれば true、失敗すれば flase を返します。</returns>
|
||||
bool t入力の占有を解除する(IPluginActivity act);
|
||||
|
||||
/// <summary>
|
||||
/// 指定されたシステムサウンド/BGMを再生します。
|
||||
/// </summary>
|
||||
/// <param name="sound">再生するシステムサウンドの識別子。</param>
|
||||
void tシステムサウンドを再生する(Eシステムサウンド sound);
|
||||
}
|
||||
}
|
@ -142,8 +142,7 @@ namespace OpenTaiko {
|
||||
|
||||
#region [ キー関係 ]
|
||||
|
||||
if (base.ePhaseID == CStage.EPhase.Common_NORMAL // 通常状態、かつ
|
||||
&& OpenTaiko.act現在入力を占有中のプラグイン == null) // プラグインの入力占有がない
|
||||
if (base.ePhaseID == CStage.EPhase.Common_NORMAL) // プラグインの入力占有がない
|
||||
{
|
||||
if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape) || OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.Cancel)) {
|
||||
if (bモード選択) {
|
||||
|
@ -5,15 +5,15 @@ using FDK;
|
||||
using SkiaSharp;
|
||||
|
||||
namespace OpenTaiko {
|
||||
internal class CStageコンフィグ : CStage {
|
||||
// Properties
|
||||
|
||||
internal class CStageコンフィグ : CStage {
|
||||
// Properties
|
||||
|
||||
public CActDFPFont actFont { get; private set; }
|
||||
public CActCalibrationMode actCalibrationMode;
|
||||
|
||||
|
||||
// Constructor
|
||||
|
||||
public CActCalibrationMode actCalibrationMode;
|
||||
|
||||
|
||||
// Constructor
|
||||
|
||||
public CStageコンフィグ() {
|
||||
CActDFPFont font;
|
||||
base.eStageID = CStage.EStage.Config;
|
||||
@ -26,40 +26,40 @@ namespace OpenTaiko {
|
||||
base.ChildActivities.Add(this.actオプションパネル = new CActオプションパネル());
|
||||
base.ChildActivities.Add(this.actCalibrationMode = new CActCalibrationMode());
|
||||
base.IsDeActivated = true;
|
||||
}
|
||||
|
||||
|
||||
// メソッド
|
||||
|
||||
public void tアサイン完了通知() // CONFIGにのみ存在
|
||||
{ //
|
||||
this.eItemPanelモード = EItemPanelモード.パッド一覧; //
|
||||
} //
|
||||
public void tパッド選択通知(EKeyConfigPart part, EKeyConfigPad pad) //
|
||||
{ //
|
||||
this.actKeyAssign.t開始(part, pad, this.actList.ib現在の選択項目.str項目名); //
|
||||
this.eItemPanelモード = EItemPanelモード.キーコード一覧; //
|
||||
} //
|
||||
public void t項目変更通知() // OPTIONと共通
|
||||
{ //
|
||||
this.t説明文パネルに現在選択されている項目の説明を描画する(); //
|
||||
} //
|
||||
|
||||
|
||||
// CStage 実装
|
||||
|
||||
}
|
||||
|
||||
|
||||
// メソッド
|
||||
|
||||
public void tアサイン完了通知() // CONFIGにのみ存在
|
||||
{ //
|
||||
this.eItemPanelモード = EItemPanelモード.パッド一覧; //
|
||||
} //
|
||||
public void tパッド選択通知(EKeyConfigPart part, EKeyConfigPad pad) //
|
||||
{ //
|
||||
this.actKeyAssign.t開始(part, pad, this.actList.ib現在の選択項目.str項目名); //
|
||||
this.eItemPanelモード = EItemPanelモード.キーコード一覧; //
|
||||
} //
|
||||
public void t項目変更通知() // OPTIONと共通
|
||||
{ //
|
||||
this.t説明文パネルに現在選択されている項目の説明を描画する(); //
|
||||
} //
|
||||
|
||||
|
||||
// CStage 実装
|
||||
|
||||
public override void Activate() {
|
||||
Trace.TraceInformation("コンフィグステージを活性化します。");
|
||||
Trace.Indent();
|
||||
try {
|
||||
OpenTaiko.Skin.bgmコンフィグ画面.tPlay();
|
||||
|
||||
this.n現在のメニュー番号 = 0; //
|
||||
for (int i = 0; i < 4; i++) //
|
||||
{ //
|
||||
this.ctキー反復用[i] = new CCounter(0, 0, 0, OpenTaiko.Timer); //
|
||||
} //
|
||||
this.bメニューにフォーカス中 = true; // ここまでOPTIONと共通
|
||||
this.n現在のメニュー番号 = 0; //
|
||||
for (int i = 0; i < 4; i++) //
|
||||
{ //
|
||||
this.ctキー反復用[i] = new CCounter(0, 0, 0, OpenTaiko.Timer); //
|
||||
} //
|
||||
this.bメニューにフォーカス中 = true; // ここまでOPTIONと共通
|
||||
this.eItemPanelモード = EItemPanelモード.パッド一覧;
|
||||
|
||||
ReloadMenus();
|
||||
@ -77,7 +77,7 @@ namespace OpenTaiko {
|
||||
Trace.TraceInformation("コンフィグステージの活性化を完了しました。");
|
||||
Trace.Unindent();
|
||||
}
|
||||
base.Activate(); // 2011.3.14 yyagi: On活性化()をtryの中から外に移動
|
||||
base.Activate(); // 2011.3.14 yyagi: On活性化()をtryの中から外に移動
|
||||
}
|
||||
public override void DeActivate() {
|
||||
Trace.TraceInformation("コンフィグステージを非活性化します。");
|
||||
@ -85,7 +85,7 @@ namespace OpenTaiko {
|
||||
try {
|
||||
OpenTaiko.Skin.bgmコンフィグ画面.tStop();
|
||||
|
||||
OpenTaiko.ConfigIni.t書き出し(OpenTaiko.strEXEのあるフォルダ + "Config.ini"); // CONFIGだけ
|
||||
OpenTaiko.ConfigIni.t書き出し(OpenTaiko.strEXEのあるフォルダ + "Config.ini"); // CONFIGだけ
|
||||
for (int i = 0; i < 4; i++) {
|
||||
this.ctキー反復用[i] = null;
|
||||
}
|
||||
@ -143,23 +143,23 @@ namespace OpenTaiko {
|
||||
}
|
||||
}
|
||||
|
||||
public override void CreateManagedResource() // OPTIONと画像以外共通
|
||||
{
|
||||
//if (HPrivateFastFont.FontExists(TJAPlayer3.Skin.FontName))
|
||||
//{
|
||||
// this.ftフォント = new CCachedFontRenderer(TJAPlayer3.Skin.FontName, (int)TJAPlayer3.Skin.Config_Font_Scale_Description, CFontRenderer.FontStyle.Bold);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// this.ftフォント = new CCachedFontRenderer(CFontRenderer.DefaultFontName, (int)TJAPlayer3.Skin.Config_Font_Scale_Description, CFontRenderer.FontStyle.Bold);
|
||||
//}
|
||||
public override void CreateManagedResource() // OPTIONと画像以外共通
|
||||
{
|
||||
//if (HPrivateFastFont.FontExists(TJAPlayer3.Skin.FontName))
|
||||
//{
|
||||
// this.ftフォント = new CCachedFontRenderer(TJAPlayer3.Skin.FontName, (int)TJAPlayer3.Skin.Config_Font_Scale_Description, CFontRenderer.FontStyle.Bold);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// this.ftフォント = new CCachedFontRenderer(CFontRenderer.DefaultFontName, (int)TJAPlayer3.Skin.Config_Font_Scale_Description, CFontRenderer.FontStyle.Bold);
|
||||
//}
|
||||
this.ftフォント = HPrivateFastFont.tInstantiateMainFont((int)OpenTaiko.Skin.Config_Font_Scale_Description, CFontRenderer.FontStyle.Bold);
|
||||
|
||||
|
||||
OpenTaiko.Tx.Config_Cursor = OpenTaiko.tテクスチャの生成(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.CONFIG}Cursor.png"));
|
||||
|
||||
//ctBackgroundAnime = new CCounter(0, TJAPlayer3.Tx.Config_Background.szテクスチャサイズ.Width, 20, TJAPlayer3.Timer);
|
||||
|
||||
OpenTaiko.Tx.Config_Cursor = OpenTaiko.tテクスチャの生成(CSkin.Path($"{TextureLoader.BASE}{TextureLoader.CONFIG}Cursor.png"));
|
||||
|
||||
//ctBackgroundAnime = new CCounter(0, TJAPlayer3.Tx.Config_Background.szテクスチャサイズ.Width, 20, TJAPlayer3.Timer);
|
||||
|
||||
/*
|
||||
string[] strMenuItem = {
|
||||
CLangManager.LangInstance.GetString(10085),
|
||||
@ -183,20 +183,20 @@ namespace OpenTaiko {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
*/
|
||||
base.CreateManagedResource();
|
||||
}
|
||||
public override void ReleaseManagedResource() // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)
|
||||
public override void ReleaseManagedResource() // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)
|
||||
{
|
||||
if (this.ftフォント != null) {
|
||||
this.ftフォント.Dispose();
|
||||
this.ftフォント = null;
|
||||
}
|
||||
//CDTXMania.tテクスチャの解放( ref this.tx背景 );
|
||||
//CDTXMania.tテクスチャの解放( ref this.tx上部パネル );
|
||||
//CDTXMania.tテクスチャの解放( ref this.tx下部パネル );
|
||||
//CDTXMania.tテクスチャの解放( ref this.txMenuカーソル );
|
||||
|
||||
}
|
||||
//CDTXMania.tテクスチャの解放( ref this.tx背景 );
|
||||
//CDTXMania.tテクスチャの解放( ref this.tx上部パネル );
|
||||
//CDTXMania.tテクスチャの解放( ref this.tx下部パネル );
|
||||
//CDTXMania.tテクスチャの解放( ref this.txMenuカーソル );
|
||||
|
||||
OpenTaiko.tテクスチャの解放(ref this.tx説明文パネル);
|
||||
base.ReleaseManagedResource();
|
||||
}
|
||||
@ -208,31 +208,31 @@ namespace OpenTaiko {
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEIN;
|
||||
this.actFIFO.tフェードイン開始();
|
||||
base.IsFirstDraw = false;
|
||||
}
|
||||
|
||||
//ctBackgroundAnime.t進行Loop();
|
||||
|
||||
// 描画
|
||||
|
||||
}
|
||||
|
||||
//ctBackgroundAnime.t進行Loop();
|
||||
|
||||
// 描画
|
||||
|
||||
#region [ Background ]
|
||||
|
||||
//---------------------
|
||||
|
||||
//---------------------
|
||||
/*
|
||||
for(int i = 0; i < 2; i++)
|
||||
if (TJAPlayer3.Tx.Config_Background != null )
|
||||
TJAPlayer3.Tx.Config_Background.t2D描画( 0 + -(TJAPlayer3.Tx.Config_Background.szテクスチャサイズ.Width * i) + ctBackgroundAnime.n現在の値, 0 );
|
||||
if(TJAPlayer3.Tx.Config_Header != null )
|
||||
TJAPlayer3.Tx.Config_Header.t2D描画( 0, 0 );
|
||||
*/
|
||||
*/
|
||||
Background.Update();
|
||||
Background.Draw();
|
||||
//---------------------
|
||||
|
||||
Background.Draw();
|
||||
//---------------------
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region [ Menu Cursor ]
|
||||
//---------------------
|
||||
if (OpenTaiko.Tx.Config_Cursor != null) {
|
||||
//---------------------
|
||||
if (OpenTaiko.Tx.Config_Cursor != null) {
|
||||
#region Old
|
||||
/*
|
||||
Rectangle rectangle;
|
||||
@ -253,63 +253,63 @@ namespace OpenTaiko {
|
||||
TJAPlayer3.Tx.TJAPlayer3.Tx.Config_Cursor.t2D描画( x, y, rectangle );
|
||||
x += rectangle.Width;
|
||||
}
|
||||
*/
|
||||
*/
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
int x = OpenTaiko.Skin.Config_Item_X[this.n現在のメニュー番号];
|
||||
int y = OpenTaiko.Skin.Config_Item_Y[this.n現在のメニュー番号];
|
||||
|
||||
int width = OpenTaiko.Tx.Config_Cursor.sz画像サイズ.Width / 3;
|
||||
int height = OpenTaiko.Tx.Config_Cursor.sz画像サイズ.Height;
|
||||
|
||||
int move = OpenTaiko.Skin.Config_Item_Width;
|
||||
|
||||
//Left
|
||||
int move = OpenTaiko.Skin.Config_Item_Width;
|
||||
|
||||
//Left
|
||||
OpenTaiko.Tx.Config_Cursor.t2D中心基準描画(x - (width / 2) - move, y,
|
||||
new Rectangle(0, 0, width, height));
|
||||
|
||||
//Right
|
||||
new Rectangle(0, 0, width, height));
|
||||
|
||||
//Right
|
||||
OpenTaiko.Tx.Config_Cursor.t2D中心基準描画(x + (width / 2) + move, y,
|
||||
new Rectangle(width * 2, 0, width, height));
|
||||
|
||||
//Center
|
||||
new Rectangle(width * 2, 0, width, height));
|
||||
|
||||
//Center
|
||||
OpenTaiko.Tx.Config_Cursor.vcScaleRatio.X = (move / (float)width) * 2.0f;
|
||||
OpenTaiko.Tx.Config_Cursor.t2D拡大率考慮中央基準描画(x, y,
|
||||
new Rectangle(width, 0, width, height));
|
||||
|
||||
OpenTaiko.Tx.Config_Cursor.vcScaleRatio.X = 1.0f;
|
||||
}
|
||||
//---------------------
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
|
||||
#region [ Menu ]
|
||||
//---------------------
|
||||
//int menuY = 162 - 22 + 13;
|
||||
//int stepY = 39;
|
||||
for (int i = 0; i < txMenuItemLeft.GetLength(0); i++) {
|
||||
//Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?
|
||||
// prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :
|
||||
// prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );
|
||||
//txMenuItemLeft = CDTXMania.tテクスチャの生成( bmpStr, false );
|
||||
|
||||
//---------------------
|
||||
//int menuY = 162 - 22 + 13;
|
||||
//int stepY = 39;
|
||||
for (int i = 0; i < txMenuItemLeft.GetLength(0); i++) {
|
||||
//Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?
|
||||
// prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :
|
||||
// prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );
|
||||
//txMenuItemLeft = CDTXMania.tテクスチャの生成( bmpStr, false );
|
||||
|
||||
int flag = (this.n現在のメニュー番号 == i) ? 1 : 0;
|
||||
txMenuItemLeft[i, flag].t2D中心基準描画(OpenTaiko.Skin.Config_Item_X[i] + OpenTaiko.Skin.Config_Item_Font_Offset[0], OpenTaiko.Skin.Config_Item_Y[i] + OpenTaiko.Skin.Config_Item_Font_Offset[1]); //55
|
||||
//txMenuItem.Dispose();
|
||||
//menuY += stepY;
|
||||
}
|
||||
//---------------------
|
||||
txMenuItemLeft[i, flag].t2D中心基準描画(OpenTaiko.Skin.Config_Item_X[i] + OpenTaiko.Skin.Config_Item_Font_Offset[0], OpenTaiko.Skin.Config_Item_Y[i] + OpenTaiko.Skin.Config_Item_Font_Offset[1]); //55
|
||||
//txMenuItem.Dispose();
|
||||
//menuY += stepY;
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
|
||||
#region [ Explanation Panel ]
|
||||
//---------------------
|
||||
//---------------------
|
||||
if (this.tx説明文パネル != null)
|
||||
this.tx説明文パネル.t2D描画(OpenTaiko.Skin.Config_ExplanationPanel[0], OpenTaiko.Skin.Config_ExplanationPanel[1]);
|
||||
//---------------------
|
||||
this.tx説明文パネル.t2D描画(OpenTaiko.Skin.Config_ExplanationPanel[0], OpenTaiko.Skin.Config_ExplanationPanel[1]);
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
|
||||
#region [ Item ]
|
||||
//---------------------
|
||||
//---------------------
|
||||
switch (this.eItemPanelモード) {
|
||||
case EItemPanelモード.パッド一覧:
|
||||
this.actList.t進行描画(!this.bメニューにフォーカス中);
|
||||
@ -318,31 +318,31 @@ namespace OpenTaiko {
|
||||
case EItemPanelモード.キーコード一覧:
|
||||
this.actKeyAssign.Draw();
|
||||
break;
|
||||
}
|
||||
//---------------------
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
//#region [ 上部パネル ]
|
||||
////---------------------
|
||||
//if( this.tx上部パネル != null )
|
||||
// this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, 0 );
|
||||
////---------------------
|
||||
//#endregion
|
||||
//#region [ 下部パネル ]
|
||||
////---------------------
|
||||
//if( this.tx下部パネル != null )
|
||||
// this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, 720 - this.tx下部パネル.szテクスチャサイズ.Height );
|
||||
////---------------------
|
||||
//#endregion
|
||||
|
||||
|
||||
//#region [ 上部パネル ]
|
||||
////---------------------
|
||||
//if( this.tx上部パネル != null )
|
||||
// this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, 0 );
|
||||
////---------------------
|
||||
//#endregion
|
||||
//#region [ 下部パネル ]
|
||||
////---------------------
|
||||
//if( this.tx下部パネル != null )
|
||||
// this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, 720 - this.tx下部パネル.szテクスチャサイズ.Height );
|
||||
////---------------------
|
||||
//#endregion
|
||||
|
||||
#region [ Option Panel ]
|
||||
//---------------------
|
||||
//this.actオプションパネル.On進行描画();
|
||||
//---------------------
|
||||
//---------------------
|
||||
//this.actオプションパネル.On進行描画();
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
|
||||
#region [ FadeOut ]
|
||||
//---------------------
|
||||
//---------------------
|
||||
switch (base.ePhaseID) {
|
||||
case CStage.EPhase.Common_FADEIN:
|
||||
if (this.actFIFO.Draw() != 0) {
|
||||
@ -355,19 +355,18 @@ namespace OpenTaiko {
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
//---------------------
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
|
||||
#region [ Enumerating Songs ]
|
||||
// CActEnumSongs側で表示する
|
||||
// CActEnumSongs側で表示する
|
||||
#endregion
|
||||
|
||||
// キー入力
|
||||
|
||||
|
||||
// キー入力
|
||||
|
||||
if ((base.ePhaseID != CStage.EPhase.Common_NORMAL)
|
||||
|| this.actKeyAssign.bキー入力待ちの最中である
|
||||
|| OpenTaiko.act現在入力を占有中のプラグイン != null)
|
||||
|| this.actKeyAssign.bキー入力待ちの最中である)
|
||||
return 0;
|
||||
|
||||
if (actCalibrationMode.IsStarted) {
|
||||
@ -397,8 +396,8 @@ namespace OpenTaiko {
|
||||
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)
|
||||
OpenTaiko.Skin.bgmコンフィグ画面.tPlay();
|
||||
@ -410,19 +409,19 @@ namespace OpenTaiko {
|
||||
OpenTaiko.stageコンフィグ.tアサイン完了通知();
|
||||
return 0;
|
||||
}
|
||||
if (!this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi
|
||||
if (!this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi
|
||||
{
|
||||
this.bメニューにフォーカス中 = true;
|
||||
}
|
||||
this.t説明文パネルに現在選択されているメニューの説明を描画する();
|
||||
this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用
|
||||
this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用
|
||||
} else {
|
||||
this.actFIFO.tフェードアウト開始();
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
|
||||
}
|
||||
} else if ((OpenTaiko.Pad.bPressedDGB(EPad.CY) || OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RD)) || (OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LC) || (OpenTaiko.ConfigIni.bEnterIsNotUsedInKeyAssignments && OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return)))) {
|
||||
if (this.n現在のメニュー番号 == 2) {
|
||||
// Exit
|
||||
if (this.n現在のメニュー番号 == 2) {
|
||||
// Exit
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
this.actFIFO.tフェードアウト開始();
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
|
||||
@ -433,14 +432,14 @@ namespace OpenTaiko {
|
||||
} else {
|
||||
switch (this.eItemPanelモード) {
|
||||
case EItemPanelモード.パッド一覧:
|
||||
bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected; // #24525 2011.3.15 yyagi
|
||||
bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected; // #24525 2011.3.15 yyagi
|
||||
this.actList.tEnter押下();
|
||||
|
||||
this.t説明文パネルに現在選択されている項目の説明を描画する();
|
||||
|
||||
if (this.actList.b現在選択されている項目はReturnToMenuである) {
|
||||
this.t説明文パネルに現在選択されているメニューの説明を描画する();
|
||||
if (bIsKeyAssignSelectedBeforeHitEnter == false) // #24525 2011.3.15 yyagi
|
||||
if (bIsKeyAssignSelectedBeforeHitEnter == false) // #24525 2011.3.15 yyagi
|
||||
{
|
||||
this.bメニューにフォーカス中 = true;
|
||||
}
|
||||
@ -465,13 +464,13 @@ namespace OpenTaiko {
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// その他
|
||||
|
||||
}
|
||||
|
||||
|
||||
// その他
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
//-----------------
|
||||
private enum EItemPanelモード {
|
||||
パッド一覧,
|
||||
キーコード一覧
|
||||
@ -521,9 +520,9 @@ namespace OpenTaiko {
|
||||
throw new IndexOutOfRangeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//private CCounter ctBackgroundAnime;
|
||||
}
|
||||
|
||||
//private CCounter ctBackgroundAnime;
|
||||
private CActFIFOWhite actFIFO;
|
||||
private CActConfigKeyAssign actKeyAssign;
|
||||
public CActConfigList actList;
|
||||
@ -534,12 +533,12 @@ namespace OpenTaiko {
|
||||
private const int DESC_W = 220;
|
||||
private EItemPanelモード eItemPanelモード;
|
||||
internal CCachedFontRenderer ftフォント;
|
||||
private int n現在のメニュー番号;
|
||||
//private CTexture txMenuカーソル;
|
||||
//private CTexture tx下部パネル;
|
||||
//private CTexture tx上部パネル;
|
||||
private CTexture tx説明文パネル;
|
||||
//private CTexture tx背景;
|
||||
private int n現在のメニュー番号;
|
||||
//private CTexture txMenuカーソル;
|
||||
//private CTexture tx下部パネル;
|
||||
//private CTexture tx上部パネル;
|
||||
private CTexture tx説明文パネル;
|
||||
//private CTexture tx背景;
|
||||
private CTexture[,] txMenuItemLeft;
|
||||
|
||||
private ScriptBG Background;
|
||||
@ -632,8 +631,8 @@ namespace OpenTaiko {
|
||||
}
|
||||
private void t説明文パネルに現在選択されている項目の説明を描画する() {
|
||||
try {
|
||||
var image = new SKBitmap(440, 288); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する___のは中止。処理速度向上のため。)
|
||||
|
||||
var image = new SKBitmap(440, 288); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する___のは中止。処理速度向上のため。)
|
||||
|
||||
CItemBase item = this.actList.ib現在の選択項目;
|
||||
if ((item.str説明文 != null) && (item.str説明文.Length > 0)) {
|
||||
image.Dispose();
|
||||
@ -649,8 +648,8 @@ namespace OpenTaiko {
|
||||
Trace.TraceError("説明文パネルテクスチャの作成に失敗しました。");
|
||||
this.tx説明文パネル = null;
|
||||
}
|
||||
}
|
||||
//-----------------
|
||||
}
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -224,12 +224,6 @@ namespace OpenTaiko {
|
||||
if (c曲リストノード != null && cスコア != null && c曲リストノード.eノード種別 == CSongListNode.ENodeType.SCORE) {
|
||||
string str選択曲ファイル名 = cスコア.ファイル情報.ファイルの絶対パス;
|
||||
int n曲番号inブロック = OpenTaiko.stageSongSelect.actSongList.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(c曲リストノード);
|
||||
|
||||
foreach (OpenTaiko.STPlugin stPlugin in OpenTaiko.app.PluginList) {
|
||||
Directory.SetCurrentDirectory(stPlugin.pluginDirectory);
|
||||
stPlugin.plugin.On選択曲変更(str選択曲ファイル名, n曲番号inブロック);
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------
|
||||
@ -707,8 +701,7 @@ namespace OpenTaiko {
|
||||
#region [ Inputs ]
|
||||
|
||||
// キー入力
|
||||
if (base.ePhaseID == CStage.EPhase.Common_NORMAL
|
||||
&& OpenTaiko.act現在入力を占有中のプラグイン == null) {
|
||||
if (base.ePhaseID == CStage.EPhase.Common_NORMAL) {
|
||||
#region [ 簡易CONFIGでMore、またはShift+F1: 詳細CONFIG呼び出し ]
|
||||
if (actQuickConfig.bGotoDetailConfig) { // 詳細CONFIG呼び出し
|
||||
actQuickConfig.tDeativatePopupMenu();
|
||||
|
@ -613,8 +613,7 @@ namespace OpenTaiko {
|
||||
|
||||
// キー入力
|
||||
|
||||
if (OpenTaiko.act現在入力を占有中のプラグイン == null)
|
||||
this.tキー入力();
|
||||
this.tキー入力();
|
||||
|
||||
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ using System.Drawing;
|
||||
using System.Text;
|
||||
using DiscordRPC;
|
||||
using FDK;
|
||||
using static OpenTaiko.CActSelect曲リスト;
|
||||
|
||||
namespace OpenTaiko {
|
||||
internal class CStage結果 : CStage {
|
||||
@ -1395,110 +1394,108 @@ namespace OpenTaiko {
|
||||
|
||||
// キー入力
|
||||
|
||||
if (OpenTaiko.act現在入力を占有中のプラグイン == null) {
|
||||
if (base.ePhaseID == CStage.EPhase.Common_NORMAL) {
|
||||
if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape)) {
|
||||
#region [ Return to song select screen (Faster method) ]
|
||||
if (base.ePhaseID == CStage.EPhase.Common_NORMAL) {
|
||||
if (OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Escape)) {
|
||||
#region [ Return to song select screen (Faster method) ]
|
||||
|
||||
bgmResultLoop.tStop();
|
||||
OpenTaiko.Skin.bgmDanResult.tStop();
|
||||
OpenTaiko.Skin.bgmTowerResult.tStop();
|
||||
bgmResultLoop.tStop();
|
||||
OpenTaiko.Skin.bgmDanResult.tStop();
|
||||
OpenTaiko.Skin.bgmTowerResult.tStop();
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
actFI.tフェードアウト開始();
|
||||
|
||||
if (OpenTaiko.latestSongSelect == OpenTaiko.stageSongSelect)// TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan)
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong.rParentNode != null)
|
||||
OpenTaiko.stageSongSelect.actSongList.tCloseBOX();
|
||||
|
||||
tPostprocessing();
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.完了;
|
||||
|
||||
#endregion
|
||||
}
|
||||
if (((OpenTaiko.Pad.bPressedDGB(EPad.CY)
|
||||
|| OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RD))
|
||||
|| (OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LC)
|
||||
|| (OpenTaiko.Pad.bPressedDGB(EPad.Decide)
|
||||
|| OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return))))) {
|
||||
|
||||
|
||||
#region [ Skip animations ]
|
||||
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] < (int)Difficulty.Tower
|
||||
&& this.actParameterPanel.ctMainCounter.CurrentValue < this.actParameterPanel.MountainAppearValue) {
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
actFI.tフェードアウト開始();
|
||||
|
||||
if (OpenTaiko.latestSongSelect == OpenTaiko.stageSongSelect)// TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan)
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong.rParentNode != null)
|
||||
OpenTaiko.stageSongSelect.actSongList.tCloseBOX();
|
||||
|
||||
tPostprocessing();
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.完了;
|
||||
|
||||
#endregion
|
||||
this.actParameterPanel.tSkipResultAnimations();
|
||||
} else if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan
|
||||
&& (ctPhase1 != null && ctPhase1.IsUnEnded)) {
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
ctPhase1.CurrentValue = (int)ctPhase1.EndValue;
|
||||
}
|
||||
if (((OpenTaiko.Pad.bPressedDGB(EPad.CY)
|
||||
|| OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RD))
|
||||
|| (OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LC)
|
||||
|| (OpenTaiko.Pad.bPressedDGB(EPad.Decide)
|
||||
|| OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return))))) {
|
||||
|
||||
#endregion
|
||||
|
||||
#region [ Skip animations ]
|
||||
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] < (int)Difficulty.Tower
|
||||
&& this.actParameterPanel.ctMainCounter.CurrentValue < this.actParameterPanel.MountainAppearValue) {
|
||||
else {
|
||||
if ((lcModal?.AnimationFinished() ?? true)) {
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
this.actParameterPanel.tSkipResultAnimations();
|
||||
} else if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan
|
||||
&& (ctPhase1 != null && ctPhase1.IsUnEnded)) {
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
ctPhase1.CurrentValue = (int)ctPhase1.EndValue;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
else {
|
||||
if ((lcModal?.AnimationFinished() ?? true)) {
|
||||
OpenTaiko.Skin.soundDecideSFX.tPlay();
|
||||
|
||||
if (!mqModals.tAreBothQueuesEmpty()
|
||||
&& (OpenTaiko.Pad.bPressedDGB(EPad.Decide)
|
||||
|| OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return))) {
|
||||
displayedModals = mqModals.tPopModalInOrder();
|
||||
if (!mqModals.tAreBothQueuesEmpty()
|
||||
&& (OpenTaiko.Pad.bPressedDGB(EPad.Decide)
|
||||
|| OpenTaiko.InputManager.Keyboard.KeyPressed((int)SlimDXKeys.Key.Return))) {
|
||||
displayedModals = mqModals.tPopModalInOrder();
|
||||
|
||||
|
||||
} else if (OpenTaiko.ConfigIni.nPlayerCount == 1 || mqModals.tAreBothQueuesEmpty()) {
|
||||
} else if (OpenTaiko.ConfigIni.nPlayerCount == 1 || mqModals.tAreBothQueuesEmpty()) {
|
||||
|
||||
if (!mqModals.tAreBothQueuesEmpty())
|
||||
LogNotification.PopError("Unexpected Error: Exited results screen with remaining modals, this is likely due to a Lua script issue.");
|
||||
if (!mqModals.tAreBothQueuesEmpty())
|
||||
LogNotification.PopError("Unexpected Error: Exited results screen with remaining modals, this is likely due to a Lua script issue.");
|
||||
|
||||
#region [ Return to song select screen ]
|
||||
#region [ Return to song select screen ]
|
||||
|
||||
actFI.tフェードアウト開始();
|
||||
actFI.tフェードアウト開始();
|
||||
|
||||
if (OpenTaiko.latestSongSelect == OpenTaiko.stageSongSelect)
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong.rParentNode != null)
|
||||
OpenTaiko.stageSongSelect.actSongList.tCloseBOX();
|
||||
if (OpenTaiko.latestSongSelect == OpenTaiko.stageSongSelect)
|
||||
if (OpenTaiko.stageSongSelect.rNowSelectedSong.rParentNode != null)
|
||||
OpenTaiko.stageSongSelect.actSongList.tCloseBOX();
|
||||
|
||||
tPostprocessing();
|
||||
tPostprocessing();
|
||||
|
||||
{
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.完了;
|
||||
bgmResultLoop.tStop();
|
||||
OpenTaiko.Skin.bgmDanResult.tStop();
|
||||
OpenTaiko.Skin.bgmTowerResult.tStop();
|
||||
}
|
||||
|
||||
#endregion
|
||||
{
|
||||
base.ePhaseID = CStage.EPhase.Common_FADEOUT;
|
||||
this.eフェードアウト完了時の戻り値 = E戻り値.完了;
|
||||
bgmResultLoop.tStop();
|
||||
OpenTaiko.Skin.bgmDanResult.tStop();
|
||||
OpenTaiko.Skin.bgmTowerResult.tStop();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (OpenTaiko.InputManager.Keyboard.KeyPressing((int)SlimDXKeys.Key.LeftArrow) ||
|
||||
OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LeftChange) ||
|
||||
OpenTaiko.InputManager.Keyboard.KeyPressing((int)SlimDXKeys.Key.RightArrow) ||
|
||||
OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RightChange)) {
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) {
|
||||
#region [ Phase 2 (Swap freely between Exams and Songs) ]
|
||||
if (OpenTaiko.InputManager.Keyboard.KeyPressing((int)SlimDXKeys.Key.LeftArrow) ||
|
||||
OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.LeftChange) ||
|
||||
OpenTaiko.InputManager.Keyboard.KeyPressing((int)SlimDXKeys.Key.RightArrow) ||
|
||||
OpenTaiko.Pad.bPressed(EInstrumentPad.Drums, EPad.RightChange)) {
|
||||
if (OpenTaiko.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan) {
|
||||
#region [ Phase 2 (Swap freely between Exams and Songs) ]
|
||||
|
||||
if (ctPhase1 != null && ctPhase1.IsEnded && (ctPhase2 == null || ctPhase2.IsEnded)) {
|
||||
ctPhase2 = new CCounter(0, 1280, 0.5f, OpenTaiko.Timer);
|
||||
ctPhase2.CurrentValue = 0;
|
||||
if (ctPhase1 != null && ctPhase1.IsEnded && (ctPhase2 == null || ctPhase2.IsEnded)) {
|
||||
ctPhase2 = new CCounter(0, 1280, 0.5f, OpenTaiko.Timer);
|
||||
ctPhase2.CurrentValue = 0;
|
||||
|
||||
if (examsShift == 0)
|
||||
examsShift = 1;
|
||||
else
|
||||
examsShift = -examsShift;
|
||||
if (examsShift == 0)
|
||||
examsShift = 1;
|
||||
else
|
||||
examsShift = -examsShift;
|
||||
|
||||
OpenTaiko.Skin.soundChangeSFX.tPlay();
|
||||
}
|
||||
|
||||
#endregion
|
||||
OpenTaiko.Skin.soundChangeSFX.tPlay();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user