/// <summary>
 /// 监听角色状态更改(主要是装备)
 /// </summary>
 /// <param name="iPlayerState"></param>
 /// <param name="fieldName"></param>
 private void CallBackIPlayerStateState(IPlayerState iPlayerState, string fieldName)
 {
     if (!playerAnimator)
     {
         return;
     }
     //角色装备发生变化
     if (string.Equals(fieldName, GameState.Instance.GetFieldName <IPlayerState, bool>(temp => temp.EquipmentChanged)))
     {
         PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>();
         PlayGoods   playGoods   = playerState.PlayerAllGoods.Where(temp => temp.GoodsLocation == GoodsLocation.Wearing && temp.leftRightArms != null && temp.leftRightArms.Value == true).FirstOrDefault();
         if (playGoods != null)
         {
             EnumGoodsType enumGoodsType = playGoods.GoodsInfo.EnumGoodsType;
             //与1000相除求出剔除了具体类型后的上层一分类
             //然后与100求余计算出具体的武器分类
             //因为武器的分类是从10开始的因此减去10
             //动画的第一个分类留空为0表示空手,因此加1
             int num = (((int)enumGoodsType) / 1000) % 100 - 10 + 1;
             //如果是武器
             if (enumGoodsType > EnumGoodsType.Arms && enumGoodsType < EnumGoodsType.Arms + 100000)
             {
                 playerAnimator.SetFloat("WeaponType", num);
             }
             else //否则空手
             {
                 playerAnimator.SetFloat("WeaponType", 0);
             }
         }
         else
         {
             playerAnimator.SetFloat("WeaponType", 0);//0表示空手
         }
     }
 }
Ejemplo n.º 2
0
    /// <summary>
    /// 通过类型获取节点对象
    /// </summary>
    /// <param name="targetType"></param>
    /// <returns></returns>
    private static GoodsNode GetGoodNode(EnumGoodsType targetType)
    {
        GoodsNode goodsNode = null;

        goodsNodeDic.TryGetValue(targetType, out goodsNode);
        return(goodsNode);
    }
Ejemplo n.º 3
0
        /// <summary>
        /// 将字符串转换成数据
        /// </summary>
        /// <param name="value">数据</param>
        public void SetData(string value)
        {
            string[] lines = value.Split(dataLineSplit, StringSplitOptions.RemoveEmptyEntries);
            foreach (string line in lines)
            {
                string[] datas = line.Split(dataValueSplit, StringSplitOptions.RemoveEmptyEntries);
                if (datas.Length == 2)
                {
                    switch (datas[0])
                    {
                    case "itemType":
                        try { itemType = (EnumGoodsType)Enum.Parse(typeof(EnumGoodsType), datas[1].Trim()); } catch { }
                        break;

                    case "num":
                        int.TryParse(datas[1].Trim(), out num);
                        break;

                    case "minQuality":
                        try { minQuality = (EnumQualityType)Enum.Parse(typeof(EnumQualityType), datas[1].Trim()); } catch { }
                        break;

                    case "maxQuality":
                        try { maxQuality = (EnumQualityType)Enum.Parse(typeof(EnumQualityType), datas[1].Trim()); } catch { }
                        break;
                    }
                }
            }
        }
Ejemplo n.º 4
0
    /// <summary>
    /// 判断给定的父子关系是否存在
    /// </summary>
    /// <param name="child">子节点</param>
    /// <param name="parent">父节点</param>
    /// <param name="ignoreDeep">是否忽略深度,如果忽略则会忽略两者之间的节点</param>
    /// <returns></returns>
    public static bool IsChildGoodsNode(EnumGoodsType child, EnumGoodsType parent, bool ignoreDeep = true)
    {
        if ((int)child < (int)parent)
        {
            return(false);
        }
        if ((int)child - (int)parent > 1000000)
        {
            return(false);
        }
        GoodsNode childNode  = GetGoodNode(child);
        GoodsNode parentNode = GetGoodNode(parent);

        if (childNode == null || parentNode == null)
        {
            return(false);
        }
        if (!ignoreDeep)
        {
            return(Equals(childNode.Parent, parentNode));
        }
        else
        {
            GoodsNode _parentNode = childNode;
            while (_parentNode != null)
            {
                if (Equals(_parentNode, parentNode))
                {
                    return(true);
                }
                _parentNode = _parentNode.Parent;
            }
            return(false);
        }
    }
