/// <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); }
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); }
/// <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; } } }
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)); } } }
/// <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)); } } }