Example #1
0
        public CardPanel.IAssignedPanel Assign()
        {
            using (this.manager.GetActorEditor().StartUndo($"Add {this.GetTitle()} panel"))
            {
                AssignedBehavior behavior = manager.GetActorEditor().AddBehavior(item);
                Util.Log($"DO NOT REMOVE - added panel, use ID: {behavior.useId}");

                AssignedPanel panel = new AssignedPanel(behavior, manager);

                // Now setup default cards
                if (PlayerPrefs.GetInt(AddDefaultCardPref, 1) == 1)
                {
                    foreach (var slot in panel.GetDecks())
                    {
                        if (slot.GetNumAssignedCards() == 0)
                        {
                            foreach (ICardModel defaultCard in slot.GetDefaultCards())
                            {
                                slot.OnAssignCard(defaultCard);
                            }
                        }
                    }
                }

                return(panel);
            }
        }
Example #2
0
        public AssignedPanel DuplicatePanel(AssignedPanel origPanel)
        {
            using (this.actorEditor.StartUndo($"Duplicate '{origPanel.GetTitle()}' panel"))
            {
                AssignedPanel panelClone = new AssignedPanel(this.actorEditor.AddBehavior(origPanel.GetBehavior().GetUnassigned()), this);
                panelClone.SetUse(origPanel.GetUse(), null);
                var use = origPanel.GetUse();
                use.position += new Vector2(80, -80);
                panelClone.SetUse(use, null);

                // Copy properties...extra work needed for deck properties.
                foreach (PropEditor origProp in origPanel.GetBehavior().GetProperties())
                {
                    if (origProp.propType == PropType.CardDeck)
                    {
                        var origDeck  = origPanel.GetSlotByName(origProp.variableName);
                        var deckClone = panelClone.GetSlotByName(origProp.variableName);

                        // Make sure to insert in sorted order..even with the index option,
                        // that'll crash if out of order.
                        var origDeckCards = new List <ICardAssignmentModel>(origDeck.GetAssignedCards());
                        origDeckCards.Sort((a, b) => origDeck.GetIndexOf(a) - origDeck.GetIndexOf(b));
                        foreach (var origCard in origDeckCards)
                        {
                            var cardClone = deckClone.OnAssignCard(origCard.GetCard());
                            cardClone.SetProperties(origCard.GetProperties());
                        }
                    }
                    else
                    {
                        // Normal - just copy the value
                        panelClone.GetBehavior().SetProperty(origProp.variableName, origProp);
                    }
                }

                return(panelClone);
            }
        }