OSDN Git Service

#36043 CDTXMania 内の app 以外の static メンバをインスタンスメンバにし、appを介してアクセスするように変更。CChipのメンバの多くをpr...
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CAct演奏スコア共通.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using FDK;\r
5 \r
6 namespace DTXMania\r
7 {\r
8         internal class CAct演奏スコア共通 : CActivity\r
9         {\r
10                 // プロパティ\r
11 \r
12                 protected STDGBVALUE<long> nスコアの増分;\r
13                 protected STDGBVALUE<double> n現在の本当のスコア;\r
14                 protected STDGBVALUE<long> n現在表示中のスコア;\r
15                 protected long n進行用タイマ;\r
16                 protected CTexture txScore;\r
17 \r
18                 \r
19                 // コンストラクタ\r
20 \r
21                 public CAct演奏スコア共通()\r
22                 {\r
23                         base.b活性化してない = true;\r
24                 }\r
25 \r
26 \r
27                 // メソッド\r
28 \r
29                 public double Get( E楽器パート part )\r
30                 {\r
31                         return this.n現在の本当のスコア[ (int) part ];\r
32                 }\r
33                 public void Set( E楽器パート part, double nScore )\r
34                 {\r
35                         int nPart = (int) part;\r
36                         if( this.n現在の本当のスコア[ nPart ] != nScore )\r
37                         {\r
38                                 this.n現在の本当のスコア[ nPart ] = nScore;\r
39                                 this.nスコアの増分[ nPart ] = (long) ( ( (double) ( this.n現在の本当のスコア[ nPart ] - this.n現在表示中のスコア[ nPart ] ) ) / 20.0 );\r
40                                 if( this.nスコアの増分[ nPart ] < 1L )\r
41                                 {\r
42                                         this.nスコアの増分[ nPart ] = 1L;\r
43                                 }\r
44                         }\r
45                 }\r
46                 /// <summary>\r
47                 /// 点数を加える(各種AUTO補正つき)\r
48                 /// </summary>\r
49                 /// <param name="part"></param>\r
50                 /// <param name="bAutoPlay"></param>\r
51                 /// <param name="delta"></param>\r
52                 public void Add( E楽器パート part, STAUTOPLAY bAutoPlay, long delta )\r
53                 {\r
54                         double rev = 1.0;\r
55                         switch ( part )\r
56                         {\r
57                                 #region [ Unknown ]\r
58                                 case E楽器パート.UNKNOWN:\r
59                                         throw new ArgumentException();\r
60                                 #endregion\r
61                                 #region [ Drums ]\r
62                                 case E楽器パート.DRUMS:\r
63                                         if ( !CDTXMania.app.ConfigIni.bドラムが全部オートプレイである )\r
64                                         {\r
65                                                 #region [ Auto BD ]\r
66                                                 if ( bAutoPlay.BD == true )\r
67                                                 {\r
68                                                         rev /= 2;\r
69                                                 }\r
70                                                 #endregion\r
71                                         }\r
72                                         break;\r
73                                 #endregion\r
74                                 #region [ Gutiar ]\r
75                                 case E楽器パート.GUITAR:\r
76                                         if ( !CDTXMania.app.ConfigIni.bギターが全部オートプレイである )\r
77                                         {\r
78                                                 #region [ Auto Wailing ]\r
79                                                 if ( bAutoPlay.GtW )\r
80                                                 {\r
81                                                         rev /= 2;\r
82                                                 }\r
83                                                 #endregion\r
84                                                 #region [ Auto Pick ]\r
85                                                 if ( bAutoPlay.GtPick )\r
86                                                 {\r
87                                                         rev /= 3;\r
88                                                 }\r
89                                                 #endregion\r
90                                                 #region [ Auto Neck ]\r
91                                                 if ( bAutoPlay.GtR || bAutoPlay.GtG || bAutoPlay.GtB )\r
92                                                 {\r
93                                                         rev /= 4;\r
94                                                 }\r
95                                                 #endregion\r
96                                         }\r
97                                         break;\r
98                                 #endregion\r
99                                 #region [ Bass ]\r
100                                 case E楽器パート.BASS:\r
101                                         if ( !CDTXMania.app.ConfigIni.bベースが全部オートプレイである )\r
102                                         {\r
103                                                 #region [ Auto Wailing ]\r
104                                                 if ( bAutoPlay.BsW )\r
105                                                 {\r
106                                                         rev /= 2;\r
107                                                 }\r
108                                                 #endregion\r
109                                                 #region [ Auto Pick ]\r
110                                                 if ( bAutoPlay.BsPick )\r
111                                                 {\r
112                                                         rev /= 3;\r
113                                                 }\r
114                                                 #endregion\r
115                                                 #region [ Auto Neck ]\r
116                                                 if ( bAutoPlay.BsR || bAutoPlay.BsG || bAutoPlay.BsB )\r
117                                                 {\r
118                                                         rev /= 4;\r
119                                                 }\r
120                                                 #endregion\r
121                                         }\r
122                                         break;\r
123                                 #endregion\r
124                         }\r
125                         this.Set( part, this.Get( part ) + delta * rev );\r
126                 }\r
127 \r
128 \r
129                 // CActivity 実装\r
130 \r
131                 public override void On活性化()\r
132                 {\r
133                         this.n進行用タイマ = -1;\r
134                         for( int i = 0; i < 3; i++ )\r
135                         {\r
136                                 this.n現在表示中のスコア[ i ] = 0L;\r
137                                 this.n現在の本当のスコア[ i ] = 0L;\r
138                                 this.nスコアの増分[ i ] = 0L;\r
139                         }\r
140                         base.On活性化();\r
141                 }\r
142                 public override void OnManagedリソースの作成()\r
143                 {\r
144                         if( !base.b活性化してない )\r
145                         {\r
146                                 this.txScore = TextureFactory.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay score numbers.png" ) );\r
147                                 base.OnManagedリソースの作成();\r
148                         }\r
149                 }\r
150                 public override void OnManagedリソースの解放()\r
151                 {\r
152                         if( !base.b活性化してない )\r
153                         {\r
154                                 TextureFactory.tテクスチャの解放( ref this.txScore );\r
155                                 base.OnManagedリソースの解放();\r
156                         }\r
157                 }\r
158         }\r
159 }\r