コード例 #1
0
ファイル: Equipment.cs プロジェクト: knightlyj/NG
    /// <summary>
    /// 切换武器
    /// </summary>
    /// <param name="idx"></param>
    /// <returns></returns>
    bool SwitchWeapon(int idx)
    {
        if (idx < 0 || idx >= weaponAmount)
        {
            return(false);
        }

        //移除当前使用武器的属性
        if (_weapons[curWeaponIdx] != null)
        {
            WeaponProperties weaponProp = EquipTable.GetWeaponProp(_weapons[curWeaponIdx].Type.weaponId);
            if (weaponProp != null)
            {
                RemoveWeaponProp(bindPlayer, weaponProp);
            }
        }

        //添加要使用的武器的属性
        if (Weapons[idx] != null)
        {
            WeaponProperties weaponProp = EquipTable.GetWeaponProp(_weapons[idx].Type.weaponId);
            if (weaponProp != null)
            {
                AddWeaponProp(bindPlayer, weaponProp);
            }
        }

        curWeaponIdx = idx;

        return(true);
    }
コード例 #2
0
ファイル: Equipment.cs プロジェクト: knightlyj/NG
 //重新计算数值
 public void RecalcProperties()
 {
     if (bindPlayer != null)
     {
         bindPlayer.ResetProperties();
         foreach (Item armor in Armors)
         {
             if (armor != null)
             {
                 ArmorProperties armorProp = EquipTable.GetArmorProp(armor.Type.armorId);
                 AddArmorProp(bindPlayer, armorProp);
             }
         }
         Item curWeapon = CurWeapon;
         if (curWeapon != null)
         {
             WeaponProperties weaponProp = EquipTable.GetWeaponProp(curWeapon.Type.weaponId);
             AddWeaponProp(bindPlayer, weaponProp);
         }
     }
 }
コード例 #3
0
ファイル: Equipment.cs プロジェクト: knightlyj/NG
    /// <summary>
    /// 装备武器
    /// </summary>
    /// <param name="weapon"></param>
    /// <param name="idx"></param>
    /// <param name="preWeapon"></param>
    /// <returns></returns>
    public bool PutOnWeapon(Item weapon, int idx, out Item preWeapon)
    {
        preWeapon = null;
        if (idx < 0 || idx >= weaponAmount || weapon == null || !weapon.Type.IsWeapon)
        {
            return(false);
        }

        WeaponProperties weaponProp = EquipTable.GetWeaponProp(weapon.Type.weaponId);

        if (weaponProp != null)
        {
            //记下原来的武器
            if (_weapons[idx] != null)
            {
                preWeapon = _weapons[idx];
            }

            //装备新武器
            _weapons[idx] = weapon;

            if (idx == curWeaponIdx) //如果切换的是当前使用武器,则要计算属性
            {
                if (preWeapon != null)
                {//之前格子里有武器,则移除属性
                    WeaponProperties preProp = EquipTable.GetWeaponProp(preWeapon.Type.weaponId);
                    if (preProp != null)
                    {
                        RemoveWeaponProp(bindPlayer, preProp);
                    }
                }
                //加上新武器的属性
                AddWeaponProp(bindPlayer, weaponProp);
            }

            RaiseEquipChanged();
        }
        return(true);
    }
コード例 #4
0
ファイル: Equipment.cs プロジェクト: knightlyj/NG
    /// <summary>
    /// 取下武器
    /// </summary>
    /// <param name="idx"></param>
    /// <returns></returns>
    public Item TakeOffWeapon(int idx)
    {
        if (idx < 0 || idx >= weaponAmount)
        {
            return(null);
        }

        Item preWeapon = Weapons[idx]; //之前装备的武器

        Weapons[idx] = null;           //从已装武器列表中移除
        if (idx == curWeaponIdx && preWeapon != null)
        {
            WeaponProperties weaponProp = EquipTable.GetWeaponProp(preWeapon.Type.weaponId);
            if (weaponProp != null)
            {
                RemoveWeaponProp(bindPlayer, weaponProp);
            }
        }

        RaiseEquipChanged();
        return(preWeapon);
    }
