public int n全チップ数;\r
public string strDTXManiaのバージョン;\r
public bool レーン9モード;\r
- public int nRiskyMode; // #23559 2011.6.20 yyagi 0=OFF, 1-10=Risky\r
+ public int nRisky; // #23559 2011.6.20 yyagi 0=OFF, 1-10=Risky\r
public string 最終更新日時;\r
\r
public C演奏記録()\r
this.最終更新日時 = "";\r
this.Hash = "00000000000000000000000000000000";\r
this.レーン9モード = true;\r
- this.nRiskyMode = 0; // #23559 2011.6.20 yyagi\r
+ this.nRisky = 0; // #23559 2011.6.20 yyagi\r
}\r
\r
public bool bフルコンボじゃない\r
stream.Read( buffer, 0, (int) stream.Length );\r
stream.Close();\r
StringBuilder builder = new StringBuilder(0x21);\r
- using (MD5CryptoServiceProvider m = new MD5CryptoServiceProvider()) // #25650 2011.7.7 yyagi; add Dispose() method to avoid resource leak.\r
+ using ( MD5CryptoServiceProvider m = new MD5CryptoServiceProvider() ) // #25650 2011.7.7 yyagi; Using "using" structure to clarify the scope for MD5CryptServiceProvider.\r
{\r
byte[] buffer2 = m.ComputeHash(buffer);\r
foreach (byte num in buffer2)\r
}\r
}\r
}\r
- else if( item.Equals( "TightDrums" ) )\r
+ else if ( item.Equals( "Risky" ) )\r
+ {\r
+ c演奏記録.nRisky = int.Parse( para );\r
+ }\r
+ else if ( item.Equals( "TightDrums" ) )\r
{\r
c演奏記録.bTight = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "SuddenDrums" ) )\r
+ else if ( item.Equals( "SuddenDrums" ) )\r
{\r
c演奏記録.bSudden.Drums = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "SuddenGuitar" ) )\r
+ else if ( item.Equals( "SuddenGuitar" ) )\r
{\r
c演奏記録.bSudden.Guitar = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "SuddenBass" ) )\r
+ else if ( item.Equals( "SuddenBass" ) )\r
{\r
c演奏記録.bSudden.Bass = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "HiddenDrums" ) )\r
+ else if ( item.Equals( "HiddenDrums" ) )\r
{\r
c演奏記録.bHidden.Drums = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "HiddenGuitar" ) )\r
+ else if ( item.Equals( "HiddenGuitar" ) )\r
{\r
c演奏記録.bHidden.Guitar = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "HiddenBass" ) )\r
+ else if ( item.Equals( "HiddenBass" ) )\r
{\r
c演奏記録.bHidden.Bass = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "ReverseDrums" ) )\r
+ else if ( item.Equals( "ReverseDrums" ) )\r
{\r
c演奏記録.bReverse.Drums = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "ReverseGuitar" ) )\r
+ else if ( item.Equals( "ReverseGuitar" ) )\r
{\r
c演奏記録.bReverse.Guitar = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "ReverseBass" ) )\r
+ else if ( item.Equals( "ReverseBass" ) )\r
{\r
c演奏記録.bReverse.Bass = C変換.bONorOFF( para[ 0 ] );\r
}\r
else\r
{\r
- if( item.Equals( "RandomGuitar" ) )\r
+ if ( item.Equals( "RandomGuitar" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
- case (int)Eランダムモード.OFF:\r
+ case (int) Eランダムモード.OFF:\r
{\r
c演奏記録.eRandom.Guitar = Eランダムモード.OFF;\r
continue;\r
}\r
- case (int)Eランダムモード.RANDOM:\r
+ case (int) Eランダムモード.RANDOM:\r
{\r
c演奏記録.eRandom.Guitar = Eランダムモード.RANDOM;\r
continue;\r
}\r
- case (int)Eランダムモード.SUPERRANDOM:\r
+ case (int) Eランダムモード.SUPERRANDOM:\r
{\r
c演奏記録.eRandom.Guitar = Eランダムモード.SUPERRANDOM;\r
continue;\r
}\r
throw new Exception( "RandomGuitar の値が無効です。" );\r
}\r
- if( item.Equals( "RandomBass" ) )\r
+ if ( item.Equals( "RandomBass" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
- case (int)Eランダムモード.OFF:\r
+ case (int) Eランダムモード.OFF:\r
{\r
c演奏記録.eRandom.Bass = Eランダムモード.OFF;\r
continue;\r
}\r
- case (int)Eランダムモード.RANDOM:\r
+ case (int) Eランダムモード.RANDOM:\r
{\r
c演奏記録.eRandom.Bass = Eランダムモード.RANDOM;\r
continue;\r
}\r
throw new Exception( "RandomBass の値が無効です。" );\r
}\r
- if( item.Equals( "LightGuitar" ) )\r
+ if ( item.Equals( "LightGuitar" ) )\r
{\r
c演奏記録.bLight.Guitar = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "LightBass" ) )\r
+ else if ( item.Equals( "LightBass" ) )\r
{\r
c演奏記録.bLight.Bass = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "LeftGuitar" ) )\r
+ else if ( item.Equals( "LeftGuitar" ) )\r
{\r
c演奏記録.bLeft.Guitar = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "LeftBass" ) )\r
+ else if ( item.Equals( "LeftBass" ) )\r
{\r
c演奏記録.bLeft.Bass = C変換.bONorOFF( para[ 0 ] );\r
}\r
else\r
{\r
- if( item.Equals( "Dark" ) )\r
+ if ( item.Equals( "Dark" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "Dark の値が無効です。" );\r
}\r
- if( item.Equals( "ScrollSpeedDrums" ) )\r
+ if ( item.Equals( "ScrollSpeedDrums" ) )\r
{\r
c演奏記録.f譜面スクロール速度.Drums = (float) decimal.Parse( para );\r
}\r
- else if( item.Equals( "ScrollSpeedGuitar" ) )\r
+ else if ( item.Equals( "ScrollSpeedGuitar" ) )\r
{\r
c演奏記録.f譜面スクロール速度.Guitar = (float) decimal.Parse( para );\r
}\r
- else if( item.Equals( "ScrollSpeedBass" ) )\r
+ else if ( item.Equals( "ScrollSpeedBass" ) )\r
{\r
c演奏記録.f譜面スクロール速度.Bass = (float) decimal.Parse( para );\r
}\r
- else if( item.Equals( "PlaySpeed" ) )\r
+ else if ( item.Equals( "PlaySpeed" ) )\r
{\r
string[] strArray2 = para.Split( new char[] { '/' } );\r
- if( strArray2.Length == 2 )\r
+ if ( strArray2.Length == 2 )\r
{\r
c演奏記録.n演奏速度分子 = int.Parse( strArray2[ 0 ] );\r
c演奏記録.n演奏速度分母 = int.Parse( strArray2[ 1 ] );\r
}\r
else\r
{\r
- if( item.Equals( "HHGroup" ) )\r
+ if ( item.Equals( "HHGroup" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "HHGroup の値が無効です。" );\r
}\r
- if( item.Equals( "FTGroup" ) )\r
+ if ( item.Equals( "FTGroup" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "FTGroup の値が無効です。" );\r
}\r
- if( item.Equals( "CYGroup" ) )\r
+ if ( item.Equals( "CYGroup" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "CYGroup の値が無効です。" );\r
}\r
- if( item.Equals( "HitSoundPriorityHH" ) )\r
+ if ( item.Equals( "HitSoundPriorityHH" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "HitSoundPriorityHH の値が無効です。" );\r
}\r
- if( item.Equals( "HitSoundPriorityFT" ) )\r
+ if ( item.Equals( "HitSoundPriorityFT" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "HitSoundPriorityFT の値が無効です。" );\r
}\r
- if( item.Equals( "HitSoundPriorityCY" ) )\r
+ if ( item.Equals( "HitSoundPriorityCY" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "HitSoundPriorityCY の値が無効です。" );\r
}\r
- if( item.Equals( "Guitar" ) )\r
+ if ( item.Equals( "Guitar" ) )\r
{\r
c演奏記録.bGuitar有効 = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "Drums" ) )\r
+ else if ( item.Equals( "Drums" ) )\r
{\r
c演奏記録.bDrums有効 = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "StageFailed" ) )\r
+ else if ( item.Equals( "StageFailed" ) )\r
{\r
c演奏記録.bSTAGEFAILED有効 = C変換.bONorOFF( para[ 0 ] );\r
}\r
else\r
{\r
- if( item.Equals( "DamageLevel" ) )\r
+ if ( item.Equals( "DamageLevel" ) )\r
{\r
- switch( int.Parse( para ) )\r
+ switch ( int.Parse( para ) )\r
{\r
case 0:\r
{\r
}\r
throw new Exception( "DamageLevel の値が無効です。" );\r
}\r
- if( item.Equals( "UseKeyboard" ) )\r
+ if ( item.Equals( "UseKeyboard" ) )\r
{\r
c演奏記録.b演奏にキーボードを使用した = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "UseMIDIIN" ) )\r
+ else if ( item.Equals( "UseMIDIIN" ) )\r
{\r
c演奏記録.b演奏にMIDI入力を使用した = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "UseJoypad" ) )\r
+ else if ( item.Equals( "UseJoypad" ) )\r
{\r
c演奏記録.b演奏にジョイパッドを使用した = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "UseMouse" ) )\r
+ else if ( item.Equals( "UseMouse" ) )\r
{\r
c演奏記録.b演奏にマウスを使用した = C変換.bONorOFF( para[ 0 ] );\r
}\r
- else if( item.Equals( "PerfectRange" ) )\r
+ else if ( item.Equals( "PerfectRange" ) )\r
{\r
c演奏記録.nPerfectになる範囲ms = int.Parse( para );\r
}\r
- else if( item.Equals( "GreatRange" ) )\r
+ else if ( item.Equals( "GreatRange" ) )\r
{\r
c演奏記録.nGreatになる範囲ms = int.Parse( para );\r
}\r
- else if( item.Equals( "GoodRange" ) )\r
+ else if ( item.Equals( "GoodRange" ) )\r
{\r
c演奏記録.nGoodになる範囲ms = int.Parse( para );\r
}\r
- else if( item.Equals( "PoorRange" ) )\r
+ else if ( item.Equals( "PoorRange" ) )\r
{\r
c演奏記録.nPoorになる範囲ms = int.Parse( para );\r
}\r
- else if( item.Equals( "DTXManiaVersion" ) )\r
+ else if ( item.Equals( "DTXManiaVersion" ) )\r
{\r
c演奏記録.strDTXManiaのバージョン = para;\r
}\r
- else if( item.Equals( "DateTime" ) )\r
+ else if ( item.Equals( "DateTime" ) )\r
{\r
c演奏記録.最終更新日時 = para;\r
}\r
- else if( item.Equals( "Hash" ) )\r
+ else if ( item.Equals( "Hash" ) )\r
{\r
c演奏記録.Hash = para;\r
}\r
- else if( item.Equals( "9LaneMode" ) )\r
+ else if ( item.Equals( "9LaneMode" ) )\r
{\r
c演奏記録.レーン9モード = C変換.bONorOFF( para[ 0 ] );\r
}\r
writer.Write( this.stセクション[ i ].bAutoPlay[ j ] ? 1 : 0 );\r
}\r
writer.WriteLine();\r
+ writer.WriteLine( "Risky={0}", this.stセクション[ i ].nRisky );\r
writer.WriteLine( "SuddenDrums={0}", this.stセクション[ i ].bSudden.Drums ? 1 : 0 );\r
writer.WriteLine( "SuddenGuitar={0}", this.stセクション[ i ].bSudden.Guitar ? 1 : 0 );\r
writer.WriteLine( "SuddenBass={0}", this.stセクション[ i ].bSudden.Bass ? 1 : 0 );\r
\r
byte[] bytes = Encoding.GetEncoding( "shift-jis" ).GetBytes( builder.ToString() );\r
StringBuilder builder2 = new StringBuilder(0x21);\r
- using (MD5CryptoServiceProvider m = new MD5CryptoServiceProvider()) // #25650 2011.7.7 yyagi; add Dispose() method to avoid resource leak.\r
+ using (MD5CryptoServiceProvider m = new MD5CryptoServiceProvider()) // #25650 2011.7.7 yyagi; Using "using" structure to clarify the scope for MD5CryptServiceProvider.\r
{\r
byte[] buffer2 = m.ComputeHash(bytes);\r
foreach (byte num2 in buffer2)\r
"OFF: all display parts are shown.\nHALF: wallpaper, lanes and gauge are\n disappeared.\nFULL: additionaly to HALF, bar/beat\n lines, hit bar, pads are disappeared.",\r
new string[] { "OFF", "HALF", "FULL" } );\r
this.list項目リスト.Add( this.iCommonDark );\r
+\r
+ this.iSystemRisky = new CItemInteger( "Risky", 0, 10, CDTXMania.ConfigIni.nRisky,\r
+ "Riskyモードの設定:\n1以上の値にすると、その回数分の\nPoor/MissでFAILEDとなります。\nOFFにすると無効になり、\nDamageLevelに従ったゲージ増減と\nなります。\nStageFailedの設定と併用できます。",\r
+ "Risky mode:\nSet over 1, in case you'd like to specify\n the number of Poor/Miss times to be\n FAILED.\nSet OFF to disable Risky mode." );\r
+ this.list項目リスト.Add( this.iSystemRisky );\r
+\r
this.iCommonPlaySpeed = new CItemInteger( "PlaySpeed", 5, 40, CDTXMania.ConfigIni.n演奏速度,\r
"曲の演奏速度を、速くしたり遅くした\nりすることができます。\n(※一部のサウンドカードでは正しく\n 再生できない可能性があります。)",\r
"It changes the song speed.\nFor example, you can play in half\n speed by setting PlaySpeed = 0.500\n for your practice.\nNote: It also changes the songs' pitch." );\r
"BGAの使用:\n画像(BGA)を表示可能にする場合に\nON にします。BGA の再生には、それ\nなりのマシンパワーが必要とされます。",\r
"To draw BGA (back ground animations)\n or not." );\r
this.list項目リスト.Add( this.iSystemBGA );\r
- // #24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行\r
- // this.iSystemGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph有効,\r
- // "達成率グラフの使用:\n最高スキル達成率と比較できるグラフ\nを表示する場合にON にします。\nオートプレイだと表示されません。\n現バージョンではドラムのみとなって\nいます。",\r
- // "To draw Graph \n or not.");\r
- // this.list項目リスト.Add( this.iSystemGraph );\r
-\r
this.iSystemPreviewSoundWait = new CItemInteger( "PreSoundWait", 0, 0x2710, CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms,\r
"プレビュー音演奏までの時間:\n曲にカーソルが合わされてからプレ\nビュー音が鳴り始めるまでの時間を\n指定します。\n0 ~ 10000 [ms] が指定可能です。",\r
"Delay time(ms) to start playing preview\n sound in SELECT MUSIC screen.\nYou can specify from 0ms to 10000ms." );\r
"Turn ON if you want to be cheered\n at the end of fill-in zone or not." );\r
this.list項目リスト.Add( this.iSystemAudienceSound );\r
this.iSystemDamageLevel = new CItemList( "DamageLevel", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eダメージレベル,\r
- "ゲージ減少割合:\nMiss ヒット時のゲージの減少度合い\nを指定します。\n",\r
- "Damage level at missing (and\n recovering level) at playing.",\r
+ "ゲージ減少割合:\nMiss ヒット時のゲージの減少度合い\nを指定します。\nRiskyが1以上の場合は無効となります",\r
+ "Damage level at missing (and\n recovering level) at playing.\nThis setting is ignored when Risky >= 1.",\r
new string[] { "Small", "Normal", "Large" } );\r
this.list項目リスト.Add( this.iSystemDamageLevel );\r
this.iSystemSaveScore = new CItemToggle( "SaveScore", CDTXMania.ConfigIni.bScoreIniを出力する,\r
{\r
this.tConfigIniへ記録する();\r
}\r
-// else if( ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemGuitar ) || ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemDrums ) )\r
-// {\r
-// this.list項目リスト[ this.n現在の選択項目 ].tEnter押下();\r
-// if( !this.iSystemGuitar.bON && !this.iSystemDrums.bON )\r
-// {\r
-// if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemGuitar )\r
-// {\r
-// this.iSystemDrums.bON = true;\r
-// }\r
-// else\r
-// {\r
-// this.iSystemGuitar.bON = true;\r
-// }\r
-// }\r
-// }\r
else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLC )\r
{\r
CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LC );\r
}\r
if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
{\r
- int num11;\r
- int num12;\r
- int num13;\r
+ int x;\r
+ int y_upper;\r
+ int y_lower;\r
if( !this.b要素値にフォーカス中 )\r
{\r
- num11 = 0x114;\r
- num12 = 0xba - this.ct三角矢印アニメ.n現在の値;\r
- num13 = 0xfe + this.ct三角矢印アニメ.n現在の値;\r
+ x = 0x114;\r
+ y_upper = 0xba - this.ct三角矢印アニメ.n現在の値;\r
+ y_lower = 0xfe + this.ct三角矢印アニメ.n現在の値;\r
}\r
else\r
{\r
- num11 = 0x210;\r
- num12 = 0xc6 - this.ct三角矢印アニメ.n現在の値;\r
- num13 = 0xf2 + this.ct三角矢印アニメ.n現在の値;\r
+ x = 0x210;\r
+ y_upper = 0xc6 - this.ct三角矢印アニメ.n現在の値;\r
+ y_lower = 0xf2 + this.ct三角矢印アニメ.n現在の値;\r
}\r
if( this.tx三角矢印 != null )\r
{\r
- this.tx三角矢印.t2D描画( CDTXMania.app.Device, num11, num12, new Rectangle( 0, 0, 0x20, 0x10 ) );\r
- this.tx三角矢印.t2D描画( CDTXMania.app.Device, num11, num13, new Rectangle( 0, 0x10, 0x20, 0x10 ) );\r
+ this.tx三角矢印.t2D描画( CDTXMania.app.Device, x, y_upper, new Rectangle( 0, 0, 0x20, 0x10 ) );\r
+ this.tx三角矢印.t2D描画( CDTXMania.app.Device, x, y_lower, new Rectangle( 0, 0x10, 0x20, 0x10 ) );\r
}\r
}\r
}\r
private CItemToggle iSystemStageFailed;\r
private CItemToggle iSystemStoicMode;\r
private CItemToggle iSystemVSyncWait;\r
- private CItemToggle iSystemShowLag; // #25370 2011.6.3 yyagi\r
- private CItemToggle iSystemAutoResultCapture; // #25399 2011.6.9 yyagi\r
+ private CItemToggle iSystemShowLag; // #25370 2011.6.3 yyagi\r
+ private CItemToggle iSystemAutoResultCapture; // #25399 2011.6.9 yyagi\r
private CItemToggle iSystemBufferedInput;\r
+ private CItemInteger iSystemRisky; // #23559 2011.7.27 yyagi\r
+\r
private List<CItemBase> list項目リスト;\r
private long nスクロール用タイマ値;\r
private int n現在のスクロールカウンタ;\r
private CItemInteger iGuitarInputAdjustTimeMs; //\r
private CItemInteger iBassInputAdjustTimeMs; //\r
\r
-\r
private int t前の項目( int nItem )\r
{\r
if( --nItem < 0 )\r
CDTXMania.ConfigIni.n自動再生音量 = this.iSystemAutoChipVolume.n現在の値;\r
CDTXMania.ConfigIni.bストイックモード = this.iSystemStoicMode.bON;\r
\r
- CDTXMania.ConfigIni.bIsShowingLag = this.iSystemShowLag.bON; // #25370 2011.6.3 yyagi\r
- CDTXMania.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON; // #25399 2011.6.9 yyagi\r
+ CDTXMania.ConfigIni.bIsShowingLag = this.iSystemShowLag.bON; // #25370 2011.6.3 yyagi\r
+ CDTXMania.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON; // #25399 2011.6.9 yyagi\r
+\r
+ CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値; // #23559 2911.7.27 yyagi\r
}\r
private void tConfigIniへ記録する・Bass()\r
{\r
CDTXMania.ConfigIni.b演奏音を強調する.Bass = this.iSystemSoundMonitorBass.bON;\r
CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass = this.iSystemMinComboBass.n現在の値;\r
}\r
-// private void tConfigIniへ記録する・Common()\r
-// {\r
-// }\r
+\r
private void tConfigIniへ記録する・Drums()\r
{\r
CDTXMania.ConfigIni.bAutoPlay.LC = this.iDrumsLeftCymbal.bON;\r
using System;\r
using System.Collections.Generic;\r
using System.Text;\r
+using System.Runtime;\r
using System.Runtime.InteropServices;\r
using System.Drawing;\r
using System.Drawing.Imaging;\r
CDTXMania.DTX.SwapGuitarBassInfos();\r
}\r
this.sw = new Stopwatch();\r
+// this.gclatencymode = GCSettings.LatencyMode;\r
+// GCSettings.LatencyMode = GCLatencyMode.LowLatency; // GCのgen2はせいぜい1演奏辺り1,2回しか発生しないので、ここでわざわざGC gen2は抑止しない\r
}\r
public override void On非活性化()\r
{\r
this.ctチップ模様アニメ.Drums = null;\r
this.ctチップ模様アニメ.Guitar = null;\r
this.ctチップ模様アニメ.Bass = null;\r
+// GCSettings.LatencyMode = this.gclatencymode;\r
base.On非活性化();\r
}\r
public override void OnManagedリソースの作成()\r
protected CConfigIni.STAUTOPLAY bIsAutoPlay; // #24239 2011.1.23 yyagi\r
\r
protected Stopwatch sw; // 2011.6.13 最適化検討用のストップウォッチ\r
-\r
+// protected GCLatencyMode gclatencymode;\r
\r
protected E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
{\r
break;\r
\r
case E楽器パート.GUITAR:\r
- switch ( eJudgeResult )\r
- {\r
- case E判定.Miss:\r
- case E判定.Bad:\r
- this.nヒット数・Auto含む.Guitar.Miss++;\r
- if ( !bPChipIsAutoPlay )\r
- {\r
- this.nヒット数・Auto含まない.Guitar.Miss++;\r
- }\r
- break;\r
- default: // #24068 2011.1.10 ikanick changed\r
- // #24167 2011.1.16 yyagi changed\r
- this.nヒット数・Auto含む.Guitar[ (int) eJudgeResult ]++;\r
- if ( !bPChipIsAutoPlay )\r
- {\r
- this.nヒット数・Auto含まない.Guitar[ (int) eJudgeResult ]++;\r
- }\r
- break;\r
- }\r
- switch ( eJudgeResult )\r
- {\r
- case E判定.Perfect:\r
- case E判定.Great:\r
- case E判定.Good:\r
- this.actCombo.n現在のコンボ数.Guitar++;\r
- break;\r
-\r
- default:\r
- this.actCombo.n現在のコンボ数.Guitar = 0;\r
- break;\r
- }\r
- break;\r
-\r
case E楽器パート.BASS:\r
+ int indexInst = (int) pChip.e楽器パート;\r
switch ( eJudgeResult )\r
{\r
case E判定.Miss:\r
case E判定.Bad:\r
- this.nヒット数・Auto含む.Bass.Miss++;\r
+ this.nヒット数・Auto含む[ indexInst ].Miss++;\r
if ( !bPChipIsAutoPlay )\r
{\r
- this.nヒット数・Auto含まない.Bass.Miss++;\r
+ this.nヒット数・Auto含まない[ indexInst ].Miss++;\r
}\r
break;\r
default: // #24068 2011.1.10 ikanick changed\r
- this.nヒット数・Auto含む.Bass[ (int) eJudgeResult ]++;\r
+ // #24167 2011.1.16 yyagi changed\r
+ this.nヒット数・Auto含む[ indexInst ][ (int) eJudgeResult ]++;\r
if ( !bPChipIsAutoPlay )\r
{\r
- this.nヒット数・Auto含まない.Bass[ (int) eJudgeResult ]++;\r
+ this.nヒット数・Auto含まない[ indexInst ][ (int) eJudgeResult ]++;\r
}\r
break;\r
}\r
-\r
switch ( eJudgeResult )\r
{\r
case E判定.Perfect:\r
case E判定.Great:\r
case E判定.Good:\r
- this.actCombo.n現在のコンボ数.Bass++;\r
+ this.actCombo.n現在のコンボ数[ indexInst ]++;\r
break;\r
\r
default:\r
- this.actCombo.n現在のコンボ数.Bass = 0;\r
+ this.actCombo.n現在のコンボ数[ indexInst ] = 0;\r
break;\r
}\r
break;\r
}\r
if ( ( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) )\r
{\r
- int nCombos = 0;\r
- switch ( pChip.e楽器パート )\r
- {\r
- case E楽器パート.DRUMS:\r
- nCombos = this.actCombo.n現在のコンボ数.Drums;\r
- break;\r
- case E楽器パート.GUITAR:\r
- nCombos = this.actCombo.n現在のコンボ数.Guitar;\r
- break;\r
- case E楽器パート.BASS:\r
- nCombos = this.actCombo.n現在のコンボ数.Bass;\r
- break;\r
- }\r
+ int nCombos = this.actCombo.n現在のコンボ数[ (int) pChip.e楽器パート ];\r
long nScore = this.actScore.Get( pChip.e楽器パート );\r
- long[] numArray = new long[] { 350L, 200L, 50L, 0L };\r
+ long[] nComboScoreDelta = new long[] { 350L, 200L, 50L, 0L };\r
if ( ( nCombos <= 500 ) || ( eJudgeResult == E判定.Good ) )\r
{\r
- nScore += numArray[ (int) eJudgeResult ] * nCombos;\r
+ nScore += nComboScoreDelta[ (int) eJudgeResult ] * nCombos;\r
}\r
else if ( ( eJudgeResult == E判定.Perfect ) || ( eJudgeResult == E判定.Great ) )\r
{\r
- nScore += numArray[ (int) eJudgeResult ] * 500L;\r
+ nScore += nComboScoreDelta[ (int) eJudgeResult ] * 500L;\r
}\r
this.actScore.Set( pChip.e楽器パート, nScore );\r
}\r
if ( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
{\r
this.t入力処理・ドラム();\r
- this.t入力処理・ギター();\r
- this.t入力処理・ベース();\r
+ //this.t入力処理・ギター();\r
+ //this.t入力処理・ベース();\r
+ this.t入力処理・ギターベース( E楽器パート.GUITAR );\r
+ this.t入力処理・ギターベース( E楽器パート.BASS );\r
if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.UpArrow ) && ( keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.LeftShift ) ) )\r
{ // shift (+ctrl) + UpArrow (BGMAdjust)\r
CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.RightControl ) ) ? 1 : 10 );\r
\r
CDTX dTX = CDTXMania.DTX;\r
CConfigIni configIni = CDTXMania.ConfigIni;\r
- while ( nCurrentTopChip < dTX.listChip.Count )\r
+// while ( nCurrentTopChip < dTX.listChip.Count )\r
+ for ( ; nCurrentTopChip < dTX.listChip.Count; nCurrentTopChip++ )\r
{\r
CDTX.CChip pChip = dTX.listChip[ nCurrentTopChip ];\r
pChip.nバーからの距離dot.Drums = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedDrums );\r
}\r
if ( ( ( nCurrentTopChip == this.n現在のトップChip ) && ( pChip.nバーからの距離dot.Drums < -65 ) ) && pChip.bHit )\r
{\r
- this.n現在のトップChip++;\r
- nCurrentTopChip = this.n現在のトップChip;\r
+ //this.n現在のトップChip++;\r
+ nCurrentTopChip = ++this.n現在のトップChip;\r
continue;\r
}\r
\r
#endregion \r
}\r
\r
- nCurrentTopChip++;\r
+// nCurrentTopChip++;\r
}\r
return false;\r
}\r
}\r
protected void t進行描画・レーンフラッシュD()\r
{\r
- if ( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
+ if ( ( CDTXMania.ConfigIni.eDark == Eダークモード.OFF ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
{\r
this.actLaneFlushD.On進行描画();\r
}\r
}\r
protected void t進行描画・レーンフラッシュGB()\r
{\r
- if ( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )\r
+ if ( ( CDTXMania.ConfigIni.eDark != Eダークモード.OFF ) && CDTXMania.ConfigIni.bGuitar有効 )\r
{\r
this.actLaneFlushGB.On進行描画();\r
}\r
protected void t判定にあわせてゲージを増減する( E楽器パート screenmode, E楽器パート part, E判定 e今回の判定 )\r
{\r
double fDamage;\r
+ int nRisky = CDTXMania.ConfigIni.nRisky;\r
\r
#if true // DAMAGELEVELTUNING\r
switch ( e今回の判定 )\r
case E判定.Perfect:\r
case E判定.Great:\r
case E判定.Good:\r
+ fDamage = ( nRisky > 0 ) ? 0 : fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
+ break;\r
case E判定.Poor:\r
- fDamage = fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
+ fDamage = ( nRisky > 0 ) ? ( -1.1 / nRisky ) : fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
break;\r
case E判定.Miss:\r
- fDamage = fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
- switch ( CDTXMania.ConfigIni.eダメージレベル )\r
+ fDamage = ( nRisky > 0 ) ? ( -1.1 / nRisky ) : fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
+ if ( nRisky == 0 )\r
{\r
- case Eダメージレベル.少ない:\r
- case Eダメージレベル.普通:\r
- case Eダメージレベル.大きい:\r
- fDamage *= fDamageLevelFactor[ (int) CDTXMania.ConfigIni.eダメージレベル ];\r
- break;\r
+ fDamage *= fDamageLevelFactor[ (int) CDTXMania.ConfigIni.eダメージレベル ];\r
}\r
break;\r
\r
if ( screenmode == E楽器パート.DRUMS ) // ドラム演奏画面なら、ギター/ベースのダメージも全部ドラムのゲージに集約する\r
{\r
part = E楽器パート.DRUMS;\r
+ this.actGauge.db現在のゲージ値[ (int) part ] += fDamage;\r
+ }\r
+ else\r
+ {\r
+ if ( nRisky > 0 ) // ギター画面且つRISKYなら、ギターとベースのゲージをセットで減少\r
+ {\r
+ this.actGauge.db現在のゲージ値[ (int) E楽器パート.GUITAR ] += fDamage;\r
+ this.actGauge.db現在のゲージ値[ (int) E楽器パート.BASS ] += fDamage;\r
+ }\r
+ else\r
+ {\r
+ this.actGauge.db現在のゲージ値[ (int) part ] += fDamage;\r
+ }\r
}\r
- this.actGauge.db現在のゲージ値[ (int) part ] += fDamage;\r
\r
- if ( this.actGauge.db現在のゲージ値[ (int) part ] > 1.0 )\r
+ if ( this.actGauge.db現在のゲージ値[ (int) part ] > 1.0 ) // RISKY時は決してゲージが増加しないので、ギタレボモード時のギター/ベース両チェックはしなくて良い\r
this.actGauge.db現在のゲージ値[ (int) part ] = 1.0;\r
}\r
//-----------------\r
\r
public override void On活性化()\r
{\r
- this.db現在のゲージ値.Guitar = 0.66666666666666663;\r
- this.db現在のゲージ値.Bass = 0.66666666666666663;\r
+ this.db現在のゲージ値.Guitar = ( CDTXMania.ConfigIni.nRisky > 0 ) ? 1.0 : 0.66666666666666663;\r
+ this.db現在のゲージ値.Bass = ( CDTXMania.ConfigIni.nRisky > 0 ) ? 1.0 : 0.66666666666666663;\r
base.On活性化();\r
}\r
public override void On非活性化()\r
}\r
this.ct本体移動.t進行Loop();\r
this.ct本体振動.t進行Loop();\r
- if( this.db現在のゲージ値.Guitar == 1.0 )\r
+\r
+ #region [ ギターのゲージ ]\r
+ if ( this.db現在のゲージ値.Guitar == 1.0 ) // ギターのゲージ\r
{\r
num = (int) ( 128.0 * this.db現在のゲージ値.Guitar );\r
}\r
else\r
{\r
- num = (int) ( ( 128.0 * this.db現在のゲージ値.Guitar ) + ( 2.0 * Math.Sin( 6.2831853071795862 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) );\r
+ num = (int) ( ( 128.0 * this.db現在のゲージ値.Guitar ) + ( 2.0 * Math.Sin( Math.PI * 2 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) );\r
}\r
if( num > 0 )\r
{\r
this.txゲージ.t2D描画( CDTXMania.app.Device, x, 8, rectangle );\r
}\r
}\r
- if( this.db現在のゲージ値.Bass == 1.0 )\r
+ #endregion\r
+\r
+ #region [ ベースのゲージ ]\r
+ if ( this.db現在のゲージ値.Bass == 1.0 )\r
{\r
num9 = (int) ( 128.0 * this.db現在のゲージ値.Bass );\r
}\r
else\r
{\r
- num9 = (int) ( ( 128.0 * this.db現在のゲージ値.Bass ) + ( 2.0 * Math.Sin( 6.2831853071795862 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) );\r
+ num9 = (int) ( ( 128.0 * this.db現在のゲージ値.Bass ) + ( 2.0 * Math.Sin( Math.PI * 2 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) );\r
}\r
if( num9 > 0 )\r
{\r
this.txゲージ.t2D描画( CDTXMania.app.Device, num11, 8, rectangle2 );\r
}\r
}\r
+ #endregion\r
}\r
return 0;\r
}\r
\r
public override void On活性化()\r
{\r
- this.dbゲージ値 = 0.66666666666666663;\r
+ this.dbゲージ値 = ( CDTXMania.ConfigIni.nRisky > 0 ) ? 1.0 : 0.66666666666666663;\r
base.On活性化();\r
}\r
public override void On非活性化()\r
{\r
this.ct本体振動 = null;\r
this.ct本体移動 = null;\r
- for( int i = 0; i < 0x18; i++ )\r
+ for( int i = 0; i < 24; i++ )\r
{\r
this.st白い星[ i ].ct進行 = null;\r
}\r
}\r
this.ct本体移動.t進行Loop();\r
this.ct本体振動.t進行Loop();\r
- int num2 = ( this.dbゲージ値 == 1.0 ) ? ( (int) ( 352.0 * this.dbゲージ値 ) ) : ( (int) ( ( 352.0 * this.dbゲージ値 ) + ( 2.0 * Math.Sin( 6.2831853071795862 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) ) );\r
+ int num2 = ( this.dbゲージ値 == 1.0 ) ? ( (int) ( 352.0 * this.dbゲージ値 ) ) : ( (int) ( ( 352.0 * this.dbゲージ値 ) + ( 2.0 * Math.Sin( Math.PI * 2 * ( ( (double) this.ct本体振動.n現在の値 ) / 360.0 ) ) ) ) );\r
if( num2 <= 0 )\r
{\r
return 0;\r
}\r
}\r
}\r
+ public int nRisky; // #23559 2011.6.20 yyagi Riskyでの残ミス数。0で閉店\r
public bool bIsSwappedGuitarBass // #24063 2011.1.16 yyagi ギターとベースの切り替え中か否か\r
{\r
get;\r
this.b歓声を発声する = true;\r
this.bScoreIniを出力する = true;\r
this.bランダムセレクトで子BOXを検索対象とする = true;\r
- this.b演奏音を強調する = new STDGBVALUE<bool>();\r
- this.b演奏音を強調する.Drums = true;\r
- this.b演奏音を強調する.Guitar = true;\r
- this.b演奏音を強調する.Bass = true;\r
this.n表示可能な最小コンボ数 = new STDGBVALUE<int>();\r
this.n表示可能な最小コンボ数.Drums = 11;\r
this.n表示可能な最小コンボ数.Guitar = 2;\r
this.n自動再生音量 = 80;\r
this.n手動再生音量 = 100;\r
this.bログ出力 = true;\r
+ this.b演奏音を強調する = new STDGBVALUE<bool>();\r
this.bSudden = new STDGBVALUE<bool>();\r
- this.bSudden.Drums = false;\r
- this.bSudden.Guitar = false;\r
- this.bSudden.Bass = false;\r
this.bHidden = new STDGBVALUE<bool>();\r
- this.bHidden.Drums = false;\r
- this.bHidden.Guitar = false;\r
- this.bHidden.Bass = false;\r
this.bReverse = new STDGBVALUE<bool>();\r
- this.bReverse.Drums = false;\r
- this.bReverse.Guitar = false;\r
- this.bReverse.Bass = false;\r
this.eRandom = new STDGBVALUE<Eランダムモード>();\r
- this.eRandom.Drums = Eランダムモード.OFF;\r
- this.eRandom.Guitar = Eランダムモード.OFF;\r
- this.eRandom.Bass = Eランダムモード.OFF;\r
this.bLight = new STDGBVALUE<bool>();\r
- this.bLight.Drums = false;\r
- this.bLight.Guitar = false;\r
- this.bLight.Bass = false;\r
this.bLeft = new STDGBVALUE<bool>();\r
- this.bLeft.Drums = false;\r
- this.bLeft.Guitar = false;\r
- this.bLeft.Bass = false;\r
this.判定文字表示位置 = new STDGBVALUE<E判定文字表示位置>();\r
- this.判定文字表示位置.Drums = E判定文字表示位置.レーン上;\r
- this.判定文字表示位置.Guitar = E判定文字表示位置.レーン上;\r
- this.判定文字表示位置.Bass = E判定文字表示位置.レーン上;\r
this.n譜面スクロール速度 = new STDGBVALUE<int>();\r
- this.n譜面スクロール速度.Drums = 1;\r
- this.n譜面スクロール速度.Guitar = 1;\r
- this.n譜面スクロール速度.Bass = 1;\r
+ this.nInputAdjustTimeMs = new STDGBVALUE<int>(); // #23580 2011.1.3 yyagi\r
+ for ( int i = 0; i < 3; i++ )\r
+ {\r
+ this.b演奏音を強調する[ i ] = true;\r
+ this.bSudden[ i ] = false;\r
+ this.bHidden[ i ] = false;\r
+ this.bReverse[ i ] = false;\r
+ this.eRandom[ i ] = Eランダムモード.OFF;\r
+ this.bLight[ i ] = false;\r
+ this.bLeft[ i ] = false;\r
+ this.判定文字表示位置[ i ] = E判定文字表示位置.レーン上;\r
+ this.n譜面スクロール速度[ i ] = 1;\r
+ this.nInputAdjustTimeMs[ i ] = 0;\r
+ }\r
this.n演奏速度 = 20;\r
this.bAutoPlay = new STAUTOPLAY();\r
this.bAutoPlay.HH = false;\r
this.ConfigIniファイル名 = "";\r
this.dicJoystick = new Dictionary<int, string>( 10 );\r
this.tデフォルトのキーアサインに設定する();\r
- this.nInputAdjustTimeMs = new STDGBVALUE<int>(); // #23580 2011.1.3 yyagi\r
- this.nInputAdjustTimeMs.Drums = 0;\r
- this.nInputAdjustTimeMs.Guitar = 0;\r
- this.nInputAdjustTimeMs.Bass = 0;\r
-// this.nハイハット切り捨て下限Velocity = 20;\r
-// this.n切り捨て下限Velocity = 0; // #23857 2010.12.12 yyagi VelocityMin\r
this.nVelocityMin.LC = 0; // #23857 2011.1.31 yyagi VelocityMin\r
this.nVelocityMin.HH = 20;\r
this.nVelocityMin.SD = 0;\r
this.nVelocityMin.FT = 0;\r
this.nVelocityMin.CY = 0;\r
this.nVelocityMin.RD = 0;\r
+ this.nRisky = 0; // #23539 2011.7.26 yyagi RISKYモード\r
this.bIsShowingLag = false; // #25370 2011.6.3 yyagi ズレ時間表示\r
this.bIsAutoResultCapture = false; // #25399 2011.6.9 yyagi リザルト画像自動保存機能ON/OFF\r
\r
sw.WriteLine( "; ベースLEFTモード(0:OFF, 1:ON)" );\r
sw.WriteLine( "BassLeft={0}", this.bLeft.Bass ? 1 : 0 );\r
sw.WriteLine();\r
+ sw.WriteLine( "; RISKYモード(0:OFF, 1-10)" ); // #23559 2011.6.23 yyagi\r
+ sw.WriteLine( "; RISKY mode. 0=OFF, 1-10 is the times of misses to be Failed." ); //\r
+ sw.WriteLine( "Risky={0}", this.nRisky ); //\r
+ sw.WriteLine();\r
sw.WriteLine( "; ドラム判定文字表示位置(0:レーン上,1:判定ライン上,2:表示OFF)" );\r
sw.WriteLine( "DrumsPosition={0}", (int) this.判定文字表示位置.Drums );\r
sw.WriteLine();\r
{\r
this.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.ドラムコンボ文字の表示位置 );\r
}\r
+ else if ( str3.Equals( "Risky" ) ) // #2359 2011.6.23 yyagi\r
+ {\r
+ this.nRisky = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 10, this.nRisky );\r
+ }\r
+\r
continue;\r
}\r
//-----------------------------\r