Esempio n. 1
0
    private void SettleBuffOnBoutStart(ObjectBase targetObj)
    {
        List <BuffInst> lstBuffInst = new List <BuffInst>(targetObj.lstBuffInst);

        foreach (var buffInst in lstBuffInst)
        {
            BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
            if (template == null)
            {
                continue;
            }

            if (template.nType == BuffType.GET_BUFF_ROUND_START)
            {
                _battleModel.AddBuff(targetObj, targetObj, (uint)template.iEffectB, buffInst.effectVal);
            }

            if (buffInst.leftBout != -1)
            {
                //Debug.LogError("DecBuffLeftBout" + buffInst.leftBout);
                if (template.nTrigger == BuffTriggerType.BOUT_START)
                {
                    _battleModel.DecBuffLeftBout(targetObj, buffInst, 1);
                }
            }
        }
    }
Esempio n. 2
0
    public static void Init(XmlNode xml)
    {
        foreach (XmlElement element in xml.ChildNodes)
        {
            BuffTemplate template = new BuffTemplate();
            template.nId = element["nId"] != null?uint.Parse(element["nId"].InnerText) : 0;                                  //id

            template.szName = element["szName"] != null ? element["szName"].InnerText : "";                                  //名字
            template.szDesc = element["szDesc"] != null ? element["szDesc"].InnerText : "";                                  //描述
            template.nType  = element["nType"] != null?uint.Parse(element["nType"].InnerText) : 0;                           //enum BuffType

            template.nTrigger = element["nTrigger"] != null?uint.Parse(element["nTrigger"].InnerText) : 0;                   //enum BuffTriggerType

            template.nTriggerParam1 = element["nTriggerParam1"] != null?uint.Parse(element["nTriggerParam1"].InnerText) : 0; //触发类型参数1

            template.nTriggerParam2 = element["nTriggerParam2"] != null?uint.Parse(element["nTriggerParam2"].InnerText) : 0; //触发类型参数2

            template.iEffectA = element["iEffectA"] != null?int.Parse(element["iEffectA"].InnerText) : 0;                    //效果值A

            template.iEffectB = element["iEffectB"] != null?int.Parse(element["iEffectB"].InnerText) : 0;                    //效果值B(buffid etc..)

            template.iBout = element["iBout"] != null?int.Parse(element["iBout"].InnerText) : 0;                             //持续回合

            template.szImg = element["szImg"] != null ? element["szImg"].InnerText : "";                                     //图片名

            Data.Add(template.nId, template);
        }
    }
Esempio n. 3
0
        internal void SetData(BuffInst buffInst)
        {
            BuffTemplate templet = BuffTemplateData.GetData(buffInst.tplId);

            if (templet == null)
            {
                return;
            }
            img.url = ResPath.GetUiImagePath(PackageName.BATTLE, templet.szImg);
            switch (templet.nType)
            {
            case BuffType.ADD_ARMOR_ROUND_END:
            case BuffType.MULTI_ARMOR:
                txtValue.text    = buffInst.effectVal.ToString();
                txtValue.visible = true;
                break;

            case BuffType.MAGIC_SWORD:      //幻剑
                txtValue.text    = buffInst.effectVal.ToString();
                txtValue.visible = true;
                break;

            default:
                txtValue.text    = buffInst.leftBout.ToString();
                txtValue.visible = buffInst.leftBout > 0;
                break;
            }
        }
Esempio n. 4
0
        public static BuffDef Add(BuffTemplate buffTemplate, String contentPackIdentifier = null)
        {
            contentPackIdentifier = contentPackIdentifier ?? Assembly.GetCallingAssembly().GetName().Name;
            if (!ContentPacks.assemblyDict.ContainsKey(contentPackIdentifier))
            {
                ContentPacks.assemblyDict[contentPackIdentifier] = Assembly.GetCallingAssembly();
            }
            BuffDef buffDef = ScriptableObject.CreateInstance <BuffDef>();

            buffDef.name        = buffTemplate.internalName;
            buffDef.buffColor   = buffTemplate.buffColor ?? buffDef.buffColor;
            buffDef.canStack    = buffTemplate.canStack ?? buffDef.canStack;
            buffDef.eliteDef    = buffTemplate.eliteDef ?? buffDef.eliteDef;
            buffDef.isCooldown  = buffTemplate.isCooldown ?? buffDef.isCooldown;
            buffDef.isDebuff    = buffTemplate.isDebuff ?? buffDef.isDebuff;
            buffDef.iconSprite  = buffTemplate.iconSprite ?? buffDef.iconSprite;
            buffDef.isHidden    = buffTemplate.isHidden ?? buffDef.isHidden;
            buffDef.m_CachedPtr = buffTemplate.m_CachedPtr ?? buffDef.m_CachedPtr;
            buffDef.startSfx    = buffTemplate.startSfx ?? buffDef.startSfx;
            String nameToken        = $"ARTIFACT_{buffTemplate.internalName.ToUpper()}_NAME";
            String descriptionToken = $"ARTIFACT_{buffTemplate.internalName.ToUpper()}_DESC";

            Languages.AddTokenString(nameToken, buffTemplate.name);
            Languages.AddTokenString(descriptionToken, buffTemplate.description);

            AddInfo(buffDef, nameToken, descriptionToken);

            return(Add(buffDef, contentPackIdentifier));
        }
