コード例 #1
0
 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;
     });
 }
コード例 #2
0
        public void lostItem(IDroppableItem item)
        {
            T inventoryComponent = item.holdingObject.GetComponent <T>();

            if (inventoryComponent != null)
            {
                removeItem(inventoryComponent.GetInstanceID());
                lostItem();
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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);
                };
            }
        }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
        //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);
                };
            }
        }
コード例 #8
0
        //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);
                };
            }
        }
コード例 #9
0
        //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);
                };
            }
        }
コード例 #10
0
 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);
 }
コード例 #11
0
 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));
 }
コード例 #12
0
 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));
 }
コード例 #13
0
 private void InternalDrop(IDroppableItem obj)
 {
     Drop();
 }
コード例 #14
0
 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);
 }
コード例 #15
0
 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));
 }
コード例 #16
0