/// <summary> /// 获取目标委托,用于判定是否存在该委托 /// 不要直接invoke获取到的委托!(这样不会自动为gameEvent.thisEffect赋值) /// </summary> /// <param name="proxyEnum"></param> /// <returns></returns> public CardProxyDelegate GetProxys(ProxyEnum proxyEnum) { CardProxyDelegate @delegate = null; @delegate += proxys.GetByDefault(proxyEnum); foreach (var effect in effects) { if (effect is ProxyEffect proxyEffect && proxyEffect.proxyEnum == proxyEnum) { @delegate += proxyEffect.cardProxyDelegate; } } foreach (var effect in effectsStay) { if (effect is ProxyEffect proxyEffect && proxyEffect.proxyEnum == proxyEnum) { @delegate += proxyEffect.cardProxyDelegate; } } foreach (var effect in effectsOri) { if (effect is ProxyEffect proxyEffect && proxyEffect.proxyEnum == proxyEnum) { @delegate += proxyEffect.cardProxyDelegate; } } return(@delegate); }
public ProxyEffects GetProxysByEffect(ProxyEnum proxyEnum) { ProxyEffects proxysEffects = new ProxyEffects(); foreach (var effect in effects) { if (effect is ProxyEffect proxyEffect && proxyEffect.proxyEnum == proxyEnum) { proxysEffects.Add(proxyEffect); } } foreach (var effect in effectsStay) { if (effect is ProxyEffect proxyEffect && proxyEffect.proxyEnum == proxyEnum) { proxysEffects.Add(proxyEffect); } } foreach (var effect in effectsOri) { if (effect is ProxyEffect proxyEffect && proxyEffect.proxyEnum == proxyEnum) { proxysEffects.Add(proxyEffect); } } if (proxysEffects.Count == 0) { return(null); } return(proxysEffects); }
/// <summary> /// dont use /// </summary> /// <param name="proxyEnum"></param> /// <param name="cardProxyDelegate"></param> public ProxyEffect AddProxyOri(ProxyEnum proxyEnum, CardProxyDelegate cardProxyDelegate, int setCounter = 0, bool makeGroup = false) { ProxyEffect effect = new ProxyEffect(proxyEnum, cardProxyDelegate) { Counter = setCounter }; if (makeGroup && effectsOri.Count > 0) { effect.groupAs = effectsOri.Map <Effect, ProxyEffect>().GetOne(); } effectsOri.Add(effect); return(effect); }
public bool InvokeProxy(ProxyEnum proxyEnum, GameEvent gameEvent) { var proxys = GetProxysByEffect(proxyEnum); if (proxys == null) { return(false); } bool answer = false; foreach (var proxy in proxys) { answer = proxy.Invoke(gameEvent); } return(answer); }
public ProxyEffect(ProxyEnum proxyEnum, CardProxyDelegate cardProxyDelegate) { this.proxyEnum = proxyEnum; this.cardProxyDelegate = cardProxyDelegate; }