public OjamaBall(OjamaBall ojamaBall) : base( ojamaBall.SpriteBatch, ojamaBall.Camera, ojamaBall.GameMain, ojamaBall.CurrentField) { Color = ojamaBall.Color; IsHard = ojamaBall.IsHard; }
public TurnCache(Field field) { _balls = new int[field.Column + 1, field.Row + 1]; _ojamaQueues = new List <OjamaBall> [field.Column + 1]; for (var x = 1; x <= field.Column; ++x) { var temp = field.GetOjamasInQueue(x); for (var i = 0; i < temp.Count; ++i) { temp[i] = new OjamaBall(temp[i]); } _ojamaQueues[x] = temp; for (var y = 1; y <= field.Row; ++y) { var ball = field.GetBall(x, y); if (ball is OjamaBall) { //_balls[x, y] = new OjamaBall(ball as OjamaBall); var ojama = ball as OjamaBall; _balls[x, y] = ojama.IsHard ? -2 : -1; } else { //_balls[x, y] = new Ball(ball); _balls[x, y] = field.GameConfig.GetColorId(ball.Color); } } } State = field.State; }
/// <summary> /// おじゃまを相手のフィールドに送る /// </summary> /// <param name="ojamas">送るおじゃまの量と種類</param> private void ThrowOjama(OjamaCalculator ojamas) { var n = ojamas.Calculate(); for (var i = 0; i < n; ++i) { var ojama = new OjamaBall(SpriteBatch, Camera, GameMain, this) { IsHard = ojamas.IsHard(), Size = BallSize }; OtherField.EnqueueOjama(ojama); } }
/// <summary> /// おじゃまをランダムな列のqueueに入れる。 /// </summary> /// <param name="ojama">おじゃま</param> protected virtual void EnqueueOjama(OjamaBall ojama) { var random = GameMain.FixedRandom; _ojamaQueues[random.Next(1, Column + 1)].Enqueue(ojama); }