示例#1
0
    // void RefreshAddBehaviorButton()
    // {
    //   addBehaviorButtonTransform.SetAsLastSibling();
    // }

    public Card ReplaceCard(ICardAssignmentModel assignment, CardContainer container)
    {
        int index = model.GetIndexOf(container.GetCard().GetCardAssignment());

        cardManager.UnassignCard(container.GetCard().GetCardAssignment());
        return(AcceptAssignedCard(assignment, index));
    }
示例#2
0
    internal void DeleteCardsMatching(ICardAssignmentModel assignedModel)
    {
        List <CardContainer> toRemove = new List <CardContainer>(
            from container in containers
            where container.GetCard().GetCardAssignment() == assignedModel
            select container);

        toRemove.ForEach(container => RemoveCardContainer(container));
    }
示例#3
0
    public Card AcceptAssignedCard(ICardAssignmentModel assignedCard, int index = -1)
    {
        Debug.Assert(assignedCard != null, "AcceptAssignedCard called with null assignment");
        ICardModel unassignedCard = assignedCard.GetCard();

        // We need to unassign it. But make sure we keep the property assignments.
        PropEditor[] props = assignedCard.GetProperties();
        cardManager.UnassignCard(assignedCard);
        return(AcceptCard(unassignedCard, index, props));
    }
示例#4
0
    private Card AddCardFromModel(ICardAssignmentModel assignment)
    {
        Card card = Instantiate(cardPrefab);

        card.Populate(assignment);
        card.AddListener((eventCard, eventType, eventData) =>
        {
            switch (eventType)
            {
            case Card.EventType.POINTER_DOWN:
                cardManager.OnPointerDownCard(eventCard);
                break;

            case Card.EventType.POINTER_UP:
                cardManager.OnPointerUpCard(eventCard);
                break;

            case Card.EventType.BEGIN_DRAG:
                cardManager.BeginDrag();
                break;

            default:
                break;
            }
        });

        card.OnClick = () => onCardClicked?.Invoke(card);

        // Create container for the card
        CardContainer newContainer = Instantiate(cardContainerPrefab, transform).GetComponentInChildren <CardContainer>();
        int           index        = this.model.GetIndexOf(card.GetCardAssignment());

        newContainer.rectTransform.transform.SetSiblingIndex(index);
        newContainer.SetSize(CardManager.BASE_CARD_SIZE);
        newContainer.scaleOnFocus = false;
        newContainer.deck         = this;

        newContainer.onPointerDown  += () => cardManager.OnPointerDownCard(newContainer.GetCard());
        newContainer.onPointerUp    += (dragging) => cardManager.OnPointerUpCard(newContainer.GetCard());
        newContainer.onPointerEnter += () => cardManager.OnPointerEnterContainer(newContainer);
        newContainer.onBeginDrag    += cardManager.BeginDrag;

        containers.Add(newContainer);
        newContainer.SetCard(card);
        newContainer.TriggerAddEffect();
        ResortCards();

        return(card);
    }
示例#5
0
    internal void UnassignCard(ICardAssignmentModel assignedModel)
    {
        if (!assignedModel.IsValid())
        {
            return;
        }
        //I think this was redundant
        // if (focusCard != null && focusCard.GetAssignedCard() == assignedModel)
        // {
        //   focusCard.RequestDestroy();
        // }

        foreach (var slot in cardSlots)
        {
            slot.DeleteCardsMatching(assignedModel);
        }

        assignedModel.Unassign();
    }
示例#6
0
    public void Populate(ICardAssignmentModel assignment, bool withDetail = false)
    {
        if (assignment == null || !assignment.IsValid())
        {
            return;
        }

        this.Populate(assignment.GetCard());
        this.assignment = assignment;

        if (withDetail)
        {
            props.Setup(assignment.GetAssignedBehavior().GetProperties());
            props.onValueChanged += (fd) =>
            {
                onPropChanged?.Invoke(fd);
                MaybeUpdateRuntimeCardStatus(force: true);
            };
        }
    }
示例#7
0
    public virtual void Populate(ICardModel card, bool withDetail = false)
    {
        if (card == null || !card.IsValid())
        {
            return;
        }

        // Debug
        this.name = $"Card '{card.GetTitle()}'";

        this.card                    = card;
        this.assignment              = null;
        cardUI.nameField.text        = card.GetTitle();
        cardUI.descriptionField.text = card.GetDescription();
        if (withDetail)
        {
            props.SetupPreview(card.GetUnassignedBehaviorItem());
        }
        customFlag.SetActive(!card.IsBuiltin());
        ReloadCardImage();
    }
示例#8
0
    /*
     *
     * //TODO: THIS DOES NOT WORK
     * IEnumerator HideRoutine()
     * {
     * float timer = 0;
     * while (timer < HIDE_ANIMATION_DURATION)
     * {
     * timer += Time.unscaledDeltaTime;
     * float percent = Mathf.Clamp01(timer / HIDE_ANIMATION_DURATION);
     * canvasGroup.alpha = 1 - percent;
     * yield return null;
     * }
     *
     * gameObject.SetActive(false);
     * }
     */
    public void Populate(ICardAssignmentModel assignedCard, CardContainer container)
    {
        if (assignedCard == null || !assignedCard.IsValid())
        {
            return;
        }

        this.cardContainer = container;
        card.Populate(assignedCard, true);
        if (assignedCard.GetCard().IsBuiltin())
        {
            codeText.SetText("Duplicate and edit javascript");
            previewButton.gameObject.SetActive(true);
        }
        else
        {
            codeText.SetText("Edit javascript");
            previewButton.gameObject.SetActive(false);
        }
        trashButton.gameObject.SetActive(true);
        noPropertiesObject.SetActive(!card.HasAnyProps());
        UpdateAddToSlotButton();
    }
示例#9
0
 public int GetIndexOf(ICardAssignmentModel assignedModel)
 {
     return(0);
 }
示例#10
0
 public Card ReplaceCard(ICardAssignmentModel assignedCard)
 {
     return(deck.ReplaceCard(assignedCard, this));
 }
示例#11
0
        public int GetIndexOf(ICardAssignmentModel assignedModel)
        {
            List <string> deckUseIds = new List <string>((string[])deckEditor.data);

            return(deckUseIds.IndexOf(assignedModel.GetId()));
        }
示例#12
0
 public void OpenCardDetail(ICardAssignmentModel assignedModel, CardContainer container, float openDuration)
 {
     cardDetail.Open(openDuration);
     cardDetail.Populate(assignedModel, container);
     pointerState = PointerState.Detail;
 }