예제 #1
0
    public void CreateSkillList(List <SkillInfoBean> listData)
    {
        CptUtil.RemoveChildsByActive(objSkillItemContainer);
        if (CheckUtil.ListIsNull(listData))
        {
            tvNull.gameObject.SetActive(true);
            return;
        }
        else
        {
            tvNull.gameObject.SetActive(false);
        }
        for (int i = 0; i < listData.Count; i++)
        {
            SkillInfoBean itemSkill = listData[i];
            if (!listSkill.Contains(itemSkill.id))
            {
                continue;
            }
            GameObject       objItem        = Instantiate(objSkillItemContainer, objSkillItemModel);
            ItemBaseTextCpt  itemBaseText   = objItem.GetComponent <ItemBaseTextCpt>();
            PopupSkillButton infoSkillPopup = objItem.GetComponent <PopupSkillButton>();

            Sprite spIcon = IconDataHandler.Instance.manager.GetIconSpriteByName(itemSkill.icon_key);
            itemBaseText.SetData(spIcon, itemSkill.name, "");
            infoSkillPopup.SetData(itemSkill);
        }
    }
예제 #2
0
    /// <summary>
    ///协程意图-技能
    /// </summary>
    public IEnumerator CoroutineForIntentSkill(SkillInfoBean skillInfo, List <NpcAIMiniGameCombatCpt> relativeOurList, List <NpcAIMiniGameCombatCpt> relativeEnemyList)
    {
        if (skillInfo == null)
        {
            //如果没有技能则战斗
            StartCoroutine(CoroutineForIntentFight(relativeOurList, relativeEnemyList));
        }
        else
        {
            MiniGameHandler.Instance.handlerForCombat.miniGameData.SetRoundActionCommand(MiniGameCombatCommand.Skill);
            MiniGameHandler.Instance.handlerForCombat.miniGameData.SetRoundActionSkill(skillInfo);
            EffectDetailsEnumTools.GetEffectRange(skillInfo.effect_details, out int impactNumber, out int impactType);

            List <NpcAIMiniGameCombatCpt> listSelectTargetNpc = new List <NpcAIMiniGameCombatCpt>();
            if (impactType == 0)
            {
                //如果选择是选择自己
                listSelectTargetNpc.Add(this);
            }
            else if (impactType == 1)
            {
                //如果选择是选择友方
                listSelectTargetNpc.AddRange(GetSelectTargetByNumber(impactNumber, relativeOurList));
            }
            else if (impactType == 2)
            {
                //如果选择是选择敌人
                listSelectTargetNpc.AddRange(GetSelectTargetByNumber(impactNumber, relativeEnemyList));
            }
            MiniGameHandler.Instance.handlerForCombat.miniGameData.SetRoundTargetCharacter(listSelectTargetNpc);
            yield return(new WaitForSeconds(1f));

            MiniGameHandler.Instance.handlerForCombat.RoundForAction();
        }
    }
예제 #3
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);
        }
    }
예제 #4
0
 /// <summary>
 /// 更新数据
 /// </summary>
 /// <param name="menuInfo"></param>
 /// <returns></returns>
 public bool Update(SkillInfoBean skillInfo)
 {
     if (DeleteData(skillInfo.id))
     {
         return(InsertData(skillInfo));
     }
     return(false);
 }
예제 #5
0
 /// <summary>
 /// 结束回合
 /// </summary>
 public void EndRound()
 {
     roundActionCharacter     = null;
     roundListTargetCharacter = null;
     roundActionPowerTest     = 0;
     roundActionItemsId       = 0;
     roundActionSkill         = null;
     roundCombatCommand       = MiniGameCombatCommand.None;
 }
예제 #6
0
    /// <summary>
    /// 插入数据
    /// </summary>
    /// <param name="menuInfo"></param>
    /// <returns></returns>
    public bool InsertData(SkillInfoBean skillInfo)
    {
        List <string> listLeftKey = new List <string>
        {
            "skill_id",
            "name",
            "content"
        };

        return(BaseInsertDataWithLeft(skillInfo, listLeftKey));
    }
예제 #7
0
 /// <summary>
 /// 设置文本内容
 /// </summary>
 /// <param name="content"></param>
 public void SetData(SkillInfoBean skillInfoData)
 {
     if (skillInfoData == null)
     {
         return;
     }
     this.skillInfoData = skillInfoData;
     SetIcon(skillInfoData.icon_key);
     SetName(skillInfoData.name);
     SetContent(skillInfoData.content);
     SetAttributes(skillInfoData);
 }
예제 #8
0
    /// <summary>
    /// 设置数据
    /// </summary>
    /// <param name="skillInfo"></param>
    /// <param name="usedNumber"></param>
    public void SetData(SkillInfoBean skillInfoData, int usedNumber)
    {
        this.skillInfoData = skillInfoData;
        this.usedNumber    = usedNumber;
        int restNumber = skillInfoData.GetRestNumber(usedNumber);

        SetName(skillInfoData.name, restNumber);
        SetNumber(restNumber);
        SetIcon(skillInfoData.icon_key);

        infoSkillPopup.SetData(skillInfoData);
    }
