1
0
mirror of synced 2024-11-24 07:30:21 +01:00

remove deprecated DTX plugin references

This commit is contained in:
0auBSQ 2024-10-22 05:33:49 +09:00
parent b28c2f6c56
commit 4957d54710
9 changed files with 251 additions and 796 deletions

View File

@ -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 ]

View File

@ -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
}
}

View File

@ -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ブロック">選択されている曲のブロック内の曲番号(04)。</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);
}
}

View File

@ -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);
}
}

View File

@ -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モード選択) {

View File

@ -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) {

View File

@ -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でMoreShift+F1: CONFIG呼び出し ]
if (actQuickConfig.bGotoDetailConfig) { // 詳細CONFIG呼び出し
actQuickConfig.tDeativatePopupMenu();

View File

@ -613,7 +613,6 @@ namespace OpenTaiko {
// キー入力
if (OpenTaiko.act現在入力を占有中のプラグイン == null)
this.tキー入力();

View File

@ -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;
}