Exemplo n.º 1
0
        /// <summary>
        /// Удаление матчей
        /// </summary>
        /// <param name="cell">Описание предмета в ячейке</param>
        /// <param name="present">Представление предмета на поле</param>
        public void ClearMatch(ICell <ItemDescription> cell, ICellUI present)
        {
            var obj = CreateAnimObject(present);

            var item = obj.GetComponent <IItemUI>();

            item.SetItem(cell.Item.Description);
            item.EnableStatus = true;

            obj.SetActive(true);

            present.SetItemVisibleStatus(false);
            present.ClearCell();

            var result = new Hashtable(2)
            {
                { "GameObject", obj },
                { "IItemUI", item },
                { "ICellUI", present }
            };

            _startedAnims++;

            iTween.ScaleTo(obj, iTween.Hash("scale", _clearMatchScale,
                                            "time", _clearMatchTime,
                                            "easetype", iTween.EaseType.easeInExpo,
                                            "looptype", iTween.LoopType.none,
                                            "oncomplete", nameof(CompleteClearMatch),
                                            "oncompletetarget", gameObject,
                                            "oncompleteparams", result));
        }
Exemplo n.º 2
0
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            ViewItem vi  = value as ViewItem;
            ICellUI  pre = parameter as ICellUI;

            if (vi != null && pre != null)
            {
                return(vi.GetCellUI(pre));
            }
            return(null);
        }
Exemplo n.º 3
0
        private Vector3 GetPosition(ICellUI present)
        {
            if (RectTransformUtility.ScreenPointToWorldPointInRectangle(present.GetRectTransform,
                                                                        RectTransformUtility.WorldToScreenPoint(Camera.main, present.GetRectTransform.position),
                                                                        Camera.main,
                                                                        out var pos))
            {
                return(pos);
            }

            return(Vector3.zero);
        }
Exemplo n.º 4
0
        private GameObject CreateAnimObject(ICellUI present)
        {
            var obj = _pool.GetObject();

            obj.transform.SetParent(transform, false);
            obj.transform.SetAsLastSibling();

            var objRectTransform = (obj.transform as RectTransform);

            objRectTransform.anchorMin = _anchor;
            objRectTransform.anchorMax = _anchor;
            objRectTransform.sizeDelta = present.GetRectTransform.sizeDelta;

            objRectTransform.position = GetPosition(present);

            return(obj);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Создаёт визуальное предстваление поля на основе игрового поля
        /// </summary>
        /// <param name="gameField"> Игровой поле, которое нужно визуализировать </param>
        /// <returns></returns>
        public ICellUI[,] CreateField(IField <ItemDescription> gameField)
        {
            if (_cashedField.Count > 0)
            {
                Clear();
            }

            _rows = gameField.Rows;

            _columns = gameField.Columns;

            var fieldCells = new ICellUI[_rows, _columns];

            var cells = gameField.GetAll();

            foreach (var cell in cells)
            {
                fieldCells[cell.RowPosition, cell.ColumnPosition] = AddCellToField(cell);
            }

            return(fieldCells);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Перемещение представления предмета в заданные координаты
        /// </summary>
        /// <param name="destinationCell">Ячейка с данными о предмете</param>
        /// <param name="presentFrom">Визуальная ячейка предмета на поле, откуда перемещается предмет</param>
        /// <param name="presentTo">Визуальная ячейка предмета на поле, кула перемещается предмет</param>
        public void MoveItem(ICell <ItemDescription> destinationCell, ICellUI presentFrom, ICellUI presentTo)
        {
            var obj = CreateAnimObject(presentFrom);

            var item = obj.GetComponent <IItemUI>();

            item.SetItem(destinationCell.Item.Description);
            item.EnableStatus = true;

            obj.SetActive(true);

            presentFrom.ClearCell();
            presentTo.SetItemToCell(destinationCell.Item);

            presentFrom.SetItemVisibleStatus(false);
            presentTo.SetItemVisibleStatus(false);

            var positionTo = GetPosition(presentTo);

            var result = new Hashtable(2)
            {
                { "GameObject", obj },
                { "IItemUI", item },
                { "ICellUITo", presentTo }
            };

            _startedAnims++;

            iTween.MoveTo(obj, iTween.Hash("position", transform.InverseTransformPoint(positionTo),
                                           "time", _moveItemTime,
                                           "islocal", true,
                                           "easetype", iTween.EaseType.easeInSine,
                                           "looptype", iTween.LoopType.none,
                                           "oncomplete", nameof(CompleteMoveItem),
                                           "oncompletetarget", gameObject,
                                           "oncompleteparams", result));
        }
Exemplo n.º 7
0
        ///<summary>DongerCellUI.  TextCellUI.  </summary>

        public CellUI(ICellUI cellUI)
        {
            _cellUI = cellUI;
        }
Exemplo n.º 8
0
        /// <summary>
        /// Обмен позициями фишек
        /// </summary>
        /// <param name="first">Предмет, помещенный в парвую ячейку</param>
        /// <param name="second">Предмет, помещенный во вторую</param>
        /// <param name="presentFirst">Представление предмета, которое нужно переместить из первой во вторую ячейкеу</param>
        /// <param name="presentSecond">Представление предмета, которое нужно переместить из второй в первую ячейкеу</param>
        public void Shuffle(ICell <ItemDescription> first, ICell <ItemDescription> second, ICellUI presentFirst, ICellUI presentSecond)
        {
            var objFirst  = CreateAnimObject(presentFirst);
            var objSecond = CreateAnimObject(presentSecond);

            var itemFirst  = objFirst.GetComponent <IItemUI>();
            var itemSecond = objSecond.GetComponent <IItemUI>();

            itemFirst.SetItem(second.Item.Description);
            itemSecond.SetItem(first.Item.Description);
            itemFirst.EnableStatus  = true;
            itemSecond.EnableStatus = true;

            presentFirst.SetItemToCell(first.Item);
            presentSecond.SetItemToCell(second.Item);

            presentFirst.SetItemVisibleStatus(false);
            presentSecond.SetItemVisibleStatus(false);

            objFirst.SetActive(true);
            objSecond.SetActive(true);

            var positionToFirst  = GetPosition(presentSecond);
            var positionToSecond = GetPosition(presentFirst);

            var result = new Hashtable(2)
            {
                { "GameObjectFirst", objFirst },
                { "GameObjectSecond", objSecond },
                { "IItemUIFirst", itemFirst },
                { "IItemUISecond", itemSecond },
                { "ICellUIToFirst", presentFirst },
                { "ICellUIToSecond", presentSecond }
            };

            iTween.MoveTo(objFirst, iTween.Hash("position", transform.InverseTransformPoint(positionToFirst),
                                                "time", _shuffleTime,
                                                "islocal", true,
                                                "easetype", iTween.EaseType.easeInOutCubic,
                                                "looptype", iTween.LoopType.none));

            iTween.MoveTo(objSecond, iTween.Hash("position", transform.InverseTransformPoint(positionToSecond),
                                                 "time", _shuffleTime,
                                                 "islocal", true,
                                                 "easetype", iTween.EaseType.easeInOutCubic,
                                                 "looptype", iTween.LoopType.none,
                                                 "oncomplete", nameof(CompleteShuffle),
                                                 "oncompletetarget", gameObject,
                                                 "oncompleteparams", result));
        }