예제 #1
0
 public void OnPlayerBuffRemove(SideEffectExecute see, PlayerBuffSideEffects buff) //buff剩余次数减少
 {
     foreach (SideEffectBase se in see.SideEffectBases)
     {
         ((BattlePlayer)se.Player).RemovePlayerBuff(see, buff);
     }
 }
예제 #2
0
 private static void addBuff(PlayerBuffSideEffects se)
 {
     if (!BuffDict.ContainsKey(se.Name))
     {
         BuffDict.Add(se.Name, se);
     }
 }
예제 #3
0
    public IEnumerator Co_UpdateValue(SideEffectExecute buffSee, PlayerBuffUpdateRequest.UpdateTypes updateType)
    {
        BuffDescText.text = Utils.TextMeshProColorStringConvertToText(((PlayerBuffSideEffects)buffSee.SideEffectBases[0]).GenerateDesc());
        PlayerBuffSideEffects buff = (PlayerBuffSideEffects)buffSee.SideEffectBases[0];
        int buffValue = GetBuffValue(buffSee, buff);

        if (buffValue >= 0)
        {
            if (updateType == PlayerBuffUpdateRequest.UpdateTypes.Trigger)
            {
                BuffAnim.SetTrigger("Jump");
                AudioManager.Instance.SoundPlay("sfx/OnBuffTrigger", 0.7f);
            }

            else if (updateType == PlayerBuffUpdateRequest.UpdateTypes.Refresh)
            {
                BuffAnim.SetTrigger("Rotate");
                AudioManager.Instance.SoundPlay("sfx/OnBuffTrigger", 0.7f);
            }
        }

        yield return(new WaitForSeconds(0.2f));

        BuffValueText.text = buffValue == 0 ? "" : buffValue.ToString();
        yield return(new WaitForSeconds(0.1f));

        yield return(null);
    }
예제 #4
0
    private static void PileBuff(SideEffectExecute see, SideEffectExecute newSee)
    {
        PlayerBuffSideEffects buff = (PlayerBuffSideEffects)newSee.SideEffectBases[0];

        if (buff.M_SideEffectParam.GetParam_Bool("CanPiled")) //可以堆叠
        {
            if ((PlayerBuffSideEffects.BuffPiledBy)buff.M_SideEffectParam.GetParam_ConstInt("PiledBy") == PlayerBuffSideEffects.BuffPiledBy.RemoveTriggerTimes)
            {
                see.M_ExecuteSetting.RemoveTriggerDelayTimes += newSee.M_ExecuteSetting.RemoveTriggerDelayTimes;
                see.M_ExecuteSetting.RemoveTriggerTimes      += newSee.M_ExecuteSetting.RemoveTriggerTimes;
            }
            else if ((PlayerBuffSideEffects.BuffPiledBy)buff.M_SideEffectParam.GetParam_ConstInt("PiledBy") == PlayerBuffSideEffects.BuffPiledBy.RemoveTriggerDelayTimes)
            {
                see.M_ExecuteSetting.RemoveTriggerDelayTimes += newSee.M_ExecuteSetting.RemoveTriggerDelayTimes;
            }
            else if ((PlayerBuffSideEffects.BuffPiledBy)buff.M_SideEffectParam.GetParam_ConstInt("PiledBy") == PlayerBuffSideEffects.BuffPiledBy.Value)
            {
                foreach (SideEffectBase ori_buff in see.SideEffectBases[0].Sub_SideEffect)
                {
                    foreach (SideEffectBase add_buff in buff.Sub_SideEffect)
                    {
                        if (ori_buff.GetType() == add_buff.GetType()) //同类buff同类值叠加,并将倍率重置为1
                        {
                            ori_buff.M_SideEffectParam.Plus(add_buff.M_SideEffectParam);
                        }
                    }
                }
            }
        }
    }
예제 #5
0
    private void CreateNewBuff(SideEffectExecute newSee, PlayerBuffSideEffects buff, Dictionary <int, SideEffectExecute> sees)
    {
        sees.Add(newSee.ID, newSee);
        GameManager.EventManager.RegisterEvent(newSee);
        PlayerBuffUpdateRequest request = new PlayerBuffUpdateRequest(ClientId, newSee.ID, PlayerBuffUpdateRequest.UpdateTypes.Add, newSee);

        BroadCastRequest(request);
    }
