/// <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)); }
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); }
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); }
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); }
/// <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); }
/// <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)); }
///<summary>DongerCellUI. TextCellUI. </summary> public CellUI(ICellUI cellUI) { _cellUI = cellUI; }
/// <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)); }