Ejemplo n.º 5
0
 /// <summary>
 /// 判断是否是双手武器
 /// </summary>
 /// <param name="enumGoodsType"></param>
 /// <returns></returns>
 public static bool IsTwoHandedWeapon(EnumGoodsType enumGoodsType)
 {
     return(GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.TwoHandedSword) || //双手剑
            GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Arch) ||           //弓
            GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.CrossBow) ||       //弩
            GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.LongRod));         //长杖
 }
Ejemplo n.º 6
0
 public Goods(EnumGoodsType enumGoodsType, string name, int weight, int price, string expain)
 {
     this.enumGoodsType = enumGoodsType;
     this.GoodsName     = name;
     this.Weight        = weight;
     this.Price         = price;
     this.Explain       = expain;
 }
Ejemplo n.º 7
0
    /// <summary>
    /// 点击条目后的动作
    /// </summary>
    private void ItemClickAction()
    {
        //卖出物品到商店
        if (SelectGoods == null)
        {
            return;
        }
        PlayGoods playGoods = SelectGoods.value as PlayGoods;

        if (playGoods == null)
        {
            return;
        }
        //计算物品的价格
        int sprice = GoodsSprice(playGoods.GoodsInfo);

        playerState.Sprice        += sprice / 2;
        iPlayerState.SpriteChanged = true;//设置金钱发生变化

        EnumGoodsType baseGoodsType = playGoods.GoodsInfo.EnumGoodsType;

        //如果是药品或道具等消耗品
        if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem)
        {
            //商人自身是否有该消耗品
            PlayGoods businessman_playGoods = businessman.BaseList.FirstOrDefault(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType);
            //商人回收道具是否有该消耗品
            if (businessman_playGoods == null)
            {
                businessman_playGoods = businessman.SellPropsList.FirstOrDefault(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType);
            }
            //如果还没有则添加到回收栏
            if (businessman_playGoods == null)
            {
                businessman_playGoods = new PlayGoods(playGoods.ID, playGoods.GoodsInfo, GoodsLocation.None);
                businessman.SellPropsList.Add(businessman_playGoods);
            }
            businessman_playGoods.Count++;
            playGoods.Count--;
            //如果当前数量为0则移除
            if (playGoods.Count <= 0)
            {
                playerState.PlayerAllGoods.Remove(playGoods);
            }
        }
        else
        {
            //移除玩家身上的道具
            playGoods.GoodsLocation = GoodsLocation.None;
            playerState.PlayerAllGoods.Remove(playGoods);
            //将道具转移到商人的回收栏
            businessman.SellPropsList.Add(playGoods);
            //显示列表减少
            RemoveItemShow(playGoods);
        }
    }
 /// <summary>
 /// 根据物品枚举获取基本信息
 /// </summary>
 /// <param name="enumGoodsType"></param>
 /// <returns></returns>
 public Goods this[EnumGoodsType enumGoodsType]
 {
     get
     {
         int intType = (int)enumGoodsType;
         if (allGoodsInfo.ContainsKey(intType))
         {
             return(allGoodsInfo[intType]);
         }
         else
         {
             return(null);
         }
     }
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 用于检测物理技能和普通攻击
 /// </summary>
 /// <param name="iAnimatorState"></param>
 /// <param name="fieldName"></param>
 private void IAnimatorStateChanged(IAnimatorState iAnimatorState, string fieldName)
 {
     if (string.Equals(fieldName, GameState.Instance.GetFieldName <IAnimatorState, EnumPhysicAnimatorType>(temp => temp.PhysicAnimatorType)))
     {
         if (iAnimatorState.PhysicAnimatorType == EnumPhysicAnimatorType.Skill)
         {
             PhysicSkillAudioStruct physicSkillAudioStruct = physicSkillAudios.FirstOrDefault(temp => temp.SkillType == iAnimatorState.PhysicAnimatorSkillType);
             if (physicSkillAudioStruct != null)
             {
                 audioSources[2].clip = physicSkillAudioStruct.Clip;
                 audioSources[2].Play();
             }
         }
         else if (iAnimatorState.PhysicAnimatorType == EnumPhysicAnimatorType.Normal)
         {
             PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>();
             PlayGoods   playGoods   = playerState.PlayerAllGoods.Where(temp => temp.GoodsLocation == GoodsLocation.Wearing && temp.leftRightArms != null && temp.leftRightArms.Value == false).FirstOrDefault();
             if (playGoods != null)
             {
                 EnumGoodsType enumGoodsType = playGoods.GoodsInfo.EnumGoodsType;
                 //与1000相除求出剔除了具体类型后的上层一分类
                 //然后与100求余计算出具体的武器分类
                 //因为武器的分类是从10开始的因此减去10
                 //动画的第一个分类留空为0表示空手,因此加1
                 int num = (((int)enumGoodsType) / 1000) % 100 - 10 + 1;
                 PhysicNormalAudioStruct physicNormalAudioStruct = physicNormalAudios.FirstOrDefault(temp => temp.WeaponNum == num);
                 if (physicNormalAudioStruct != null)
                 {
                     if (iAnimatorState.PhycisActionNowType == 0)
                     {
                         audioSources[2].clip = physicNormalAudioStruct.Clip1;
                     }
                     else if (iAnimatorState.PhycisActionNowType == 1)
                     {
                         audioSources[2].clip = physicNormalAudioStruct.Clip2;
                     }
                     else if (iAnimatorState.PhycisActionNowType == 2)
                     {
                         audioSources[2].clip = physicNormalAudioStruct.Clip3;
                     }
                     audioSources[2].Play();
                 }
             }
         }
     }
 }
Ejemplo n.º 10
0
    /// <summary>
    /// 获取指定物品的大类
    /// </summary>
    /// <param name="child">子节点</param>
    /// <param name="deep">检索深度,默认为1(即上下层关系 )</param>
    /// <returns></returns>
    public static EnumGoodsType?GetParentGoodsType(EnumGoodsType child, int deep = 1)
    {
        GoodsNode childNode = GetGoodNode(child);

        if (childNode == null)
        {
            return(null);
        }
        GoodsNode parentNode = childNode;

        while (deep > 0 && parentNode != null)
        {
            deep--;
            parentNode = parentNode.Parent;
        }
        if (parentNode != null)
        {
            return(parentNode.GoodsType);
        }
        return(null);
    }
Ejemplo n.º 11
0
    /// <summary>
    /// 点击条目后的动作
    /// </summary>
    private void ItemClickAction()
    {
        //购买物品到包裹
        if (SelectGoods == null)
        {
            return;
        }
        PlayGoods playGoods = SelectGoods.value as PlayGoods;

        if (playGoods == null)
        {
            return;
        }
        //判断商品的价格,如果可以购买则减去金钱
        int sprice = GoodsSprice(playGoods.GoodsInfo);

        if (playerState.Sprice < sprice)
        {
            return;
        }
        playerState.Sprice        -= sprice;
        iPlayerState.SpriteChanged = true;//设置金钱发生变化

        EnumGoodsType baseGoodsType = playGoods.GoodsInfo.EnumGoodsType;

        //如果是药品或道具等消耗品
        if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem)
        {
            //玩家自身是否存在消耗品
            PlayGoods player_playGoods = playerState.PlayerAllGoods.FirstOrDefault(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType);
            if (player_playGoods != null)//如果存在则直接加count
            {
                player_playGoods.Count++;
            }
            else//如果不存在则创建
            {
                PlayGoods newPlayGoods = new PlayGoods(playGoods.ID, playGoods.GoodsInfo, GoodsLocation.Package);
                newPlayGoods.Count       = 1;
                newPlayGoods.QualityType = playGoods.QualityType;
                playerState.PlayerAllGoods.Add(newPlayGoods);
            }
            //商店数量减少
            playGoods.Count--;
            if (playGoods.Count <= 0)//如果当前数量归0则移除
            {
                if (businessman.BaseList.Contains(playGoods))
                {
                    businessman.BaseList.Remove(playGoods);
                }
                else
                {
                    businessman.SellPropsList.Remove(playGoods);
                }
                //显示列表减少
                RemoveItemShow(playGoods);
            }
            else//如果没有归零则修改数量的显示
            {
                ChangeItemsShow(playGoods);
            }
        }
        else
        {
            //将道具转移到玩家身上
            playGoods.GoodsLocation = GoodsLocation.Package;
            playerState.PlayerAllGoods.Add(playGoods);
            //移除商人身上的道具
            if (businessman.BaseList.Contains(playGoods))
            {
                businessman.BaseList.Remove(playGoods);
            }
            else
            {
                businessman.SellPropsList.Remove(playGoods);
            }
            //显示列表减少
            RemoveItemShow(playGoods);
        }
    }
 public override void ActionTrigger()
 {
     base.ActionTrigger();
     if (!treasureBoxState)
     {
         //触发宝箱
         treasureBoxState = true;
         if (animator != null)
         {
             animator.SetBool("TreasureBox", treasureBoxState);
         }
         //保存状态
         SaveDataAction(true);
         //发放道具
         Dictionary <EnumGoodsType, ActionInteractiveDataInfo.TreasureBoxStruct> dataDic = ActionInteractiveDataInfo.OtherValue as Dictionary <EnumGoodsType, ActionInteractiveDataInfo.TreasureBoxStruct>;
         if (dataDic != null)
         {
             //实例化数据并填入存档中
             GoodsMetaInfoMations goodsMetaInfoMations = DataCenter.Instance.GetMetaData <GoodsMetaInfoMations>();
             PlayerState          playerState          = DataCenter.Instance.GetEntity <PlayerState>();
             foreach (KeyValuePair <EnumGoodsType, ActionInteractiveDataInfo.TreasureBoxStruct> data in dataDic)
             {
                 EnumGoodsType   baseGoodsType  = data.Key;
                 EnumQualityType qualityTypeMin = data.Value.MinQualityType;
                 EnumQualityType qualityTypeMax = data.Value.MaxQualityType;
                 Goods           addGoods       = goodsMetaInfoMations[baseGoodsType].Clone(true);//获取需要添加物品的原始属性
                 //如果是道具或炼金物品则可以叠加,但是没有品质
                 if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem)
                 {
                     //尝试从玩家道具中获取id,如果没有则新建一个(这个id并没有什么卵用)
                     int addGoodsID = playerState.PlayerAllGoods.Where(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType).Select(temp => temp.ID).FirstOrDefault();
                     if (addGoodsID == 0)
                     {
                         addGoodsID = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>());
                         PlayGoods playGoods = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package);
                         playGoods.QualityType = EnumQualityType.White;
                         playGoods.Count       = data.Value.Count;
                         playerState.PlayerAllGoods.Add(playGoods);
                     }
                     else
                     {
                         PlayGoods playGoods = playerState.PlayerAllGoods.FirstOrDefault(temp => temp.ID == addGoodsID);
                         playGoods.Count += data.Value.Count;
                     }
                 }
                 //如果不是道具和炼金物品则不可以叠加,但是存在品质
                 else
                 {
                     int             addGoodsID  = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>());
                     EnumQualityType qualityType = (EnumQualityType)UnityEngine.Random.Range((int)qualityTypeMin, (int)qualityTypeMax + 1);
                     // 根据品质设置属性
                     if (qualityType != EnumQualityType.Red)//如果是唯一的则不用改变属性
                     {
                         //将所有属性随机
                         addGoods.goodsAbilities.ForEach(temp =>
                         {
                             float min  = temp.Value * 0.8f;
                             float max  = temp.Value * 1.2f;
                             temp.Value = (int)UnityEngine.Random.Range(min, max);
                         });
                         //取出用于分割固定属性以及随机属性的条目
                         GoodsAbility goodsAbility_nothing = addGoods.goodsAbilities.FirstOrDefault(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing);
                         int          index = -1;
                         if (goodsAbility_nothing != null)
                         {
                             index = addGoods.goodsAbilities.IndexOf(goodsAbility_nothing);
                         }
                         //存在分割属性
                         if (index > -1 && index + 1 < addGoods.goodsAbilities.Count)
                         {
                             //取出分割项后的可变项
                             List <EnumGoodsAbility> randomAbilitys = Enumerable.Range(index + 1, addGoods.goodsAbilities.Count - index - 1).
                                                                      Select(temp => addGoods.goodsAbilities[temp]).Select(temp => temp.AbilibityKind).ToList();
                             int saveAbilityCount = (int)qualityType;//可保留的属性
                             while (randomAbilitys.Count > saveAbilityCount)
                             {
                                 int removeIndex = UnityEngine.Random.Range(0, randomAbilitys.Count);
                                 EnumGoodsAbility removeGoodsAbility = randomAbilitys[removeIndex];
                                 addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == removeGoodsAbility);
                                 randomAbilitys.RemoveAt(removeIndex);
                             }
                         }
                     }
                     addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing);
                     PlayGoods playGoods = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package);
                     playGoods.QualityType = qualityType;
                     playGoods.Count       = 1;
                     playerState.PlayerAllGoods.Add(playGoods);
                 }
             }
         }
     }
 }
