2 using System.Collections.Generic;
9 internal class CAct演奏スコア共通 : CActivity
11 protected STDGBSValue<long> nスコアの増分;
12 protected STDGBSValue<double> n現在の本当のスコア;
13 protected STDGBSValue<long> n現在表示中のスコア;
14 protected long n進行用タイマ;
15 private readonly Point[] ptSCORE = new Point[] { new Point(0x1f, 0x1a9), new Point(0x1e9, 0x1a9) };
16 private CActDigit actDigit;
20 base.list子Activities.Add(actDigit = new CActDigit(Color.Orange, Color.Black, Color.OrangeRed, Color.DarkOrange, 30));
24 public double Get(EPart part)
26 return this.n現在の本当のスコア[part];
29 public void Set(EPart part, double nScore)
31 if (this.n現在の本当のスコア[part] != nScore)
33 this.n現在の本当のスコア[part] = nScore;
34 this.nスコアの増分[part] = (long)(((double)(this.n現在の本当のスコア[part] - this.n現在表示中のスコア[part])) / 20.0);
35 if (this.nスコアの増分[part] < 1L)
37 this.nスコアの増分[part] = 1L;
43 /// 点数を加える(各種AUTO補正つき)
45 /// <param name="part"></param>
46 /// <param name="bAutoPlay"></param>
47 /// <param name="delta"></param>
48 public void Add(EPart part, long delta)
54 throw new ArgumentException();
56 if (!CDTXMania.Instance.ConfigIni.bIsAutoPlay(part))
58 if (CDTXMania.Instance.ConfigIni.bAutoPlay.BD == true)
65 if (!CDTXMania.Instance.ConfigIni.bIsAutoPlay(part))
67 if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail)
71 if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick)
76 if (CDTXMania.Instance.ConfigIni.bAutoPlay.GtR || CDTXMania.Instance.ConfigIni.bAutoPlay.GtG || CDTXMania.Instance.ConfigIni.bAutoPlay.GtB)
83 if (!CDTXMania.Instance.ConfigIni.bIsAutoPlay(part))
85 if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail)
89 if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick)
93 if (CDTXMania.Instance.ConfigIni.bAutoPlay.BsR ||
94 CDTXMania.Instance.ConfigIni.bAutoPlay.BsG ||
95 CDTXMania.Instance.ConfigIni.bAutoPlay.BsB)
102 this.Set(part, this.Get(part) + delta * rev);
106 public override void On活性化()
111 for (EPart i = EPart.Drums; i <= EPart.Bass; i++)
113 this.n現在表示中のスコア[i] = 0L;
114 this.n現在の本当のスコア[i] = 0L;
115 this.nスコアの増分[i] = 0L;
121 // CActivity 実装(共通クラスからの差分のみ)
122 public override int On進行描画()
128 n進行用タイマ = FDK.CSound管理.rc演奏用タイマ.n現在時刻;
132 for (EPart inst = EPart.Drums; inst <= EPart.Bass; inst++)
134 if (CDTXMania.Instance.ConfigIni.b楽器有効(inst) && CDTXMania.Instance.DTX.bチップがある[inst])
136 long num = FDK.CSound管理.rc演奏用タイマ.n現在時刻;
141 while ((num - n進行用タイマ) >= 10)
143 this.n現在表示中のスコア[inst] += this.nスコアの増分[inst];
145 if (this.n現在表示中のスコア[inst] > (long)this.n現在の本当のスコア[inst])
146 this.n現在表示中のスコア[inst] = (long)this.n現在の本当のスコア[inst];
151 int x = CDTXMania.Instance.ConfigIni.cdInstX[inst][CDTXMania.Instance.ConfigIni.eActiveInst].Value
152 + CDTXMania.Instance.Coordinates.Instrument[inst].W / 2;
153 int y = CDTXMania.Instance.Coordinates.Score[inst].Y;
155 if (CDTXMania.Instance.ConfigIni.bReverse[inst])
157 y = SampleFramework.GameWindowSize.Height - y - actDigit.MaximumHeight;
159 int w = actDigit.Measure(this.n現在表示中のスコア[inst]);
161 actDigit.Draw(this.n現在表示中のスコア[inst], x - w / 2, y);