public override void MoveToSlot(IDroppableItem drop) { drop.holdingObject.transform.MoveTo(transform.position, animationLength, easing, false, Tween.TweenRepeat.Once, () => { drop.holdingObject.transform.SetParent(transform, true); drop.blocked = false; }); }
public void lostItem(IDroppableItem item) { T inventoryComponent = item.holdingObject.GetComponent <T>(); if (inventoryComponent != null) { removeItem(inventoryComponent.GetInstanceID()); lostItem(); } }
private void Init(float sec, OnTimeUpVoid funcVoid, OnTimeUp func, object obj, IDroppableItem timerDropper, bool onceCall, bool realtimeTimer, int engineLoop) { if (funcVoid != null) { onTimeUpVoidEvent = funcVoid; } if (func != null) { onTimeUpEvent = func; } _once = onceCall; _realtime = realtimeTimer; _firedObj = obj; _engineLoop = engineLoop; if (Mathf.Approximately(sec, 0)) { Call(); if (_once) { onTimeUpEvent = null; onTimeUpVoidEvent = null; return; } } _timeStep = sec; _work = true; if (timerDropper != null) { _dropper = timerDropper; _dropper.onDrop += InternalDrop; } Sync.Add(() => _timers[_engineLoop].Add(this), _engineLoop); }
public override void Drop() { if (dropped) { return; } if (_dropper != null) { _dropper.onDrop -= InternalDrop; } _dropper = null; Pause(); onTimeUpEvent = null; onTimeUpVoidEvent = null; Sync.Add(() => _timers[_engineLoop].Remove(this), _engineLoop); base.Drop(); }
public static void Attach(string category, Action <object> method, IDroppableItem detacher) { List <Action <object> > list; if (items.TryGetValue(category, out list)) { list.Add(method); } else { items.Add(category, new List <Action <object> > { method }); } if (detacher != null) { detacher.onDrop += obj => { Detach(category, method); }; } }
public void gainedItem(IDroppableItem item, IItemDropTarget slotTarget) { //See wheter the item has our Component. Accept if it does otherwise return it to it's old Position T inventoryComponent = item.holdingObject.GetComponent <T>(); if (inventoryComponent != null) { //check if this item is a new Item or already registered in the inventory and just changed Slots if (!itemExists(inventoryComponent.GetInstanceID())) { if (item.previousParent != null) { ExecuteEvents.ExecuteHierarchy <IlostItem>(item.previousParent, null, (x, y) => { x.lostItem(item); }); } registerItem(inventoryComponent); addedNewItem(inventoryComponent); } slotTarget.MoveToSlot(item); } else { item.returnToPrevious(); } }
//game objects public static void AddGameObjectHandler(GameObject go, HandlerDelegate handler, IDroppableItem detacher, int type = MouseEventHandlerType.Click0) { List <HandlerDelegate> list; if (_goHandlers[type].TryGetValue(go, out list)) { list.Add(handler); } else { _goHandlers[type].Add(go, new List <HandlerDelegate> { handler }); } ModifyMask(type, go.layer, true); if (detacher != null) { detacher.onDrop += obj => { RemoveGameObjectHandler(go, handler, type); }; } }
//tags public static void AddTagHandler(string tag, GameObjectHandlerDelegate handler, IDroppableItem detacher, int type = MouseEventHandlerType.Click0) { List <GameObjectHandlerDelegate> list; if (_tagHandlers[type].TryGetValue(tag, out list)) { list.Add(handler); } else { _tagHandlers[type].Add(tag, new List <GameObjectHandlerDelegate> { handler }); } //все выше стандартных for (int i = 8; i < 32; i++) { ModifyMask(type, i, true, true); } //update masks ModifyMask(type, -1, true); if (detacher != null) { detacher.onDrop += obj => { RemoveTagHandler(tag, handler, type); }; } }
//layers public static void AddLayerHandler(int layer, GameObjectHandlerDelegate handler, IDroppableItem detacher, int type = MouseEventHandlerType.Click0) { List <GameObjectHandlerDelegate> list; if (_layerHandlers[type].TryGetValue(layer, out list)) { list.Add(handler); } else { _layerHandlers[type].Add(layer, new List <GameObjectHandlerDelegate> { handler }); } ModifyMask(type, layer, true); if (detacher != null) { detacher.onDrop += obj => { RemoveLayerHandler(layer, handler, type); }; } }
private Timer(float sec, OnTimeUpVoid func, IDroppableItem dropper, bool once = false, bool realtime = false, int?engineLoop = null) { Init(sec, func, null, null, dropper, once, realtime, engineLoop ?? Loops.TIMER); }
public static Timer CreateRealtime(float sec, OnTimeUpVoid func, IDroppableItem dropper, bool once = false, int?engineLoop = null) { return(new Timer(sec, func, dropper, once, true, engineLoop)); }
public static Timer Create(float sec, OnTimeUp func, object obj, IDroppableItem dropper, bool once = false, int?engineLoop = null) { return(new Timer(sec, func, obj, dropper, once, false, engineLoop)); }
private void InternalDrop(IDroppableItem obj) { Drop(); }
private Timer(float sec, OnTimeUp func, object obj, IDroppableItem dropper, bool once = false, bool realtime = false, int engineLoop = -1) { Init(sec, null, func, obj, dropper, once, realtime, engineLoop == -1 ? Loops.TIMER : engineLoop); }
public static Timer Create(float sec, OnTimeUpVoid func, IDroppableItem dropper, bool once = false, int engineLoop = -1) { return(new Timer(sec, func, dropper, once, false, engineLoop)); }