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ガベージコレクションを実行する();
|
||||
}
|
||||
@ -942,12 +891,6 @@ namespace OpenTaiko {
|
||||
|
||||
}
|
||||
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
|
||||
//-----------------------------
|
||||
#endregion
|
||||
break;
|
||||
@ -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();
|
||||
@ -1470,16 +1319,6 @@ for (int i = 0; i < 3; i++) {
|
||||
// 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
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
@ -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();
|
||||
@ -1520,16 +1349,6 @@ for (int i = 0; i < 3; i++) {
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stageSongSelect;
|
||||
|
||||
#region [ プラグイン Onステージ変更() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
this.tガベージコレクションを実行する();
|
||||
break;
|
||||
//-----------------------------
|
||||
@ -1543,17 +1362,6 @@ for (int i = 0; i < 3; i++) {
|
||||
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
|
||||
|
||||
r現在のステージ.DeActivate();
|
||||
if (!ConfigIni.PreAssetsLoading) {
|
||||
r現在のステージ.ReleaseManagedResource();
|
||||
@ -1570,16 +1378,6 @@ for (int i = 0; i < 3; i++) {
|
||||
r直前のステージ = r現在のステージ;
|
||||
r現在のステージ = stage結果;
|
||||
|
||||
#region [ プラグイン Onステージ変更() の呼び出し ]
|
||||
//---------------------
|
||||
foreach (STPlugin pg in this.PluginList) {
|
||||
Directory.SetCurrentDirectory(pg.pluginDirectory);
|
||||
pg.plugin.Onステージ変更();
|
||||
Directory.SetCurrentDirectory(OpenTaiko.strEXEのあるフォルダ);
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
|
||||
break;
|
||||
//-----------------------------
|
||||
#endregion
|
||||
@ -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モード選択) {
|
||||
|
@ -366,8 +366,7 @@ namespace OpenTaiko {
|
||||
// キー入力
|
||||
|
||||
if ((base.ePhaseID != CStage.EPhase.Common_NORMAL)
|
||||
|| this.actKeyAssign.bキー入力待ちの最中である
|
||||
|| OpenTaiko.act現在入力を占有中のプラグイン != null)
|
||||
|| this.actKeyAssign.bキー入力待ちの最中である)
|
||||
return 0;
|
||||
|
||||
if (actCalibrationMode.IsStarted) {
|
||||
|
@ -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,7 +613,6 @@ namespace OpenTaiko {
|
||||
|
||||
// キー入力
|
||||
|
||||
if (OpenTaiko.act現在入力を占有中のプラグイン == null)
|
||||
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,7 +1394,6 @@ 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) ]
|
||||
@ -1502,7 +1500,6 @@ namespace OpenTaiko {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user