Пример #1
0
    public void RegisterID(IHaveAnID needsID)
    {
        if (needsID.Written || !needsID.CanSelfAssign)
        {
            return;
        }

        ActiveSlot newActive = null;

        if (Application.isEditor)
        {
            if (needsID == null)
            {
                Debug.LogError("ERROR: TRYING TO REGISTER ID OF NULL ITEM!");
                return;
            }
        }

        if (inactiveQueue.Count == 0)
        {
            newActive = new ActiveSlot();
            allActive.Add(newActive);
            newActive.listID = allActive.Count - 1;
        }
        else
        {
            newActive = inactiveQueue.Dequeue();

            if (Application.isEditor)
            {
                if (newActive.IDowner != null)
                {
                    Debug.LogError("ERROR: ENTITY ID " + newActive.listID + " IS ALREADY IN USE BY " + allActive[newActive.listID].IDowner.name);
                    return;
                }
            }
        }

        newActive.IDowner = needsID;

        AssignIDs(needsID, newActive.listID, -1);

        SetWritten(needsID, true);
    }
Пример #2
0
    void OnItemSlotClick(int slotIdx, UIItemSlot slotInstance, bool isEquipped)
    {
        if (activeSlot == null)
        {
            activeSlot = new ActiveSlot(slotIdx, slotInstance, isEquipped);

            slotInstance.SetSelected(true);
        }
        else
        {
            // ask character to update their inventory state
            if (CurrentCharacter.SwapItems(activeSlot.SlotIndex, activeSlot.IsEquipped, slotIdx, isEquipped))
            {
                UpdateSlot(activeSlot.SlotIndex, activeSlot.IsEquipped);
                UpdateSlot(slotIdx, isEquipped);
            }

            activeSlot.SlotInstance.SetSelected(false);
            activeSlot = null;
        }
    }
Пример #3
0
    public T ForceCreateEntity <T>(T template, int tempID, long uniqueID) where T : Object, IHaveAnID
    {
        ActiveSlot newActive = null;

        while (tempID >= allActive.Count)
        {
            newActive = new ActiveSlot();
            allActive.Add(newActive);
            newActive.listID = allActive.Count - 1;
        }

        newActive = allActive[tempID];

        if (Application.isEditor)
        {
            if (newActive.IDowner != null)
            {
                Debug.LogError("ERROR: TRYING TO FORCE ID " + tempID + " WHEN " + allActive[tempID].IDowner.name + " ALREADY EXISTS THERE!");
                return(null);
            }
        }

        AssignIDs(template, tempID, uniqueID);

        DenySelfAssignment(template);
        T newEntity = GetEntity(template);

        PermitSelfAssignment(template);

        RevokeIDs(template);

        newActive.IDowner = newEntity;
        newEntity.SetSlot(newActive);

        SetWritten(newEntity, true);
        return(newEntity);
    }
Пример #4
0
 protected override void OnExit()
 {
     activeSlot = null;
 }
Пример #5
0
 public void SetSlot(ActiveSlot aSlot)
 {
     mySlot = aSlot;
 }