Ejemplo n.º 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);
            }
        }
Ejemplo n.º 2
0
 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));
     }
 }
Ejemplo n.º 3
0
 public void Unassign(CardAssignment card)
 {
     using (this.actorEditor.StartUndo($"Remove card {card.GetCard().GetTitle()}"))
     {
         AssignedBehavior editor = card.GetAssignedBehavior();
         editor.RemoveSelfFromActor();
     }
 }
Ejemplo n.º 4
0
        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);
    }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
        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();
            }
        }
Ejemplo n.º 9
0
 public CardAssignment(AssignedBehavior use, Unassigner unassigner)
 {
     this.unassigner = unassigner;
     this.use        = use;
 }