Beispiel #1
0
    private void OnGMLockClass(Event_ e)
    {
        var nc = proto;

        var c = (int)e.param1;
        var i = (int)e.param2;

        var ci = c > 0 ? ConfigManager.Get <CreatureInfo>(c) : null;

        m_lockedClass  = ci ? ci.ID : m_proto;
        m_lockedGender = ci ? ci.gender : m_gender;

        var w = m_lockedClass == m_proto && i < 1 ? null : WeaponInfo.GetWeapon(m_lockedClass, i);

        if (w == null || w.isEmpty)
        {
            m_lockedElementType = m_elementType;
        }
        else
        {
            var a = ConfigManager.Get <WeaponAttribute>(w.weaponItemId);
            m_lockedElementType = a == null ? m_elementType : (CreatureElementTypes)a.elementType;
        }

        Logger.LogDetail("Lock class <b><color=#66EECC>[weapon:{0}, gender:{1}, weaponItem:{2}, elementType:{3}]</color></b>", proto, gender, w != null && !w.isEmpty ? w.weaponItemId : -1, elementType);

        DispatchEvent("OnPostGmLockClass", Event_.Pop(nc == proto));
    }
Beispiel #2
0
    private void SetElementDamageTextData(CreatureElementTypes elementType, int elementDamage)
    {
        Text t = GetTargetText(EnumDamageDisplayType.Element, (int)elementType);

        if (t)
        {
            t.gameObject.SetActive(elementDamage > 0);
            t.text = elementDamage.ToString();
        }
    }
Beispiel #3
0
    private void RefreshPublic(PropItemInfo propInfo)
    {
        if (!propInfo)
        {
            return;
        }

        if (propInfo.itemType == PropType.Weapon)
        {
            WeaponAttribute weaponAttributes = ConfigManager.Get <WeaponAttribute>(propInfo.ID);
            //武器名字
            if (weapon_name)
            {
                weapon_name.gameObject.SetActive(true);
                weapon_name.text = propInfo.itemName;
            }

            //其他名字
            if (other_name)
            {
                other_name.gameObject.SetActive(false);
            }

            CreatureElementTypes type = weaponAttributes ? (CreatureElementTypes)weaponAttributes.elementType : CreatureElementTypes.Count;

            //武器后面的属性描述
            string attributeName = string.Empty;
            switch (type)
            {
            case CreatureElementTypes.Wind: attributeName = ConfigText.GetDefalutString(TextForMatType.EquipUIText, 15); break;

            case CreatureElementTypes.Fire: attributeName = ConfigText.GetDefalutString(TextForMatType.EquipUIText, 16); break;

            case CreatureElementTypes.Water: attributeName = ConfigText.GetDefalutString(TextForMatType.EquipUIText, 17); break;

            case CreatureElementTypes.Thunder: attributeName = ConfigText.GetDefalutString(TextForMatType.EquipUIText, 18); break;

            case CreatureElementTypes.Ice: attributeName = ConfigText.GetDefalutString(TextForMatType.EquipUIText, 19); break;

            default: break;
            }
            weapon_attbitue.text = attributeName;

            //左边图标
            foreach (var attr in leftAttrDic)
            {
                attr.Value.gameObject.SetActive((int)attr.Key == propInfo.subType);
            }

            if (propInfo.subType == (int)WeaponSubType.Gun)
            {
                //星级
                for (int i = 0; i < starsImages.Length; i++)
                {
                    starsImages[i].gameObject.SetActive(i < propInfo.quality + 1);
                }
                //底板
                for (int i = 0; i < bgQualityImages.Length; i++)
                {
                    bgQualityImages[i].gameObject.SetActive(i + 1 == propInfo.quality);
                }
            }
            else//武器要特殊处理底板
            {
                int index = (data.InvalidGrowAttr() ? 0 : data.growAttr.equipAttr.star) + 1;
                //底板
                for (int i = 0; i < bgQualityImages.Length; i++)
                {
                    bgQualityImages[i].gameObject.SetActive(i + 1 == index);
                }
                //星级
                for (int i = 0; i < starsImages.Length; i++)
                {
                    starsImages[i].gameObject.SetActive(i < index);
                }
            }
        }
        else
        {
            if (weapon_name)
            {
                weapon_name.gameObject.SetActive(false);
            }
            if (other_name)
            {
                other_name.gameObject.SetActive(true);
                other_name.text = propInfo.itemName;
            }

            //星级
            for (int i = 0; i < starsImages.Length; i++)
            {
                starsImages[i].gameObject.SetActive(i < propInfo.quality);
            }
        }

        //换icon
        if (propInfo)
        {
            AtlasHelper.SetItemIcon(icon, propInfo);
        }
    }
