Example #1
0
        public void MoveDownElements(ElementsMoveDownArgs args)
        {
            _movingColumnsCount = 0;
            _currentMovedColums = 0;
            foreach (KeyValuePair <int, ColumnMoveInfo> moveInfoPair in args.columnsMoveInfos)
            {
                List <SegmentInfoInView> segmentInfos = new List <SegmentInfoInView>();
                foreach (SegmentMoveInfo segment in  moveInfoPair.Value.oldElements)
                {
                    SegmentInfoInView info = new SegmentInfoInView();
                    info.elements     = GetOldElements(segment.elementsToMove);
                    info.moveDistance = segment.MoveDistance;
                    CalculateMoveProperties(segment.MoveDistance, info);
                    segmentInfos.Add(info);
                }

                SpawnHiddenElements(moveInfoPair.Value.newElements.elements, out List <MovingElement> hiddenElements);
                SegmentInfoInView newElementsSegment = new SegmentInfoInView();
                newElementsSegment.elements     = hiddenElements;
                newElementsSegment.moveDistance = moveInfoPair.Value.newElements.MoveDistance;
                CalculateMoveProperties(moveInfoPair.Value.newElements.MoveDistance, newElementsSegment);
                segmentInfos.Add(newElementsSegment);
                StartCoroutine(MoveDownColumn(segmentInfos));
                _movingColumnsCount++;
            }
        }
Example #2
0
        public void ShiftElements()
        {
            Dictionary <int, List <ElementMoveInfo> > oldElements = FillEmptyCells();
            var columnMoveInfos = oldElements.ToDictionary(key => key.Key, value =>
                                                           new ColumnMoveInfo(value.Value.GroupBy(s => s.moveDistance)
                                                                              .Select(g => new SegmentMoveInfo(g.Key, g.Select(el => el.coordinate).ToList())).ToList()));

            AddNewElements(columnMoveInfos);
            ElementsMoveDownArgs args = new ElementsMoveDownArgs();

            args.columnsMoveInfos = columnMoveInfos;
            ElementsMovedDown?.Invoke(args);
        }