DTXManiaXG(Ver.K)4.00Series
修訂 | f8e380f215c6cc0d1bad083cc00b467ec391b1f4 (tree) |
---|---|
時間 | 2019-05-25 23:03:27 |
作者 | ![]() |
Commiter | kairera0467 |
#xxxxx Matixx風選曲画面にBPM表示を追加
#xxxxx Matixx風選曲画面に判定数表示を追加(画像はGD初代の使い回しです...)
#xxxxx Matixx風選曲画面に演奏スキル、達成率の表示を数字だけ追加
#xxxxx SongsDBのBPM情報に「最小BPM」と「最高BPM」を追加
@@ -1355,6 +1355,8 @@ namespace DTXMania | ||
1355 | 1355 | public bool bUse556x710BGAAVI; |
1356 | 1356 | public STDGBVALUE<bool> bCLASSIC譜面である; |
1357 | 1357 | public bool b強制的にXG譜面にする; |
1358 | + public double db最低BPM; | |
1359 | + public double db最高BPM; | |
1358 | 1360 | |
1359 | 1361 | #if TEST_NOTEOFFMODE |
1360 | 1362 | public STLANEVALUE<bool> b演奏で直前の音を消音する; |
@@ -1461,6 +1463,9 @@ namespace DTXMania | ||
1461 | 1463 | this.bCLASSIC譜面である.Bass = false; |
1462 | 1464 | this.b強制的にXG譜面にする = false; |
1463 | 1465 | |
1466 | + this.db最低BPM = 9999.9; | |
1467 | + this.db最高BPM = 0.0; | |
1468 | + | |
1464 | 1469 | #if TEST_NOTEOFFMODE |
1465 | 1470 | this.bHH演奏で直前のHHを消音する = true; |
1466 | 1471 | this.bGUITAR演奏で直前のGUITARを消音する = true; |
@@ -2920,6 +2925,9 @@ namespace DTXMania | ||
2920 | 2925 | chip.n整数値 = 0; |
2921 | 2926 | chip.n整数値_内部番号 = cbpm.n内部番号; |
2922 | 2927 | this.listChip.Insert( 0, chip ); |
2928 | + | |
2929 | + this.db最低BPM = Math.Min( this.db最低BPM, cbpm.dbBPM値 ); | |
2930 | + this.db最高BPM = Math.Max( this.db最高BPM, cbpm.dbBPM値 ); | |
2923 | 2931 | } |
2924 | 2932 | else |
2925 | 2933 | { |
@@ -2929,6 +2937,9 @@ namespace DTXMania | ||
2929 | 2937 | chip.n整数値 = 0; |
2930 | 2938 | chip.n整数値_内部番号 = cbpm.n内部番号; |
2931 | 2939 | this.listChip.Insert( 0, chip ); |
2940 | + | |
2941 | + this.db最低BPM = Math.Min( this.db最低BPM, cbpm.dbBPM値 ); | |
2942 | + this.db最高BPM = Math.Max( this.db最高BPM, cbpm.dbBPM値 ); | |
2932 | 2943 | } |
2933 | 2944 | if ( this.listBMP.ContainsKey( 0 ) ) |
2934 | 2945 | { |
@@ -819,6 +819,8 @@ namespace DTXMania | ||
819 | 819 | cスコア.譜面情報.n可視チップ数.FT = br.ReadInt32(); |
820 | 820 | cスコア.譜面情報.n可視チップ数.CY = br.ReadInt32(); |
821 | 821 | cスコア.譜面情報.n可視チップ数.RD = br.ReadInt32(); |
822 | + cスコア.譜面情報.最低Bpm = br.ReadDouble(); | |
823 | + cスコア.譜面情報.最大Bpm = br.ReadDouble(); | |
822 | 824 | |
823 | 825 | //Debug.WriteLine( "songs.db: " + cスコア.ファイル情報.ファイルの絶対パス ); |
824 | 826 | return cスコア; |
@@ -883,6 +885,9 @@ namespace DTXMania | ||
883 | 885 | c曲リストノード.arスコア[ i ].譜面情報.Bpm = cdtx.BPM; |
884 | 886 | c曲リストノード.arスコア[ i ].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms; |
885 | 887 | c曲リストノード.arスコア[ i ].譜面情報.n可視チップ数 = cdtx.n可視チップ数; |
888 | + c曲リストノード.arスコア[ i ].譜面情報.最低Bpm = cdtx.db最低BPM; | |
889 | + c曲リストノード.arスコア[ i ].譜面情報.最大Bpm = cdtx.db最高BPM; | |
890 | + | |
886 | 891 | this.nファイルから反映できたスコア数++; |
887 | 892 | cdtx.On非活性化(); |
888 | 893 | //Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル ); |
@@ -1202,6 +1207,8 @@ namespace DTXMania | ||
1202 | 1207 | bw.Write( node.arスコア[ i ].譜面情報.n可視チップ数.FT ); |
1203 | 1208 | bw.Write( node.arスコア[ i ].譜面情報.n可視チップ数.CY ); |
1204 | 1209 | bw.Write( node.arスコア[ i ].譜面情報.n可視チップ数.RD ); |
1210 | + bw.Write( node.arスコア[ i ].譜面情報.最低Bpm ); | |
1211 | + bw.Write( node.arスコア[ i ].譜面情報.最大Bpm ); | |
1205 | 1212 | this.nSongsDBへ出力できたスコア数++; |
1206 | 1213 | } |
1207 | 1214 | } |
@@ -1766,7 +1773,7 @@ Debug.WriteLine( dBPM + ":" + c曲リストノード.strタイトル ); | ||
1766 | 1773 | |
1767 | 1774 | #region [ private ] |
1768 | 1775 | //----------------- |
1769 | - private const string SONGSDB_VERSION = "SongsDB3(ver.K)rev4"; | |
1776 | + private const string SONGSDB_VERSION = "SongsDB3(ver.K)rev5"; | |
1770 | 1777 | private List<string> listStrBoxDefSkinSubfolderFullName; |
1771 | 1778 | |
1772 | 1779 | private int t比較0_共通( C曲リストノード n1, C曲リストノード n2 ) |
@@ -73,6 +73,8 @@ namespace DTXMania | ||
73 | 73 | public STDGBVALUE<bool> b完全にCLASSIC譜面である; |
74 | 74 | public STDGBVALUE<bool> b譜面がある; |
75 | 75 | public CDTX.STLANEINT n可視チップ数; |
76 | + public double 最低Bpm; | |
77 | + public double 最大Bpm; | |
76 | 78 | |
77 | 79 | [Serializable] |
78 | 80 | [StructLayout( LayoutKind.Sequential )] |
@@ -355,6 +357,8 @@ namespace DTXMania | ||
355 | 357 | this.譜面情報.b譜面がある.Guitar = false; |
356 | 358 | this.譜面情報.b譜面がある.Bass = false; |
357 | 359 | this.譜面情報.n可視チップ数 = new CDTX.STLANEINT(); |
360 | + this.譜面情報.最低Bpm = 120.0; | |
361 | + this.譜面情報.最大Bpm = 120.0; | |
358 | 362 | } |
359 | 363 | } |
360 | 364 | } |
@@ -438,7 +438,7 @@ namespace DTXMania | ||
438 | 438 | } |
439 | 439 | if( CDTXMania.ConfigIni.bLogDTX詳細ログ出力 ) |
440 | 440 | { |
441 | - StringBuilder builder = new StringBuilder( 0x400 ); | |
441 | + StringBuilder builder = new StringBuilder( 1024 ); | |
442 | 442 | builder.Append( string.Format( "ランダムインデックスリストを作成しました: {0}曲: ", song.stackランダム演奏番号.Count ) ); |
443 | 443 | for( int m = 0; m < count; m++ ) |
444 | 444 | { |
@@ -18,6 +18,7 @@ namespace DTXMania | ||
18 | 18 | { |
19 | 19 | this.tレベル数値フォント初期化(); |
20 | 20 | this.tスキル数値フォント初期化(); |
21 | + this.tBPM数値フォント初期化(); | |
21 | 22 | base.b活性化してない = true; |
22 | 23 | } |
23 | 24 | public override void t選択曲が変更された() |
@@ -130,6 +131,8 @@ namespace DTXMania | ||
130 | 131 | this.txスキル数字_大_少数部 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Skill number Large Decimal.png") ); |
131 | 132 | this.txスキル数字_大_小数点 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Skill number Large Dot.png") ); |
132 | 133 | |
134 | + this.txBPM数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_BPM Number.png") ); | |
135 | + | |
133 | 136 | base.OnManagedリソースの作成(); |
134 | 137 | } |
135 | 138 | } |
@@ -155,6 +158,8 @@ namespace DTXMania | ||
155 | 158 | CDTXMania.tテクスチャの解放( ref this.txスキル数字_大_少数部 ); |
156 | 159 | CDTXMania.tテクスチャの解放( ref this.txスキル数字_大_小数点 ); |
157 | 160 | |
161 | + CDTXMania.tテクスチャの解放( ref this.txBPM数字 ); | |
162 | + | |
158 | 163 | base.OnManagedリソースの解放(); |
159 | 164 | } |
160 | 165 | } |
@@ -257,12 +262,18 @@ namespace DTXMania | ||
257 | 262 | } |
258 | 263 | //----------------- |
259 | 264 | #endregion |
260 | - | |
261 | - #region[ 曲別スキル値(左側)を描画 ] | |
262 | - this.tスキル値の描画_大( 79, 216, this.db現在選択中の曲の曲別スキル値.Drums ); | |
263 | - #endregion | |
264 | - | |
265 | 265 | this.t難易度カーソル描画( 426, base.n現在選択中の曲の難易度 ); |
266 | + | |
267 | + if( CDTXMania.stage選曲GITADORA.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE ) | |
268 | + { | |
269 | + #region[ 曲別スキル値(左側)を描画 ] | |
270 | + this.tスキル値の描画_大( 79, 216, this.db現在選択中の曲の曲別スキル値.Drums ); | |
271 | + #endregion | |
272 | + #region[ BPM値を描画 ] | |
273 | + // ToDo:速度変化への対応(DB側もいじらないとダメ) | |
274 | + this.tBPM値の描画( 120, 302, CDTXMania.stage選曲GITADORA.r現在選択中のスコア.譜面情報.最低Bpm, CDTXMania.stage選曲GITADORA.r現在選択中のスコア.譜面情報.最大Bpm ); | |
275 | + #endregion | |
276 | + } | |
266 | 277 | } |
267 | 278 | #endregion |
268 | 279 | } |
@@ -366,6 +377,7 @@ namespace DTXMania | ||
366 | 377 | private CTexture txスキル数字_大_整数部; |
367 | 378 | private CTexture txスキル数字_大_少数部; |
368 | 379 | private CTexture txスキル数字_大_小数点; |
380 | + private CTexture txBPM数字; // 2019.04.30 kairera0467 | |
369 | 381 | |
370 | 382 | private struct ST数字フォント |
371 | 383 | { |
@@ -377,6 +389,7 @@ namespace DTXMania | ||
377 | 389 | private ST数字フォント[] STレベル数字_中_少数; |
378 | 390 | private ST数字フォント[] STスキル数字_大_整数; |
379 | 391 | private ST数字フォント[] STスキル数字_大_少数; |
392 | + private ST数字フォント[] STBPM数字; | |
380 | 393 | |
381 | 394 | private void tレベル数値フォント初期化() |
382 | 395 | { |
@@ -434,6 +447,24 @@ namespace DTXMania | ||
434 | 447 | this.STスキル数字_大_少数[ 9 ] = new ST数字フォント() { ch文字 = '9', rect = new Rectangle( 0, 46, 46, 46 ) }; |
435 | 448 | } |
436 | 449 | |
450 | + private void tBPM数値フォント初期化() | |
451 | + { | |
452 | + this.STBPM数字 = new ST数字フォント[] { | |
453 | + new ST数字フォント(){ ch文字 = '0', rect = new Rectangle( 0, 0, 28, 28 ) }, | |
454 | + new ST数字フォント(){ ch文字 = '1', rect = new Rectangle( 28, 0, 28, 28 ) }, | |
455 | + new ST数字フォント(){ ch文字 = '2', rect = new Rectangle( 56, 0, 28, 28 ) }, | |
456 | + new ST数字フォント(){ ch文字 = '3', rect = new Rectangle( 84, 0, 28, 28 ) }, | |
457 | + new ST数字フォント(){ ch文字 = '4', rect = new Rectangle( 112, 0, 28, 28 ) }, | |
458 | + new ST数字フォント(){ ch文字 = '5', rect = new Rectangle( 0, 28, 28, 28 ) }, | |
459 | + new ST数字フォント(){ ch文字 = '6', rect = new Rectangle( 28, 28, 28, 28 ) }, | |
460 | + new ST数字フォント(){ ch文字 = '7', rect = new Rectangle( 56, 28, 28, 28 ) }, | |
461 | + new ST数字フォント(){ ch文字 = '8', rect = new Rectangle( 84, 28, 28, 28 ) }, | |
462 | + new ST数字フォント(){ ch文字 = '9', rect = new Rectangle( 112, 28, 28, 28 ) }, | |
463 | + new ST数字フォント(){ ch文字 = '~', rect = new Rectangle( 0, 56, 28, 28 ) } | |
464 | + }; | |
465 | + | |
466 | + } | |
467 | + | |
437 | 468 | // 2019.04.21 kairera0467 |
438 | 469 | private void tレベル値の描画_中( int x, int y, string strレベル値 ) |
439 | 470 | { |
@@ -535,6 +566,45 @@ namespace DTXMania | ||
535 | 566 | } |
536 | 567 | } |
537 | 568 | |
569 | + // 2019.04.20 kairera0467 | |
570 | + /// <summary> | |
571 | + /// BPM値を画像フォントを用いて描画する | |
572 | + /// ※速度変化しない場合は最小、最大のどちらか片方を-1にすること。 | |
573 | + /// </summary> | |
574 | + /// <param name="x"></param> | |
575 | + /// <param name="y"></param> | |
576 | + /// <param name="dbBPM最小">最小速度</param> | |
577 | + /// <param name="dbBPM最大">最大速度</param> | |
578 | + private void tBPM値の描画( int x, int y, double dbBPM最小, double dbBPM最大 ) | |
579 | + { | |
580 | + if( dbBPM最小 <= 0 || dbBPM最小 > 9999 ) | |
581 | + return; | |
582 | + | |
583 | + // 1文字あたりのマージン | |
584 | + int n文字間隔 = 18; | |
585 | + string formatText = string.Format( "{0,4:###0}", dbBPM最小.ToString() ); | |
586 | + if( ( dbBPM最小 != -1 && dbBPM最大 != -1 ) && ( dbBPM最小 == dbBPM最大 ) ) { | |
587 | + formatText = string.Format( "{0,4:###0}", dbBPM最大.ToString() ); | |
588 | + x += 34; | |
589 | + } | |
590 | + else if( dbBPM最小 != -1 && dbBPM最大 != -1 ) | |
591 | + formatText = string.Format( "{0,4:###0}" + "~" + "{1,4:###0}", dbBPM最小.ToString(), dbBPM最大.ToString() ); | |
592 | + | |
593 | + for( int i = 0; i < formatText.Length; i++ ) | |
594 | + { | |
595 | + char c = formatText[ i ]; | |
596 | + for( int j = 0; j < 11; j++ ) | |
597 | + { | |
598 | + if( c.Equals( this.STBPM数字[ j ].ch文字 ) ) | |
599 | + { | |
600 | + this.txBPM数字.t2D描画( CDTXMania.app.Device, x, y, this.STBPM数字[ j ].rect ); | |
601 | + x += n文字間隔; | |
602 | + } | |
603 | + } | |
604 | + } | |
605 | + } | |
606 | + | |
607 | + | |
538 | 608 | [StructLayout(LayoutKind.Sequential)] |
539 | 609 | private struct ST文字位置 |
540 | 610 | { |
@@ -657,7 +657,7 @@ namespace DTXMania | ||
657 | 657 | protected CAct演奏BGA actBGA; |
658 | 658 | |
659 | 659 | protected CAct演奏チップファイアGB actChipFireGB; |
660 | - protected CAct演奏Combo共通 actCombo; | |
660 | + public CAct演奏Combo共通 actCombo; | |
661 | 661 | protected CAct演奏Danger共通 actDANGER; |
662 | 662 | protected CActFIFOBlack actFI; |
663 | 663 | protected CActFIFOBlack actFO; |
@@ -166,6 +166,9 @@ namespace DTXMania | ||
166 | 166 | this.txSongNamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Drums Songpanel.png" ) ); |
167 | 167 | this.txScore = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_score numbersGD.png" ) ); |
168 | 168 | |
169 | + this.tx判定数数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Ratenumber_s.png" ) ); | |
170 | + this.tx達成率数字_整数 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Ratenumber_l.png" ) ); | |
171 | + | |
169 | 172 | CDTXMania.t安全にDisposeする( ref bmpCardName ); |
170 | 173 | |
171 | 174 | base.OnManagedリソースの作成(); |
@@ -188,6 +191,9 @@ namespace DTXMania | ||
188 | 191 | CDTXMania.tテクスチャの解放( ref this.txJacket ); |
189 | 192 | CDTXMania.tテクスチャの解放( ref this.txスキルパネル ); |
190 | 193 | |
194 | + CDTXMania.tテクスチャの解放( ref this.tx達成率数字_整数 ); | |
195 | + CDTXMania.tテクスチャの解放( ref this.tx判定数数字 ); | |
196 | + | |
191 | 197 | CDTXMania.tテクスチャの解放( ref this.txPlayerName ); |
192 | 198 | |
193 | 199 | base.OnManagedリソースの解放(); |
@@ -202,12 +208,12 @@ namespace DTXMania | ||
202 | 208 | // return 0; |
203 | 209 | if( this.b初めての進行描画 ) |
204 | 210 | { |
205 | - //fX = -527; | |
206 | - //fY = 161; | |
207 | - //fZ = 0; | |
208 | - //rot = -38; | |
209 | - //fScaleX = 0.3f; | |
210 | - //fScaleY = 0.62f; | |
211 | + fX = -465; | |
212 | + fY = -25; | |
213 | + fZ = 0; | |
214 | + rot = -38; | |
215 | + fScaleX = 0.6f; | |
216 | + fScaleY = 1f; | |
211 | 217 | //offset = 0; |
212 | 218 | |
213 | 219 | this.b初めての進行描画 = false; |
@@ -220,7 +226,7 @@ namespace DTXMania | ||
220 | 226 | if( this.txスキルパネル != null ) |
221 | 227 | { |
222 | 228 | Matrix matSkillPanel = Matrix.Identity; |
223 | - matSkillPanel *= Matrix.Scaling( 0.6f, 1, 1 ); | |
229 | + matSkillPanel *= Matrix.Scaling( 0.6f, 1.0f, 1 ); | |
224 | 230 | matSkillPanel *= Matrix.RotationY( C変換.DegreeToRadian( -38 ) ); |
225 | 231 | matSkillPanel *= Matrix.Translation( -465, -25, 0 ); |
226 | 232 | this.txスキルパネル.t3D描画( CDTXMania.app.Device, matSkillPanel ); |
@@ -234,114 +240,178 @@ namespace DTXMania | ||
234 | 240 | this.txPlayerName.t3D描画( CDTXMania.app.Device, matPlayerName ); |
235 | 241 | } |
236 | 242 | |
237 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F1 ) ) | |
238 | - //{ | |
239 | - // fX--; | |
240 | - //} | |
241 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F2 ) ) | |
242 | - //{ | |
243 | - // fX++; | |
244 | - //} | |
245 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F3 ) ) | |
246 | - //{ | |
247 | - // fY--; | |
248 | - //} | |
249 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F4 ) ) | |
250 | - //{ | |
251 | - // fY++; | |
252 | - //} | |
253 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F6 ) ) | |
254 | - //{ | |
255 | - // rot--; | |
256 | - //} | |
257 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F7 ) ) | |
258 | - //{ | |
259 | - // rot++; | |
260 | - //} | |
261 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F8 ) ) | |
262 | - //{ | |
263 | - // fScaleX -= 0.01f; | |
264 | - //} | |
265 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F9 ) ) | |
266 | - //{ | |
267 | - // fScaleX += 0.01f; | |
268 | - //} | |
269 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F10 ) ) | |
270 | - //{ | |
271 | - // fScaleX -= 0.1f; | |
272 | - //} | |
273 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F11 ) ) | |
274 | - //{ | |
275 | - // fScaleX += 0.1f; | |
276 | - //} | |
277 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D1 ) ) | |
278 | - //{ | |
279 | - // fScaleY -= 0.01f; | |
280 | - //} | |
281 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D2 ) ) | |
282 | - //{ | |
283 | - // fScaleY += 0.01f; | |
284 | - //} | |
285 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D3 ) ) | |
286 | - //{ | |
287 | - // fScaleY -= 0.1f; | |
288 | - //} | |
289 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D4 ) ) | |
290 | - //{ | |
291 | - // fScaleY += 0.1f; | |
292 | - //} | |
293 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D5 ) ) | |
294 | - //{ | |
295 | - // offset--; | |
296 | - //} | |
297 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D6 ) ) | |
298 | - //{ | |
299 | - // offset++; | |
300 | - //} | |
301 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D7 ) ) | |
302 | - //{ | |
303 | - // fX -= 10; | |
304 | - //} | |
305 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D8 ) ) | |
306 | - //{ | |
307 | - // fX += 10; | |
308 | - //} | |
309 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D9 ) ) | |
310 | - //{ | |
311 | - // fY -= 10; | |
312 | - //} | |
313 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D0 ) ) | |
314 | - //{ | |
315 | - // fY += 10; | |
316 | - //} | |
317 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.Q ) ) | |
318 | - //{ | |
319 | - // fZ -= 1; | |
320 | - //} | |
321 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.W ) ) | |
322 | - //{ | |
323 | - // fZ += 1; | |
324 | - //} | |
325 | - //if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.E ) ) | |
326 | - //{ | |
327 | - // fZ -= 10; | |
328 | - //} | |
329 | - //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.R ) ) | |
330 | - //{ | |
331 | - // fZ += 10; | |
332 | - //} | |
243 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F1 ) ) | |
244 | + { | |
245 | + fX--; | |
246 | + } | |
247 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F2 ) ) | |
248 | + { | |
249 | + fX++; | |
250 | + } | |
251 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F3 ) ) | |
252 | + { | |
253 | + fY--; | |
254 | + } | |
255 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F4 ) ) | |
256 | + { | |
257 | + fY++; | |
258 | + } | |
259 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F6 ) ) | |
260 | + { | |
261 | + rot--; | |
262 | + } | |
263 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F7 ) ) | |
264 | + { | |
265 | + rot++; | |
266 | + } | |
267 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F8 ) ) | |
268 | + { | |
269 | + fScaleX -= 0.01f; | |
270 | + } | |
271 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F9 ) ) | |
272 | + { | |
273 | + fScaleX += 0.01f; | |
274 | + } | |
275 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F10 ) ) | |
276 | + { | |
277 | + fScaleX -= 0.1f; | |
278 | + } | |
279 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F11 ) ) | |
280 | + { | |
281 | + fScaleX += 0.1f; | |
282 | + } | |
283 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D1 ) ) | |
284 | + { | |
285 | + fScaleY -= 0.01f; | |
286 | + } | |
287 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D2 ) ) | |
288 | + { | |
289 | + fScaleY += 0.01f; | |
290 | + } | |
291 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D3 ) ) | |
292 | + { | |
293 | + fScaleY -= 0.1f; | |
294 | + } | |
295 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D4 ) ) | |
296 | + { | |
297 | + fScaleY += 0.1f; | |
298 | + } | |
299 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D5 ) ) | |
300 | + { | |
301 | + fOffsetX--; | |
302 | + } | |
303 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D6 ) ) | |
304 | + { | |
305 | + fOffsetX++; | |
306 | + } | |
307 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D7 ) ) | |
308 | + { | |
309 | + fX -= 10; | |
310 | + } | |
311 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D8 ) ) | |
312 | + { | |
313 | + fX += 10; | |
314 | + } | |
315 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D9 ) ) | |
316 | + { | |
317 | + fY -= 10; | |
318 | + } | |
319 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D0 ) ) | |
320 | + { | |
321 | + fY += 10; | |
322 | + } | |
323 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.Q ) ) | |
324 | + { | |
325 | + fZ -= 1; | |
326 | + } | |
327 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.W ) ) | |
328 | + { | |
329 | + fZ += 1; | |
330 | + } | |
331 | + if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.E ) ) | |
332 | + { | |
333 | + fZ -= 10; | |
334 | + } | |
335 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.R ) ) | |
336 | + { | |
337 | + fZ += 10; | |
338 | + } | |
339 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.T ) ) | |
340 | + { | |
341 | + fOffsetY--; | |
342 | + } | |
343 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.Y ) ) | |
344 | + { | |
345 | + fOffsetY++; | |
346 | + } | |
347 | + if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.U ) ) | |
348 | + { | |
349 | + fOffsetZ--; | |
350 | + } | |
351 | + if(CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.I )) | |
352 | + { | |
353 | + fOffsetZ++; | |
354 | + } | |
333 | 355 | |
334 | 356 | #region[ ステータスパネルの文字 ] |
357 | + if( this.tx判定数数字 != null ) | |
358 | + { | |
359 | + int nowtotal = CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect + | |
360 | + CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Great + | |
361 | + CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Good + | |
362 | + CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor + | |
363 | + CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss; | |
364 | + | |
365 | + //string str = nowtotal == 0 ? " 0" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect / (float)nowtotal) * 100.0f ); | |
366 | + //for( int i = 0; i < 4; i++ ) | |
367 | + //{ | |
368 | + // Rectangle rectangle; | |
369 | + // char ch = str[i]; | |
370 | + // if (ch.Equals(' ')) | |
371 | + // { | |
372 | + // rectangle = new Rectangle(0, 0, 0, 0); | |
373 | + // } | |
374 | + // else if( ch.Equals('%') ) | |
375 | + // { | |
376 | + // rectangle = new Rectangle( 200, 0, 20, 26 ); | |
377 | + // } | |
378 | + // else | |
379 | + // { | |
380 | + // int num3 = int.Parse(str.Substring(i, 1)); | |
381 | + // rectangle = new Rectangle((num3 * 20), 0, 20, 26); | |
382 | + // } | |
383 | + // Matrix matScoreXG = Matrix.Identity; | |
384 | + // matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f); | |
385 | + // matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40)); | |
386 | + // matScoreXG *= Matrix.Translation( -435 + (i * 6), 107, 28 + i * 6); | |
387 | + // this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle); | |
388 | + //} | |
335 | 389 | |
390 | + this.t判定数文字描画( -476, 107, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect ); | |
391 | + this.t判定数文字描画( -476, 77, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Great ); | |
392 | + this.t判定数文字描画( -476, 47, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Good ); | |
393 | + this.t判定数文字描画( -476, 17, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor ); | |
394 | + this.t判定数文字描画( -476, -13, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss ); | |
395 | + this.t判定数文字描画( -476, -43, CDTXMania.stage演奏ドラム画面GITADORA.actCombo.n現在のコンボ数.Drums最高値 ); | |
396 | + | |
397 | + this.t判定率文字描画( -435, 107, nowtotal == 0 ? " 0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect / (float)nowtotal) * 100.0f ) ); | |
398 | + this.t判定率文字描画( -435, 77, nowtotal == 0 ? " 0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Great / (float)nowtotal) * 100.0f ) ); | |
399 | + this.t判定率文字描画( -435, 47, nowtotal == 0 ? " 0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Good / (float)nowtotal) * 100.0f ) ); | |
400 | + this.t判定率文字描画( -435, 17, nowtotal == 0 ? " 0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor / (float)nowtotal) * 100.0f ) ); | |
401 | + this.t判定率文字描画( -435, -13, nowtotal == 0 ? " 0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss / (float)nowtotal) * 100.0f ) ); | |
402 | + this.t判定率文字描画( -435, -43, nowtotal == 0 ? " 0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.actCombo.n現在のコンボ数.Drums最高値 / (float)nowtotal) * 100.0f ) ); | |
403 | + } | |
336 | 404 | #endregion |
337 | 405 | |
338 | - //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "RotY:" + rot.ToString() ); | |
339 | - //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.白, "PanelX:" + fX.ToString() ); | |
340 | - //CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.白, "PanelY:" + fY.ToString() ); | |
341 | - //CDTXMania.act文字コンソール.tPrint( 0, 48, C文字コンソール.Eフォント種別.白, "ScaleX:" + fScaleX.ToString() ); | |
342 | - //CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, "ScaleY:" + fScaleY.ToString() ); | |
343 | - //CDTXMania.act文字コンソール.tPrint( 0, 80, C文字コンソール.Eフォント種別.白, "OFFSET:" + offset.ToString() ); | |
344 | - //CDTXMania.act文字コンソール.tPrint( 0, 96, C文字コンソール.Eフォント種別.白, "PanelZ:" + fZ.ToString() ); | |
406 | + CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "RotY:" + rot.ToString() ); | |
407 | + CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.白, "PanelX:" + fX.ToString() ); | |
408 | + CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.白, "PanelY:" + fY.ToString() ); | |
409 | + CDTXMania.act文字コンソール.tPrint( 0, 48, C文字コンソール.Eフォント種別.白, "PanelZ:" + fZ.ToString() ); | |
410 | + CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, "ScaleX:" + fScaleX.ToString() ); | |
411 | + CDTXMania.act文字コンソール.tPrint( 0, 80, C文字コンソール.Eフォント種別.白, "ScaleY:" + fScaleY.ToString() ); | |
412 | + CDTXMania.act文字コンソール.tPrint( 0, 96, C文字コンソール.Eフォント種別.白, "OffsetX:" + fOffsetX.ToString() ); | |
413 | + CDTXMania.act文字コンソール.tPrint( 0, 112, C文字コンソール.Eフォント種別.白, "OffsetY:" + fOffsetY.ToString() ); | |
414 | + CDTXMania.act文字コンソール.tPrint( 0, 128, C文字コンソール.Eフォント種別.白, "OffsetZ:" + fOffsetZ.ToString() ); | |
345 | 415 | |
346 | 416 | if ( this.txSongNamePlate != null ) |
347 | 417 | { |
@@ -479,6 +549,8 @@ namespace DTXMania | ||
479 | 549 | private CTexture txJacket; |
480 | 550 | private CTexture txPlayerName; |
481 | 551 | private CTexture txTitleName; |
552 | + private CTexture tx判定数数字; | |
553 | + private CTexture tx達成率数字_整数; | |
482 | 554 | |
483 | 555 | #if DEBUG |
484 | 556 | private float fX; |
@@ -487,7 +559,9 @@ namespace DTXMania | ||
487 | 559 | private int rot; |
488 | 560 | private float fScaleX; |
489 | 561 | private float fScaleY; |
490 | - private int offset; | |
562 | + private float fOffsetX; | |
563 | + private float fOffsetY; | |
564 | + private float fOffsetZ; | |
491 | 565 | #endif |
492 | 566 | //----------------- |
493 | 567 | private CTexture t指定された文字テクスチャを生成する( string str文字 ) |
@@ -509,6 +583,56 @@ namespace DTXMania | ||
509 | 583 | return tx文字テクスチャ; |
510 | 584 | } |
511 | 585 | |
586 | + private void t判定数文字描画( float x, float y, int value ) | |
587 | + { | |
588 | + string str = string.Format("{0,4:###0}", value ); | |
589 | + for( int i = 0; i < 4; i++ ) | |
590 | + { | |
591 | + Rectangle rectangle; | |
592 | + char ch = str[i]; | |
593 | + if (ch.Equals(' ')) | |
594 | + { | |
595 | + rectangle = new Rectangle(0, 0, 0, 0); | |
596 | + } | |
597 | + else | |
598 | + { | |
599 | + int num3 = int.Parse(str.Substring(i, 1)); | |
600 | + rectangle = new Rectangle((num3 * 20), 0, 20, 26); | |
601 | + } | |
602 | + Matrix matScoreXG = Matrix.Identity; | |
603 | + matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f); | |
604 | + matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40)); | |
605 | + matScoreXG *= Matrix.Translation( x + (i * 6), y, i * 6); | |
606 | + this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle); | |
607 | + } | |
608 | + } | |
609 | + | |
610 | + private void t判定率文字描画( float x, float y, string str ) | |
611 | + { | |
612 | + for( int i = 0; i < 4; i++ ) | |
613 | + { | |
614 | + Rectangle rectangle; | |
615 | + char ch = str[i]; | |
616 | + if (ch.Equals(' ')) | |
617 | + { | |
618 | + rectangle = new Rectangle(0, 0, 0, 0); | |
619 | + } | |
620 | + else if( ch.Equals('%') ) | |
621 | + { | |
622 | + rectangle = new Rectangle( 200, 0, 20, 26 ); | |
623 | + } | |
624 | + else | |
625 | + { | |
626 | + int num3 = int.Parse(str.Substring(i, 1)); | |
627 | + rectangle = new Rectangle((num3 * 20), 0, 20, 26); | |
628 | + } | |
629 | + Matrix matScoreXG = Matrix.Identity; | |
630 | + matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f); | |
631 | + matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40)); | |
632 | + matScoreXG *= Matrix.Translation( x + (i * 6), y, 28 + i * 6); | |
633 | + this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle); | |
634 | + } | |
635 | + } | |
512 | 636 | #endregion |
513 | 637 | } |
514 | 638 | } |
\ No newline at end of file |
@@ -8,6 +8,7 @@ using SharpDX; | ||
8 | 8 | using FDK; |
9 | 9 | |
10 | 10 | using Color = System.Drawing.Color; |
11 | +using Rectangle = System.Drawing.Rectangle; | |
11 | 12 | namespace DTXMania |
12 | 13 | { |
13 | 14 | internal class CActResultImageGD : CActResultImage共通 |
@@ -61,11 +62,15 @@ namespace DTXMania | ||
61 | 62 | CDTXMania.tテクスチャの解放( ref this.txジャケットパネル ); |
62 | 63 | CDTXMania.tテクスチャの解放( ref this.tx曲名パネル ); |
63 | 64 | |
64 | - CDTXMania.tテクスチャの解放( ref this.tx曲名 ); | |
65 | - CDTXMania.tテクスチャの解放( ref this.txアーティスト名 ); | |
66 | - | |
67 | 65 | CDTXMania.tテクスチャの解放( ref this.tx難易度 ); |
68 | 66 | CDTXMania.tテクスチャの解放( ref this.tx楽器パート ); |
67 | + | |
68 | + CDTXMania.t安全にDisposeする( ref this.pfSongTitleFont ); | |
69 | + CDTXMania.t安全にDisposeする( ref this.pfSongArtistFont ); | |
70 | + | |
71 | + CDTXMania.tテクスチャの解放( ref this.tx曲名 ); | |
72 | + CDTXMania.tテクスチャの解放( ref this.txアーティスト名 ); | |
73 | + | |
69 | 74 | base.OnManagedリソースの解放(); |
70 | 75 | } |
71 | 76 | } |
@@ -144,9 +149,10 @@ namespace DTXMania | ||
144 | 149 | private CTexture txアーティスト名; |
145 | 150 | private CTexture tx楽器パート; |
146 | 151 | private CTexture tx難易度; |
152 | + | |
147 | 153 | private CPrivateFastFont pfSongArtistFont; |
148 | 154 | private CPrivateFastFont pfSongTitleFont; |
149 | - | |
155 | + | |
150 | 156 | private CTexture t指定された文字テクスチャを生成する( string str文字 ) |
151 | 157 | { |
152 | 158 | if( this.pfSongTitleFont == null ) return null; |
@@ -4,9 +4,12 @@ using System.Text; | ||
4 | 4 | using System.Runtime.InteropServices; |
5 | 5 | using System.Drawing; |
6 | 6 | using System.IO; |
7 | -using SlimDX; | |
7 | +using SharpDX; | |
8 | 8 | using FDK; |
9 | 9 | |
10 | +using Rectangle = System.Drawing.Rectangle; | |
11 | +using Point = SharpDX.Point; | |
12 | +using Size = System.Drawing.Size; | |
10 | 13 | namespace DTXMania |
11 | 14 | { |
12 | 15 | internal class CActResultParameterPanelGD : CActResultParameterPanel共通 |
@@ -15,7 +18,9 @@ namespace DTXMania | ||
15 | 18 | |
16 | 19 | public CActResultParameterPanelGD() |
17 | 20 | { |
18 | - base.b活性化してない = true; | |
21 | + this.tスキル数字フォント初期化(); | |
22 | + this.t達成率数字フォント初期化(); | |
23 | + base.b活性化してない = true; | |
19 | 24 | } |
20 | 25 | |
21 | 26 |
@@ -90,7 +95,25 @@ namespace DTXMania | ||
90 | 95 | this.txゲージ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Gauge.png" ) ); |
91 | 96 | this.txゲージ2 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Gauge2.png" ) ); |
92 | 97 | this.txWhite = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\Tile white 64x64.png" ) ); |
93 | - base.OnManagedリソースの作成(); | |
98 | + | |
99 | + this.txスキル数字_整数 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Skill Number Big.png" ) ); | |
100 | + this.txスキル数字_少数 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Skill Number Small.png" ) ); | |
101 | + this.txスキル数字_点 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Skill Number dot.png" ) ); | |
102 | + | |
103 | + this.tx達成率数字_整数 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Rate Number Big.png" ) ); | |
104 | + this.tx達成率数字_少数 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\8_Rate Number Small.png" ) ); | |
105 | + | |
106 | + | |
107 | + #region[ 難易度、達成率、スキル値の下の白線の生成 ] | |
108 | + Bitmap b白線 = new Bitmap( 340, 2 ); | |
109 | + Graphics g白線 = Graphics.FromImage( b白線 ); | |
110 | + g白線.FillRectangle( Brushes.White, 0, 0, 340, 2 ); | |
111 | + | |
112 | + this.tx白線 = CDTXMania.tテクスチャの生成( b白線, false ); | |
113 | + CDTXMania.t安全にDisposeする( ref b白線 ); | |
114 | + CDTXMania.t安全にDisposeする( ref g白線 ); | |
115 | + #endregion | |
116 | + base.OnManagedリソースの作成(); | |
94 | 117 | } |
95 | 118 | } |
96 | 119 | public override void OnManagedリソースの解放() |
@@ -106,6 +129,15 @@ namespace DTXMania | ||
106 | 129 | CDTXMania.tテクスチャの解放( ref this.txゲージ ); |
107 | 130 | CDTXMania.tテクスチャの解放( ref this.txゲージ2 ); |
108 | 131 | CDTXMania.tテクスチャの解放( ref this.txWhite ); |
132 | + | |
133 | + CDTXMania.tテクスチャの解放( ref this.txスキル数字_整数 ); | |
134 | + CDTXMania.tテクスチャの解放( ref this.txスキル数字_少数 ); | |
135 | + CDTXMania.tテクスチャの解放( ref this.txスキル数字_点 ); | |
136 | + | |
137 | + CDTXMania.tテクスチャの解放( ref this.tx達成率数字_整数 ); | |
138 | + CDTXMania.tテクスチャの解放( ref this.tx達成率数字_少数 ); | |
139 | + | |
140 | + CDTXMania.tテクスチャの解放( ref this.tx白線 ); | |
109 | 141 | base.OnManagedリソースの解放(); |
110 | 142 | } |
111 | 143 | } |
@@ -132,8 +164,16 @@ namespace DTXMania | ||
132 | 164 | { |
133 | 165 | if( this.n本体X[ i ] != 0 ) |
134 | 166 | { |
135 | - this.t特大文字表示( 1080, 260, string.Format("{0,-6:##0.00%}", CDTXMania.stage結果.st演奏記録[ i ].db演奏型スキル値 / 100.0 ) ); | |
136 | - this.t特大文字表示( 1020, 370, string.Format("{0,6:##0.00}", CDTXMania.stage結果.st演奏記録[i].dbゲーム型スキル値)); | |
167 | + this.tレベル値の描画( 1078, 159, CDTXMania.DTX.LEVEL.Drums, CDTXMania.DTX.LEVELDEC.Drums ); | |
168 | + this.tx白線?.t2D描画( CDTXMania.app.Device, 916, 215 ); | |
169 | + | |
170 | + //this.t特大文字表示( 1080, 260, string.Format("{0,-6:##0.00%}", CDTXMania.stage結果.st演奏記録[ i ].db演奏型スキル値 / 100.0 ) ); | |
171 | + this.t達成率値の描画( 1040, 232, CDTXMania.stage結果.st演奏記録[ i ].db演奏型スキル値 ); | |
172 | + this.tx白線?.t2D描画( CDTXMania.app.Device, 890, 288 ); | |
173 | + | |
174 | + //this.t特大文字表示( 1020, 370, string.Format("{0,6:##0.00}", CDTXMania.stage結果.st演奏記録[i].dbゲーム型スキル値)); | |
175 | + this.tスキル値の描画(976, 328, CDTXMania.stage結果.st演奏記録[ i ].dbゲーム型スキル値 ); | |
176 | + this.tx白線?.t2D描画( CDTXMania.app.Device, 842, 416 ); | |
137 | 177 | } |
138 | 178 | } |
139 | 179 |
@@ -141,48 +181,7 @@ namespace DTXMania | ||
141 | 181 | int num5 = this.ct表示用.n現在の値 / 100; |
142 | 182 | double num6 = 1.0 - (((double)(this.ct表示用.n現在の値 % 100)) / 100.0); |
143 | 183 | int height = 20; |
144 | - | |
145 | - for( int i = 0; i < 3; i++ ) | |
146 | - { | |
147 | - this.n白X[i] = this.n本体X[i] + 393; | |
148 | - this.n白Y[i] = this.n本体Y[i] + 35 + (num5 * 24); | |
149 | - | |
150 | - if( this.n本体X[i] != 0 ) | |
151 | - { | |
152 | - STDGBVALUE<double> n表記するLEVEL = new STDGBVALUE<double>(); | |
153 | - n表記するLEVEL[i] = CDTXMania.DTX.LEVEL[i] / 10.0; | |
154 | - n表記するLEVEL[i] += (CDTXMania.DTX.LEVELDEC[i] != 0 ? CDTXMania.DTX.LEVELDEC[i] / 100.0 : 0); | |
155 | - int DTXLevel = CDTXMania.DTX.LEVEL[i]; | |
156 | - double DTXLevelDeci = (DTXLevel * 10 - CDTXMania.DTX.LEVEL[i]); | |
157 | - | |
158 | - Cスコア CScore = CDTXMania.bXGRelease ? CDTXMania.stage選曲XG.r確定されたスコア : CDTXMania.stage選曲GITADORA.r確定されたスコア; | |
159 | - C曲リストノード CSongNode = CDTXMania.bXGRelease ? CDTXMania.stage選曲XG.r確定された曲 : CDTXMania.stage選曲GITADORA.r確定された曲; | |
160 | - int n表示Level = 0; | |
161 | - string n表示LevelDec = "0"; | |
162 | - | |
163 | - if( CDTXMania.ConfigIni.bCLASSIC譜面判別を有効にする && CDTXMania.DTX.bCLASSIC譜面である[ i ] ) | |
164 | - { | |
165 | - n表示Level = CScore.譜面情報.レベル[i]; | |
166 | - } | |
167 | - else | |
168 | - { | |
169 | - n表示Level = CScore.譜面情報.レベル[ i ] / 10; | |
170 | - if( CScore.譜面情報.レベル[ i ].ToString().Length > 1 ) | |
171 | - n表示LevelDec = CScore.譜面情報.レベル[ i ].ToString().Substring( 1, 1 ); | |
172 | - else | |
173 | - n表示LevelDec = CScore.譜面情報.レベル[ i ].ToString(); | |
174 | - | |
175 | - if( CScore.譜面情報.レベルDec[ i ] != 0 ) | |
176 | - n表示LevelDec += CScore.譜面情報.レベルDec[i].ToString(); | |
177 | - else | |
178 | - n表示LevelDec += "0"; | |
179 | - } | |
180 | - | |
181 | - if (this.ct表示用.n現在の値 < 700) | |
182 | - { | |
183 | - } | |
184 | - } | |
185 | - } | |
184 | + | |
186 | 185 | //文字 |
187 | 186 | CDTXMania.act文字コンソール.tPrint( 877, 484, C文字コンソール.Eフォント種別.白, "PERFECT" ); |
188 | 187 | CDTXMania.act文字コンソール.tPrint( 877, 508, C文字コンソール.Eフォント種別.白, "GREAT" ); |
@@ -234,6 +233,17 @@ namespace DTXMania | ||
234 | 233 | } |
235 | 234 | } |
236 | 235 | |
236 | + private struct ST数字フォント | |
237 | + { | |
238 | + public char ch文字; | |
239 | + public Rectangle rect; | |
240 | + } | |
241 | + | |
242 | + private ST数字フォント[] STスキル数字_整数; | |
243 | + private ST数字フォント[] STスキル数字_少数; | |
244 | + private ST数字フォント[] ST達成率数字_整数; | |
245 | + private ST数字フォント[] ST達成率数字_少数; | |
246 | + | |
237 | 247 | private CCounter ct表示用; |
238 | 248 | private STDGBVALUE<int> n本体X; |
239 | 249 | private STDGBVALUE<int> n本体Y; |
@@ -248,6 +258,12 @@ namespace DTXMania | ||
248 | 258 | private CTexture txゲージ; |
249 | 259 | private CTexture txゲージ2; |
250 | 260 | private CTexture[] tx文字 = new CTexture[ 3 ]; |
261 | + private CTexture txスキル数字_整数; | |
262 | + private CTexture txスキル数字_少数; | |
263 | + private CTexture txスキル数字_点; | |
264 | + private CTexture tx達成率数字_整数; | |
265 | + private CTexture tx達成率数字_少数; | |
266 | + private CTexture tx白線; | |
251 | 267 | |
252 | 268 | private ST文字位置[] st小文字位置 = new ST文字位置[]{ |
253 | 269 | new ST文字位置( '0', new Point( 0, 36 ) ), |
@@ -319,6 +335,64 @@ namespace DTXMania | ||
319 | 335 | new ST文字位置( '9', new Point( 180, 0 ) ), |
320 | 336 | }; |
321 | 337 | |
338 | + private void tスキル数字フォント初期化() | |
339 | + { | |
340 | + this.STスキル数字_整数 = new ST数字フォント[] { | |
341 | + new ST数字フォント{ ch文字 = '0', rect = new Rectangle( 0, 0, 70, 70 ) }, | |
342 | + new ST数字フォント{ ch文字 = '1', rect = new Rectangle( 70, 0, 70, 70 ) }, | |
343 | + new ST数字フォント{ ch文字 = '2', rect = new Rectangle( 140, 0, 70, 70 ) }, | |
344 | + new ST数字フォント{ ch文字 = '3', rect = new Rectangle( 210, 0, 70, 70 ) }, | |
345 | + new ST数字フォント{ ch文字 = '4', rect = new Rectangle( 280, 0, 70, 70 ) }, | |
346 | + new ST数字フォント{ ch文字 = '5', rect = new Rectangle( 0, 70, 70, 70 ) }, | |
347 | + new ST数字フォント{ ch文字 = '6', rect = new Rectangle( 70, 70, 70, 70 ) }, | |
348 | + new ST数字フォント{ ch文字 = '7', rect = new Rectangle( 140, 70, 70, 70 ) }, | |
349 | + new ST数字フォント{ ch文字 = '8', rect = new Rectangle( 210, 70, 70, 70 ) }, | |
350 | + new ST数字フォント{ ch文字 = '9', rect = new Rectangle( 280, 70, 70, 70 ) }, | |
351 | + }; | |
352 | + this.STスキル数字_少数 = new ST数字フォント[] { | |
353 | + new ST数字フォント{ ch文字 = '0', rect = new Rectangle( 0, 0, 50, 50 ) }, | |
354 | + new ST数字フォント{ ch文字 = '1', rect = new Rectangle( 50, 0, 50, 50 ) }, | |
355 | + new ST数字フォント{ ch文字 = '2', rect = new Rectangle( 100, 0, 50, 50 ) }, | |
356 | + new ST数字フォント{ ch文字 = '3', rect = new Rectangle( 150, 0, 50, 50 ) }, | |
357 | + new ST数字フォント{ ch文字 = '4', rect = new Rectangle( 200, 0, 50, 50 ) }, | |
358 | + new ST数字フォント{ ch文字 = '5', rect = new Rectangle( 0, 50, 50, 50 ) }, | |
359 | + new ST数字フォント{ ch文字 = '6', rect = new Rectangle( 50, 50, 50, 50 ) }, | |
360 | + new ST数字フォント{ ch文字 = '7', rect = new Rectangle( 100, 50, 50, 50 ) }, | |
361 | + new ST数字フォント{ ch文字 = '8', rect = new Rectangle( 150, 50, 50, 50 ) }, | |
362 | + new ST数字フォント{ ch文字 = '9', rect = new Rectangle( 200, 50, 50, 50 ) }, | |
363 | + }; | |
364 | + } | |
365 | + | |
366 | + private void t達成率数字フォント初期化() | |
367 | + { | |
368 | + this.ST達成率数字_整数 = new ST数字フォント[] { | |
369 | + new ST数字フォント{ ch文字 = '0', rect = new Rectangle( 0, 0, 38, 50 ) }, | |
370 | + new ST数字フォント{ ch文字 = '1', rect = new Rectangle( 38, 0, 38, 50 ) }, | |
371 | + new ST数字フォント{ ch文字 = '2', rect = new Rectangle( 76, 0, 38, 50 ) }, | |
372 | + new ST数字フォント{ ch文字 = '3', rect = new Rectangle( 114, 0, 38, 50 ) }, | |
373 | + new ST数字フォント{ ch文字 = '4', rect = new Rectangle( 152, 0, 38, 50 ) }, | |
374 | + new ST数字フォント{ ch文字 = '5', rect = new Rectangle( 0, 50, 38, 50 ) }, | |
375 | + new ST数字フォント{ ch文字 = '6', rect = new Rectangle( 38, 50, 38, 50 ) }, | |
376 | + new ST数字フォント{ ch文字 = '7', rect = new Rectangle( 76, 50, 38, 50 ) }, | |
377 | + new ST数字フォント{ ch文字 = '8', rect = new Rectangle( 114, 50, 38, 50 ) }, | |
378 | + new ST数字フォント{ ch文字 = '9', rect = new Rectangle( 152, 50, 38, 50 ) } | |
379 | + }; | |
380 | + this.ST達成率数字_少数 = new ST数字フォント[] { | |
381 | + new ST数字フォント{ ch文字 = '0', rect = new Rectangle( 0, 0, 32, 42 ) }, | |
382 | + new ST数字フォント{ ch文字 = '1', rect = new Rectangle( 32, 0, 32, 42 ) }, | |
383 | + new ST数字フォント{ ch文字 = '2', rect = new Rectangle( 64, 0, 32, 42 ) }, | |
384 | + new ST数字フォント{ ch文字 = '3', rect = new Rectangle( 96, 0, 32, 42 ) }, | |
385 | + new ST数字フォント{ ch文字 = '4', rect = new Rectangle( 128, 0, 32, 42 ) }, | |
386 | + new ST数字フォント{ ch文字 = '5', rect = new Rectangle( 0, 42, 32, 42 ) }, | |
387 | + new ST数字フォント{ ch文字 = '6', rect = new Rectangle( 32, 42, 32, 42 ) }, | |
388 | + new ST数字フォント{ ch文字 = '7', rect = new Rectangle( 64, 42, 32, 42 ) }, | |
389 | + new ST数字フォント{ ch文字 = '8', rect = new Rectangle( 96, 42, 32, 42 ) }, | |
390 | + new ST数字フォント{ ch文字 = '9', rect = new Rectangle( 128, 42, 32, 42 ) }, | |
391 | + new ST数字フォント{ ch文字 = '%', rect = new Rectangle( 0, 84, 42, 42 ) }, | |
392 | + new ST数字フォント{ ch文字 = '.', rect = new Rectangle( 42, 84, 32, 42 ) } | |
393 | + }; | |
394 | + } | |
395 | + | |
322 | 396 | private void t小文字表示( int x, int y, string str ) |
323 | 397 | { |
324 | 398 | this.t小文字表示( x, y, str, false ); |
@@ -470,6 +544,154 @@ namespace DTXMania | ||
470 | 544 | x += 16; |
471 | 545 | } |
472 | 546 | } |
547 | + private void tスキル値の描画( int x, int y, double dbスキル値 ) | |
548 | + { | |
549 | + if( dbスキル値 <= 0 || dbスキル値 > 200 ) | |
550 | + return; | |
551 | + | |
552 | + // 1文字あたりのマージン | |
553 | + int n文字間隔_整数部 = 46; | |
554 | + int n文字間隔_小数部 = 32; | |
555 | + bool b整数部処理中 = true; | |
556 | + dbスキル値 = dbスキル値 * 100.0; | |
557 | + dbスキル値 = Math.Floor( dbスキル値 ); | |
558 | + dbスキル値 = dbスキル値 / 100.0; | |
559 | + string formatText = string.Format( "{0,6:000.00}", dbスキル値.ToString() ); | |
560 | + | |
561 | + for( int i = 0; i < formatText.Length; i++ ) | |
562 | + { | |
563 | + char c = formatText[ i ]; | |
564 | + | |
565 | + if( c.Equals( '.' ) ) | |
566 | + { | |
567 | + // 小数点だったら小数点を描画してフラグ切り替えてcontinue | |
568 | + this.txスキル数字_点.t2D描画( CDTXMania.app.Device, x - 14, y ); | |
569 | + b整数部処理中 = false; | |
570 | + x += 18; | |
571 | + continue; | |
572 | + } | |
573 | + else if( c.Equals( ' ' ) ) | |
574 | + { | |
575 | + // 空白ならなにもせずcontinue | |
576 | + continue; | |
577 | + } | |
578 | + | |
579 | + for( int j = 0; j < 10; j++ ) | |
580 | + { | |
581 | + if( c.Equals( this.STスキル数字_整数[ j ].ch文字 ) ) | |
582 | + { | |
583 | + if( b整数部処理中 ) | |
584 | + { | |
585 | + this.txスキル数字_整数.t2D描画( CDTXMania.app.Device, x, y, this.STスキル数字_整数[ j ].rect ); | |
586 | + x += n文字間隔_整数部; | |
587 | + } | |
588 | + else | |
589 | + { | |
590 | + this.txスキル数字_少数.t2D描画( CDTXMania.app.Device, x, y + 20, this.STスキル数字_少数[ j ].rect ); | |
591 | + x += n文字間隔_小数部; | |
592 | + } | |
593 | + } | |
594 | + } | |
595 | + } | |
596 | + } | |
597 | + | |
598 | + private void t達成率値の描画( int x, int y, double dbスキル値 ) | |
599 | + { | |
600 | + // 1文字あたりのマージン | |
601 | + int n文字間隔_整数部 = 38; | |
602 | + int n文字間隔_小数部 = 30; | |
603 | + bool b整数部処理中 = true; | |
604 | + string formatText = string.Format( "{0,5:00.00}%", dbスキル値.ToString() ); | |
605 | + | |
606 | + for( int i = 0; i < formatText.Length; i++ ) | |
607 | + { | |
608 | + char c = formatText[ i ]; | |
609 | + | |
610 | + if( c.Equals( '.' ) ) | |
611 | + { | |
612 | + // 小数点だったら小数点を描画してフラグ切り替えてcontinue | |
613 | + this.tx達成率数字_少数?.t2D描画( CDTXMania.app.Device, x - 12, y + 8, this.ST達成率数字_少数[ 11 ].rect ); | |
614 | + b整数部処理中 = false; | |
615 | + x += 8; | |
616 | + continue; | |
617 | + } | |
618 | + else if( c.Equals( '%' ) ) | |
619 | + { | |
620 | + this.tx達成率数字_少数?.t2D描画( CDTXMania.app.Device, x, y + 8, this.ST達成率数字_少数[ 10 ].rect ); | |
621 | + continue; | |
622 | + } | |
623 | + else if( c.Equals( ' ' ) ) | |
624 | + { | |
625 | + // 空白ならなにもせずcontinue | |
626 | + continue; | |
627 | + } | |
628 | + | |
629 | + for( int j = 0; j < 10; j++ ) | |
630 | + { | |
631 | + if( c.Equals( this.ST達成率数字_整数[ j ].ch文字 ) ) | |
632 | + { | |
633 | + if( b整数部処理中 ) | |
634 | + { | |
635 | + this.tx達成率数字_整数?.t2D描画( CDTXMania.app.Device, x, y, this.ST達成率数字_整数[ j ].rect ); | |
636 | + x += n文字間隔_整数部; | |
637 | + } | |
638 | + else | |
639 | + { | |
640 | + this.tx達成率数字_少数?.t2D描画( CDTXMania.app.Device, x, y + 9, this.ST達成率数字_少数[ j ].rect ); | |
641 | + x += n文字間隔_小数部; | |
642 | + } | |
643 | + } | |
644 | + } | |
645 | + } | |
646 | + } | |
647 | + | |
648 | + private void tレベル値の描画( int x, int y, int nレベル, int nレベルDec ) | |
649 | + { | |
650 | + // 1文字あたりのマージン | |
651 | + int n文字間隔_整数部 = 38; | |
652 | + int n文字間隔_小数部 = 30; | |
653 | + bool b整数部処理中 = true; | |
654 | + decimal decLevel = 0.00M; | |
655 | + decLevel += nレベル / 10.0M; | |
656 | + decLevel += nレベルDec / 100.0M; | |
657 | + string formatText = string.Format( "{0,4:0.00}", decLevel.ToString() ); | |
658 | + | |
659 | + for( int i = 0; i < formatText.Length; i++ ) | |
660 | + { | |
661 | + char c = formatText[ i ]; | |
662 | + | |
663 | + if( c.Equals( '.' ) ) | |
664 | + { | |
665 | + // 小数点だったら小数点を描画してフラグ切り替えてcontinue | |
666 | + this.tx達成率数字_少数?.t2D描画( CDTXMania.app.Device, x - 12, y + 8, this.ST達成率数字_少数[ 11 ].rect ); | |
667 | + b整数部処理中 = false; | |
668 | + x += 8; | |
669 | + continue; | |
670 | + } | |
671 | + else if( c.Equals( ' ' ) ) | |
672 | + { | |
673 | + // 空白ならなにもせずcontinue | |
674 | + continue; | |
675 | + } | |
676 | + | |
677 | + for( int j = 0; j < 10; j++ ) | |
678 | + { | |
679 | + if( c.Equals( this.ST達成率数字_整数[ j ].ch文字 ) ) | |
680 | + { | |
681 | + if( b整数部処理中 ) | |
682 | + { | |
683 | + this.tx達成率数字_整数?.t2D描画( CDTXMania.app.Device, x, y, this.ST達成率数字_整数[ j ].rect ); | |
684 | + x += n文字間隔_整数部; | |
685 | + } | |
686 | + else | |
687 | + { | |
688 | + this.tx達成率数字_少数?.t2D描画( CDTXMania.app.Device, x, y + 9, this.ST達成率数字_少数[ j ].rect ); | |
689 | + x += n文字間隔_小数部; | |
690 | + } | |
691 | + } | |
692 | + } | |
693 | + } | |
694 | + } | |
473 | 695 | //----------------- |
474 | 696 | #endregion |
475 | 697 | } |