Example #1
0
    /// <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);
     }
 }
Example #3
0
    /// <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);
 }
Example #5
0
    /// <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);
        }
    }