Ejemplo n.º 13
0
 /// <summary>
 /// 判断是否是主手武器
 /// </summary>
 /// <param name="enumGoodsType"></param>
 /// <returns></returns>
 public static bool IsRightOneHandedWeapon(EnumGoodsType enumGoodsType)
 {
     return(GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.SingleHanedSword) || //单手剑
            GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Dagger) ||           //匕首
            GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.ShortRod));          //短杖
 }
Ejemplo n.º 14
0
 public Goods(EnumGoodsType enumGoodsType)
 {
     this.enumGoodsType = enumGoodsType;
 }
Ejemplo n.º 15
0
    /// <summary>
    /// 创建物品并将物品保存到存档中
    /// </summary>
    /// <param name="playerState"></param>
    /// <param name="goodsMetaInfoMations"></param>
    /// <param name="baseGoodsType"></param>
    /// <param name="minQuality"></param>
    /// <param name="maxQuality"></param>
    /// <param name="count"></param>
    /// <returns></returns>
    public static PlayGoods CreatePlayGoodsAddToPlayData(PlayerState playerState, GoodsMetaInfoMations goodsMetaInfoMations, EnumGoodsType baseGoodsType, EnumQualityType minQuality, EnumQualityType maxQuality, int count)
    {
        PlayGoods playGoods = new PlayGoods();
        Goods     addGoods  = goodsMetaInfoMations[baseGoodsType].Clone(true);//获取需要添加物品的原始属性

        //如果是道具或炼金物品则可以叠加,但是没有品质
        if (baseGoodsType > EnumGoodsType.Item && baseGoodsType < EnumGoodsType.SpecialItem)
        {
            int addGoodsID = playerState.PlayerAllGoods.Where(temp => temp.GoodsInfo.EnumGoodsType == baseGoodsType).Select(temp => temp.ID).FirstOrDefault();
            if (addGoodsID == 0)
            {
                addGoodsID            = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>());
                playGoods             = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package);
                playGoods.Count       = count;
                playGoods.QualityType = EnumQualityType.White;
                playerState.PlayerAllGoods.Add(playGoods);
            }
            else
            {
                playGoods.Count += count;
            }
        }
        else
        {
            int             addGoodsID  = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity <GameRunnedState>());
            EnumQualityType qualityType = (EnumQualityType)UnityEngine.Random.Range((int)minQuality, (int)maxQuality + 1);
            float           minRate     = ((int)qualityType) * 0.2f + 0.8f;
            float           maxRate     = minRate + 0.2f;
            // 根据品质设置属性
            if (qualityType != EnumQualityType.Red)//如果是唯一的则不用改变属性
            {
                //将所有属性随机(根据品质)
                addGoods.goodsAbilities.ForEach(temp =>
                {
                    float min  = temp.Value * minRate;
                    float max  = temp.Value * maxRate;
                    temp.Value = (int)UnityEngine.Random.Range(min, max);
                });
                //取出用于分割固定属性以及随机属性的条目
                GoodsAbility goodsAbility_nothing = addGoods.goodsAbilities.FirstOrDefault(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing);
                int          index = -1;
                if (goodsAbility_nothing != null)
                {
                    index = addGoods.goodsAbilities.IndexOf(goodsAbility_nothing);
                }
                //存在分割属性
                if (index > -1 && index + 1 < addGoods.goodsAbilities.Count)
                {
                    //取出分割项后的可变项
                    List <EnumGoodsAbility> randomAbilitys = Enumerable.Range(index + 1, addGoods.goodsAbilities.Count - index - 1).
                                                             Select(temp => addGoods.goodsAbilities[temp]).Select(temp => temp.AbilibityKind).ToList();
                    int saveAbilityCount = (int)qualityType;//可保留的属性
                    while (randomAbilitys.Count > saveAbilityCount)
                    {
                        int removeIndex = UnityEngine.Random.Range(0, randomAbilitys.Count);
                        EnumGoodsAbility removeGoodsAbility = randomAbilitys[removeIndex];
                        addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == removeGoodsAbility);
                        randomAbilitys.RemoveAt(removeIndex);
                    }
                }
                addGoods.goodsAbilities.RemoveAll(temp => temp.AbilibityKind == EnumGoodsAbility.Nothing);
                playGoods             = new PlayGoods(addGoodsID, addGoods, GoodsLocation.Package);
                playGoods.QualityType = qualityType;
                playGoods.Count       = 1;
                playerState.PlayerAllGoods.Add(playGoods);
            }
        }
        return(playGoods);
    }
