void OnClickMainBtn()
    {
        if (CurItemData == null)
        {
            return;
        }

        if (CurItemData.IsEquipItem() && BasePanel is EquipmentPanel)
        {
            if (CurItemData._enchant < CurItemData.GetEquipLowData().MaxEnchant)
            {
                GetPanel <EquipmentPanel>().OnChangeTabUpgrade(true, CurItemData);
                Hide();
            }
            else if (0 < CurItemData.GetEquipLowData().NextPartsId)
            {
                GetPanel <EquipmentPanel>().OnChangeTabUpgrade(false, CurItemData);
                Hide();
            }
            else
            {
                GetPanel <EquipmentPanel>().OnChangeTabUpgrade(true, CurItemData);
                Hide();
                //SceneManager.instance.SetNoticePanel(NoticeType.Message, 1182);
            }
        }
        else
        {
            Hide();
        }
    }
    /// <summary> 사용 아이템의 설명문 Equip아이템은 아님. 마지막 셋팅 함수임. Position은 주지 않는다 </summary>
    void SetDesc(NetData._ItemData itemData, ref byte optionCount)
    {
        uint descId = 0;

        if (itemData.IsEquipItem())
        {
            Item.EquipmentInfo equipLowData = itemData.GetEquipLowData();
            descId = equipLowData.DescriptionId;
        }
        else
        {
            Item.ItemInfo useLowData = itemData.GetUseLowData();
            descId = useLowData == null ? 0 : useLowData.DescriptionId;
        }

        if (descId <= 0)
        {
            Desc.gameObject.SetActive(false);
            return;
        }

        ++optionCount;
        Desc.gameObject.SetActive(true);
        Desc.text = _LowDataMgr.instance.GetStringItem(descId);
    }
Exemple #3
0
 /// <summary> 장착중인 아이템 슬롯 셋팅 </summary>
 public void SetMountItemSlot(NetData._ItemData itemData, Action <ulong> callBack, uint key)
 {
     EnchantLv.gameObject.SetActive(itemData.IsEquipItem());
     if (itemData == null)//장착중인 아이템이 없다 다 꺼놓는다.
     {
         EmptySlot();
     }
     else//장착중인 아이템이 있다 아이템 셋팅한다
     {
         SetEquipItem(itemData.GetEquipLowData(), 0);
         EnchantLv.text = string.Format("+{0}", itemData._enchant);
         Key            = key;
         CallBack       = callBack;
     }
 }
