public override void Assign(IAssignableIdentity new_assignee)
 {
     if (new_assignee != assignee)
     {
         if (base.slot != null && new_assignee is MinionIdentity)
         {
             new_assignee = (new_assignee as MinionIdentity).assignableProxy.Get();
         }
         if (base.slot != null && new_assignee is StoredMinionIdentity)
         {
             new_assignee = (new_assignee as StoredMinionIdentity).assignableProxy.Get();
         }
         if (new_assignee is MinionAssignablesProxy)
         {
             Ownables soleOwner          = new_assignee.GetSoleOwner();
             Ownables component          = soleOwner.GetComponent <Ownables>();
             AssignableSlotInstance slot = component.GetSlot(base.slot);
             if (slot != null)
             {
                 Assignable assignable = slot.assignable;
                 if ((Object)assignable != (Object)null)
                 {
                     assignable.Unassign();
                 }
             }
         }
         base.Assign(new_assignee);
     }
 }
Exemple #2
0
 public virtual void Unassign()
 {
     if (assignee != null)
     {
         GetComponent <KPrefabID>().RemoveTag(GameTags.Assigned);
         if (slot != null)
         {
             Ownables soleOwner = assignee.GetSoleOwner();
             if ((bool)soleOwner)
             {
                 soleOwner.GetSlot(slot)?.Unassign(true);
                 Equipment component = soleOwner.GetComponent <Equipment>();
                 if ((UnityEngine.Object)component != (UnityEngine.Object)null)
                 {
                     component.GetSlot(slot)?.Unassign(true);
                 }
             }
         }
         assignee = null;
         if (canBePublic)
         {
             Assign(Game.Instance.assignmentManager.assignment_groups["public"]);
         }
         assignee_identityRef.Set(null);
         assignee_groupID = string.Empty;
         if (this.OnAssign != null)
         {
             this.OnAssign(null);
         }
         Trigger(684616645, null);
     }
 }
Exemple #3
0
 private void RefreshChore(IAssignableIdentity target)
 {
     if (chore != null)
     {
         chore.Cancel("Equipment Reassigned");
         chore = null;
     }
     if (target != null)
     {
         Ownables  soleOwner = target.GetSoleOwner();
         Equipment component = soleOwner.GetComponent <Equipment>();
         if (!component.IsEquipped(equippable))
         {
             CreateChore();
         }
     }
 }
Exemple #4
0
    public bool IsAssignedTo(IAssignableIdentity identity)
    {
        Debug.Assert(identity != null, "IsAssignedTo identity is null");
        Ownables soleOwner = identity.GetSoleOwner();

        Debug.Assert((UnityEngine.Object)soleOwner != (UnityEngine.Object)null, "IsAssignedTo identity sole owner is null");
        if (assignee != null)
        {
            foreach (Ownables owner in assignee.GetOwners())
            {
                Debug.Assert(owner, "Assignable owners list contained null");
                if ((UnityEngine.Object)owner.gameObject == (UnityEngine.Object)soleOwner.gameObject)
                {
                    return(true);
                }
            }
        }
        return(false);
    }
Exemple #5
0
 public virtual void Assign(IAssignableIdentity new_assignee)
 {
     if (new_assignee != assignee)
     {
         if (new_assignee is KMonoBehaviour)
         {
             if (!CanAssignTo(new_assignee))
             {
                 return;
             }
             assignee_identityRef.Set((KMonoBehaviour)new_assignee);
             assignee_groupID = string.Empty;
         }
         else if (new_assignee is AssignmentGroup)
         {
             assignee_identityRef.Set(null);
             assignee_groupID = ((AssignmentGroup)new_assignee).id;
         }
         GetComponent <KPrefabID>().AddTag(GameTags.Assigned, false);
         assignee = new_assignee;
         if (slot != null && (new_assignee is MinionIdentity || new_assignee is StoredMinionIdentity || new_assignee is MinionAssignablesProxy))
         {
             Ownables soleOwner = new_assignee.GetSoleOwner();
             if ((UnityEngine.Object)soleOwner != (UnityEngine.Object)null)
             {
                 soleOwner.GetSlot(slot)?.Assign(this);
             }
             Equipment component = soleOwner.GetComponent <Equipment>();
             if ((UnityEngine.Object)component != (UnityEngine.Object)null)
             {
                 component.GetSlot(slot)?.Assign(this);
             }
         }
         if (this.OnAssign != null)
         {
             this.OnAssign(new_assignee);
         }
         Trigger(684616645, new_assignee);
     }
 }