Esempio n. 5
0
        public void onSingleBuffAdd(X_GUID uid, BuffTemplate info)
        {
            UI_Blood mBlood = FindUIFBlood(uid);

            if (mBlood == null)
            {
                return;
            }
            mBlood.onSingleBuffAdd(info);
        }
Esempio n. 6
0
    public static BuffTemplate GetData(uint nId, object className = null)
    {
        if (!Data.ContainsKey(nId))
        {
            if (className != null)
            {
                UnityEngine.Debug.LogError(string.Format("BuffTemplate is null, Id = {0} @ {1}", "nId=" + nId, className));
            }
            return(null);
        }
        BuffTemplate template = Data[nId];

        return(template);
    }
Esempio n. 7
0
 public bool HasBuff(uint buffType)
 {
     foreach (var buffInst in lstBuffInst)
     {
         BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
         if (template == null)
         {
             continue;
         }
         if (template.nType == buffType)
         {
             return(true);
         }
     }
     return(false);
 }
Esempio n. 8
0
 public BuffInst GetBuffInstByType(uint buffType)
 {
     foreach (var buffInst in lstBuffInst)
     {
         BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
         if (template == null)
         {
             continue;
         }
         if (template.nType == buffType)
         {
             return(buffInst);
         }
     }
     return(null);
 }
Esempio n. 9
0
    private void SettleBuffOnBoutEnd(ObjectBase targetObj)
    {
        List <BuffInst> lstBuffInst = new List <BuffInst>(targetObj.lstBuffInst);

        foreach (var buffInst in lstBuffInst)
        {
            BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
            if (template == null)
            {
                continue;
            }
            switch (template.nType)
            {
            case BuffType.ADD_ARMOR_ROUND_END:
            case BuffType.MULTI_ARMOR:
                _battleModel.AddArmor(targetObj, buffInst.effectVal);
                break;

            default:
                //Debug.LogError("unhandle bout end buff:" + template.nType);
                break;
            }
        }

        foreach (var buffInst in lstBuffInst)
        {
            BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
            if (template == null)
            {
                continue;
            }

            if (buffInst.selfAddDebuffThisBout)
            {
                buffInst.selfAddDebuffThisBout = false;
                //Debug.LogError("buffId:" + buffInst.tplId + " selfAddDebuffThisBout");
            }
            else if (buffInst.leftBout != -1)
            {
                //Debug.LogError("DecBuffLeftBout" + buffInst.leftBout);
                if (template.nTrigger != BuffTriggerType.BOUT_START)
                {
                    _battleModel.DecBuffLeftBout(targetObj, buffInst, 1);
                }
            }
        }
    }
Esempio n. 10
0
        // 创建bufficon结构
        private void onCreateBuffIcon(BuffTemplate info)
        {
            int        buffid = info.GetID();
            GameObject obj    = new GameObject("BuffIcon");

            obj.transform.SetParent(transform, false);

            UI_BuffIcon icon = obj.AddComponent <UI_BuffIcon>();

            //buff icon路径
            //string filepath = "";// info.m_buffIconBig;
            string filepath = info.getBuffIconSmall();//m_buffIconSmall;

            if (string.IsNullOrEmpty(filepath))
            {
                Debug.LogError("找不到资源:" + info.getDES());
                return;
            }
            filepath = common.defaultPath + filepath;
            //string filepath = common.defaultPath + "Battle_Buff04";
            //LogManager.LogError("Should use table filepath ...");
            if (UIResourceMgr.LoadSprite(filepath) == null)
            {
                return;
            }
            Sprite sprite = Instantiate(UIResourceMgr.LoadSprite(filepath), Vector3.zero, Quaternion.identity) as Sprite;

            icon.onImageInit(sprite);

            BuffIcon buffIcon = new BuffIcon(icon, buffid);

            mBuffList.Add(buffIcon);

            // buff/debuff 排序
            if (info.getConduce() != 0)
            {
                // buff 排在debuff前
                obj.transform.SetSiblingIndex(iDebuffIdx);
                iDebuffIdx++;
            }
            else
            {
                // debuff 排在队尾
                // 所以不处理
            }
        }
