Meijin + extra stuff
This commit is contained in:
parent
bccc437e4d
commit
509c885c9a
@ -4,312 +4,312 @@ using System.Text;
|
||||
|
||||
namespace FDK
|
||||
{
|
||||
/// <summary>
|
||||
/// 一定間隔で単純増加する整数(カウント値)を扱う。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// ○使い方
|
||||
/// 1.CCounterの変数をつくる。
|
||||
/// 2.CCounterを生成
|
||||
/// ctCounter = new CCounter( 0, 3, 10, CDTXMania.Timer );
|
||||
/// 3.進行メソッドを使用する。
|
||||
/// 4.ウマー。
|
||||
///
|
||||
/// double値を使う場合、t進行db、t進行LoopDbを使うこと。
|
||||
/// また、double版では間隔の値はミリ秒単位ではなく、通常の秒単位になります。
|
||||
/// </remarks>
|
||||
public class CCounter
|
||||
{
|
||||
public bool b開始した
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
// 値プロパティ
|
||||
public float n開始値
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
public float n終了値
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int n現在の値
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public double _n間隔
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.n間隔;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.n間隔 = value >= 0 ? value : value * -1;
|
||||
}
|
||||
}
|
||||
|
||||
public float n現在の経過時間ms
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
// 状態プロパティ
|
||||
|
||||
public bool b進行中
|
||||
{
|
||||
get { return (this.n現在の経過時間ms != -1); }
|
||||
}
|
||||
public bool b停止中
|
||||
{
|
||||
get { return !this.b進行中; }
|
||||
}
|
||||
public bool b終了値に達した
|
||||
{
|
||||
get { return (this.n現在の値 >= this.n終了値); }
|
||||
}
|
||||
public bool b終了値に達してない
|
||||
{
|
||||
get { return !this.b終了値に達した; }
|
||||
}
|
||||
|
||||
// コンストラクタ
|
||||
|
||||
public CCounter()
|
||||
{
|
||||
this.timer = null;
|
||||
this.n開始値 = 0;
|
||||
this.n終了値 = 0;
|
||||
this.n現在の値 = 0;
|
||||
this.n現在の値 = 0;
|
||||
this.n現在の経過時間ms = CSoundTimer.n未使用;
|
||||
}
|
||||
|
||||
/// <summary>生成と同時に開始する。</summary>
|
||||
public CCounter(float n開始値, float n終了値, float n間隔ms, CTimer timer)
|
||||
: this()
|
||||
{
|
||||
this.t開始(n開始値, n終了値, n間隔ms, timer);
|
||||
}
|
||||
|
||||
/// <summary>生成と同時に開始する。(double版)</summary>
|
||||
public CCounter(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
|
||||
: this()
|
||||
{
|
||||
this.t開始(db開始値, db終了値, db間隔 * 1000.0f, timer);
|
||||
}
|
||||
|
||||
|
||||
// 状態操作メソッド
|
||||
|
||||
/// <summary>
|
||||
/// カウントを開始する。
|
||||
/// </summary>
|
||||
/// <param name="n開始値">最初のカウント値。</param>
|
||||
/// <param name="n終了値">最後のカウント値。</param>
|
||||
/// <param name="n間隔ms">カウント値を1増加させるのにかける時間(ミリ秒単位)。</param>
|
||||
/// <param name="timer">カウントに使用するタイマ。</param>
|
||||
public void t開始(float n開始値, float n終了値, float n間隔ms, CTimer timer)
|
||||
{
|
||||
this.n開始値 = n開始値;
|
||||
this.n終了値 = n終了値;
|
||||
this._n間隔 = n間隔ms;
|
||||
this.timer = timer;
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
this.n現在の値 = (int)n開始値;
|
||||
this.b開始した = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// カウントを開始する。(double版)
|
||||
/// </summary>
|
||||
/// <param name="db開始値">最初のカウント値。</param>
|
||||
/// <param name="db終了値">最後のカウント値。</param>
|
||||
/// <param name="db間隔">カウント値を1増加させるのにかける時間(秒単位)。</param>
|
||||
/// <param name="timer">カウントに使用するタイマ。</param>
|
||||
public void t開始(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
|
||||
{
|
||||
this.n開始値 = (float)db開始値;
|
||||
this.n終了値 = (float)db終了値;
|
||||
this._n間隔 = db間隔;
|
||||
this.timerdb = timer;
|
||||
this.n現在の経過時間ms = (float)this.timerdb.dbシステム時刻;
|
||||
this.n現在の値 = (int)db開始値;
|
||||
this.b開始した = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
|
||||
/// </summary>
|
||||
public void t進行()
|
||||
{
|
||||
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
|
||||
{
|
||||
long num = this.timer.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n終了値;
|
||||
|
||||
this.n現在の経過時間ms += (float)this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
|
||||
/// </summary>
|
||||
public void t進行db()
|
||||
{
|
||||
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
|
||||
{
|
||||
double num = this.timerdb.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = (float)num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n終了値;
|
||||
|
||||
this.n現在の経過時間ms += (float)this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
|
||||
/// </summary>
|
||||
public void t進行Loop()
|
||||
{
|
||||
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
|
||||
{
|
||||
long num = this.timer.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n開始値;
|
||||
|
||||
this.n現在の経過時間ms += (float)this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
|
||||
/// </summary>
|
||||
public void t進行LoopDb()
|
||||
{
|
||||
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
|
||||
{
|
||||
double num = this.timerdb.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = (float)num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n開始値;
|
||||
|
||||
this.n現在の経過時間ms += (float)this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// カウントを停止する。
|
||||
/// これ以降に t進行() や t進行Loop() を呼び出しても何も処理されない。
|
||||
/// </summary>
|
||||
public void t停止()
|
||||
{
|
||||
this.n現在の経過時間ms = CTimer.n未使用;
|
||||
}
|
||||
|
||||
public void t間隔値変更(double Value)
|
||||
/// <summary>
|
||||
/// 一定間隔で単純増加する整数(カウント値)を扱う。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// ○使い方
|
||||
/// 1.CCounterの変数をつくる。
|
||||
/// 2.CCounterを生成
|
||||
/// ctCounter = new CCounter( 0, 3, 10, CDTXMania.Timer );
|
||||
/// 3.進行メソッドを使用する。
|
||||
/// 4.ウマー。
|
||||
///
|
||||
/// double値を使う場合、t進行db、t進行LoopDbを使うこと。
|
||||
/// また、double版では間隔の値はミリ秒単位ではなく、通常の秒単位になります。
|
||||
/// </remarks>
|
||||
public class CCounter
|
||||
{
|
||||
public bool b開始した
|
||||
{
|
||||
this._n間隔 = Value;
|
||||
get;
|
||||
set;
|
||||
}
|
||||
// 値プロパティ
|
||||
public double n開始値
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
public double n終了値
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int n現在の値
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
// その他
|
||||
public double _n間隔
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.n間隔;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.n間隔 = value >= 0 ? value : value * -1;
|
||||
}
|
||||
}
|
||||
|
||||
#region [ 応用:キーの反復入力をエミュレーションする ]
|
||||
//-----------------
|
||||
public double n現在の経過時間ms
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
// 状態プロパティ
|
||||
|
||||
/// <summary>
|
||||
/// <para>「bキー押下」引数が true の間中、「tキー処理」デリゲート引数を呼び出す。</para>
|
||||
/// <para>ただし、2回目の呼び出しは1回目から 200ms の間を開けてから行い、3回目以降の呼び出しはそれぞれ 30ms の間隔で呼び出す。</para>
|
||||
/// <para>「bキー押下」が false の場合は何もせず、呼び出し回数を 0 にリセットする。</para>
|
||||
/// </summary>
|
||||
/// <param name="bキー押下">キーが押下されている場合は true。</param>
|
||||
/// <param name="tキー処理">キーが押下されている場合に実行する処理。</param>
|
||||
public void tキー反復(bool bキー押下, DGキー処理 tキー処理)
|
||||
{
|
||||
const int n1回目 = 0;
|
||||
const int n2回目 = 1;
|
||||
const int n3回目以降 = 2;
|
||||
public bool b進行中
|
||||
{
|
||||
get { return (this.n現在の経過時間ms != -1); }
|
||||
}
|
||||
public bool b停止中
|
||||
{
|
||||
get { return !this.b進行中; }
|
||||
}
|
||||
public bool b終了値に達した
|
||||
{
|
||||
get { return (this.n現在の値 >= this.n終了値); }
|
||||
}
|
||||
public bool b終了値に達してない
|
||||
{
|
||||
get { return !this.b終了値に達した; }
|
||||
}
|
||||
|
||||
if (bキー押下)
|
||||
{
|
||||
switch (this.n現在の値)
|
||||
{
|
||||
case n1回目:
|
||||
// コンストラクタ
|
||||
|
||||
tキー処理();
|
||||
this.n現在の値 = n2回目;
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
return;
|
||||
public CCounter()
|
||||
{
|
||||
this.timer = null;
|
||||
this.n開始値 = 0;
|
||||
this.n終了値 = 0;
|
||||
this.n現在の値 = 0;
|
||||
this.n現在の値 = 0;
|
||||
this.n現在の経過時間ms = CSoundTimer.n未使用;
|
||||
}
|
||||
|
||||
case n2回目:
|
||||
/// <summary>生成と同時に開始する。</summary>
|
||||
public CCounter(double n開始値, double n終了値, double n間隔ms, CTimer timer)
|
||||
: this()
|
||||
{
|
||||
this.t開始(n開始値, n終了値, n間隔ms, timer);
|
||||
}
|
||||
|
||||
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 200)
|
||||
{
|
||||
tキー処理();
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
this.n現在の値 = n3回目以降;
|
||||
}
|
||||
return;
|
||||
/// <summary>生成と同時に開始する。(double版)</summary>
|
||||
public CCounter(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
|
||||
: this()
|
||||
{
|
||||
this.t開始(db開始値, db終了値, db間隔 * 1000.0f, timer);
|
||||
}
|
||||
|
||||
case n3回目以降:
|
||||
|
||||
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 30)
|
||||
{
|
||||
tキー処理();
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.n現在の値 = n1回目;
|
||||
}
|
||||
}
|
||||
public delegate void DGキー処理();
|
||||
// 状態操作メソッド
|
||||
|
||||
//-----------------
|
||||
#endregion
|
||||
/// <summary>
|
||||
/// カウントを開始する。
|
||||
/// </summary>
|
||||
/// <param name="n開始値">最初のカウント値。</param>
|
||||
/// <param name="n終了値">最後のカウント値。</param>
|
||||
/// <param name="n間隔ms">カウント値を1増加させるのにかける時間(ミリ秒単位)。</param>
|
||||
/// <param name="timer">カウントに使用するタイマ。</param>
|
||||
public void t開始(double n開始値, double n終了値, double n間隔ms, CTimer timer)
|
||||
{
|
||||
this.n開始値 = n開始値;
|
||||
this.n終了値 = n終了値;
|
||||
this._n間隔 = n間隔ms;
|
||||
this.timer = timer;
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
this.n現在の値 = (int)n開始値;
|
||||
this.b開始した = true;
|
||||
}
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
private CTimer timer;
|
||||
private CSoundTimer timerdb;
|
||||
private double n間隔;
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
/// <summary>
|
||||
/// カウントを開始する。(double版)
|
||||
/// </summary>
|
||||
/// <param name="db開始値">最初のカウント値。</param>
|
||||
/// <param name="db終了値">最後のカウント値。</param>
|
||||
/// <param name="db間隔">カウント値を1増加させるのにかける時間(秒単位)。</param>
|
||||
/// <param name="timer">カウントに使用するタイマ。</param>
|
||||
public void t開始(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
|
||||
{
|
||||
this.n開始値 = db開始値;
|
||||
this.n終了値 = db終了値;
|
||||
this._n間隔 = db間隔;
|
||||
this.timerdb = timer;
|
||||
this.n現在の経過時間ms = this.timerdb.dbシステム時刻;
|
||||
this.n現在の値 = (int)db開始値;
|
||||
this.b開始した = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
|
||||
/// </summary>
|
||||
public void t進行()
|
||||
{
|
||||
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
|
||||
{
|
||||
long num = this.timer.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n終了値;
|
||||
|
||||
this.n現在の経過時間ms += this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
|
||||
/// </summary>
|
||||
public void t進行db()
|
||||
{
|
||||
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
|
||||
{
|
||||
double num = this.timerdb.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n終了値;
|
||||
|
||||
this.n現在の経過時間ms += this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
|
||||
/// </summary>
|
||||
public void t進行Loop()
|
||||
{
|
||||
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
|
||||
{
|
||||
long num = this.timer.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n開始値;
|
||||
|
||||
this.n現在の経過時間ms += this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
|
||||
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
|
||||
/// </summary>
|
||||
public void t進行LoopDb()
|
||||
{
|
||||
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
|
||||
{
|
||||
double num = this.timerdb.n現在時刻;
|
||||
if (num < this.n現在の経過時間ms)
|
||||
this.n現在の経過時間ms = num;
|
||||
|
||||
while ((num - this.n現在の経過時間ms) >= this.n間隔)
|
||||
{
|
||||
if (++this.n現在の値 > this.n終了値)
|
||||
this.n現在の値 = (int)this.n開始値;
|
||||
|
||||
this.n現在の経過時間ms += this.n間隔;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// カウントを停止する。
|
||||
/// これ以降に t進行() や t進行Loop() を呼び出しても何も処理されない。
|
||||
/// </summary>
|
||||
public void t停止()
|
||||
{
|
||||
this.n現在の経過時間ms = CTimer.n未使用;
|
||||
}
|
||||
|
||||
public void t間隔値変更(double Value)
|
||||
{
|
||||
this._n間隔 = Value;
|
||||
}
|
||||
|
||||
// その他
|
||||
|
||||
#region [ 応用:キーの反復入力をエミュレーションする ]
|
||||
//-----------------
|
||||
|
||||
/// <summary>
|
||||
/// <para>「bキー押下」引数が true の間中、「tキー処理」デリゲート引数を呼び出す。</para>
|
||||
/// <para>ただし、2回目の呼び出しは1回目から 200ms の間を開けてから行い、3回目以降の呼び出しはそれぞれ 30ms の間隔で呼び出す。</para>
|
||||
/// <para>「bキー押下」が false の場合は何もせず、呼び出し回数を 0 にリセットする。</para>
|
||||
/// </summary>
|
||||
/// <param name="bキー押下">キーが押下されている場合は true。</param>
|
||||
/// <param name="tキー処理">キーが押下されている場合に実行する処理。</param>
|
||||
public void tキー反復(bool bキー押下, DGキー処理 tキー処理)
|
||||
{
|
||||
const int n1回目 = 0;
|
||||
const int n2回目 = 1;
|
||||
const int n3回目以降 = 2;
|
||||
|
||||
if (bキー押下)
|
||||
{
|
||||
switch (this.n現在の値)
|
||||
{
|
||||
case n1回目:
|
||||
|
||||
tキー処理();
|
||||
this.n現在の値 = n2回目;
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
return;
|
||||
|
||||
case n2回目:
|
||||
|
||||
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 200)
|
||||
{
|
||||
tキー処理();
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
this.n現在の値 = n3回目以降;
|
||||
}
|
||||
return;
|
||||
|
||||
case n3回目以降:
|
||||
|
||||
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 30)
|
||||
{
|
||||
tキー処理();
|
||||
this.n現在の経過時間ms = this.timer.n現在時刻;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.n現在の値 = n1回目;
|
||||
}
|
||||
}
|
||||
public delegate void DGキー処理();
|
||||
|
||||
//-----------------
|
||||
#endregion
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
private CTimer timer;
|
||||
private CSoundTimer timerdb;
|
||||
private double n間隔;
|
||||
//-----------------
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,11 @@ namespace TJAPlayer3
|
||||
return nodes.Count();
|
||||
}
|
||||
|
||||
public static string[] tGetNodesByGenreName(string genreName)
|
||||
{
|
||||
return nodes.Where(_nd => _nd.Value.strジャンル == genreName).Select(_nd => _nd.Key).ToArray();
|
||||
}
|
||||
|
||||
#region [General song dict methods]
|
||||
|
||||
public static C曲リストノード tGetNodeFromID(string id)
|
||||
|
@ -23,8 +23,9 @@ namespace TJAPlayer3
|
||||
public DBUnlockables.CUnlockConditions unlockConditions;
|
||||
}
|
||||
|
||||
public void tGetUnlockedItems(int player, ModalQueue mq)
|
||||
public void tGetUnlockedItems(int _player, ModalQueue mq)
|
||||
{
|
||||
int player = TJAPlayer3.GetActualPlayer(_player);
|
||||
var _sf = TJAPlayer3.SaveFileInstances[player].data.NamePlateTitles;
|
||||
bool _edited = false;
|
||||
|
||||
@ -45,7 +46,7 @@ namespace TJAPlayer3
|
||||
HRarity.tRarityToModalInt(item.Value.rarity),
|
||||
item.Value.nameplateInfo.cld.GetString(item.Key)
|
||||
),
|
||||
player);
|
||||
_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using Newtonsoft.Json;
|
||||
@ -11,6 +12,10 @@ namespace TJAPlayer3
|
||||
{
|
||||
["ch"] = 1,
|
||||
["cs"] = 1,
|
||||
["dp"] = 3,
|
||||
["lp"] = 3,
|
||||
["sp"] = 2,
|
||||
["sg"] = 3,
|
||||
};
|
||||
|
||||
public class CUnlockConditions
|
||||
@ -20,9 +25,9 @@ namespace TJAPlayer3
|
||||
Condition = "";
|
||||
Values = new int[]{ 0 };
|
||||
Type = "me";
|
||||
Reference = "";
|
||||
Reference = new string[] { "" };
|
||||
}
|
||||
public CUnlockConditions(string cd, int[] vl, string tp, string rf)
|
||||
public CUnlockConditions(string cd, int[] vl, string tp, string[] rf)
|
||||
{
|
||||
Condition = cd;
|
||||
Values = vl;
|
||||
@ -42,9 +47,9 @@ namespace TJAPlayer3
|
||||
[JsonProperty("type")]
|
||||
public string Type;
|
||||
|
||||
// Referenced chart
|
||||
[JsonProperty("reference")]
|
||||
public string Reference;
|
||||
// Referenced charts
|
||||
[JsonProperty("references")]
|
||||
public string[] Reference;
|
||||
|
||||
[JsonIgnore]
|
||||
private int RequiredArgCount = -1;
|
||||
@ -91,11 +96,15 @@ namespace TJAPlayer3
|
||||
* cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs)
|
||||
* dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~2), Number of performances], input 1 value [Plays fitting the condition]
|
||||
* lp : "Level pass", count of level pass, unlock check during the results screen, condition 3 values : [Star rating, Clear status (0~2), Number of performances], input 1 value [Plays fitting the condition]
|
||||
* sp : "Song performance", count of a specific song pass, unlock check during the results screen, condition 2 x n values for n songs : [Difficulty int (0~4, if -1 : Any), Clear status (0~2), ...], input 1 value [Count of fullfiled songs], n references for n songs (Song ids)
|
||||
* sg : "Song genre (performance)", count of any song pass within a specific genre folder, unlock check during the results screen, condition 3 x n values for n songs : [Song count, Difficulty int (0~4, if -1 : Any), Clear status (0~2), ...], input 1 value [Count of fullfiled genres], n references for n genres (Genre names)
|
||||
*
|
||||
*
|
||||
*/
|
||||
public (bool, string) tConditionMetWrapper(int player, EScreen screen = EScreen.MyRoom)
|
||||
{
|
||||
if (RequiredArgCount < 0 && RequiredArgs.ContainsKey(Condition))
|
||||
RequiredArgCount = RequiredArgs[Condition];
|
||||
|
||||
switch (this.Condition)
|
||||
{
|
||||
@ -112,7 +121,13 @@ namespace TJAPlayer3
|
||||
return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen);
|
||||
else
|
||||
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
|
||||
|
||||
case "sp":
|
||||
case "sg":
|
||||
if (this.Values.Length % this.RequiredArgCount == 0
|
||||
&& this.Reference.Length == this.Values.Length / this.RequiredArgCount)
|
||||
return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen);
|
||||
else
|
||||
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires (" + this.RequiredArgCount.ToString() + " * n) values and n references.");
|
||||
|
||||
}
|
||||
|
||||
@ -150,6 +165,10 @@ namespace TJAPlayer3
|
||||
case "lp":
|
||||
bool fulfiled = this.tValueRequirementMet(inputValues[0], this.Values[2]);
|
||||
return (fulfiled, "");
|
||||
case "sp":
|
||||
case "sg":
|
||||
fulfiled = this.tValueRequirementMet(inputValues[0], this.Reference.Length);
|
||||
return (fulfiled, "");
|
||||
}
|
||||
}
|
||||
// Trying to unlock an item from the Shop menu (If shop => check if enough coins, else => Invalid command)
|
||||
@ -211,8 +230,14 @@ namespace TJAPlayer3
|
||||
|
||||
private int tGetCountChartsPassingCondition(int player)
|
||||
{
|
||||
int _aimedDifficulty = this.Values[0]; // Difficulty if dp, Level if lp
|
||||
int _aimedStatus = this.Values[1];
|
||||
int _aimedDifficulty = 0;
|
||||
int _aimedStatus = 0;
|
||||
|
||||
if (this.Condition == "dp" || this.Condition == "lp")
|
||||
{
|
||||
_aimedDifficulty = this.Values[0]; // Difficulty if dp, Level if lp
|
||||
_aimedStatus = this.Values[1];
|
||||
}
|
||||
|
||||
var _sf = TJAPlayer3.SaveFileInstances[player].data.standardPasses;
|
||||
if (_sf == null
|
||||
@ -253,7 +278,67 @@ namespace TJAPlayer3
|
||||
}
|
||||
}
|
||||
return _count;
|
||||
|
||||
case "sp":
|
||||
_count = 0;
|
||||
for (int i = 0; i < this.Values.Length / this.RequiredArgCount; i++)
|
||||
{
|
||||
int _base = i * this.RequiredArgCount;
|
||||
string _songId = this.Reference[i];
|
||||
_aimedDifficulty = this.Values[_base];
|
||||
_aimedStatus = this.Values[_base + 1];
|
||||
|
||||
if (_sf.ContainsKey(_songId))
|
||||
{
|
||||
var _values = _sf[_songId].d;
|
||||
if (_aimedDifficulty >= 0 && _aimedDifficulty < 4)
|
||||
{
|
||||
if (_values[_aimedDifficulty] >= _aimedStatus)
|
||||
_count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Array.Exists(_values, _v => _v >= _aimedStatus))
|
||||
_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return _count;
|
||||
case "sg":
|
||||
_count = 0;
|
||||
for (int i = 0; i < this.Values.Length / this.RequiredArgCount; i++)
|
||||
{
|
||||
int _base = i * this.RequiredArgCount;
|
||||
string _genreName = this.Reference[i];
|
||||
int _songCount = this.Values[_base];
|
||||
_aimedDifficulty = this.Values[_base + 1];
|
||||
_aimedStatus = this.Values[_base + 2];
|
||||
int _innerCount = 0;
|
||||
|
||||
var _songList = CSongDict.tGetNodesByGenreName(_genreName);
|
||||
foreach (string songId in _songList)
|
||||
{
|
||||
_innerCount = 0;
|
||||
if (_sf.ContainsKey(songId))
|
||||
{
|
||||
var _values = _sf[songId].d;
|
||||
if (_aimedDifficulty >= 0 && _aimedDifficulty < 4)
|
||||
{
|
||||
if (_values[_aimedDifficulty] >= _aimedStatus)
|
||||
_innerCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Array.Exists(_values, _v => _v >= _aimedStatus))
|
||||
_innerCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_innerCount >= _songCount)
|
||||
_count++;
|
||||
|
||||
}
|
||||
return _count;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
@ -463,7 +463,7 @@
|
||||
},
|
||||
"Challenger from another world": {
|
||||
"NameplateInfo": {
|
||||
"iType": 6,
|
||||
"iType": 11,
|
||||
"Localization": {
|
||||
"strings": {
|
||||
"default": "Challenger from another world",
|
||||
@ -485,7 +485,7 @@
|
||||
},
|
||||
"Unbeatable warrior": {
|
||||
"NameplateInfo": {
|
||||
"iType": 6,
|
||||
"iType": 13,
|
||||
"Localization": {
|
||||
"strings": {
|
||||
"default": "Unbeatable warrior",
|
||||
@ -494,7 +494,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rarity": "Rare",
|
||||
"Rarity": "Epic",
|
||||
"UnlockCondition": {
|
||||
"condition": "lp",
|
||||
"type": "me",
|
||||
@ -551,7 +551,7 @@
|
||||
},
|
||||
"Talented drummer": {
|
||||
"NameplateInfo": {
|
||||
"iType": 2,
|
||||
"iType": 12,
|
||||
"Localization": {
|
||||
"strings": {
|
||||
"default": "Talented drummer",
|
||||
@ -560,7 +560,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rarity": "Uncommon",
|
||||
"Rarity": "Rare",
|
||||
"UnlockCondition": {
|
||||
"condition": "lp",
|
||||
"type": "me",
|
||||
@ -661,7 +661,7 @@
|
||||
},
|
||||
"Nine sparkling stars": {
|
||||
"NameplateInfo": {
|
||||
"iType": 3,
|
||||
"iType": 7,
|
||||
"Localization": {
|
||||
"strings": {
|
||||
"default": "Nine sparkling stars",
|
||||
@ -670,7 +670,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rarity": "Rare",
|
||||
"Rarity": "Epic",
|
||||
"UnlockCondition": {
|
||||
"condition": "lp",
|
||||
"type": "me",
|
||||
@ -705,7 +705,7 @@
|
||||
},
|
||||
"Eternal legend": {
|
||||
"NameplateInfo": {
|
||||
"iType": 7,
|
||||
"iType": 8,
|
||||
"Localization": {
|
||||
"strings": {
|
||||
"default": "Eternal legend",
|
||||
@ -714,7 +714,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rarity": "Epic",
|
||||
"Rarity": "Legendary",
|
||||
"UnlockCondition": {
|
||||
"condition": "lp",
|
||||
"type": "me",
|
||||
@ -768,5 +768,30 @@
|
||||
1
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
"First Secret": {
|
||||
"NameplateInfo": {
|
||||
"iType": 15,
|
||||
"Localization": {
|
||||
"strings": {
|
||||
"default": "First Secret",
|
||||
"fr": "Mon premier secret",
|
||||
"ja": "初めての秘密"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Rarity": "Common",
|
||||
"UnlockCondition": {
|
||||
"condition": "sg",
|
||||
"type": "me",
|
||||
"values": [
|
||||
1,
|
||||
-1,
|
||||
0
|
||||
],
|
||||
"references": [
|
||||
"Dashy's Secrets"
|
||||
]
|
||||
}
|
||||
},
|
||||
}
|
BIN
Test/Global/HitSounds/'08 Dual/Adlib.wav
Normal file
BIN
Test/Global/HitSounds/'08 Dual/Adlib.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/'08 Dual/clap.wav
Normal file
BIN
Test/Global/HitSounds/'08 Dual/clap.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/'08 Dual/dong.wav
Normal file
BIN
Test/Global/HitSounds/'08 Dual/dong.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/'08 Dual/ka.wav
Normal file
BIN
Test/Global/HitSounds/'08 Dual/ka.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Break/Adlib.wav
Normal file
BIN
Test/Global/HitSounds/Break/Adlib.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Break/clap.wav
Normal file
BIN
Test/Global/HitSounds/Break/clap.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Break/dong.wav
Normal file
BIN
Test/Global/HitSounds/Break/dong.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Break/ka.wav
Normal file
BIN
Test/Global/HitSounds/Break/ka.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Gorgeous Taiko/Adlib.wav
Normal file
BIN
Test/Global/HitSounds/Gorgeous Taiko/Adlib.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Gorgeous Taiko/clap.wav
Normal file
BIN
Test/Global/HitSounds/Gorgeous Taiko/clap.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Gorgeous Taiko/dong.wav
Normal file
BIN
Test/Global/HitSounds/Gorgeous Taiko/dong.wav
Normal file
Binary file not shown.
BIN
Test/Global/HitSounds/Gorgeous Taiko/ka.wav
Normal file
BIN
Test/Global/HitSounds/Gorgeous Taiko/ka.wav
Normal file
Binary file not shown.
@ -15,8 +15,24 @@
|
||||
"format": "WAV",
|
||||
},
|
||||
{
|
||||
"name": "None",
|
||||
"path": "None\\",
|
||||
"name": "'08 Dual",
|
||||
"path": "'08 Dual\\",
|
||||
"format": "WAV",
|
||||
},
|
||||
]
|
||||
{
|
||||
"name": "Break",
|
||||
"path": "Break\\",
|
||||
"format": "WAV",
|
||||
},
|
||||
{
|
||||
"name": "Gorgeous Taiko",
|
||||
"path": "Gorgeous Taiko\\",
|
||||
"format": "WAV",
|
||||
},
|
||||
{
|
||||
"name": "None",
|
||||
"path": "None",
|
||||
"format": "WAV",
|
||||
},
|
||||
|
||||
]
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -6,9 +6,10 @@ BPM:190.00
|
||||
OFFSET:-0.050
|
||||
DEMOSTART:82.629
|
||||
MAKER:Komi
|
||||
LYRICS:BackWhereImFrom.vtt
|
||||
|
||||
COURSE:Oni
|
||||
LEVEL:9
|
||||
LEVEL:8
|
||||
BALLOON:8
|
||||
|
||||
#START
|
||||
|
@ -0,0 +1,217 @@
|
||||
WEBVTT Offset: 0.050;
|
||||
|
||||
NOTE Set 1
|
||||
|
||||
00:00.000 --> 00:02.684
|
||||
why does the sunsets have to go forever?
|
||||
|
||||
00:02.684 --> 00:05.211
|
||||
why does the life we live have to end forever?
|
||||
|
||||
00:05.211 --> 00:07.737
|
||||
why does the stars stop shining on us forever?
|
||||
|
||||
00:07.737 --> 00:10.263
|
||||
why does it fall to its knees?
|
||||
|
||||
NOTE Set 2
|
||||
|
||||
00:10.263 --> 00:12.789
|
||||
why does the world look at me like a monster?
|
||||
|
||||
00:12.789 --> 00:15.316
|
||||
why do you find my life spilled out on the altar?
|
||||
|
||||
00:15.316 --> 00:18.000
|
||||
why did my life take such a massive corner
|
||||
|
||||
00:18.000 --> 00:20.842
|
||||
I want it all back.
|
||||
|
||||
NOTE Set 3
|
||||
|
||||
00:42.316 --> 00:44.684
|
||||
Take my hand
|
||||
|
||||
00:44.684 --> 00:47.053
|
||||
and im gonna help you win
|
||||
|
||||
00:47.053 --> 00:52.105
|
||||
the roundabout of life that circles through you
|
||||
|
||||
00:52.105 --> 00:54.632
|
||||
dont cry my friend
|
||||
|
||||
00:54.632 --> 00:57.158
|
||||
cause i am here with you
|
||||
|
||||
00:57.158 --> 00:59.684
|
||||
theres nothing falling from the sky
|
||||
|
||||
00:59.684 --> 01:01.579
|
||||
as big as a meteorite
|
||||
|
||||
NOTE Set 4
|
||||
|
||||
01:02.526 --> 01:05.053
|
||||
In this moment
|
||||
|
||||
01:05.053 --> 01:07.579
|
||||
you called out
|
||||
|
||||
01:07.579 --> 01:12.632
|
||||
and i found you laying there
|
||||
|
||||
01:12.632 --> 01:14.842
|
||||
In that moment
|
||||
|
||||
01:14.842 --> 01:17.447
|
||||
i helped you to your feet
|
||||
|
||||
01:17.447 --> 01:22.105
|
||||
and took you to stand on a thousand minerals at a time
|
||||
|
||||
NOTE Set 5
|
||||
|
||||
01:23.684 --> 01:26.289
|
||||
You call me to help you along
|
||||
|
||||
01:26.289 --> 01:28.737
|
||||
help you along
|
||||
|
||||
01:28.737 --> 01:32.842
|
||||
to stand up tall
|
||||
|
||||
NOTE Set 6
|
||||
|
||||
01:33.789 --> 01:36.316
|
||||
dont worry about whats gone wrong
|
||||
|
||||
01:36.316 --> 01:38.763
|
||||
bout whats gone wrong
|
||||
|
||||
01:38.763 --> 01:42.947
|
||||
so you can grow
|
||||
|
||||
NOTE Set 7
|
||||
|
||||
01:43.263 --> 01:44.289
|
||||
I got away from you
|
||||
|
||||
01:44.289 --> 01:45.632
|
||||
i stood you by your side
|
||||
|
||||
01:45.632 --> 01:46.816
|
||||
i showed my heart to you
|
||||
|
||||
01:46.816 --> 01:48.158
|
||||
you threw it out of spite
|
||||
|
||||
NOTE Set 8
|
||||
|
||||
01:48.158 --> 01:49.421
|
||||
I wanna show my world
|
||||
|
||||
01:49.421 --> 01:50.684
|
||||
to your everyone
|
||||
|
||||
01:50.684 --> 01:52.026
|
||||
i find your mind is purged
|
||||
|
||||
01:52.026 --> 01:53.211
|
||||
when you were young
|
||||
|
||||
NOTE Set 9
|
||||
|
||||
01:53.211 --> 01:54.474
|
||||
I got away from you
|
||||
|
||||
01:54.474 --> 01:55.737
|
||||
i stood you by your side
|
||||
|
||||
01:55.737 --> 01:57.000
|
||||
i showed my heart to you
|
||||
|
||||
01:57.000 --> 01:58.263
|
||||
you threw it out of spite
|
||||
|
||||
NOTE Set 10
|
||||
|
||||
01:58.263 --> 01:59.526
|
||||
I wanna show my world
|
||||
|
||||
01:59.526 --> 02:00.789
|
||||
to your everyone
|
||||
|
||||
02:00.789 --> 02:02.053
|
||||
i find your mind is purged
|
||||
|
||||
02:02.053 --> 02:05.053
|
||||
when you were young
|
||||
|
||||
02:06.789 --> 02:12.632
|
||||
when you were young
|
||||
|
||||
NOTE Set 11
|
||||
|
||||
02:24.632 --> 02:27.000
|
||||
In this moment
|
||||
|
||||
02:27.000 --> 02:29.526
|
||||
you called out
|
||||
|
||||
02:29.526 --> 02:34.737
|
||||
and i found you laying there
|
||||
|
||||
02:34.737 --> 02:36.947
|
||||
In that moment
|
||||
|
||||
02:36.947 --> 02:39.474
|
||||
i helped you to your feet
|
||||
|
||||
02:39.474 --> 02:44.211
|
||||
and took you to stand on a thousand minerals at a time
|
||||
|
||||
NOTE Set 12
|
||||
|
||||
02:45.789 --> 02:48.474
|
||||
You call me to help you along
|
||||
|
||||
02:48.474 --> 02:50.842
|
||||
help you along
|
||||
|
||||
02:50.842 --> 02:54.947
|
||||
to stand up tall
|
||||
|
||||
NOTE Set 13
|
||||
|
||||
02:55.895 --> 02:58.421
|
||||
dont worry about whats gone wrong
|
||||
|
||||
02:58.421 --> 03:00.789
|
||||
bout whats gone wrong
|
||||
|
||||
03:00.789 --> 03:05.053
|
||||
so you can grow
|
||||
|
||||
NOTE Set 14
|
||||
|
||||
03:05.842 --> 03:08.684
|
||||
You call me to help you along
|
||||
|
||||
03:08.684 --> 03:10.934
|
||||
help you along
|
||||
|
||||
03:10.934 --> 03:15.158
|
||||
to stand up tall
|
||||
|
||||
NOTE Set 15
|
||||
|
||||
03:16.105 --> 03:18.789
|
||||
dont worry about whats gone wrong
|
||||
|
||||
03:18.789 --> 03:21.079
|
||||
bout whats gone wrong
|
||||
|
||||
03:21.079 --> 03:25.263
|
||||
so you can grow
|
@ -736,7 +736,7 @@ SCOREDIFF:0
|
||||
#END
|
||||
|
||||
COURSE:Hard
|
||||
LEVEL:8
|
||||
LEVEL:9
|
||||
BALLOON:88,88,88,88
|
||||
SCOREINIT:1150
|
||||
SCOREDIFF:0
|
||||
|
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/1.ogg
Normal file
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/1.ogg
Normal file
Binary file not shown.
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/2.ogg
Normal file
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/2.ogg
Normal file
Binary file not shown.
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/3.ogg
Normal file
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/3.ogg
Normal file
Binary file not shown.
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/4.ogg
Normal file
BIN
Test/Songs/S1 Dan-i Dojo/22. Meijin/4.ogg
Normal file
Binary file not shown.
764
Test/Songs/S1 Dan-i Dojo/22. Meijin/Meijin.tja
Normal file
764
Test/Songs/S1 Dan-i Dojo/22. Meijin/Meijin.tja
Normal file
@ -0,0 +1,764 @@
|
||||
// ===== Made using 0AuBSQ's Dan Chart Maker =====
|
||||
|
||||
TITLE:名人
|
||||
BPM:230
|
||||
WAVE:Slayer of..ogg
|
||||
DEMOSTART:60.564
|
||||
SCOREMODE:2
|
||||
COURSE:Dan
|
||||
LEVEL:10
|
||||
BPM:230
|
||||
BALLOON:2,30
|
||||
EXAM1:g,100,100,m
|
||||
EXAM2:jg,41,21,l
|
||||
EXAM3:jb,6,2,l
|
||||
DANTICK:5
|
||||
DANTICKCOLOR:#ff00cd
|
||||
#START
|
||||
#NEXTSONG Slayer of.,Aden Mayo,,1.ogg,350,80,10,3
|
||||
#BPMCHANGE 230
|
||||
#MEASURE 4/4
|
||||
#SCROLL 1.0
|
||||
#BARLINEON
|
||||
#DELAY 0.043
|
||||
EXAM4:r,67,75,m
|
||||
|
||||
#SCROLL 0.75
|
||||
30201201,
|
||||
20120121,
|
||||
10201201,
|
||||
#SCROLL 1.1
|
||||
#GOGOSTART
|
||||
3011103000104010,
|
||||
#SCROLL 0.75
|
||||
#GOGOEND
|
||||
10201201,
|
||||
20120121,
|
||||
10201201,
|
||||
#SCROLL 1.1
|
||||
#GOGOSTART
|
||||
3011103022204020,
|
||||
|
||||
10201120,
|
||||
1011202010002011,
|
||||
1011202010112020,
|
||||
1011202010002000,
|
||||
10201120,
|
||||
1011202010002011,
|
||||
1011202020101110,
|
||||
1021201010002210,
|
||||
|
||||
10201120,
|
||||
1011202010002011,
|
||||
1011202010112020,
|
||||
1011202010002000,
|
||||
10201120,
|
||||
1011202010002011,
|
||||
1011202020101110,
|
||||
2220111040004000,
|
||||
|
||||
#SCROLL 1.25
|
||||
1110201020102220,
|
||||
4010401040101110,
|
||||
#GOGOEND
|
||||
|
||||
#SCROLL 1.1
|
||||
1000200011201020,
|
||||
1000201110201020,
|
||||
1000200011201020,
|
||||
1000200011201120,
|
||||
1000200011201020,
|
||||
1000201110201020,
|
||||
1120102012101020,
|
||||
2010211010221020,
|
||||
|
||||
1000200011201020,
|
||||
1000201110201020,
|
||||
1000200011201020,
|
||||
1110201110201120,
|
||||
1000200011201020,
|
||||
1000201110201020,
|
||||
1010112010101121,
|
||||
200100100110400100400100,
|
||||
|
||||
1000200011201120,
|
||||
1000201110201120,
|
||||
1000201110201120,
|
||||
1110201011102020,
|
||||
1000222011201120,
|
||||
1010201120201120,
|
||||
1111200011122000,
|
||||
1122200022112000,
|
||||
|
||||
5008,
|
||||
1121200011102020,
|
||||
2220111021202220,
|
||||
1110201120102210,
|
||||
1000222011201120,
|
||||
1000201120201120,
|
||||
50000008,
|
||||
41414140,
|
||||
|
||||
#GOGOSTART
|
||||
1000200011201120,
|
||||
1000201110201120,
|
||||
1000201110201120,
|
||||
1110201011102020,
|
||||
1000222011201120,
|
||||
1010201120201120,
|
||||
1111200011122000,
|
||||
1122200022112000,
|
||||
|
||||
5008,
|
||||
1121200011102020,
|
||||
2220111021202220,
|
||||
1110201120102210,
|
||||
1000222011201120,
|
||||
1000201120201120,
|
||||
50000008,
|
||||
1000201110404040,
|
||||
|
||||
#SCROLL 0.75
|
||||
1000211121112111,
|
||||
2000201120002020,
|
||||
1010201040104011,
|
||||
2000300040112000,
|
||||
#SCROLL 1.1
|
||||
1121201010201020,
|
||||
2110201210202020,
|
||||
11211212,
|
||||
2111211121212120,
|
||||
|
||||
1212121112122121,
|
||||
2112222211111122,
|
||||
1121202011202020,
|
||||
21121122,
|
||||
1211122111202000,
|
||||
1120201110102010,
|
||||
1120201010102010,
|
||||
21212121,
|
||||
|
||||
1000200011201120,
|
||||
1000201110201120,
|
||||
1000201110201120,
|
||||
1110201011102020,
|
||||
1000222011201120,
|
||||
1010201120201120,
|
||||
1110202011102020,
|
||||
1210202022102020,
|
||||
|
||||
5008,
|
||||
1121200011102020,
|
||||
2220111021202220,
|
||||
1110201120102210,
|
||||
1000222011201120,
|
||||
1000201120201120,
|
||||
1121221211211121,
|
||||
2121121112211212,
|
||||
#GOGOEND
|
||||
|
||||
,
|
||||
,
|
||||
#NEXTSONG Seismic Shake,DeBisco,,2.ogg,350,80,10,3
|
||||
#BPMCHANGE 155
|
||||
#MEASURE 4/4
|
||||
#SCROLL 1.0
|
||||
#BARLINEON
|
||||
#DELAY 0.193
|
||||
EXAM4:r,0,0,m
|
||||
|
||||
#MEASURE 4/4
|
||||
1011202010201022,
|
||||
1011201020102010,
|
||||
2011201020102010,
|
||||
2011201020
|
||||
#SCROLL 3
|
||||
204000,
|
||||
|
||||
#BPMCHANGE 310
|
||||
#MEASURE 4/4
|
||||
#SCROLL 1
|
||||
20112122,
|
||||
10112122,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 1
|
||||
112122,
|
||||
10112122,
|
||||
#SCROLL 1.5
|
||||
4000
|
||||
#SCROLL 1
|
||||
111010102010,
|
||||
#SCROLL 1.5
|
||||
4000
|
||||
#SCROLL 1
|
||||
111010102010,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 1
|
||||
11
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 1
|
||||
11,
|
||||
#SCROLL 1.5
|
||||
4
|
||||
#SCROLL 1
|
||||
222,
|
||||
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
122121,
|
||||
10122121,
|
||||
1000102020102011,
|
||||
11122121,
|
||||
10122121,
|
||||
10122121,
|
||||
1000102020102011,
|
||||
11122121,
|
||||
|
||||
10122121,
|
||||
10122121,
|
||||
1000102020102011,
|
||||
11122121,
|
||||
10122121,
|
||||
10122121,
|
||||
10122121,
|
||||
212121212120,
|
||||
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
222121,
|
||||
12222121,
|
||||
12221212,
|
||||
10222121,
|
||||
12222121,
|
||||
12222121,
|
||||
12221212,
|
||||
1000202020101110,
|
||||
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
222121,
|
||||
12222121,
|
||||
#SCROLL 1.5
|
||||
4
|
||||
#SCROLL 0.75
|
||||
2221212,
|
||||
10222121,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
222121,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
222121,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
111010
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
111010,
|
||||
212121212120,
|
||||
|
||||
#BPMCHANGE 155
|
||||
#SCROLL 3
|
||||
4,
|
||||
00000004,
|
||||
4,
|
||||
00044040,
|
||||
4,
|
||||
00000004,
|
||||
4,
|
||||
000000000400404040404040,
|
||||
|
||||
#BPMCHANGE 310
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.6
|
||||
202222,
|
||||
20202222,
|
||||
20202222,
|
||||
20202222,
|
||||
20202222,
|
||||
02202202,
|
||||
022220
|
||||
#SCROLL 1.5
|
||||
30,
|
||||
44,
|
||||
|
||||
40
|
||||
#SCROLL 0.75
|
||||
222022,
|
||||
02202022,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
222022,
|
||||
02222222,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
220222,
|
||||
#SCROLL 1.5
|
||||
40
|
||||
#SCROLL 0.75
|
||||
220222,
|
||||
#SCROLL 1.5
|
||||
4111,
|
||||
#SCROLL 1.43
|
||||
2
|
||||
#SCROLL 1.36
|
||||
1
|
||||
#SCROLL 1.3
|
||||
2
|
||||
#SCROLL 1.24
|
||||
1
|
||||
#SCROLL 1.18
|
||||
2
|
||||
#SCROLL 1.12
|
||||
1
|
||||
#SCROLL 1.07
|
||||
2
|
||||
#SCROLL 1.02
|
||||
1
|
||||
#SCROLL 0.97
|
||||
2
|
||||
#SCROLL 0.92
|
||||
1
|
||||
#SCROLL 0.87
|
||||
20,
|
||||
|
||||
#SCROLL 0.75
|
||||
11,
|
||||
22222000,
|
||||
|
||||
#SCROLL 1
|
||||
#GOGOSTART
|
||||
12010201,
|
||||
02110201,
|
||||
12010201,
|
||||
02110201,
|
||||
12010201,
|
||||
02110201,
|
||||
12010201,
|
||||
0020111010201010,
|
||||
|
||||
12010201,
|
||||
02110201,
|
||||
12010201,
|
||||
02110201,
|
||||
12010201,
|
||||
02110201,
|
||||
12010201,
|
||||
#GOGOEND
|
||||
212121212120,
|
||||
|
||||
#GOGOSTART
|
||||
12010201,
|
||||
0020101000200011,
|
||||
12010201,
|
||||
0020101000200012,
|
||||
12010201,
|
||||
0020101000200011,
|
||||
12010201,
|
||||
0020111010201011,
|
||||
#GOGOEND
|
||||
|
||||
12011201,
|
||||
1020001011200010,
|
||||
12011201,
|
||||
1020001110200010,
|
||||
1020201110202011,
|
||||
1020201110202011,
|
||||
12211221,
|
||||
#SCROLL 0.4
|
||||
200200100100202020100000,
|
||||
|
||||
#SCROLL 1
|
||||
#GOGOSTART
|
||||
11211021,
|
||||
11211021,
|
||||
12121212,
|
||||
1110202010002000,
|
||||
10211021,
|
||||
11211021,
|
||||
10211021,
|
||||
1110202010102010,
|
||||
|
||||
11211021,
|
||||
11211021,
|
||||
12121212,
|
||||
1110202010002000,
|
||||
10211021,
|
||||
11211021,
|
||||
1120202011202020,
|
||||
#GOGOEND
|
||||
212121212120,
|
||||
|
||||
#GOGOSTART
|
||||
11211021,
|
||||
11211021,
|
||||
12121212,
|
||||
1110202010002000,
|
||||
10211021,
|
||||
11211021,
|
||||
10211021,
|
||||
1110202010102010,
|
||||
|
||||
11211021,
|
||||
11211021,
|
||||
12121212,
|
||||
1110202010002000,
|
||||
10211021,
|
||||
11211021,
|
||||
33333333,
|
||||
#SCROLL 0.75
|
||||
#GOGOEND
|
||||
212121212120,
|
||||
|
||||
11,
|
||||
222220
|
||||
#SCROLL 1
|
||||
40,
|
||||
#SCROLL 4
|
||||
3,
|
||||
,
|
||||
#NEXTSONG Shockwave,Yonokid,,3.ogg,350,80,10,3
|
||||
#BPMCHANGE 225
|
||||
#MEASURE 4/4
|
||||
#SCROLL 1.0
|
||||
#BARLINEON
|
||||
EXAM4:r,26,32,m
|
||||
|
||||
#MEASURE 8/4
|
||||
#SCROLL 0.5
|
||||
1010000101010010,
|
||||
2020000202020000,
|
||||
1010000101010010,
|
||||
2020000202020000,
|
||||
|
||||
1010000101010010,
|
||||
2020000202020000,
|
||||
1010000101010010,
|
||||
200000200200000200000100000100000100202020202020,
|
||||
|
||||
1021020102011020,
|
||||
1021020102011020,
|
||||
1021020102011020,
|
||||
1021020102011020,
|
||||
|
||||
1021020102011020,
|
||||
1021020102011020,
|
||||
1021020102011020,
|
||||
1021020102012010,
|
||||
|
||||
2011201120112121,
|
||||
2011201121120120,
|
||||
2020202120202021,
|
||||
20202020202020202222222222222222,
|
||||
|
||||
10112010202210201021101020000000,
|
||||
|
||||
#GOGOSTART
|
||||
100000100100100000100100200000200200200000200200200000200000200000200000200020002000200020002000,
|
||||
100000101010200100202020100000101010200100100100,
|
||||
100000100100100000100100200000200200200000200200200000200000200000200000200020002000200020002000,
|
||||
100000000000100010001000200000100000200020002000100000100100200000100000200100200200100000000000,
|
||||
|
||||
100000100100100000100100200020002000200020001000200020002000200020002000200200200000100100100000,
|
||||
100100101010202020202020100100100000200200100000,
|
||||
100000100100100000100100200000200200200000200200200020001000200020001000200020001000200020001000,
|
||||
100000100100100000100100200010001000200010001000100010001000200020002000100100100100200200200200,
|
||||
#GOGOEND
|
||||
|
||||
1010000101010010,
|
||||
2020000202020000,
|
||||
1010000101010010,
|
||||
2020000202020000,
|
||||
|
||||
100200200200100200200200100200200200100200200222,
|
||||
100200200200102020202020100200200200100200220220,
|
||||
100200200200100200200200100200200200100200200222,
|
||||
100200200200102020202020100200200200202020101010,
|
||||
|
||||
200100100100200100100100200100100100200100200111,
|
||||
200100100100201010101010200100100200100100220110,
|
||||
200100200100200100200100200100200100200100200111,
|
||||
200000200000200000200000200000200000200000200000200200200200200200200200202020202020202020202020,
|
||||
|
||||
102000000000200100100200000200000100200010002000,
|
||||
#MEASURE 4/4
|
||||
#GOGOSTART
|
||||
#SCROLL 2
|
||||
300334,
|
||||
403040
|
||||
#SCROLL 1
|
||||
222222,
|
||||
1011201000201120,
|
||||
1011201110222050,
|
||||
0000008010112020,
|
||||
0010002000112000,
|
||||
|
||||
1111221110221022,
|
||||
221221221221,
|
||||
344344,
|
||||
112121112121,
|
||||
1011201020221020,
|
||||
1111203000300060,
|
||||
0008,
|
||||
100000100100200000100000200020001000200200200100,
|
||||
#GOGOEND
|
||||
|
||||
1011201110201110,
|
||||
1020121011102210,
|
||||
1011201110201110,
|
||||
100000200000100200100000200020002000200020002000,
|
||||
1011201110201110,
|
||||
1020121011102210,
|
||||
1011201110201110,
|
||||
1020121022221111,
|
||||
|
||||
1011201110201110,
|
||||
1020121011102210,
|
||||
1011201110201110,
|
||||
1020121022221110,
|
||||
111212111212,
|
||||
111212111212,
|
||||
100020002000100020002000100200200100200200100200,
|
||||
100010101000100010101000100200200100200200100200,
|
||||
|
||||
78
|
||||
#SCROLL 2
|
||||
300000,
|
||||
#SCROLL 1
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
#NEXTSONG DON'T LOOK BACK,TFD500,,4.ogg,350,80,10,3,true
|
||||
#BPMCHANGE 200
|
||||
#MEASURE 4/4
|
||||
#SCROLL 1.0
|
||||
#BARLINEON
|
||||
#DELAY 0.0095
|
||||
EXAM4:r,86,95,m
|
||||
|
||||
#SCROLL 0.5
|
||||
12121212,
|
||||
#BARLINEOFF
|
||||
02020202,
|
||||
12121212,
|
||||
02020202,
|
||||
#BARLINEON
|
||||
12121212,
|
||||
#BARLINEOFF
|
||||
02020202,
|
||||
12121212,
|
||||
02020202,
|
||||
|
||||
#SCROLL 1
|
||||
#BARLINEON
|
||||
1022102010201000,
|
||||
12121210,
|
||||
1022102010201000,
|
||||
12121210,
|
||||
1022102010201000,
|
||||
12121210,
|
||||
1022102010201000,
|
||||
12121210,
|
||||
|
||||
11121112,
|
||||
11122211,
|
||||
11221122,
|
||||
11222211,
|
||||
11121112,
|
||||
11122211,
|
||||
11221122,
|
||||
11222211,
|
||||
|
||||
3012102012212010,
|
||||
02020211,
|
||||
3012102012222010,
|
||||
02020211,
|
||||
3012102012212010,
|
||||
02020211,
|
||||
3012102012222010,
|
||||
02020211,
|
||||
|
||||
1212
|
||||
#SCROLL 1.25
|
||||
1212,
|
||||
#SCROLL 1.5
|
||||
1212
|
||||
#SCROLL 1.75
|
||||
1212
|
||||
#SCROLL 2
|
||||
50000080,
|
||||
|
||||
#SCROLL 1
|
||||
#BPMCHANGE 190
|
||||
70
|
||||
#BPMCHANGE 180
|
||||
00
|
||||
#BPMCHANGE 175
|
||||
00
|
||||
#BPMCHANGE 150
|
||||
0
|
||||
#BPMCHANGE 140
|
||||
0,
|
||||
#BARLINEOFF
|
||||
#BPMCHANGE 130
|
||||
0
|
||||
#BPMCHANGE 110
|
||||
0
|
||||
#BPMCHANGE 90
|
||||
0
|
||||
#BPMCHANGE 70
|
||||
0
|
||||
#BPMCHANGE 200
|
||||
80
|
||||
#SCROLL 3
|
||||
68,
|
||||
|
||||
#BARLINEON
|
||||
#BPMCHANGE 225
|
||||
#GOGOSTART
|
||||
#SCROLL 1
|
||||
3022102012221022,
|
||||
1022102212221212,
|
||||
1220102210201222,
|
||||
1022102212221212,
|
||||
0212102210221222,
|
||||
1022102212201212,
|
||||
1022102212201222,
|
||||
100000100000100000100100100000100000101010101010,
|
||||
|
||||
1120201120201120,
|
||||
1220201210201120,
|
||||
1220201220201120,
|
||||
2110211021112120,
|
||||
1210101220201120,
|
||||
2120202110202120,
|
||||
1220201220201120,
|
||||
100100200000100000100200100000200000202020202020,
|
||||
#GOGOEND
|
||||
|
||||
1110201110201110,
|
||||
1210201210201210,
|
||||
1110201110201120,
|
||||
100100200000100000200200100200200000202020202020,
|
||||
1110201110201220,
|
||||
1022201022201220,
|
||||
200020001000200020001000200200100000200200100000,
|
||||
100100200000100200200000100100200200102020202020,
|
||||
|
||||
1000221120102120,
|
||||
1120102021120120,
|
||||
100000100100200000100000200100200000202020200000,
|
||||
#SCROLL 1.5
|
||||
#GOGOSTART
|
||||
303060806080
|
||||
#SCROLL 3
|
||||
6008,
|
||||
#GOGOEND
|
||||
#SCROLL 1
|
||||
1011201022112011,
|
||||
202010100000202010100000200200100000200100100000,
|
||||
202020200000202020200000200200100000200100200000,
|
||||
1210212021121120,
|
||||
|
||||
#SCROLL 0.75
|
||||
10101011,
|
||||
01101011,
|
||||
10101110,
|
||||
10111011,
|
||||
11111011,
|
||||
10101011,
|
||||
10111111,
|
||||
3330,
|
||||
|
||||
#SCROLL 1
|
||||
1111,
|
||||
1100,
|
||||
#BPMCHANGE 450
|
||||
#MEASURE 8/4
|
||||
#SCROLL 0.5
|
||||
11111111,
|
||||
11110000,
|
||||
#BPMCHANGE 900
|
||||
#MEASURE 16/4
|
||||
#SCROLL 0.25
|
||||
1111111111111111,
|
||||
1111111111111111,
|
||||
#SCROLL 1
|
||||
6,
|
||||
#BPMCHANGE 225
|
||||
#MEASURE 4/4
|
||||
800
|
||||
#SCROLL 3
|
||||
4,
|
||||
|
||||
#GOGOSTART
|
||||
#SCROLL 1
|
||||
3022102012221022,
|
||||
1022102212221212,
|
||||
1220102210201222,
|
||||
1022102212221212,
|
||||
0212102210221222,
|
||||
1022102212201212,
|
||||
1022102212201222,
|
||||
100000100000100000100100100000100000101010101010,
|
||||
|
||||
1120201120201120,
|
||||
1220201210201120,
|
||||
1220201220201120,
|
||||
2110211021112120,
|
||||
1210101220201120,
|
||||
2120202110202120,
|
||||
1220201220201120,
|
||||
#GOGOEND
|
||||
#BPMCHANGE 250
|
||||
100100200000100000100200
|
||||
#BPMCHANGE 275
|
||||
100000200000202020202020,
|
||||
|
||||
#BPMCHANGE 300
|
||||
#GOGOSTART
|
||||
12121212,
|
||||
12121211,
|
||||
12121212,
|
||||
12121211,
|
||||
21121212,
|
||||
1020102010111010,
|
||||
12121212,
|
||||
11111111,
|
||||
|
||||
12121212,
|
||||
12121211,
|
||||
1020102010201111,
|
||||
12121211,
|
||||
21121212,
|
||||
12121211,
|
||||
12121212,
|
||||
1010101011101110,
|
||||
|
||||
3600,
|
||||
0008,
|
||||
44,
|
||||
3,
|
||||
0000000022201110,
|
||||
#GOGOEND
|
||||
#BPMCHANGE 75
|
||||
#SCROLL 4
|
||||
3,
|
||||
,
|
||||
,
|
||||
,
|
||||
#END
|
4
Test/Songs/S1 Dan-i Dojo/22. Meijin/uniqueID.json
Normal file
4
Test/Songs/S1 Dan-i Dojo/22. Meijin/uniqueID.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"id": "x8WlzLf0q1bcRR30R8eUCQiqNzGx5Q2a7NZXY1L3Li9acAPDAqjHaH5bQ1UDMcIU",
|
||||
"url": ""
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user