Esempio n. 1
0
        /// <summary>
        /// タイプからカラーパターン生成
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        private static IEnumerator <ColorType> GenerateColorPattern(ColorOrderType order)
        {
            if (order == ColorOrderType.RBYG)
            {
                while (true)
                {
                    yield return(ColorType.Red);

                    yield return(ColorType.Blue);

                    yield return(ColorType.Yellow);

                    yield return(ColorType.Green);
                }
            }
            else
            {
                while (true)
                {
                    yield return(ColorType.Red);

                    yield return(ColorType.Blue);

                    yield return(ColorType.Green);

                    yield return(ColorType.Yellow);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// プリセットを指定してせり上げのこうげきだまパターンを生成
        /// </summary>
        /// <param name="line"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        public void SetupLiftingPreset(LiftingColorLineType line, ColorOrderType order, int columns)
        {
            switch (line)
            {
            case LiftingColorLineType.None:
                liftAttackTamaPattern = null;
                break;

            case LiftingColorLineType.Horizontal:
            {
                var datas = GenerateDropOrderFlatLeftStart(columns, 4, 0);
                GenerateColorPatternHorizontal(datas, order, columns, 4, 0);
                liftAttackTamaPattern = datas;
            }
            break;

            case LiftingColorLineType.Vertical:
            {
                var datas = GenerateDropOrderFlatLeftStart(columns, 1, 0);
                GenerateColorPatternVertical(datas, order, columns, 1, 0);
                liftAttackTamaPattern = datas;
            }
            break;

            case LiftingColorLineType.VerticalHorizontalAlternately:
            {
                var datas = GenerateDropOrderFlatLeftStart(columns, 24, 0);
                GenerateColorPatternVerticalHorizontalAlternatelyLifting(datas, order, columns, 24, 0);
                liftAttackTamaPattern = datas;
            }
            break;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// プリセットを指定してこうげきだまパターンを生成
        /// </summary>
        /// <param name="preset"></param>
        /// <param name="line"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public void SetupDropPreset(DropOrderPresetType preset, ColorLineType line, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var datas = GenerateDropOrder(preset, columns, rows, patternRows);

            GenerateColorPattern(datas, line, order, columns, rows, patternRows);
            dropAttackTamaPattern = datas;
        }
Esempio n. 4
0
        /// <summary>
        /// ななめパターンを生成
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternDiagonal(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var pattern = GenerateColorPattern(order, rows + columns);

            for (int i = 0; i < datas.Length; ++i)
            {
                var data = datas[i];
                data.Color = pattern[data.Position.y + (columns - data.Position.x - 1)];
            }
        }
Esempio n. 5
0
        /// <summary>
        /// L字パターン
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternLCharacter(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var pattern = GenerateColorPattern(order, columns);

            for (int i = 0; i < datas.Length; ++i)
            {
                var data  = datas[i];
                int index = System.Math.Min(data.Position.x, data.Position.y);
                data.Color = pattern[index];
            }
        }
Esempio n. 6
0
        private static ColorType[] GenerateColorPattern(ColorOrderType order, int columns)
        {
            ColorType[] pattern   = new ColorType[columns];
            var         generator = GenerateColorPattern(order);

            for (int i = 0; i < columns; ++i)
            {
                generator.MoveNext();
                pattern[i] = generator.Current;
            }
            return(pattern);
        }
Esempio n. 7
0
        /// <summary>
        /// 山型パターンを生成
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternMountain(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var col     = columns / 2;
            var pattern = GenerateColorPattern(order, rows + col);

            for (int i = 0; i < datas.Length; ++i)
            {
                var data   = datas[i];
                int offset = data.Position.x;
                if (offset >= col)
                {
                    offset = columns - 1 - offset;
                }
                offset     = col - offset - 1;
                data.Color = pattern[data.Position.y + offset];
            }
        }
Esempio n. 8
0
        /// <summary>
        /// ひし形落下パターン
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternParallelogram(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var pattern = GenerateColorPattern(order, columns);

            for (int i = 0; i < datas.Length; ++i)
            {
                var data = datas[i];
                int y    = data.Position.y % columns;
                int x    = columns - 1 - data.Position.x;
                if (x < y)
                {
                    y -= columns;
                    while (y < 0)
                    {
                        y += 4;
                    }
                }
                data.Color = pattern[y];
            }
        }
Esempio n. 9
0
        /// <summary>
        /// 逆L字パターン
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternReverseLCharacter(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var pattern = GenerateColorPattern(order, columns);

            for (int i = 0; i < datas.Length; ++i)
            {
                var data  = datas[i];
                int y     = (patternRows - 1 - data.Position.y);
                var index = y;
                while (index < 0)
                {
                    index += 4;
                }
                index     %= 4;
                index      = (data.Position.x < y) ? data.Position.x : index;
                data.Color = pattern[index];
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 縦横交互パターン
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternVerticalHorizontalAlternately(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            int col = columns / 2;

            // パターン部分をcol の倍数に補正
            patternRows = patternRows / col * col;
            // パターン部分縦
            ColorType[] vPattern = GenerateColorPattern(new ColorType[] { ColorType.Green, ColorType.Yellow, ColorType.Blue, ColorType.Red }, columns);
            // パターン部分横
            ColorType[] hPattern = GenerateColorPattern(new ColorType[] { ColorType.Red, ColorType.Green, ColorType.Yellow, ColorType.Blue }, patternRows);
            // パターン部分より上
            ColorType[] oPattern = GenerateColorPattern(new ColorType[] { ColorType.Blue, ColorType.Red, ColorType.Green, ColorType.Yellow }, rows - patternRows);
            int         count    = columns * patternRows;
            int         index    = 0;

            while (index < count)
            {
                var data = datas[index];
                // 縦横の奇数ブロックかどうか
                bool vOdd = ((data.Position.y / 3) & 1) != 0;
                bool hOdd = ((data.Position.x / 3) & 1) != 0;
                // 横パターンブロックかどうか
                bool hor = vOdd ^ hOdd;
                if (hor)
                {
                    data.Color = hPattern[data.Position.y];
                }
                else
                {
                    data.Color = vPattern[data.Position.x];
                }
                ++index;
            }
            // パターン部分より上
            while (index < datas.Length)
            {
                var data = datas[index];
                data.Color = oPattern[data.Position.y - patternRows];
                ++index;
            }
        }
Esempio n. 11
0
        /// <summary>
        /// 座標が設定されているデータに色を設定
        /// </summary>
        /// <param name="datas">座標が設定されているデータ配列</param>
        /// <param name="preset">落下順序プリセット</param>
        /// <param name="line">配色パターン</param>
        /// <param name="order">色の順序</param>
        /// <param name="columns">列数</param>
        /// <param name="rows">行数</param>
        /// <param name="patternRows">パターンの行数</param>
        public static void GenerateColorPattern(AttackTamaData[] datas, ColorLineType line, ColorOrderType order, int columns, int rows, int patternRows)
        {
            System.Action <AttackTamaData[], ColorOrderType, int, int, int> generator;
            switch (line)
            {
            case ColorLineType.Vertical:
                generator = GenerateColorPatternVertical;
                break;

            case ColorLineType.Horizontal:
                generator = GenerateColorPatternHorizontal;
                break;

            case ColorLineType.Diagonal:
                generator = GenerateColorPatternDiagonal;
                break;

            case ColorLineType.Mountain:
                generator = GenerateColorPatternMountain;
                break;

            case ColorLineType.ParallelogramDrop:
                generator = GenerateColorPatternParallelogram;
                break;

            case ColorLineType.VerticalHorizontalAlternately:
                generator = GenerateColorPatternVerticalHorizontalAlternately;
                break;

            case ColorLineType.LCharacter:
                generator = GenerateColorPatternLCharacter;
                break;

            case ColorLineType.ReverseLCharacter:
                generator = GenerateColorPatternReverseLCharacter;
                break;

            default:
                generator = (d, l, c, r, p) => { for (int i = 0; i < d.Length; ++i)
                                                 {
                                                     d[i].Color = ColorType.Yellow;
                                                 }
                };
                break;
            }
            generator(datas, order, columns, rows, patternRows);
        }
Esempio n. 12
0
        /// <summary>
        /// 縦横交互のせり上げ
        /// </summary>
        /// <param name="datas"></param>
        /// <param name="order"></param>
        /// <param name="columns"></param>
        /// <param name="rows"></param>
        /// <param name="patternRows"></param>
        public static void GenerateColorPatternVerticalHorizontalAlternatelyLifting(AttackTamaData[] datas, ColorOrderType order, int columns, int rows, int patternRows)
        {
            var pattern = GenerateColorPattern(order, columns);

            for (int i = 0; i < datas.Length; ++i)
            {
                var  data  = datas[i];
                var  index = data.Position.y / 3;
                bool odd   = (index & 1) != 0;
                if (odd)
                {
                    int r = 3 * (data.Position.y / 6) + (data.Position.y % 6) - 3;
                    r         %= 4;
                    data.Color = pattern[r];
                }
                else
                {
                    data.Color = pattern[data.Position.x];
                }
            }
        }