Esempio n. 11
0
    /// <summary>
    /// 获取BUFF提示
    /// </summary>
    /// <param name="buffInst"></param>
    /// <returns></returns>
    internal static TipStruct GetBuffTip(BuffInst buffInst)
    {
        BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);

        if (template == null)
        {
            return(null);
        }
        TipStruct tipStruct = new TipStruct()
        {
            name    = template.szName,
            desc    = template.szDesc,
            iconUrl = ResPath.GetUiImagePath(PackageName.BATTLE, template.szImg)
        };

        return(tipStruct);
    }
Esempio n. 12
0
        // 移除buff
        public void RemoveBuff(BuffTemplate info)
        {
            BuffIcon buffIcon = GetItemByBuffID(info.GetID());

            if (buffIcon == null)
            {
                return;
            }
            if (info.getMaxOverlayCount() > 1)
            {
                // 可叠加
                if (buffIcon != null)
                {
                    if (buffIcon.iCount < 2)
                    {
                        // 移除icon
                        if (buffIcon.icon)
                        {
                            //buffIcon.icon.transform.DetachChildren()
                            Destroy(buffIcon.icon.gameObject);
                            buffIcon.icon = null;
                        }
                        mBuffList.Remove(buffIcon);
                        buffIcon = null;
                    }
                    else
                    {
                        // 计数--
                        buffIcon.icon.onUpdateText(--buffIcon.iCount);
                    }
                }
            }
            else
            {
                // 不可叠加
                if (buffIcon.icon)
                {
                    Destroy(buffIcon.icon.gameObject);
                    buffIcon.icon = null;
                }
                mBuffList.Remove(buffIcon);
                buffIcon = null;
            }
        }
Esempio n. 13
0
    public void RecoverCost()
    {
        curCost = maxCost;

        foreach (var buffInst in selfData.lstBuffInst)
        {
            BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
            if (template == null)
            {
                continue;
            }
            if (template.nType == BuffType.GET_ENERGY_ROUND_START)
            {
                curCost += buffInst.effectVal;
            }
        }

        CostChangeHandle();
    }
Esempio n. 14
0
    public override void DoEffect(BattleManager battlemgr, CardInstance cardInstance, CardEffectTemplate effectTplt, int targetInstId)
    {
        BattleModel battleModel = BattleModel.Inst;

        List <BuffInst> lstBuffInst = new List <BuffInst>(battleModel.selfData.lstBuffInst);

        foreach (var buffInst in lstBuffInst)
        {
            BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
            if (template == null)
            {
                continue;
            }

            if (template.nType > BuffType.DEBUFF_BEGIN && template.nType < BuffType.DEBUFF_END)
            {
                battleModel.RemoveBuff(battleModel.selfData, buffInst);
            }
        }
    }
Esempio n. 15
0
    //结算受击效果
    private void OnObjectHitted(ObjectBase caster, ObjectBase target, int reduceHp, int reduceArmor)
    {
        List <BuffInst> lstBuffInst = new List <BuffInst>(target.lstBuffInst);

        foreach (var buffInst in lstBuffInst)
        {
            BuffTemplate template = BuffTemplateData.GetData(buffInst.tplId);
            if (template == null)
            {
                continue;
            }
            switch (template.nType)
            {
            case BuffType.ARMOR_REFLECT:
                if (0 == reduceArmor)
                {
                    continue;
                }

                int reflectValue = (reduceArmor * buffInst.effectVal) / 100;
                _battleModel.ReduceEnemyHp(caster.instId, reflectValue);
                break;

            case BuffType.MULTI_ARMOR:
                if (reduceHp > 0)
                {
                    //受伤少一层护甲
                    _battleModel.DecBuffEffectVal(target, buffInst, 1);
                }
                break;

            default:
                //Debug.LogError("unhandle on hit buff type:" + template.nType);
                break;
            }
        }
    }