예제 #6
0
    public static void AddAllBuffs()
    {
        Reset();
        SortedDictionary <string, string> descKeyDict = new SortedDictionary <string, string>();

        foreach (int v in Enum.GetValues(typeof(LanguageShorts)))
        {
            string strName = Enum.GetName(typeof(LanguageShorts), v);
            descKeyDict[strName] = "desc_" + strName;
        }

        string text;

        using (StreamReader sr = new StreamReader(BuffsXMLFile))
        {
            text = sr.ReadToEnd();
        }

        XmlDocument doc = new XmlDocument();

        doc.LoadXml(text);
        XmlElement node_AllBuffs = doc.DocumentElement;

        for (int i = 0; i < node_AllBuffs.ChildNodes.Count; i++)
        {
            XmlNode node_Buff = node_AllBuffs.ChildNodes.Item(i);

            string name = node_Buff.Attributes["name"].Value;
            PlayerBuffSideEffects se = (PlayerBuffSideEffects)CurrentAssembly.CreateInstance("SideEffects." + name);
            if (se == null)
            {
                Utils.DebugLog("Buffs: " + name + " does not exist");
                continue;
            }

            se.Name     = node_Buff.Attributes["name"].Value;
            se.DescRaws = new SortedDictionary <string, string>();
            foreach (KeyValuePair <string, string> kv in descKeyDict)
            {
                se.DescRaws[kv.Key] = node_Buff.Attributes[kv.Value].Value;
            }

            addBuff(se);
        }

        foreach (KeyValuePair <string, SideEffectBase> kv in AllSideEffects.SideEffectsNameDict)
        {
            if (kv.Value is AddPlayerBuff_Base addPlayerBuffBase)
            {
                addPlayerBuffBase.BuffName = "DoSthWhenTrigger_RemoveBySomeTime";
            }
        }
    }
예제 #7
0
 public void PlayerBuffTrigger(int seeID, PlayerBuffSideEffects buff)
 {
     if (SideEffectBundles_Player.ContainsKey(buff.Name))
     {
         Dictionary <int, SideEffectExecute> sees = SideEffectBundles_Player[buff.Name];
         if (sees.ContainsKey(seeID))
         {
             SideEffectExecute       see     = sees[seeID];
             PlayerBuffUpdateRequest request = new PlayerBuffUpdateRequest(ClientId, seeID, PlayerBuffUpdateRequest.UpdateTypes.Trigger, see);
             BroadCastRequest(request);
         }
     }
 }
예제 #8
0
    public void Init(SideEffectExecute buffSee, int buffId)
    {
        Cur_Buff = ((PlayerBuffSideEffects)buffSee.SideEffectBases[0]);
        int buffValue = GetBuffValue(buffSee, Cur_Buff);

        BuffValueText.text = buffValue == 0 ? "" : buffValue.ToString();
        BuffId             = buffId;
        ClientUtils.ChangeImagePicture(Image, Cur_Buff.M_SideEffectParam.GetParam_ConstInt("BuffPicId"));
        Color buffColor = ClientUtils.HTMLColorToColor(AllBuffs.GetBuff((Cur_Buff.Name)).M_SideEffectParam.GetParam_String("BuffColor"));

        BuffBloom.color        = buffColor;
        BuffDescText.color     = buffColor;
        BuffValuePanel.enabled = Cur_Buff.M_SideEffectParam.GetParam_Bool("HasNumberShow");
        BuffValueText.enabled  = Cur_Buff.M_SideEffectParam.GetParam_Bool("HasNumberShow");
        BuffAnim.SetTrigger("Add");
        BuffDescText.text = Utils.TextMeshProColorStringConvertToText(Cur_Buff.GenerateDesc());
    }
예제 #9
0
 public void RemovePlayerBuff(SideEffectExecute newSee, PlayerBuffSideEffects buff)
 {
     if (SideEffectBundles_Player.ContainsKey(buff.Name))
     {
         Dictionary <int, SideEffectExecute> sees = SideEffectBundles_Player[buff.Name];
         if (sees.Count != 0)                                       //存在该buff
         {
             if (buff.M_SideEffectParam.GetParam_Bool("Singleton")) //buff是单例,全删
             {
                 ClearSEEByBuffName(buff.Name, sees);
             }
             else //buff不是单例,则对应到seeID上去
             {
                 if (sees.ContainsKey(newSee.ID))
                 {
                     SideEffectExecute see = sees[newSee.ID];
                     RemoveSEE(buff.Name, sees, see);
                 }
             }
         }
     }
 }
예제 #10
0
    private int GetBuffValue(SideEffectExecute buffSee, PlayerBuffSideEffects buff)
    {
        int buffValue = 0;

        if (buff.M_SideEffectParam.GetParam_Bool("CanPiled"))
        {
            switch ((PlayerBuffSideEffects.BuffPiledBy)buff.M_SideEffectParam.GetParam_ConstInt("PiledBy"))
            {
            case PlayerBuffSideEffects.BuffPiledBy.RemoveTriggerTimes:
            {
                buffValue = buffSee.M_ExecuteSetting.RemoveTriggerTimes;
                break;
            }

            case PlayerBuffSideEffects.BuffPiledBy.RemoveTriggerDelayTimes:
            {
                buffValue = buffSee.M_ExecuteSetting.RemoveTriggerDelayTimes;
                break;
            }

            case PlayerBuffSideEffects.BuffPiledBy.Value:
            {
                //TODO
                buffValue = 0;
//                    buffValue =  ((IEffectFactor) buff.Sub_SideEffect[0]).Values[0].Value;
                break;
            }
            }
        }
        else
        {
            buffValue = buffSee.M_ExecuteSetting.RemoveTriggerTimes;
        }

        return(buffValue);
    }