OSDN Git Service

作業部屋#50809 matixx表示の曲決定画面、演奏画面でデフォルトのジャケット画像が表示されない不具合を修正
[dtxmaniaxg-verk/dtxmaniaxg-verk-git.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / GITADORA / ドラム画面 / CAct演奏DrumsステータスパネルGD.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Runtime.InteropServices;
5 using System.Drawing;
6 using System.IO;
7 using System.Diagnostics;
8 using SharpDX;
9 using FDK;
10
11 using Color = System.Drawing.Color;
12 using Rectangle = System.Drawing.Rectangle;
13 using SlimDXKey = SlimDX.DirectInput.Key;
14
15 namespace DTXMania
16 {
17     internal class CAct演奏DrumsステータスパネルGD : CAct演奏ステータスパネル共通
18     {
19         //2016.02.21 kairera0467 Imageの解放方法を変更。これでファイルが無かった時の例外処理の書き方が楽になるはず。
20
21         public override void On活性化()
22         {
23             this.pfPlayerNameFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18, FontStyle.Regular );
24             this.pfSongTitleFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 14, FontStyle.Regular );
25             this.pfSongArtistFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 9, FontStyle.Regular );
26             base.On活性化();
27         }
28         public override void OnManagedリソースの作成()
29         {
30             if( !base.b活性化してない )
31             {
32                 string strSongName = "";
33                 string strArtistName = "";
34
35                 if ( string.IsNullOrEmpty( CDTXMania.DTX.TITLE ) || ( !CDTXMania.bコンパクトモード && CDTXMania.ConfigIni.b曲名表示をdefのものにする ) )
36                     strSongName = CDTXMania.stage選曲GITADORA.r確定された曲.strタイトル;
37                 else
38                     strSongName = CDTXMania.DTX.TITLE;
39
40                 if ( string.IsNullOrEmpty( CDTXMania.DTX.ARTIST ) || ( !CDTXMania.bコンパクトモード && CDTXMania.ConfigIni.b曲名表示をdefのものにする ) )
41                     strArtistName = CDTXMania.stage選曲GITADORA.r確定されたスコア.譜面情報.アーティスト名;
42                 else
43                     strArtistName = CDTXMania.DTX.ARTIST;
44
45                 this.txSongTitle?.Dispose();
46                 this.txArtistName?.Dispose();
47                 this.txSongTitle = this.t指定された文字テクスチャを生成する( strSongName );
48                 this.txArtistName = this.t指定された文字テクスチャを生成する_小( strArtistName );
49
50                 Bitmap bmpCardName = new Bitmap(1, 1);
51                 #region[ ネームカラー ]
52                 //--------------------
53                 Color clNameColor = Color.White;
54                 Color clNameColorLower = Color.White;
55                 switch( CDTXMania.ConfigIni.nNameColor[ 0 ] )
56                 {
57                     case 0:
58                         clNameColor = Color.White;
59                         break;
60                     case 1:
61                         clNameColor = Color.LightYellow;
62                         break;
63                     case 2:
64                         clNameColor = Color.Yellow;
65                         break;
66                     case 3:
67                         clNameColor = Color.Green;
68                         break;
69                     case 4:
70                         clNameColor = Color.Blue;
71                         break;
72                     case 5:
73                         clNameColor = Color.Purple;
74                         break;
75                     case 6:
76                         clNameColor = Color.Red;
77                         break;
78                     case 7:
79                         clNameColor = Color.Brown;
80                         break;
81                     case 8:
82                         clNameColor = Color.Silver;
83                         break;
84                     case 9:
85                         clNameColor = Color.Gold;
86                         break;
87
88                     case 10:
89                         clNameColor = Color.White;
90                         break;
91                     case 11:
92                         clNameColor = Color.LightYellow;
93                         clNameColorLower = Color.White;
94                         break;
95                     case 12:
96                         clNameColor = Color.Yellow;
97                         clNameColorLower = Color.White;
98                         break;
99                     case 13:
100                         clNameColor = Color.FromArgb( 0, 255, 33 );
101                         clNameColorLower = Color.White;
102                         break;
103                     case 14:
104                         clNameColor = Color.FromArgb( 0, 38, 255 );
105                         clNameColorLower = Color.White;
106                         break;
107                     case 15:
108                         clNameColor = Color.FromArgb( 72, 0, 255 );
109                         clNameColorLower = Color.White;
110                         break;
111                     case 16:
112                         clNameColor = Color.FromArgb( 255, 255, 0, 0 );
113                         clNameColorLower = Color.White;
114                         break;
115                     case 17:
116                         clNameColor = Color.FromArgb( 255, 232, 182, 149 );
117                         clNameColorLower = Color.FromArgb( 255, 122, 69, 26 );
118                         break;
119                     case 18:
120                         clNameColor = Color.FromArgb( 246, 245, 255 );
121                         clNameColorLower = Color.FromArgb( 125, 128, 137 );
122                         break;
123                     case 19:
124                         clNameColor = Color.FromArgb( 255, 238, 196, 85 );
125                         clNameColorLower = Color.FromArgb(255, 255, 241, 200 );
126                         break;
127                 }
128
129                 //if (CDTXMania.ConfigIni.nNameColor.Drums >= 11)
130                 //{
131                 //    bmpCardName = this.pfNameFont.DrawPrivateFont(this.strPlayerName, clNameColor, Color.Transparent, clNameColor, clNameColorLower);
132                 //}
133                 //else
134                 //{
135                 //    bmpCardName = this.pfNameFont.DrawPrivateFont(this.strPlayerName, clNameColor, Color.Transparent);
136                 //}
137                 //--------------------
138                 #endregion
139                 #region[ 名前、グループ名 ]
140                 bmpCardName = this.pfPlayerNameFont.DrawPrivateFont( CDTXMania.ConfigIni.strGetCardName( E楽器パート.DRUMS ), Color.White, Color.Transparent );
141                 this.txPlayerName = CDTXMania.tテクスチャの生成( bmpCardName, false );
142                 #endregion
143                 #region[ 難易度数値 ]
144                 string str = string.Format( "{0:0.00}", ( (float)CDTXMania.DTX.LEVEL.Drums) / 10f );
145                 str = string.Format( "{0:0.00}", ( (float)CDTXMania.DTX.LEVEL.Drums ) / 10.0f + ( CDTXMania.DTX.LEVELDEC.Drums != 0 ? CDTXMania.DTX.LEVELDEC.Drums / 100.0f : 0 ) );
146                 int[] nDigit = new int[]{ Convert.ToInt16( str[ 0 ].ToString() ), Convert.ToInt16( str[ 2 ].ToString() ),Convert.ToInt16( str[ 3 ].ToString() ) };
147
148                 if ( CDTXMania.ConfigIni.bCLASSIC譜面判別を有効にする ? ( CDTXMania.DTX.bCLASSIC譜面である.Drums && CDTXMania.DTX.b強制的にXG譜面にする == false ) : false )
149                 {
150                     str = string.Format( "{0:00}", CDTXMania.DTX.LEVEL.Drums );
151                     nDigit = new int[]{ Convert.ToInt16( str[ 0 ].ToString() ), Convert.ToInt16( str[ 1 ].ToString() ) };
152                 }
153                 #endregion
154                 #region[ ジャケット画像 オプションアイコン ]
155                 string path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.PATH + CDTXMania.DTX.PREIMAGE;
156                 if( !File.Exists( path ) ) {
157                     this.iAlbum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_preimage default.png" ) );
158                 } else {
159                     this.iAlbum = CDTXMania.tテクスチャをImageで読み込む( path );
160                 }
161                 #endregion
162                 
163                 this.txスキルパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_SkillPanel.png" ) );
164                 if( File.Exists( path ) )
165                 {
166                     this.txJacket = CDTXMania.tテクスチャの生成( path );
167                 }
168                 else
169                 {
170                     this.txJacket = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_preimage default.png" ) );
171                 }
172
173                 this.txSongNamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Drums Songpanel.png" ) );
174                 this.txScore = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_score numbersGD.png" ) );
175
176                 this.tx判定数数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Ratenumber_s.png" ) );
177                 this.tx達成率数字_整数 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\7_Ratenumber_l.png" ) );
178
179                 CDTXMania.t安全にDisposeする( ref bmpCardName );
180
181                 base.OnManagedリソースの作成();
182             }
183         }
184         public override void OnManagedリソースの解放()
185         {
186             if( !base.b活性化してない )
187             {
188                 //テクスチャ5枚
189                 //イメージ 6枚(ジャケット画像はここで解放しない)
190                 //フォント 5個
191                 CDTXMania.tテクスチャの解放( ref this.txScore );
192                 CDTXMania.tテクスチャの解放( ref this.txSongNamePlate );
193                 CDTXMania.t安全にDisposeする( ref this.iRisky );
194                 CDTXMania.t安全にDisposeする( ref this.iDrumspeed );
195                 CDTXMania.t安全にDisposeする( ref this.pfPlayerNameFont );
196                 CDTXMania.t安全にDisposeする( ref this.pfSongTitleFont );
197                 CDTXMania.t安全にDisposeする( ref this.pfSongArtistFont );
198                 CDTXMania.tテクスチャの解放( ref this.txJacket );
199                 CDTXMania.tテクスチャの解放( ref this.txスキルパネル );
200
201                 CDTXMania.tテクスチャの解放( ref this.tx達成率数字_整数 );
202                 CDTXMania.tテクスチャの解放( ref this.tx判定数数字 );
203
204                 CDTXMania.tテクスチャの解放( ref this.txPlayerName );
205
206                 base.OnManagedリソースの解放();
207             }
208         }
209
210         public override int On進行描画()
211         {
212             if( !base.b活性化してない )
213             {
214                 //if( true )
215                 //    return 0;
216                 if( this.b初めての進行描画 )
217                 {
218                     //fX = -465;
219                     //fY = -25;
220                     //fZ = 0;
221                     //rot = -38;
222                     //fScaleX = 0.6f;
223                     //fScaleY = 1f;
224                     //offset = 0;
225
226                     this.b初めての進行描画 = false;
227                 }
228                 //if ( CDTXMania.ConfigIni.bShowMusicInfo )
229                 if( this.txNamePlate != null )
230                 {
231                     //this.txNamePlate.t3D描画( CDTXMania.app.Device, identity );
232                 }
233                 if( this.txスキルパネル != null )
234                 {
235                     Matrix matSkillPanel = Matrix.Identity;
236                     matSkillPanel *= Matrix.Scaling( 0.6f, 1.0f, 1 );
237                     matSkillPanel *= Matrix.RotationY( C変換.DegreeToRadian( -38 ) );
238                     matSkillPanel *= Matrix.Translation( -465, -25, 0 );
239                     this.txスキルパネル.t3D描画( CDTXMania.app.Device, matSkillPanel );
240                 }
241                 if( this.txPlayerName != null )
242                 {
243                     Matrix matPlayerName = Matrix.Identity;
244                     matPlayerName *= Matrix.Scaling( 0.6f, 1, 1 );
245                     matPlayerName *= Matrix.RotationY( C変換.DegreeToRadian( -38 ) );
246                     matPlayerName *= Matrix.Translation( -578 + ( this.txPlayerName.szテクスチャサイズ.Width / 2.0f ), 161, 0 );
247                     this.txPlayerName.t3D描画( CDTXMania.app.Device, matPlayerName );
248                 }
249
250                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F1 ) )
251                 //{
252                 //    fX--;
253                 //}
254                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F2 ) )
255                 //{
256                 //    fX++;
257                 //}
258                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F3 ) )
259                 //{
260                 //    fY--;
261                 //}
262                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F4 ) )
263                 //{
264                 //    fY++;
265                 //}
266                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F6 ) )
267                 //{
268                 //    rot--;
269                 //}
270                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F7 ) )
271                 //{
272                 //    rot++;
273                 //}
274                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F8 ) )
275                 //{
276                 //    fScaleX -= 0.01f;
277                 //}
278                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F9 ) )
279                 //{
280                 //    fScaleX += 0.01f;
281                 //}
282                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F10 ) )
283                 //{
284                 //    fScaleX -= 0.1f;
285                 //}
286                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.F11 ) )
287                 //{
288                 //    fScaleX += 0.1f;
289                 //}
290                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D1 ) )
291                 //{
292                 //    fScaleY -= 0.01f;
293                 //}
294                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D2 ) )
295                 //{
296                 //    fScaleY += 0.01f;
297                 //}
298                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D3 ) )
299                 //{
300                 //    fScaleY -= 0.1f;
301                 //}
302                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D4 ) )
303                 //{
304                 //    fScaleY += 0.1f;
305                 //}
306                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D5 ) )
307                 //{
308                 //    fOffsetX--;
309                 //}
310                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D6 ) )
311                 //{
312                 //    fOffsetX++;
313                 //}
314                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D7 ) )
315                 //{
316                 //    fX -= 10;
317                 //}
318                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D8 ) )
319                 //{
320                 //    fX += 10;
321                 //}
322                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D9 ) )
323                 //{
324                 //    fY -= 10;
325                 //}
326                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.D0 ) )
327                 //{
328                 //    fY += 10;
329                 //}
330                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.Q ) )
331                 //{
332                 //    fZ -= 1;
333                 //}
334                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.W ) )
335                 //{
336                 //    fZ += 1;
337                 //}
338                 //if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.E ) )
339                 //{
340                 //    fZ -= 10;
341                 //}
342                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.R ) )
343                 //{
344                 //    fZ += 10;
345                 //}
346                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.T ) )
347                 //{
348                 //    fOffsetY--;
349                 //}
350                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.Y ) )
351                 //{
352                 //    fOffsetY++;
353                 //}
354                 //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.U ) )
355                 //{
356                 //    fOffsetZ--;
357                 //}
358                 //if(CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDXKey.I ))
359                 //{
360                 //    fOffsetZ++;
361                 //}
362
363                 #region[ ステータスパネルの文字 ]
364                 if( this.tx判定数数字 != null )
365                 {
366                     int nowtotal = CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect +
367                         CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Great +
368                         CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Good +
369                         CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor +
370                         CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss;
371                     
372                     //string str = nowtotal == 0 ? "   0" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect / (float)nowtotal) * 100.0f );
373                     //for( int i = 0; i < 4; i++ )
374                     //{
375                     //    Rectangle rectangle;
376                     //    char ch = str[i];
377                     //    if (ch.Equals(' '))
378                     //    {
379                     //        rectangle = new Rectangle(0, 0, 0, 0);
380                     //    }
381                     //    else if( ch.Equals('%') )
382                     //    {
383                     //        rectangle = new Rectangle( 200, 0, 20, 26 );
384                     //    }
385                     //    else
386                     //    {
387                     //        int num3 = int.Parse(str.Substring(i, 1));
388                     //        rectangle = new Rectangle((num3 * 20), 0, 20, 26);
389                     //    }
390                     //    Matrix matScoreXG = Matrix.Identity;
391                     //    matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f);
392                     //    matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
393                     //    matScoreXG *= Matrix.Translation( -435 + (i * 6), 107, 28 + i * 6);
394                     //    this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
395                     //}
396
397                     this.t判定数文字描画( -476, 107, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect );
398                     this.t判定数文字描画( -476, 77, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Great );
399                     this.t判定数文字描画( -476, 47, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Good );
400                     this.t判定数文字描画( -476, 17, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor );
401                     this.t判定数文字描画( -476, -13, CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss );
402                     this.t判定数文字描画( -476, -43, CDTXMania.stage演奏ドラム画面GITADORA.actCombo.n現在のコンボ数.Drums最高値 );
403
404                     this.t判定率文字描画( -435, 107, nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Perfect / (float)nowtotal) * 100.0f )  );
405                     this.t判定率文字描画( -435, 77,  nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Great / (float)nowtotal) * 100.0f )  );
406                     this.t判定率文字描画( -435, 47,  nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Good / (float)nowtotal) * 100.0f )  );
407                     this.t判定率文字描画( -435, 17,  nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Poor / (float)nowtotal) * 100.0f )  );
408                     this.t判定率文字描画( -435, -13, nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.nヒット数_Auto含む.Drums.Miss / (float)nowtotal) * 100.0f )  );
409                     this.t判定率文字描画( -435, -43, nowtotal == 0 ? "  0%" : string.Format("{0,3:##0}%", (CDTXMania.stage演奏ドラム画面GITADORA.actCombo.n現在のコンボ数.Drums最高値 / (float)nowtotal) * 100.0f )  );
410                 }
411                 #endregion
412
413                 //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.白, "RotY:" + rot.ToString() );
414                 //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.白, "PanelX:" + fX.ToString() );
415                 //CDTXMania.act文字コンソール.tPrint( 0, 32, C文字コンソール.Eフォント種別.白, "PanelY:" + fY.ToString() );
416                 //CDTXMania.act文字コンソール.tPrint( 0, 48, C文字コンソール.Eフォント種別.白, "PanelZ:" + fZ.ToString() );
417                 //CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, "ScaleX:" + fScaleX.ToString() );
418                 //CDTXMania.act文字コンソール.tPrint( 0, 80, C文字コンソール.Eフォント種別.白, "ScaleY:" + fScaleY.ToString() );
419                 //CDTXMania.act文字コンソール.tPrint( 0, 96, C文字コンソール.Eフォント種別.白, "OffsetX:" + fOffsetX.ToString() );
420                 //CDTXMania.act文字コンソール.tPrint( 0, 112, C文字コンソール.Eフォント種別.白, "OffsetY:" + fOffsetY.ToString() );
421                 //CDTXMania.act文字コンソール.tPrint( 0, 128, C文字コンソール.Eフォント種別.白, "OffsetZ:" + fOffsetZ.ToString() );
422                 
423                 if ( this.txSongNamePlate != null )
424                 {
425                     this.txSongNamePlate.t2D描画( CDTXMania.app.Device, 969, -2 );
426                     if( this.txJacket != null )
427                     {
428                         this.txJacket.vc拡大縮小倍率 = new Vector3( 64.0f / this.txJacket.sz画像サイズ.Width, 64.0f / this.txJacket.sz画像サイズ.Height, 1.0f );
429                         this.txJacket.t2D描画( CDTXMania.app.Device, 982, 10 );
430                     }
431                     if( this.txSongTitle != null )
432                     {
433                         this.txSongTitle.t2D描画( CDTXMania.app.Device, 1050, 28 );
434                     }
435                     if( this.txArtistName != null )
436                     {
437                         this.txArtistName.t2D描画( CDTXMania.app.Device, 1055, 52 );
438                     }
439                 }
440
441
442                 #region[ HSアイコン ]
443                 //ハイスピはここで描画させる。
444                 if( this.nCurrentDrumspeed != CDTXMania.ConfigIni.n譜面スクロール速度.Drums && this.iDrumspeed != null )
445                 {
446                     Graphics gNamePlate = Graphics.FromImage( this.bNamePlate );
447                     this.nCurrentDrumspeed = CDTXMania.ConfigIni.n譜面スクロール速度.Drums;
448                     if( CDTXMania.ConfigIni.eNamePlateType == Eタイプ.A )
449                     {
450                         gNamePlate.DrawImage( this.iDrumspeed, new Rectangle( 209, 156, 42, 48 ), new Rectangle( 0, ( ( this.nCurrentDrumspeed > 15 ) ? 15 : this.nCurrentDrumspeed ) * 0x30, 0x2a, 0x30 ), GraphicsUnit.Pixel );
451                     }
452                     else if(CDTXMania.ConfigIni.eNamePlateType == Eタイプ.B)
453                     {
454                         gNamePlate.DrawImage( this.iDrumspeed, new Rectangle( 210, 141, 42, 48 ), new Rectangle( 0, ( ( this.nCurrentDrumspeed > 15 ) ? 15 : this.nCurrentDrumspeed ) * 0x30, 0x2a, 0x30 ), GraphicsUnit.Pixel );
455                     }
456                     gNamePlate.Dispose();
457                     this.txNamePlate.Dispose();
458                     this.txNamePlate = new CTexture( CDTXMania.app.Device, this.bNamePlate, CDTXMania.TextureFormat, false );
459                 }
460                 #endregion
461                 #region[ スコア表示 ]
462                 this.n表示スコア.Drums = (long)CDTXMania.stage演奏ドラム画面GITADORA.actScore.n現在表示中のスコア.Drums;
463                 if( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
464                 {
465                     //string str = this.n表示スコア.Drums.ToString("0000000000");
466                     //for (int i = 0; i < 10; i++)
467                     //{
468                     //    Rectangle rectangle;
469                     //    char ch = str[i];
470                     //    if (ch.Equals(' '))
471                     //    {
472                     //        rectangle = new Rectangle(0, 0, 32, 36);
473                     //    }
474                     //    else
475                     //    {
476                     //        int num3 = int.Parse(str.Substring(i, 1));
477                     //        rectangle = new Rectangle((num3 * 36), 0, 36, 50);
478                     //    }
479                     //    if (this.txScore != null)
480                     //    {
481                     //        SlimDX.Matrix matScoreXG = SlimDX.Matrix.Identity;
482                     //        matScoreXG *= SlimDX.Matrix.Translation(-1370 + (i * 30), 50 + CDTXMania.stage演奏ドラム画面GITADORA.actScore.x位置[i].Drums, 0);
483                     //        matScoreXG *= SlimDX.Matrix.Scaling(0.3f, 0.62f, 1f);
484                     //        matScoreXG *= SlimDX.Matrix.RotationY(-0.8f);
485                     //        this.txScore.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
486                     //    }
487                     //}
488                 }
489                 else if( CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
490                 {
491                     // 2019.1.12 kairera0467
492                     // とりあえずXGスコア計算時のみ表示
493                     if( this.txScore != null )
494                     {
495                         string str = string.Format("{0,7:######0}", this.n表示スコア.Drums);
496                         for( int i = 0; i < 7; i++ )
497                         {
498                             Rectangle rectangle;
499                             char ch = str[i];
500                             if (ch.Equals(' '))
501                             {
502                                 rectangle = new Rectangle(0, 0, 0, 0);
503                             }
504                             else
505                             {
506                                 int num3 = int.Parse(str.Substring(i, 1));
507                                 rectangle = new Rectangle((num3 * 36), 0, 36, 50);
508                             }
509                             Matrix matScoreXG = Matrix.Identity;
510                             matScoreXG *= Matrix.Scaling(0.6f, 1.1f, 1f);
511                             matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
512                             matScoreXG *= Matrix.Translation(-522 + (i * 14), 237 + CDTXMania.stage演奏ドラム画面GITADORA.actScore.x位置[i].Drums, i * 14);
513                             this.txScore.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
514                         }
515                         Matrix matScoreTxt = Matrix.Identity;
516                         matScoreTxt *= Matrix.Scaling(0.6f, 1.5f, 1f);
517                         matScoreTxt *= Matrix.RotationY(C変換.DegreeToRadian(-40));
518                         matScoreTxt *= Matrix.Translation(-494f, 282f, 0);
519                         this.txScore.t3D描画(CDTXMania.app.Device, matScoreTxt, new Rectangle( 0, 50, 88, 28 ));
520                     }
521                 }
522                 #endregion
523             }
524             return 0;
525
526         }
527
528
529         // その他
530
531         #region [ private ]
532         //-----------------
533         private Bitmap b4font;
534         private Bitmap bNamePlate;
535         private Image iAlbum;
536         private Image iDifficulty;
537         private Image iDifficultyNumber;
538         private Image iDrumspeed;
539         private Image iNamePlate;
540         private Image iPart;
541         private Image iRisky;
542         private int nCurrentDrumspeed;
543         private string strGroupName;
544         private string strPlayerName;
545         private CTexture txNamePlate;
546         private CTexture txScore;
547         private CTexture txスキルパネル;
548         private CPrivateFastFont pfSongArtistFont;
549         private CPrivateFastFont pfSongTitleFont;
550         private CPrivateFastFont pfPlayerNameFont;
551         private CPrivateFastFont pfGroupNameFont;
552
553         private CTexture txSongNamePlate;
554         private CTexture txSongTitle;
555         private CTexture txArtistName;
556         private CTexture txJacket;
557         private CTexture txPlayerName;
558         private CTexture txTitleName;
559         private CTexture tx判定数数字;
560         private CTexture tx達成率数字_整数;
561
562 #if DEBUG
563         private float fX;
564         private float fY;
565         private float fZ;
566         private int rot;
567         private float fScaleX;
568         private float fScaleY;
569         private float fOffsetX;
570         private float fOffsetY;
571         private float fOffsetZ;
572 #endif
573         //-----------------
574         private CTexture t指定された文字テクスチャを生成する( string str文字 )
575         {
576             Bitmap bmp;
577             bmp = this.pfSongTitleFont.DrawPrivateFont( str文字, CPrivateFont.DrawMode.Edge, Color.Black, Color.White, Color.White, Color.White );
578             CTexture tx文字テクスチャ = CDTXMania.tテクスチャの生成( bmp, false );
579             bmp.Dispose();
580
581             return tx文字テクスチャ;
582         }
583         private CTexture t指定された文字テクスチャを生成する_小( string str文字 )
584         {
585             Bitmap bmp;
586             bmp = this.pfSongArtistFont.DrawPrivateFont( str文字, CPrivateFont.DrawMode.Edge, Color.Black, Color.White, Color.White, Color.White );
587             CTexture tx文字テクスチャ = CDTXMania.tテクスチャの生成( bmp, false );
588             bmp.Dispose();
589
590             return tx文字テクスチャ;
591         }
592
593         private void t判定数文字描画( float x, float y, int value )
594         {
595             string str = string.Format("{0,4:###0}", value );
596             for( int i = 0; i < 4; i++ )
597             {
598                 Rectangle rectangle;
599                 char ch = str[i];
600                 if (ch.Equals(' '))
601                 {
602                     rectangle = new Rectangle(0, 0, 0, 0);
603                 }
604                 else
605                 {
606                     int num3 = int.Parse(str.Substring(i, 1));
607                     rectangle = new Rectangle((num3 * 20), 0, 20, 26);
608                 }
609                 Matrix matScoreXG = Matrix.Identity;
610                 matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f);
611                 matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
612                 matScoreXG *= Matrix.Translation( x + (i * 6), y, i * 6);
613                 this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
614             }
615         }
616
617         private void t判定率文字描画( float x, float y, string str )
618         {
619             for( int i = 0; i < 4; i++ )
620             {
621                 Rectangle rectangle;
622                 char ch = str[i];
623                 if (ch.Equals(' '))
624                 {
625                     rectangle = new Rectangle(0, 0, 0, 0);
626                 }
627                 else if( ch.Equals('%') )
628                 {
629                     rectangle = new Rectangle( 200, 0, 20, 26 );
630                 }
631                 else
632                 {
633                     int num3 = int.Parse(str.Substring(i, 1));
634                     rectangle = new Rectangle((num3 * 20), 0, 20, 26);
635                 }
636                 Matrix matScoreXG = Matrix.Identity;
637                 matScoreXG *= Matrix.Scaling(0.45f, 0.8f, 1f);
638                 matScoreXG *= Matrix.RotationY(C変換.DegreeToRadian(-40));
639                 matScoreXG *= Matrix.Translation( x + (i * 6), y, 28 + i * 6);
640                 this.tx判定数数字.t3D描画(CDTXMania.app.Device, matScoreXG, rectangle);
641             }
642         }
643         #endregion
644     }
645 }