/// <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)); }
/// <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)); }