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); }
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; } }
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); }
protected override void OnExit() { activeSlot = null; }
public void SetSlot(ActiveSlot aSlot) { mySlot = aSlot; }