Esempio n. 1
0
        /// <summary>
        /// 获取特定的Effect实例
        /// </summary>
        /// <returns>The implement.</returns>
        /// <param name="op">Op.</param>
        public ICastEffect getImplement(EffectConfigData cfg, SkillConfigData sk)
        {
            Queue <ICastEffect> impQueue = null;
            ICastEffect         imp      = null;
            EffectOp            op       = cfg.EffectType;

            Type type = null;

            if (ISkEff.TryGetValue(op, out type))
            {
                if (ImpleEff.TryGetValue(op, out impQueue))
                {
                    if (impQueue.Count == 0)
                    {
                        imp = (ICastEffect)Activator.CreateInstance(type);
                    }
                    else
                    {
                        imp = impQueue.Dequeue();
                    }
                }
                else
                {
                    imp = (ICastEffect)Activator.CreateInstance(type);
                }

                if (imp != null)
                {
                    imp.Init(cfg, sk);
                }
            }

            return(imp);
        }
Esempio n. 2
0
        public static ISkImp getSkImp(EffectOp op)
        {
            ISkImp be = null;

            switch (op)
            {
            case EffectOp.Injury:
                be = new SkDamage_1();
                break;

            case EffectOp.MoveTarget:
                be = new SkMoveTarget_5();
                break;

            case EffectOp.MoveToChild:
                be = new SkMoveToChild_6();
                break;

            case EffectOp.CtorNPC:
                be = new SkCrtNpc_8();
                break;

            case EffectOp.Bullet_NPC:
                be = new SkBulletNpc_16();
                break;

            default:
                be = new EmptySkImp();
                break;
            }
            return(be);
        }
Esempio n. 3
0
        /// <summary>
        /// 回收Effect实例
        /// </summary>
        /// <param name="cfg">Cfg.</param>
        /// <param name="casteff">Casteff.</param>
        public void Recycle(EffectConfigData cfg, ICastEffect casteff)
        {
            if (casteff != null && cfg != null)
            {
                EffectOp            op       = cfg.EffectType;
                Queue <ICastEffect> impQueue = null;

                if (ImpleEff.TryGetValue(op, out impQueue))
                {
                    impQueue.Enqueue(casteff);
                }
                else
                {
                    impQueue = new Queue <ICastEffect>();
                    impQueue.Enqueue(casteff);
                    ImpleEff[op] = impQueue;
                }
            }
        }
Esempio n. 4
0
        public T getImplement <T>(EffectOp op)
        {
            Object imp  = null;
            Type   type = null;

            if (ImpleOp.TryGetValue(op, out imp))
            {
                return((T)imp);
            }
            else
            {
                if (IOpType.TryGetValue(op, out type))
                {
                    imp         = Activator.CreateInstance(type, true);
                    ImpleOp[op] = imp;
                    return((T)imp);
                }
                else
                {
                    ConsoleEx.DebugLog("[OperatorMgr] Op = " + op.ToString() + ". isn't finished yet.");
                    return(default(T));
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 返回处理器的实例
        /// </summary>
        /// <returns>The implement.</returns>
        /// <param name="op">Op.</param>
        public T getImplement <T>(EffectOp op)
        {
            ISufferEffect imp  = null;
            Type          type = null;

            if (ImpleSuf.TryGetValue(op, out imp))
            {
                return((T)imp);
            }
            else
            {
                if (ISufEff.TryGetValue(op, out type))
                {
                    imp          = (ISufferEffect)Activator.CreateInstance(type);
                    ImpleSuf[op] = imp;
                    return((T)imp);
                }
                else
                {
                    ConsoleEx.DebugLog("[SufferMgr] Op = " + op.ToString() + ". isn't finished yet.");
                    return(default(T));
                }
            }
        }