Ejemplo n.º 16
0
 /// <summary>
 /// 判断是否是副手武器
 /// </summary>
 /// <param name="enumGoodsType"></param>
 /// <returns></returns>
 public static bool IsLeftOneHandedWeapon(EnumGoodsType enumGoodsType)
 {
     return(GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Shield) ||     //盾牌
            GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.CrystalBall)); //水晶球
 }
Ejemplo n.º 17
0
 /// <summary>
 /// 开始道具的功能
 /// 如果是装备则替换,如果是药水则恢复
 /// </summary>
 private void ItemAction()
 {
     if (focusUIListItem)
     {
         //物品对象
         PlayGoods     playGoods     = (PlayGoods)focusUIListItem.value;
         EnumGoodsType enumGoodsType = playGoods.GoodsInfo.EnumGoodsType;
         int           goodsTypeInt  = (int)enumGoodsType;
         if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Equipment))//如果是装备类型则替换装备
         {
             //如果是副手武器
             if (GoodsStaticTools.IsLeftOneHandedWeapon(enumGoodsType))
             {
                 //需要判断当前是否佩戴了双手武器以及副手武器(左手武器),如果佩戴了则需要卸载双手武器
                 PlayGoods[] twoHandedWeapons = playerState.PlayerAllGoods.Where(
                     temp => temp.GoodsLocation == GoodsLocation.Wearing &&
                     (GoodsStaticTools.IsTwoHandedWeapon(temp.GoodsInfo.EnumGoodsType) ||
                      (temp.leftRightArms != null && temp.leftRightArms.Value == false))).ToArray();
                 foreach (PlayGoods _playGoods in twoHandedWeapons)
                 {
                     _playGoods.leftRightArms = null;
                     _playGoods.GoodsLocation = GoodsLocation.Package;
                 }
                 playGoods.leftRightArms = false;
             }
             //如果是双手武器
             else if (GoodsStaticTools.IsTwoHandedWeapon(enumGoodsType))
             {
                 //需要判断当前是否佩戴了副手武器以及主手武器(右手武器),如果佩戴了则需要卸载副手武器
                 PlayGoods[] oneHandedWeapons = playerState.PlayerAllGoods.Where(
                     temp => temp.GoodsLocation == GoodsLocation.Wearing &&
                     (GoodsStaticTools.IsLeftOneHandedWeapon(temp.GoodsInfo.EnumGoodsType) ||
                      (temp.leftRightArms != null && temp.leftRightArms.Value == true))).ToArray();
                 foreach (PlayGoods _playGoods in oneHandedWeapons)
                 {
                     _playGoods.leftRightArms = null;
                     _playGoods.GoodsLocation = GoodsLocation.Package;
                 }
                 playGoods.leftRightArms = true;
             }
             //如果是饰品
             else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Ornaments))
             {
                 EnumGoodsType?ornamentsType = GoodsStaticTools.GetParentGoodsType(playGoods.GoodsInfo.EnumGoodsType); //从基础的饰品类型向上跳到饰品的分类类型(项链 戒指 护身符 勋章)
                 if (ornamentsType != null && GoodsStaticTools.IsChildGoodsNode(ornamentsType.Value, EnumGoodsType.Ornaments))
                 {
                     PlayGoods[] ornaments = playerState.PlayerAllGoods.Where(
                         temp => temp.GoodsLocation == GoodsLocation.Wearing && GoodsStaticTools.IsChildGoodsNode(temp.GoodsInfo.EnumGoodsType, ornamentsType.Value)).ToArray();
                     foreach (PlayGoods _playGoods in ornaments)
                     {
                         _playGoods.GoodsLocation = GoodsLocation.Package;
                     }
                 }
             }
             //如果是武器(这里是单手武器,双手武器以及副手在上面已经判断过了 )
             else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Arms))
             {
                 //需要卸载所有的右手装备
                 PlayGoods[] rightHandedWeapons = playerState.PlayerAllGoods.Where(
                     temp => temp.GoodsLocation == GoodsLocation.Wearing && temp.leftRightArms != null && temp.leftRightArms.Value == true).ToArray();
                 foreach (PlayGoods _playGoods in rightHandedWeapons)
                 {
                     _playGoods.leftRightArms = null;
                     _playGoods.GoodsLocation = GoodsLocation.Package;
                 }
                 playGoods.leftRightArms = true;
             }
             //如果是其他装备(防具等)
             else
             {
                 EnumGoodsType?armorType = GoodsStaticTools.GetParentGoodsType(playGoods.GoodsInfo.EnumGoodsType, 2); //从基础的防具类型向上跳到防具的大类(头盔大类 盔甲类 鞋子类)
                 if (armorType != null && GoodsStaticTools.IsChildGoodsNode(armorType.Value, EnumGoodsType.Equipment))
                 {
                     PlayGoods[] ammors = playerState.PlayerAllGoods.Where(
                         temp => temp.GoodsLocation == GoodsLocation.Wearing && GoodsStaticTools.IsChildGoodsNode(temp.GoodsInfo.EnumGoodsType, armorType.Value)).ToArray();
                     foreach (PlayGoods _playGoods in ammors)
                     {
                         _playGoods.GoodsLocation = GoodsLocation.Package;
                     }
                 }
             }
             playGoods.GoodsLocation          = GoodsLocation.Wearing;
             iPlayerStateRun.EquipmentChanged = true;
         }
         else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Elixir))//如果是炼金药剂类则直接服用
         {
             iPlayerStateRun.EatMedicine(playGoods.ID);
         }
         else if (GoodsStaticTools.IsChildGoodsNode(enumGoodsType, EnumGoodsType.Item)) //如果是道具
         {
             if (enumGoodsType == EnumGoodsType.MagicScroll)                            //此处的魔法卷轴有一个任务的特殊检测
             {
                 INowTaskState iNowTaskState = GameState.Instance.GetEntity <INowTaskState>();
                 iNowTaskState.CheckNowTask(EnumCheckTaskType.Special, (int)TaskMap.Enums.EnumTaskSpecialCheck.SummonsScrollMagic);
             }
             Debug.Log("道具功能暂未实现");
         }
     }
 }