private void _setupActiveCustomersView(Transform parent) { viewFactory.CreateAsync <ActiveCustomersView>("ActiveCustomersView", (view) => { _activeCustomersView = (ActiveCustomersView)view; for (int i = 0; i < ActiveCustomerSet.kMaxActiveCustomers; ++i) { CustomerCardState state = _matchState.activeCustomerSet.GetCustomerByIndex(i); _setupCustomerView(i, state); } }, parent ); }
static public void SetupCustomerView( ActiveCustomersView customersView, int customerIndex, CustomerCardState cardState, Action <CustomerCardView> onCardDrop, Action <CustomerCardView> onPointerEnter, Action onPointerExit) { if (cardState == null) { Debug.LogWarning("Card State is null!"); customersView.RemoveCardByIndex(customerIndex); // TODO: Do this On card slam instead of after the fact return; } CustomerCardView view = customersView.GetCardByIndex(customerIndex); if (view == null) { view = (CustomerCardView)Singleton.instance.cardResourceBank.CreateCardView( cardState.cardData, customersView._activeSlotList[customerIndex]); } view.cardState = cardState; view.eventTrigger.triggers.Clear(); EventTrigger.Entry OnDrop = new EventTrigger.Entry(); OnDrop.eventID = EventTriggerType.Drop; OnDrop.callback.AddListener((e) => onCardDrop(view)); view.eventTrigger.triggers.Add(OnDrop); EventTrigger.Entry OnHoverBegin = new EventTrigger.Entry(); OnHoverBegin.eventID = EventTriggerType.PointerEnter; OnHoverBegin.callback.AddListener((e) => onPointerEnter(view)); view.eventTrigger.triggers.Add(OnHoverBegin); EventTrigger.Entry OnHoverEnd = new EventTrigger.Entry(); OnHoverEnd.eventID = EventTriggerType.PointerExit; OnHoverEnd.callback.AddListener((e) => onPointerExit()); view.eventTrigger.triggers.Add(OnHoverEnd); customersView.SetCardByIndex(customerIndex, view); }
public static void AnimateOtherPlayerMoves(List <MoveResult> moveList, GameMatchState state, ActiveCustomersView customersView, Transform parent, Action <Vector3> slamCallback, TweenCallback callback) { Assert.IsNotNull(moveList); //Assert.IsTrue(moveList.Count > 0); Sequence allPlayedCards = DOTween.Sequence(); //MoveResult[] moveResults = new MoveResult[PlayerGroup.kMaxPlayerCount]; int count = moveList.Count; for (int i = 0; i < count; ++i) { MoveRequest request = moveList[i].request; MoveResult result = moveList[i]; CustomerCardView customerView = customersView.GetCardByIndex(request.customerSlot); IngredientCardData cardData = state.GetCardById(result.usedIngredient) as IngredientCardData; if (cardData == null) { Debug.LogError("Card data is null! cant animate other player card"); continue; } IngredientCardView ingredientView = Singleton.instance.cardResourceBank.CreateCardView( cardData, parent) as IngredientCardView; ingredientView.transform.position = parent.transform.position; Vector3 delta = (Camera.main.transform.position - customerView.transform.position).normalized; Vector3 targetPos = customerView.transform.position + delta; Tween moveTo = ingredientView.transform.DOMove(targetPos, 0.75f); moveTo.SetEase(Ease.OutQuad); ViewFactory vf = Singleton.instance.gui.viewFactory; Tween zoomSlam = ZoomSlamTween(ingredientView, customerView, false, () => { vf.RemoveView(ingredientView); if (slamCallback != null) { slamCallback(ingredientView.transform.position); } }, null); Sequence cardTween = DOTween.Sequence(); cardTween.Append(moveTo); cardTween.Insert(moveTo.Duration(false) * 0.75f, zoomSlam); allPlayedCards.Insert(i * (cardTween.Duration() * 0.95f), cardTween); } allPlayedCards.OnComplete(callback); allPlayedCards.Play(); }