예제 #9
0
    /// <summary>
    /// 创建技能
    /// </summary>
    /// <param name="skillInfo"></param>
    public void CreateSkillItem(SkillInfoBean skillInfo)
    {
        int usedNumber = 0;

        if (listUsedData != null)
        {
            listUsedData.TryGetValue(skillInfo.id, out usedNumber);
        }

        GameObject objItem = Instantiate(objSkillContainer, objSkillModel);
        ItemDialogPickForSkillCpt itemSkill = objItem.GetComponent <ItemDialogPickForSkillCpt>();

        itemSkill.SetData(skillInfo, usedNumber);
        itemSkill.SetCallBack(this);
    }
예제 #10
0
 /// <summary>
 /// 创建技能列表
 /// </summary>
 public void SetListSkill(List <SkillInfoBean> listAllData)
 {
     tvNull.gameObject.SetActive(false);
     if (listSkill == null || listSkill.Count == 0)
     {
         tvNull.gameObject.SetActive(true);
         return;
     }
     for (int i = 0; i < listAllData.Count; i++)
     {
         SkillInfoBean itemSkillInfo = listAllData[i];
         if (listSkill.Contains(itemSkillInfo.id))
         {
             CreateSkillItem(itemSkillInfo);
         }
     }
 }
예제 #11
0
    /// <summary>
    /// 协程 技能使用
    /// </summary>
    /// <returns></returns>
    private IEnumerator CoroutineForCommandSkill()
    {
        NpcAIMiniGameCombatCpt        actionNpc     = miniGameData.GetRoundActionCharacter();
        List <NpcAIMiniGameCombatCpt> listTargetNpc = miniGameData.GetRoundTargetListCharacter();
        SkillInfoBean skillData = miniGameData.GetRoundActionSkill();
        Sprite        spSkill   = IconDataHandler.Instance.manager.GetIconSpriteByName(skillData.icon_key);

        //喊出技能名字
        actionNpc.SetShout(skillData.name);
        yield return(new WaitForSeconds(1f));

        actionNpc.characterMiniGameData.AddUsedSkill(skillData.id, 1);
        //增加技能效果
        foreach (NpcAIMiniGameCombatCpt itemNpc in listTargetNpc)
        {
            itemNpc.AddCombatEffect(actionNpc, skillData.effect, skillData.effect_details, spSkill);
        }
        yield return(new WaitForSeconds(1f));
    }
예제 #12
0
    /// <summary>
    /// 设置技能数据
    /// </summary>
    /// <param name="listData"></param>
    public void SetSkillInfoData(List <SkillInfoBean> listData)
    {
        if (listData == null || listData.Count == 0)
        {
            ToastHandler.Instance.ToastHint(ivIcon.sprite, TextHandler.Instance.manager.GetTextById(1065));
            return;
        }
        SkillInfoBean skillInfo = listData[0];
        GameDataBean  gameData  = GameDataHandler.Instance.manager.GetGameData();
        bool          isPre     = PreTypeEnumTools.CheckIsAllPre(gameData, characterData, skillInfo.pre_data, out string reason);

        if (!isPre)
        {
            ToastHandler.Instance.ToastHint(ivIcon.sprite, reason);
        }
        else
        {
            //学习该技能
            characterData.attributes.LearnSkill(itemsInfoData.add_id);
            string toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1064), characterData.baseInfo.name, itemsInfoData.name);
            ToastHandler.Instance.ToastHint(ivIcon.sprite, toastStr);
            RefreshItems(itemsInfoData.id, -1);
        }
    }
예제 #13
0
 public void PickSkillComplete(SkillInfoBean skillInfo)
 {
     EffectDetailsEnumTools.GetEffectRange(skillInfo.effect_details, out int impactNumber, out int impactType);
     OpenSelectCharacter(impactNumber, impactType);
 }
예제 #14
0
 public void SelectedSkill(SkillInfoBean skillInfo)
 {
     selectedSkill = skillInfo;
     SubmitOnClick();
 }
예제 #15
0
 /// <summary>
 /// 设置技能ID
 /// </summary>
 /// <param name="roundActionSkillId"></param>
 public void SetRoundActionSkill(SkillInfoBean roundActionSkill)
 {
     this.roundActionSkill = roundActionSkill;
 }
예제 #16
0
 public void SetData(SkillInfoBean skillInfo)
 {
     this.skillInfo = skillInfo;
 }
예제 #17
0
 /// <summary>
 /// 获取选中的技能
 /// </summary>
 /// <param name="skillInfo"></param>
 public void GetSelectedSkill(out SkillInfoBean skillInfo)
 {
     skillInfo = selectedSkill;
 }