コード例 #1
0
        protected override void ExecuteTick()
        {
            if (_swappingStones.EntitiesCount < 2)
            {
                return;
            }

            var s1 = _swappingStones.Components1[0];
            var s2 = _swappingStones.Components1[1];

            if (s1 == null || s2 == null)
            {
                return;
            }

            var field = State.StoneField;

            if (!field.Swap(s1.position, s2.position))
            {
                return;
            }

            if (HasActiveCombo(field))
            {
                State.TickProcessed = true;
                _eventsReceiver.StoneMoved(new StoneMoveEvent(s1));
                _eventsReceiver.StoneMoved(new StoneMoveEvent(s2));
            }
            else
            {
                field.Swap(s1.position, s2.position);
            }
        }
コード例 #2
0
        protected override void ExecuteTick()
        {
            var field = State.StoneField;

            var(w, h) = field;

            for (int x = 0; x < w; ++x)
            {
                for (int y = 0; y < h; ++y)
                {
                    if (field[x, y] != null)
                    {
                        continue;
                    }

                    var pos   = new int2(x, y);
                    var above = FindStoneAbove(field, pos);
                    if (above == null)
                    {
                        break;
                    }

                    field.Swap(pos, above.position);

                    State.TickProcessed = true;
                    _eventsReceiver.StoneMoved(new StoneMoveEvent(above));
                }
            }
        }