Example #1
0
 public OjamaBall(OjamaBall ojamaBall)
     : base(
         ojamaBall.SpriteBatch, ojamaBall.Camera, ojamaBall.GameMain, ojamaBall.CurrentField)
 {
     Color  = ojamaBall.Color;
     IsHard = ojamaBall.IsHard;
 }
Example #2
0
            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;
            }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        /// <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);
        }