Beispiel #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);
    }
Beispiel #2
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);
    }
    private static void SetLongKeywordNatural(Card card, string str)
    {
        string[] longKeywordStrings = str.Split(';', ';');
        var      map = BIFStaticTool.GetEnumNameAndDescriptionSaved <ProxyEnum>();

        foreach (var longKeywordString in longKeywordStrings)
        {
            string[] settings = longKeywordString.Split(':', ':');
            if (settings.Length != 2)
            {
                continue;
            }
            CardProxyDelegate action = GetStaticDelegate(settings[1]);
            if (action == null)
            {
                Debug.LogWarning("[未找到委托函数]" + settings[1]);
                continue;
            }

            bool isFind = false;
            foreach (var item in map)
            {
                if (item.Value.Key.Equals(settings[0]))
                {
                    var desc = GetProxyDescription(action);
                    card.AddProxyOri(item.Key, action, desc.Item5, true);

                    isFind = true;
                    break;
                }
            }
            if (!isFind)
            {
                Debug.LogWarning("[未找到长关键字]" + card.name + settings[0] + action);
            }
        }
    }
Beispiel #4
0
 public ProxyEffect(ProxyEnum proxyEnum, CardProxyDelegate cardProxyDelegate)
 {
     this.proxyEnum         = proxyEnum;
     this.cardProxyDelegate = cardProxyDelegate;
 }