/// <summary> /// 设置属性 /// </summary> /// <param name="data"></param> public void SetAttributes(SkillInfoBean data) { CptUtil.RemoveChildsByActive(objAttributeContainer); CreateItemAttributes("hourglass_1", TextHandler.Instance.manager.GetTextById(510) + " " + data.GetUseNumber()); if (CheckUtil.StringIsNull(data.effect)) { return; } List <EffectTypeBean> listEffectData = EffectTypeEnumTools.GetListEffectData(data.effect); //获取详情 EffectDetailsEnumTools.GetEffectDetailsForCombat(data.effect_details, out string effectPSName, out int durationForRound); if (listEffectData == null) { return; } foreach (EffectTypeBean itemData in listEffectData) { EffectTypeEnumTools.GetEffectDetails(itemData, null); string describe = itemData.effectDescribe; if (durationForRound != 0) { describe += ("\n" + string.Format(TextHandler.Instance.manager.GetTextById(502), "" + durationForRound)); } CreateItemAttributes(itemData.spIcon, itemData.colorIcon, describe); } }
/// <summary> /// 获取所有属性加成 /// </summary> /// <param name="force"></param> /// <returns></returns> public void GetTotalAttributes(CharacterAttributesBean addAttributesData) { foreach (MiniGameCombatEffectBean itemData in listCombatEffect) { EffectTypeEnumTools.GetTotalAttributes(itemData.listEffectTypeData, addAttributesData); } }
/// <summary> /// 设置属性 /// </summary> /// <param name="data"></param> public void SetAttributes(ItemsInfoBean data) { CptUtil.RemoveChildsByActive(objAttributeContainer); CreateItemAttributes("ui_ability_life", data.add_life, AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Life), colorForAttribute); CreateItemAttributes("ui_ability_cook", data.add_cook, TextHandler.Instance.manager.GetTextById(1), colorForAttribute); CreateItemAttributes("ui_ability_speed", data.add_speed, AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Speed), colorForAttribute); CreateItemAttributes("ui_ability_account", data.add_account, AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Account), colorForAttribute); CreateItemAttributes("ui_ability_charm", data.add_charm, AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Charm), colorForAttribute); CreateItemAttributes("ui_ability_force", data.add_force, AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Force), colorForAttribute); CreateItemAttributes("ui_ability_lucky", data.add_lucky, AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Lucky), colorForAttribute); if (CheckUtil.StringIsNull(data.effect)) { return; } List <EffectTypeBean> listEffectData = EffectTypeEnumTools.GetListEffectData(data.effect); //获取详情 EffectDetailsEnumTools.GetEffectDetailsForCombat(data.effect_details, out string effectPSName, out int durationForRound); if (listEffectData == null) { return; } foreach (EffectTypeBean itemData in listEffectData) { EffectTypeEnumTools.GetEffectDetails(itemData, null); string describe = itemData.effectDescribe; if (durationForRound != 0) { describe += ("\n" + string.Format(TextHandler.Instance.manager.GetTextById(502), "" + durationForRound)); } CreateItemAttributes(itemData.spIcon, describe); } }
/// <summary> /// 获取所有伤害减免 /// </summary> /// <returns></returns> public int GetTotalDef(int damage) { foreach (MiniGameCombatEffectBean itemData in listCombatEffect) { damage = EffectTypeEnumTools.GetTotalDef(characterData, itemData.listEffectTypeData, damage); } return(damage); }
/// <summary> /// 增加效果 /// </summary> /// <param name="effectTypeData"></param> /// <param name="effectDetailsData"></param> public void AddCombatEffect(NpcAIMiniGameCombatCpt actionCharacter, string effectTypeData, string effectDetailsData, Sprite spIcon) { List <EffectTypeBean> listTypeData = EffectTypeEnumTools.GetListEffectData(effectTypeData); EffectDetailsEnumTools.GetEffectDetailsForCombat(effectDetailsData, out string effectPSName, out int durationForRound); MiniGameCombatEffectBean gameCombatEffectData = new MiniGameCombatEffectBean(); gameCombatEffectData.listEffectTypeData = listTypeData; gameCombatEffectData.durationForRound = durationForRound; gameCombatEffectData.effectPSName = effectPSName; gameCombatEffectData.iconMarkId = SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N); gameCombatEffectData.actionCharacter = actionCharacter; gameCombatEffectData.targetCharacter = this; foreach (EffectTypeBean itemType in listTypeData) { //设置技能的备用图标 EffectTypeEnumTools.GetEffectDetails(itemType, spIcon); //如果是持续 则需要加上BUFF图标 if (durationForRound > 0) { Sprite spEffect; if (itemType.spIconRemark != null) { spEffect = itemType.spIconRemark; } else { spEffect = itemType.spIcon; } AddStatusIconForEffect(spEffect, Color.white, gameCombatEffectData.iconMarkId); } } //播放粒子特效 if (!CheckUtil.StringIsNull(effectPSName)) { MiniGameHandler.Instance.handlerForCombat.miniGameBuilder.CreateCombatEffect(effectPSName, transform.position + new Vector3(0, 0.5f)); } if (durationForRound > 0) { characterMiniGameData.listCombatEffect.Add(gameCombatEffectData); } else { //回合数小于0的立即执行 CombatEffectExecute(gameCombatEffectData, out bool isDead); } }
/// <summary> /// 检测是否需要延迟 /// </summary> /// <returns></returns> public bool CheckIsDelay() { if (!CheckUtil.ListIsNull(listEffectTypeData)) { for (int i = 0; i < listEffectTypeData.Count; i++) { EffectTypeBean itemData = listEffectTypeData[i]; bool isDelay = EffectTypeEnumTools.CheckIsDelay(itemData); if (isDelay) { return(true); } } } return(false); }
public void CompleteEffect(MiniGameCharacterForCombatBean miniGameCharacter) { //回复生命处理 int addLife = EffectTypeEnumTools.GetTotalLife(targetCharacter.characterData, listEffectTypeData); if (addLife > 0) { //显示增加的血量 targetCharacter.ShowTextInfo("+" + addLife, Color.green); targetCharacter.characterMiniGameData.AddLife(addLife); //更新血量显示 targetCharacter.characterLifeCpt.SetData(miniGameCharacter.characterCurrentLife, miniGameCharacter.characterMaxLife); } //伤害处理 int addDamage = EffectTypeEnumTools.GetTotalDamage(actionCharacter, listEffectTypeData); if (addDamage > 0) { targetCharacter.UnderAttack(1, addDamage); } }