Beispiel #4
0
    public void ForingItem(PItem item, bool addLockEvent = true)
    {
        if (item == null)
        {
            return;
        }
        ForingUse();
        PropItemInfo    prop             = ConfigManager.Get <PropItemInfo>(item.itemTypeId);
        WeaponAttribute weaponAttributes = ConfigManager.Get <WeaponAttribute>(item.itemTypeId);

        if (!prop)
        {
            return;
        }
        //名字
        CreatureElementTypes elemrntType = weaponAttributes ? (CreatureElementTypes)weaponAttributes.elementType : CreatureElementTypes.Count;

        if (weaponName)
        {
            weaponName.text = prop.itemName;
        }
        if (levelTxt)
        {
            levelTxt.text = "+" + item.growAttr.equipAttr.strength.ToString();
        }
        elementIcon.SafeSetActive(false);
        //武器属性 武器图标

        if (prop.itemType == PropType.Weapon && prop.subType != (byte)WeaponSubType.Gun)
        {
            elementIcon.SafeSetActive(true);
            AtlasHelper.SetShared(elementIcon, m_element[(int)(elemrntType) - 1]);
        }

        int index = Module_Forging.instance.GetWeaponIndex(prop);

        if (index != -1)
        {
            AtlasHelper.SetShared(typeIcon, WEAPON_TYPE_IMG_NAMES[index]);
        }

        //
        //已装备
        bool isContains = Module_Equip.instance.currentDressClothes.Contains(item);

        if (Module_Equip.instance.weapon != null && Module_Equip.instance.offWeapon != null)
        {
            if (item.itemId == Module_Equip.instance.weapon.itemId || item.itemId == Module_Equip.instance.offWeapon.itemId)
            {
                isContains = true;
            }
        }
        equiped.SafeSetActive(isContains);

        for (int i = 0; i < stars.Length; i++)
        {
            stars[i].SafeSetActive(i < prop.quality);
        }

        //锻造等级
        m_leftLevel.SafeSetActive(true);
        var str = (ConsumePercentSubType)item.growAttr.equipAttr.star + ConfigText.GetDefalutString(224, 23);

        Util.SetText(m_leftLevel, str);

        if (addLockEvent)
        {
            SetLock(item);
        }
    }
Beispiel #5
0
    public void ShowAttDamageNumber(int weaponDamage, bool isCritical = false, int elementDamage = 0, CreatureElementTypes type = CreatureElementTypes.Fire)
    {
        //Logger.LogWarning("weapon damage = {0} element damage = {1}  element type = {2}", weaponDamage,elementDamage,type);
        InitComponent();
        gameObject.SetActive(true);
        InitTextData();
        EnumDamageDisplayType t = (weaponDamage > 0 ? EnumDamageDisplayType.Attack : EnumDamageDisplayType.None) | (elementDamage > 0 ? EnumDamageDisplayType.Element : EnumDamageDisplayType.None);

        SetDamageParentVisible(t);
        SetNormalTextData(weaponDamage, isCritical);
        SetElementDamageTextData(type, elementDamage);
        m_tween?.PlayForward();
    }
Beispiel #6
0
 void _Packet(ScRoleElementType p)
 {
     m_elementType = (CreatureElementTypes)p.elementType;
 }
 /// <summary>
 /// Get target element defense
 /// </summary>
 /// <param name="elementType">Target element type</param>
 /// <returns></returns>
 public int GetElementDefense(CreatureElementTypes elementType)
 {
     return(GetElementDefense((int)elementType));
 }