Ejemplo n.º 1
0
    /// <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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    /// <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);
    }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
 public ProxyEffect(ProxyEnum proxyEnum, CardProxyDelegate cardProxyDelegate)
 {
     this.proxyEnum         = proxyEnum;
     this.cardProxyDelegate = cardProxyDelegate;
 }