Exemple #4
0
    /// <summary> 인벤토리의 아이템 정의 </summary>
    /// <param name="itemData">셋팅하고자 하는 아이템데이터</param>
    /// <param name="startDepth">시작 뎁스 값</param>
    public void SetInvenItemSlot(NetData._ItemData itemData, Action <ulong, byte> callBack, int startDepth = 8)
    {
        EnchantLv.gameObject.SetActive(itemData.IsEquipItem());
        if (itemData.IsEquipItem())
        {
            SetEquipItem(itemData.GetEquipLowData(), itemData.Count);
            EnchantLv.text = itemData._enchant <= 0 ? "" : string.Format("+{0}", itemData._enchant);
        }
        else
        {
            SetUseItem(itemData.GetUseLowData(), itemData.Count);
        }

        Key         = itemData._itemIndex;
        Key2        = itemData._itemType;
        CallBackTwo = callBack;

        SetDepth(startDepth);
    }
    void ShowItem(NetData._ItemData recomend)
    {
        Name.text = recomend.GetLocName();
        Item.EquipmentInfo equipLowData = recomend.GetEquipLowData();
        Img.spriteName   = _LowDataMgr.instance.GetLowDataIcon(equipLowData.Icon);
        Bg.spriteName    = string.Format("Icon_bg_0{0}", equipLowData.Grade);
        Grade.spriteName = string.Format("Icon_0{0}", equipLowData.Grade);
        Attack.text      = string.Format("{0} : {1}", _LowDataMgr.instance.GetStringCommon(47), recomend._Attack.ToString());

        //UIEventTrigger etri = transform.FindChild("Bg").GetComponent<UIEventTrigger>();
        //EventDelegate.Set(etri.onClick, delegate () { OnclicItemPopup(Img.transform, recomend._equipitemDataIndex); });

        if (SceneManager.instance.testData.bSingleSceneTestStart || SceneManager.instance.testData.bQuestTestStart)
        {
            TempCoroutine.instance.FrameDelay(0.5f, () => {
                OnClickChanged();
            });
        }
    }
    public void UserCharInfo(uint charIdx, uint skillSetId, NetData._ItemData[] equipList, NetData._CostumeData costume, bool hideCostume)
    {
        CurCostumStatus.text = costume.GetLocName();

        string lvAndName = string.Format(_LowDataMgr.instance.GetStringCommon(453), UserLv);

        UserNameLbl.text = string.Format("{0} {1}", lvAndName, UserName);

        uint helmet = 0, cloth = 0, weapon = 0;

        for (int i = 0; i < EquipPartsTf.childCount; i++)
        {
            Transform tf = EquipPartsTf.GetChild(i);
            if (tf == null)
            {
                continue;
            }

            UIEventTrigger uiTri     = tf.GetComponent <UIEventTrigger>();
            UISprite       bg        = tf.GetComponent <UISprite>();
            UISprite       grade     = tf.FindChild("grade").GetComponent <UISprite>();
            UISprite       icon      = tf.FindChild("icon").GetComponent <UISprite>();
            UILabel        enchantLv = tf.FindChild("Num").GetComponent <UILabel>();

            if (equipList[i] == null)
            {
                icon.enabled  = false;
                grade.enabled = false;
                bg.spriteName = UIHelper.GetDefaultEquipIcon((ePartType)i + 1);
                enchantLv.gameObject.SetActive(false);

                continue;
            }

            NetData._ItemData equipData = equipList[i];

            if (equipData.EquipPartType == ePartType.HELMET)
            {
                helmet = equipData._equipitemDataIndex;
            }
            else if (equipData.EquipPartType == ePartType.WEAPON)
            {
                weapon = equipData._equipitemDataIndex;
            }
            else if (equipData.EquipPartType == ePartType.CLOTH)
            {
                cloth = equipData._equipitemDataIndex;
            }

            icon.enabled  = true;
            grade.enabled = true;

            UIAtlas atlas = null;
            atlas = AtlasMgr.instance.GetEquipAtlasForClassId(equipData.GetEquipLowData().Class);

            icon.atlas       = atlas;
            icon.spriteName  = _LowDataMgr.instance.GetLowDataIcon(equipData.GetEquipLowData().Icon);
            grade.spriteName = string.Format("Icon_0{0}", equipData.GetEquipLowData().Grade);
            bg.spriteName    = string.Format("Icon_bg_0{0}", equipData.GetEquipLowData().Grade);
            enchantLv.text   = equipData._enchant <= 0 ? "" : string.Format("+{0}", equipData._enchant);
            enchantLv.gameObject.SetActive(true);

            EventDelegate.Set(uiTri.onClick, delegate() {
                if (equipData == null)
                {
                    return;
                }
                UIBasePanel basePanel = UIMgr.GetUIBasePanel("UIPopup/ChatPopup");
                if (basePanel == null)
                {
                    return;
                }

                UIMgr.OpenDetailPopup(this, equipData, GetComponent <UIPanel>().depth + 3);
            });
        }

        //코스튬 화면
        UIHelper.CreatePcUIModel("CharacterPanel", RotationTargetList[0].transform, charIdx, helmet, costume._costmeDataIndex
                                 , cloth, weapon, skillSetId, 3, hideCostume, false);

        CharInfoGo.SetActive(true);
        InfoGo.SetActive(false);
    }
    /// <summary> 아이템 디테일 팝업 실행 함수. </summary>
    void SetDetailPopup(NetData._ItemData itemData)
    {
        CurItemData = itemData;
        Debug.Log(string.Format("Click Item UseId={0}, equipId={1}", itemData._useitemDataIndex, itemData._equipitemDataIndex));
        bool isDifferentClass = false;

        NetData._UserInfo charInven = NetData.instance.GetUserInfo();

        if (CurItemData.IsEquipItem())
        {
            LinkPopup[0].SetActive(false);
            LinkPopup[1].SetActive(false);

            int limitLv = CurItemData.GetEquipLowData().LimitLevel;
            //EquipLv.text = string.Format(_LowDataMgr.instance.GetStringCommon(952), limitLv);
            if (limitLv <= charInven._Level && !isDifferentClass)//내 직업이고 레벨이 높다면
            {
                EquipState[0].SetActive(true);
                EquipState[1].SetActive(false);
            }
            else
            {
                EquipState[0].SetActive(false);
                EquipState[1].SetActive(true);
            }

            uint strKey = 0;
            if (BasePanel is EquipmentPanel)
            {
                Item.EquipmentInfo equipLow = CurItemData.GetEquipLowData();
                if (CurItemData._enchant < equipLow.MaxEnchant)
                {
                    strKey = 31;
                }
                else if (0 < equipLow.NextPartsId)
                {
                    strKey = 32;
                }
                else//최대
                {
                    strKey = 1182;
                }
            }
            else
            {
                strKey = 106;//닫기
            }
            if (0 < strKey)
            {
                SetOnOff(MainBtn.transform, true, _LowDataMgr.instance.GetStringCommon(strKey));
            }

            //텍스트 셋팅
            int    grade = itemData.GetEquipLowData().Grade;
            string color = UIHelper.GetItemGradeColor(grade);
            ItemName.text = string.Format("{0}{1}[-] [FFE400]+{2}[-]", color, itemData.GetLocName(), itemData._enchant);
        }
        else
        {
            //EquipLv.text = "";
            EquipState[0].SetActive(false);
            EquipState[1].SetActive(false);
            LinkPopup[0].SetActive(true);
            LinkPopup[1].SetActive(false);

            SetOnOff(MainBtn.transform, true, _LowDataMgr.instance.GetStringCommon(106));
            int count = charInven.GetItemCountForItemId(CurItemData._useitemDataIndex, (byte)eItemType.USE);
            LinkItemSlot[0].SetLowDataItemSlot(CurItemData._useitemDataIndex, (uint)count);
            LinkItemSlot[0].transform.parent.FindChild("Lock").gameObject.SetActive(count <= 0);

            Transform gridTf = LinkScroll.transform.FindChild("Grid");
            List <Item.ContentsListInfo> conList = _LowDataMgr.instance.GetLowDataContentsItemList(CurItemData._useitemDataIndex);
            for (int i = 0; i < conList.Count; i++)
            {
                Item.ContentsListInfo info = conList[i];
                string contentsName        = _LowDataMgr.instance.GetStringCommon(info.ContentsName);
                if (info.ContentsParam != null && 0 < info.ContentsParam.Count)
                {
                    if (contentsName.Contains("{0}") && contentsName.Contains("{1}"))
                    {
                        contentsName = string.Format(contentsName, info.ContentsParam[0], info.ContentsParam[1]);
                    }
                    else if (contentsName.Contains("{0}"))
                    {
                        contentsName = string.Format(contentsName, info.ContentsParam[0]);
                    }
                }

                Transform tf = null;
                if (i < gridTf.childCount)
                {
                    tf = gridTf.GetChild(i);
                }
                else
                {
                    tf            = Instantiate(gridTf.GetChild(0)) as Transform;
                    tf.parent     = gridTf;
                    tf.localScale = Vector3.one;
                }

                tf.gameObject.SetActive(true);

                tf.FindChild("txt").GetComponent <UILabel>().text = contentsName;
                bool isEnter = true;
                if (CheckContentsLink(info, false))//조건 만족
                {
                    tf.FindChild("error_txt").GetComponent <UILabel>().text = "";
                }
                else
                {
                    isEnter = false;

                    string contentsError = _LowDataMgr.instance.GetStringCommon(info.ConditionName);
                    if (info.ConditionParam != null && 0 < info.ConditionParam.Count)
                    {
                        if (contentsError.Contains("{0}") && contentsError.Contains("{1}"))
                        {
                            contentsError = string.Format(contentsError, info.ConditionParam[0], info.ConditionParam[1]);
                        }
                        else if (contentsError.Contains("{0}"))
                        {
                            contentsError = string.Format(contentsError, info.ConditionParam[0]);
                        }
                    }

                    tf.FindChild("error_txt").GetComponent <UILabel>().text = contentsError;
                }

                EventDelegate.Set(tf.FindChild("Btn").GetComponent <UIEventTrigger>().onClick, () => { OnClickContentsLink(info); });
                if (info.ContentsLinkType == 1)//재료조합
                {
                    tf.FindChild("Btn/On/label").GetComponent <UILabel>().text  = _LowDataMgr.instance.GetStringCommon(39);
                    tf.FindChild("Btn/Off/label").GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(39);
                }
                else if (info.ContentsLinkType == 2)//바로가기(던전)
                {
                    tf.FindChild("Btn/On/label").GetComponent <UILabel>().text  = _LowDataMgr.instance.GetStringCommon(249);
                    tf.FindChild("Btn/Off/label").GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(249);
                }

                tf.FindChild("Btn/On").gameObject.SetActive(isEnter);
                tf.FindChild("Btn/Off").gameObject.SetActive(!isEnter);
            }

            gridTf.GetComponent <UIGrid>().repositionNow = true;
            for (int j = conList.Count; j < gridTf.childCount; j++)
            {
                gridTf.GetChild(j).gameObject.SetActive(false);
            }

            if (conList.Count < 4)
            {
                LinkScroll.enabled = false;
            }
            else
            {
                LinkScroll.enabled = true;
            }

            Item.ItemInfo data  = itemData.GetUseLowData();
            string        color = UIHelper.GetItemGradeColor(data == null ? 0 : (int)data.Grade);
            ItemName.text = string.Format("{0}{1}[-] [FFE400][-]", color, itemData.GetLocName());
        }

        //아이템 셋팅
        ItemSlot.SetInvenItemSlot(itemData, null, 0);

        //아이템의 옵션들 셋팅
        byte optionCount = 0;

        Desc.transform.localPosition = SetAbility(itemData, ref optionCount); //어빌리티
        SetDesc(itemData, ref optionCount);                                   //아이템 설명 표현

        OptionScrollView.ResetPosition();
        if (optionCount <= 1)//스크롤 되면 안됨.
        {
            AbilityTf.parent.collider.enabled = false;
        }
        else
        {
            AbilityTf.parent.collider.enabled = true;
        }
    }
    /// <summary> 아이템의 옵션정보 표기 </summary>
    Vector3 SetAbility(NetData._ItemData itemData, ref byte optionCount)
    {
        for (int i = 0; i < Abilitys.Length; i++)
        {
            Abilitys[i].gameObject.SetActive(false);
        }

        int        abilityCount = 0;
        GameObject line         = AbilityTf.FindChild("line_d0").gameObject;

        if (itemData.IsEquipItem())//장비 아이템
        {
            NetData._ItemData mountItemData = NetData.instance.GetUserInfo().GetEquipParts(itemData.EquipPartType);
            bool isCompare = false;
            if (mountItemData != null)                                                         //같은 파츠이면서 착용한 아이템과 다르다면 비교한다.
            {
                if (mountItemData.GetEquipLowData().Class == itemData.GetEquipLowData().Class) //같은 직업군인지
                {
                    isCompare = mountItemData._itemIndex != itemData._itemIndex;
                }
            }

            List <NetData.ItemAbilityData> statList = itemData.StatList;
            abilityCount = statList.Count;
            for (int i = 0; i < abilityCount; i++)
            {
                //float value = (statList[i].Value * 0.1f) + (itemData._enchant + ((itemData._Grade * 10) + itemData._MinorGrade));
                int value = _LowDataMgr.instance.GetItemAbilityValueToInt(statList[i].Value, itemData._enchant);
                Abilitys[i].text = string.Format("{0} {1}", uiMgr.GetAbilityLocName(statList[i].Ability), value);
                Abilitys[i].gameObject.SetActive(true);
            }
        }
        else//사용 아이템
        {
            abilityCount = itemData.StatList.Count;
            for (int i = 0; i < abilityCount; i++)
            {
                NetData.ItemAbilityData data = itemData.StatList[i];
                Abilitys[i].text = string.Format("{0} {1}", uiMgr.GetAbilityLocName(data.Ability)
                                                 , uiMgr.GetAbilityStrValue(data.Ability, data.Value * 0.1f));
                Abilitys[i].gameObject.SetActive(true);
            }
        }

        if (abilityCount == 0)//Option이 없다. 꺼놓고 자신의 좌표를 준다.
        {
            AbilityTf.gameObject.SetActive(false);
            return(AbilityTf.localPosition);
        }

        ++optionCount;
        ++abilityCount;

        AbilityTf.gameObject.SetActive(true);

        ///Line 그리기
        Transform lineTf  = AbilityTf.FindChild("line_d0");
        Vector3   linePos = lineTf.localPosition;

        linePos.y            = -(abilityCount * 27);
        lineTf.localPosition = linePos;

        ///다음에 올 객체에 관한 포지션 값
        Vector3 pos = AbilityTf.localPosition;

        pos.y += (linePos.y - 27);
        return(pos);
    }