コード例 #5
0
ファイル: UIItemTips.cs プロジェクト: knightlyj/NG
    void GenTips(Item item, ShowPrice showPrice = ShowPrice.None)
    {
        //name
        StringBuilder build = new StringBuilder();

        switch (item.Type.quality)
        {
        case ItemQuality.White:
            build.Append("<color=white>" + item.Type.itemName);
            break;

        case ItemQuality.Green:
            build.Append("<color=green>" + item.Type.itemName);
            break;

        case ItemQuality.Blue:
            build.Append("<color=blue>" + item.Type.itemName);
            break;

        case ItemQuality.Golden:
            build.Append("<color=orange>" + item.Type.itemName);
            break;

        case ItemQuality.Red:
            build.Append("<color=red>" + item.Type.itemName);
            break;

        case ItemQuality.Purple:
            build.Append("<color=purple>" + item.Type.itemName);
            break;

        default:
            build.Append("<color=white>" + item.Type.itemName);     //默认用白色
            break;
        }


        //叠加数量
        if (item.Type.CanStack)
        {
            build.Append(" (" + item.amount + ")");
        }
        build.Append("</color>");
        build.Append("\n");

        //这里附加装备信息
        if (item.Type.IsWeapon)
        {
            WeaponProperties weaponProp = EquipTable.GetWeaponProp(item.Type.weaponId);
            if (weaponProp == null)
            {
            }
            else
            {
                build.Append("<color=white>");
                //攻击
                build.Append(string.Format(TextResources.atkFormat, weaponProp.minAtkBonus, weaponProp.maxAtkBonus));
                //攻击速率,为间隔的倒数
                build.Append(string.Format(TextResources.atkInvervalFormat, 1 / weaponProp.atkInterval));
                if (weaponProp.crtlChanceBonus != 0)
                { //暴击率
                    build.Append(string.Format(TextResources.crtlChanceFormat, Mathf.Round(weaponProp.crtlChanceBonus * 100)));
                }
                if (weaponProp.crtlRateBonus != 0)
                {  //暴击伤害
                    build.Append(string.Format(TextResources.crtlRateFormat, Mathf.Round(weaponProp.crtlRateBonus * 100)));
                }
                if (weaponProp.rcrBonus != 0)
                {   //rcr
                    build.Append(string.Format(TextResources.rcrFormat, Mathf.Round(weaponProp.rcrBonus * 100)));
                }
                build.Append("</color>");
            }
        }
        else if (item.Type.IsArmor)
        {
            ArmorProperties armorProp = EquipTable.GetArmorProp(item.Type.armorId);
            if (armorProp == null)
            {
            }
            else
            {
                build.Append("<color=white>");
                //防御
                build.Append(string.Format(TextResources.defFormat, armorProp.defBonus));
                if (armorProp.hpBonus != 0)
                {   //血量
                    build.Append(string.Format(TextResources.hpFormat, armorProp.hpBonus));
                }
                if (armorProp.minAtkBonus != 0 || armorProp.maxAtkBonus != 0)
                {   //攻击
                    build.Append(string.Format(TextResources.atkFormat, armorProp.minAtkBonus, armorProp.maxAtkBonus));
                }
                if (armorProp.atkSpdBonus != 0)
                {   //攻速
                    build.Append(string.Format(TextResources.atkSpdFormat, Mathf.Round((armorProp.atkSpdBonus * 100))));
                }
                if (armorProp.spdScaleBonus != 0)
                {   //速度
                    build.Append(string.Format(TextResources.spdFormat, Mathf.Round(armorProp.spdScaleBonus * 100)));
                }
                if (armorProp.jmpScaleBonus != 0)
                {   //跳跃
                    build.Append(string.Format(TextResources.jmpFormat, Mathf.Round(armorProp.jmpScaleBonus * 100)));
                }
                if (armorProp.crtlChanceBonus != 0)
                {   //暴击率
                    build.Append(string.Format(TextResources.crtlChanceFormat, Mathf.Round(armorProp.crtlChanceBonus * 100)));
                }
                if (armorProp.crtlRateBonus != 0)
                {   //暴击伤害
                    build.Append(string.Format(TextResources.crtlRateFormat, Mathf.Round(armorProp.crtlRateBonus * 100)));
                }
                if (armorProp.rcrBonus != 0)
                {   //rcr
                    build.Append(string.Format(TextResources.rcrFormat, Mathf.Round(armorProp.rcrBonus * 100)));
                }
                build.Append("</color>");
            }
        }

        //附魔属性

        //comment
        build.Append(item.Type.comment);
        build.Append("\n");

        //usability
        if (item.Type.IsEquipment)
        {
            build.Append("equipment");
        }

        if (item.Type.IsConsumable)
        {
            build.Append("&consumable");
        }

        //if (item.Type.IsMaterial)
        //{
        //    build.Append("&material");
        //}

        //价格显示
        switch (showPrice)
        {
        case ShowPrice.None:
            break;

        case ShowPrice.Buy:
            build.Append("\n");
            build.Append("<color=yellow>");
            build.Append("买价: " + item.buyPrice);
            build.Append("</color>");
            break;

        case ShowPrice.Sell:
            build.Append("\n");
            build.Append("<color=white>");
            build.Append("卖价: " + item.sellPrice);
            build.Append("</color>");
            break;
        }

        txt.text = build.ToString();
    }