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 ICardAssignmentModel OnAssignCard(ICardModel card, int index = -1) { Debug.Assert(card != null, "Given card was null"); Debug.Assert(this.actorBehaviorsEditor != null, "Null actorBehaviorsEditor?"); using (this.actorBehaviorsEditor.StartUndo($"Add {this.GetCardCategory()} card {card.GetTitle()}")) { UnassignedBehavior behaviorEditor = ((UnassignedCard)card).GetUnassignedBehaviorItem(); AssignedBehavior assigned = this.actorBehaviorsEditor.AddBehavior(behaviorEditor); List <string> deckUseIds = new List <string>((string[])deckEditor.data); if (index >= 0) { if (index > deckUseIds.Count) { throw new System.Exception("OnAssignCard: Index greater than deckUseIds count!"); } deckUseIds.Insert(index, assigned.useId); } else { deckUseIds.Add(assigned.useId); } deckEditor.SetData(deckUseIds.ToArray()); return(new CardAssignment(assigned, this)); } }
public void Unassign(CardAssignment card) { using (this.actorEditor.StartUndo($"Remove card {card.GetCard().GetTitle()}")) { AssignedBehavior editor = card.GetAssignedBehavior(); editor.RemoveSelfFromActor(); } }
public AssignedPanel(AssignedBehavior behavior, BehaviorCards.ManagerImpl manager) : base(behavior.GetUnassigned()) { this.behavior = behavior; this.manager = manager; AssertInvariants(); }
public void SetProperties(AssignedBehavior assigned, Behaviors.PropertyAssignment[] properties) { var use = GetUse(assigned.useId); Debug.Assert(use.id == assigned.useId); Debug.Assert(use.behaviorUri == assigned.GetBehaviorUri()); use.propertyAssignments = properties; PutUse(use); }
public void RemoveBehavior(AssignedBehavior behavior) { OnBeforeAnyChange(); var brain = GetBrain(); brain.DeleteUse(behavior.useId); // Important for triggering "onCardRemoved" in behaviors. GetBehaviorSystem().NotifyCardRemoved(GetBrainId(), behavior.useId); GetBehaviorSystem().PutBrain(GetBrainId(), brain); }
public PropEditor(PropDef propOptions, Behaviors.PropertyAssignment?assignment, AssignedBehavior assigned) { this.propDef = propOptions; if (assignment != null) { this.__data = PropUtil.GetPropertyValue(assignment.Value, this.propType); } else { this.__data = PropUtil.ParsePropertyInitialValueOrDefault(this.propType, propOptions.defaultValueString); } this.assigned = assigned; }
public void Unassign(CardAssignment card) { using (this.actorBehaviorsEditor.StartUndo($"Remove card {card.GetCard().GetTitle()}")) { AssignedBehavior cardUse = card.GetAssignedBehavior(); // Remove use ID from deck property. List <string> deckUseIds = new List <string>((string[])deckEditor.data); bool didExist = deckUseIds.Remove(cardUse.useId); if (!didExist) { Util.LogError($"Programmer error? The removed card did not actually exist in our deck.."); } deckEditor.SetData(deckUseIds.ToArray()); // Remove from actor brain cardUse.RemoveSelfFromActor(); } }
public CardAssignment(AssignedBehavior use, Unassigner unassigner) { this.unassigner = unassigner; this.use = use; }