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