public void OnPlayerBuffRemove(SideEffectExecute see, PlayerBuffSideEffects buff) //buff剩余次数减少 { foreach (SideEffectBase se in see.SideEffectBases) { ((BattlePlayer)se.Player).RemovePlayerBuff(see, buff); } }
private static void addBuff(PlayerBuffSideEffects se) { if (!BuffDict.ContainsKey(se.Name)) { BuffDict.Add(se.Name, se); } }
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); }
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); } } } } } }
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); }
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"; } } }
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); } } }
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()); }
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); } } } } }
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); }