OSDN Git Service

#36043 rev.920 で手違いが起きたため、一度 rev.919 に戻し、ファイルを再修正。Ech定義の使用を CChip のプロパティを使うよう一部変更。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / 全体 / C文字コンソール.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Drawing;\r
5 using FDK;\r
6 \r
7 namespace DTXMania\r
8 {\r
9         internal class C文字コンソール : CActivity\r
10         {\r
11                 // 定数\r
12 \r
13                 public enum Eフォント種別\r
14                 {\r
15                         白,\r
16                         赤,\r
17                         灰,\r
18                         白細,\r
19                         赤細,\r
20                         灰細\r
21                 }\r
22                 public enum E配置\r
23                 {\r
24                         左詰,\r
25                         中央,\r
26                         右詰\r
27                 }\r
28 \r
29 \r
30                 // メソッド\r
31 \r
32                 public void tPrint( int x, int y, Eフォント種別 font, string str英数字文字列 )\r
33                 {\r
34                         if( !base.b活性化してない && !string.IsNullOrEmpty( str英数字文字列 ) )\r
35                         {\r
36                                 int BOL = x;\r
37                                 for( int i = 0; i < str英数字文字列.Length; i++ )\r
38                                 {\r
39                                         char ch = str英数字文字列[ i ];\r
40                                         if( ch == '\n' )\r
41                                         {\r
42                                                 x = BOL;\r
43                                                 y += nFontHeight;\r
44                                         }\r
45                                         else\r
46                                         {\r
47                                                 int index = str表記可能文字.IndexOf( ch );\r
48                                                 if( index < 0 )\r
49                                                 {\r
50                                                         x += nFontWidth;\r
51                                                 }\r
52                                                 else\r
53                                                 {\r
54                                                         if( this.txフォント8x16[ (int) ( (int) font / (int) Eフォント種別.白細 ) ] != null )\r
55                                                         {\r
56                                                                 this.txフォント8x16[ (int) ( (int) font / (int) Eフォント種別.白細 ) ].t2D描画( CDTXMania.Instance.Device, x, y, this.rc文字の矩形領域[ (int) ( (int) font % (int) Eフォント種別.白細 ), index ] );\r
57                                                         }\r
58                                                         x += nFontWidth;\r
59                                                 }\r
60                                         }\r
61                                 }\r
62                         }\r
63                 }\r
64 \r
65 \r
66                 // CActivity 実装\r
67 \r
68                 public override void On活性化()\r
69                 {\r
70                         this.rc文字の矩形領域 = new Rectangle[3, str表記可能文字.Length ];\r
71                         for( int i = 0; i < 3; i++ )\r
72                         {\r
73                                 for (int j = 0; j < str表記可能文字.Length; j++)\r
74                                 {\r
75                                         const int regionX = 128 * 2, regionY = 16;\r
76                                         this.rc文字の矩形領域[ i, j ].X = ( ( i / 2 ) * regionX ) + ( ( j % regionY ) * nFontWidth );\r
77                                         this.rc文字の矩形領域[ i, j ].Y = ( ( i % 2 ) * regionX ) + ( ( j / regionY ) * nFontHeight );\r
78                                         this.rc文字の矩形領域[ i, j ].Width = nFontWidth;\r
79                                         this.rc文字の矩形領域[ i, j ].Height = nFontHeight;\r
80                                 }\r
81                         }\r
82                         base.On活性化();\r
83                 }\r
84                 public override void On非活性化()\r
85                 {\r
86                         if( this.rc文字の矩形領域 != null )\r
87                                 this.rc文字の矩形領域 = null;\r
88 \r
89                         base.On非活性化();\r
90                 }\r
91                 public override void OnManagedリソースの作成()\r
92                 {\r
93                         if( !base.b活性化してない )\r
94                         {\r
95                                 this.txフォント8x16[ 0 ] = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\Console font 8x16.png" ) );\r
96                                 this.txフォント8x16[ 1 ] = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\Console font 2 8x16.png" ) );\r
97                                 base.OnManagedリソースの作成();\r
98                         }\r
99                 }\r
100                 public override void OnManagedリソースの解放()\r
101                 {\r
102                         if( !base.b活性化してない )\r
103                         {\r
104                                 for( int i = 0; i < 2; i++ )\r
105                                 {\r
106                                         if( this.txフォント8x16[ i ] != null )\r
107                                         {\r
108                                                 this.txフォント8x16[ i ].Dispose();\r
109                                                 this.txフォント8x16[ i ] = null;\r
110                                         }\r
111                                 }\r
112                                 base.OnManagedリソースの解放();\r
113                         }\r
114                 }\r
115 \r
116 \r
117                 // その他\r
118 \r
119                 #region [ private ]\r
120                 //-----------------\r
121                 private Rectangle[,] rc文字の矩形領域;\r
122                 private const string str表記可能文字 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ";\r
123                 private const int nFontWidth = 8 * 2, nFontHeight = 16 * 2;\r
124                 private CTexture[] txフォント8x16 = new CTexture[ 2 ];\r
125                 //-----------------\r
126                 #endregion\r
127         }\r
128 }\r