Esempio n. 16
0
        // 添加buff
        public void AddBuff(BuffTemplate info)
        {
            BuffIcon buffIcon = GetItemByBuffID(info.GetID());

            if (info.getMaxOverlayCount() > 1)
            {
                // 可叠加
                if (buffIcon != null)
                {
                    // 更新数字
                    buffIcon.icon.onUpdateText(++buffIcon.iCount);
                }
                else
                {
                    // 创建icon
                    onCreateBuffIcon(info);
                }
            }
            else
            {
                // 不可叠加
                onCreateBuffIcon(info);
            }
        }
Esempio n. 17
0
 public void onSingleBuffAdd(BuffTemplate info)
 {
     mBuffControl.AddBuff(info);
 }
Esempio n. 18
0
 /// <summary>
 /// 处理buff
 /// </summary>
 /// <param name="uid"></param>
 /// <param name="info"></param>
 public void onSingleBuffRemove(BuffTemplate info)
 {
     mBuffControl.RemoveBuff(info);
 }
Esempio n. 19
0
 /// <summary>
 /// buffer 图标处理
 /// </summary>
 public void onSelfAllBuffRemove(BuffTemplate info)
 {
     mSelfBuff.RemoveBuff(info);
 }
Esempio n. 20
0
 public void onSelfAllBuffAdd(BuffTemplate info)
 {
     mSelfBuff.AddBuff(info);
 }
Esempio n. 21
0
 public void onEnemyAllBuffRemove(BuffTemplate info)
 {
     mEnemyBuff.RemoveBuff(info);
 }
Esempio n. 22
0
    /// <summary>
    /// 目标对象获得buff
    /// </summary>
    /// <param name="buffId"></param>
    internal void AddBuff(ObjectBase casterObject, ObjectBase targetObject, uint buffId, int count = 1)
    {
        if (count == 0 || buffId == 0)
        {
            return;
        }

        if (null == targetObject)
        {
            return;
        }

        List <BuffInst> lstBuffInst = targetObject.lstBuffInst;

        BuffTemplate templet = BuffTemplateData.GetData(buffId);

        if (templet == null)
        {
            return;
        }

        foreach (var buffInst in lstBuffInst)
        {
            if (buffInst.tplId != buffId)
            {
                continue;
            }
            if (templet.iBout != -1)
            {
                // 无法抽卡只有1层
                if (templet.nType != BuffType.CAN_NOT_DRAW_CARD)
                {
                    buffInst.leftBout += templet.iBout * count;
                }
            }
            else
            {
                buffInst.effectVal += templet.iEffectA * count;
            }

            if (targetObject.objType == ObjectType.PLAYER)
            {
                SendEvent(BattleEvent.SELF_BUFF_UPDATE, buffInst);
            }
            else if (targetObject.objType == ObjectType.ENEMY)
            {
                SendEvent(BattleEvent.ENEMY_BUFF_UPDATE, buffInst);
            }
            return;
        }

        //加入新BUFF
        int iBout      = -1;
        int iEffectVal = templet.iEffectA;

        if (templet.iBout != -1)
        {
            // 无法抽卡只有1层
            iBout = 1;
            if (templet.nType != BuffType.CAN_NOT_DRAW_CARD)
            {
                iBout = templet.iBout * count;
            }
        }
        else
        {
            iEffectVal = templet.iEffectA * count;
        }
        BuffInst newBuffInst = new BuffInst(targetObject.instId)
        {
            tplId                 = buffId,
            leftBout              = iBout,
            effectVal             = iEffectVal,
            selfAddDebuffThisBout = (BuffInst.IsDebuff(templet.nType) && casterObject == targetObject)
        };

        lstBuffInst.Add(newBuffInst);
        if (targetObject.objType == ObjectType.PLAYER)
        {
            SendEvent(BattleEvent.SELF_BUFF_ADD, newBuffInst);
        }
        else if (targetObject.objType == ObjectType.ENEMY)
        {
            SendEvent(BattleEvent.ENEMY_BUFF_ADD, newBuffInst);
        }
    }
Esempio n. 23
0
 public void onEnemyAllBuffAdd(BuffTemplate info)
 {
     mEnemyBuff.AddBuff(info);
 }