예제 #1
0
        protected void removeActionAtIndex(Node target, TargetActionData data, int index)
        {
            if (data == null || data.salvaged)
            {
                // invalid
                //return;
#if false  // 这里不能从待添加队里搜寻,index指向的为原data位置
                if (!_delayToAdd.TryGetValue(target, out data))
                {
                    //return;
                }
                else
                {
                    if (data.removeActionAtIndex(index))
                    {
                        _delayToAdd.Remove(target);
                    }
                    else
                    {
                        //return;
                    }
                }
#endif
            }
            else
            {
                // valid
                if (data.removeActionAtIndex(index))
                {
                    if (_delayLock)
                    {
                        data.salvaged = true;
                        _delayToRemove.Add(target);
                    }
                    else
                    {
                        _targets.Remove(target);
                    }
                }
                else
                {
                    //return;
                }
            }
        }
예제 #2
0
        public void addAction(Node target, Action action, bool pause = false)
        {
            action.startWithTarget(target);
            TargetActionData data;

            if (!_targets.TryGetValue(target, out data) || data.salvaged)
            {
                // not found target or target salvaged. invalid
                if (_delayLock)
                {
                    if (!_delayToAdd.TryGetValue(target, out data))
                    {
                        data = new TargetActionData(pause);
                        _delayToAdd.Add(target, data);
                    }
                }
                else
                {
                    // not exists and not locked
                    Debug.Assert(data == null || !data.salvaged, "target exists and salvaged, must be locked");
                    data = new TargetActionData(pause);
                    _targets.Add(target, data);
                }
            }
            else
            {
                /*
                 *              // exists and not salvaged. valid
                 *              if (_delayLock) {
                 *                      if (!_delayToAdd.TryGetValue (target, out data)) {
                 *                              data = new TargetActionData (pause);
                 *                              _delayToAdd.Add (target, data);
                 *                      }
                 *              } else {
                 *                      // valid and not locked
                 *              }
                 */
            }
            data.addAction(action);
        }