示例#1
0
        public IActionOutputParameter Action(ActionParameter actionParameter)
        {
            BaseHero    baseHero    = actionParameter.Hero;
            GameContext gameContext = actionParameter.GameContext;
            BaseEquip   equip       = actionParameter.Equip;

            if (baseHero.Equip != null)
            {
                var oldEquip = baseHero.Equip;

                UnloadAction unloadAction = new UnloadAction();
                var          equipPara    = new ActionParameter()
                {
                    GameContext = gameContext,
                    Equip       = oldEquip,
                };
                unloadAction.Action(equipPara);
            }
            baseHero.Equip = equip;

            var user = gameContext.GetUserContextByMyCard(equip);

            gameContext.CastCardCount++;
            equip.CastIndex    = gameContext.CastCardCount;
            equip.CardLocation = CardLocation.场上;

            ActionParameter resetPara = new ActionParameter
            {
                PrimaryCard = baseHero,
                GameContext = actionParameter.GameContext
            };

            CardActionFactory.CreateAction(baseHero, ActionType.重置攻击次数).Action(resetPara);
            return(null);
        }
示例#2
0
 public bool CheckEquip(int type, string name, string pin, ref BaseEquip b)
 {
     if (type == (int)GoodsType.TYPE_EQUIP)
     {
         if (pin.Length > 0)
         {
             var baseequip1 =
                 FixedResources.BASE_EQUIP.FirstOrDefault(
                     m => m.id == Convert.ToInt32(name));
             if (baseequip1 == null)
             {
                 return(false);
             }
             var baseequip =
                 FixedResources.BASE_EQUIP.FirstOrDefault(
                     m => m.name == baseequip1.name && m.grade == Convert.ToInt32(pin));
             if (baseequip == null)
             {
                 baseequip = FixedResources.BASE_EQUIP.FirstOrDefault(m => m.name == name);
                 b         = baseequip;
                 return(false);
             }
         }
     }
     return(true);
 }
示例#3
0
    /// <summary>
    /// 进行自动勾选装备操作
    /// </summary>
    private void DoAutoSelectSellEquip()
    {
        if (null == gridDataList)
        {
            return;
        }
        BaseEquip baseEquip = null;
        bool      select    = false;

        for (int i = 0; i < gridDataList.Count; i++)
        {
            baseEquip = imgr.GetBaseItemByQwThisId <BaseEquip>(gridDataList[i]);
            if (null != baseEquip && !baseEquip.IsMuhon)
            {
                if (IsGradeFilterEnable())
                {
                    select = IsMatchGradeFilter(baseEquip.EquipGrade);
                    if (IsQualityFilterEnable())
                    {
                        select = select && IsMatchQualityFilter(baseEquip.QualityType);
                    }
                }
                else if (IsQualityFilterEnable())
                {
                    select = IsMatchQualityFilter(baseEquip.QualityType);
                }
                UpdateSellShopSelectData(gridDataList[i], select);
            }
        }
        //刷新格子状态
        UpdateKnapsackGrid();
    }
示例#4
0
    List <BaseEquip> GetSortList(List <BaseEquip> list)
    {
        if (list != null)
        {
            EquipManager em = DataManager.Manager <EquipManager>();
            if (em == null)
            {
                return(null);
            }
            List <uint> removeList = new List <uint>();
            for (int j = 0; j < list.Count; j++)
            {
                BaseEquip packageEquip = list[j];
                if (packageEquip == null)
                {
                    continue;
                }
                if (!DataManager.Manager <EquipManager>().CanPlayerWearEquipment(packageEquip.QWThisID))
                {
                    removeList.Add(packageEquip.QWThisID);
                    continue;
                }
                ItemDataBase db = GameTableManager.Instance.GetTableItem <ItemDataBase>(packageEquip.BaseId);
                if (db != null)
                {
                    if (!db.IsPush)
                    {
                        removeList.Add(packageEquip.QWThisID);
                        continue;
                    }
                }
            }
            for (int i = 0; i < removeList.Count; i++)
            {
                for (int j = 0; j < list.Count; j++)
                {
                    BaseEquip packageEquip = list[j];
                    if (removeList[i] == packageEquip.QWThisID)
                    {
                        list.Remove(packageEquip);
                        break;
                    }
                }
            }
            //foreach (var equip in list)
            //{
            //    Log.Error("======================= equip powwer is " + equip.Power);
            //}
            list.Sort(new BaseEquipComparison());
            list.Reverse_NoHeapAlloc();
        }

        return(list);
    }
示例#5
0
文件: Bag.cs 项目: Lantnr/MyTest
        /// <summary>组装获得装备属性</summary>
        public tg_bag BuildEquipAtt(BaseEquip equip)
        {
            var newequip = new tg_bag();

            #region
            if (equip.captain != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_CAPTAIN, equip.captain);
            }
            if (equip.force != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_FORCE, equip.force);
            }
            if (equip.brains != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_BRAINS, equip.brains);
            }
            if (equip.govern != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_GOVERN, equip.govern);
            }
            if (equip.charm != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_CHARM, equip.charm);
            }
            if (equip.attack != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_ATTACK, equip.attack);
            }
            if (equip.hurtIncrease != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_HURTINCREASE, Convert.ToDouble(equip.hurtIncrease));
            }
            if (equip.defense != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_DEFENSE, equip.defense);
            }
            if (equip.hurtReduce != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_HURTREDUCE, Convert.ToDouble(equip.hurtReduce));
            }
            if (equip.life != 0)
            {
                newequip = EquipAtt(newequip, (int)RoleAttributeType.ROLE_LIFE, equip.life);
            }
            #endregion
            newequip.base_id    = equip.id;
            newequip.type       = (int)GoodsType.TYPE_EQUIP;
            newequip.equip_type = equip.typeSub;
            newequip.state      = 0;
            newequip.count      = 1;
            return(newequip);
        }
示例#6
0
    /// <summary>
    /// 更新批量分解数据
    /// </summary>
    /// <param name="qwThisId"></param>
    /// <param name="select"></param>
    private void UpdateBatchSplitSelectData(uint qwThisId, bool select, Action fullDlg = null)
    {
        BaseEquip baseItem = imgr.GetBaseItemByQwThisId <BaseEquip>(qwThisId);

        if (!IsInitMode(KnapsackStatus.BatchSplit))
        {
            return;
        }

        if (null != baseItem && !baseItem.CanSplit && select)
        {
            return;
        }

        bool needUpdateData = false;
        uint baseId         = 0;

        if (IsBatchSplitSelectItem(qwThisId) && !select)
        {
            needUpdateData = true;
            baseId         = m_dic_selectSplitIds[qwThisId];
            m_dic_selectSplitIds.Remove(qwThisId);
        }
        else if (!IsBatchSplitSelectItem(qwThisId) && select)
        {
            if (null != baseItem &&
                baseItem.IsBaseReady &&
                baseItem.IsEquip)
            {
                if (m_dic_selectSplitIds.Count < EquipManager.CONST_BATCH_SPLIT_NUM_MAX)
                {
                    needUpdateData = true;
                    m_dic_selectSplitIds.Add(qwThisId, baseItem.BaseId);
                    baseId = baseItem.BaseId;
                }
                else if (null != fullDlg)
                {
                    fullDlg.Invoke();
                }
            }
        }

        if (needUpdateData)
        {
            if (null != gridDataList && gridDataList.Contains(qwThisId))
            {
                UpdateKnapsackGrid(gridDataList.IndexOf(qwThisId));
            }
            IncrementalUpdateSplitGetData(baseId, select);
            UpdateBatchSplitInfo();
        }
    }
示例#7
0
        /// <summary>获取品质装备</summary>
        /// <param name="user_id">玩家id</param>
        /// <param name="base_equip">基表装备实体</param>
        /// <returns></returns>
        private static tg_bag GradeEquip(Int64 user_id, BaseEquip base_equip)
        {
            //根据概率随机属性个数
            var number = RandomAttributeNumber();
            var list   = GetAttribute(base_equip);

            if (list.Any())
            {
                var entity = new tg_bag();
                entity.user_id    = user_id;
                entity.base_id    = (int)base_equip.id;
                entity.type       = (int)GoodsType.TYPE_EQUIP;
                entity.equip_type = base_equip.typeSub;
                entity.state      = (int)LoadStateType.UNLOAD;
                entity.count      = 1;
                //number = 3;
                var list_att = RandomAttribute(number, base_equip.typeSub, list);
                var i        = 0;
                foreach (var item in list_att)
                {
                    switch (i)
                    {
                        #region 属性赋值
                    case 0:
                    {
                        entity.attribute1_type  = item.type;
                        entity.attribute1_value = item.value;
                        break;
                    }

                    case 1:
                    {
                        entity.attribute2_type  = item.type;
                        entity.attribute2_value = item.value;
                        break;
                    }

                    case 2:
                    {
                        entity.attribute3_type  = item.type;
                        entity.attribute3_value = item.value;
                        break;
                    }
                        #endregion
                    }
                    i++;
                }
                return(entity);
            }
            return(null);
        }
示例#8
0
        /// <summary>获取绿色装备</summary>
        /// <param name="user_id">玩家id</param>
        /// <param name="base_equip">基表装备实体</param>
        private static tg_bag GreenEquip(Int64 user_id, BaseEquip base_equip)
        {
            var list = GetAttribute(base_equip);

            if (list.Any())
            {
                var att = list.FirstOrDefault();
                return(new tg_bag
                {
                    user_id = user_id,
                    base_id = (int)base_equip.id,
                    type = (int)GoodsType.TYPE_EQUIP,
                    equip_type = base_equip.typeSub,
                    state = (int)LoadStateType.UNLOAD,
                    count = 1,
                    attribute1_type = att.type,
                    attribute1_value = att.value,
                });
            }

            return(null);
        }
示例#9
0
        public void LoadEquip(BaseHero hero, BaseEquip equip)
        {
            var user = GameContext.GetUserContextByMyCard(hero);

            // user.ComboSwitch = true;
            user.Power -= equip.Cost < 0 ? 0 : equip.Cost;
            var equipPara = new ActionParameter()
            {
                GameContext = GameContext,
                PrimaryCard = equip,
                Equip       = equip,
                Hero        = hero,
            };

            new LoadAction().Action(equipPara);
            GameContext.AddActionStatement(new ComboOnAction(), equipPara);
            GameContext.EventQueue.AddLast(new PrimaryPlayerPlayCardEvent()
            {
                EventCard = equip, Parameter = equipPara
            });
            // GameContext.AddEndOfPlayerActionEvent();
            GameContext.Settlement();
            _gameCache.SetContext(GameContext);
        }
示例#10
0
        public ActionResult Index(FormCollection collection)
        {
            if (!IsLogin)
            {
                return(Redirect("/Home/Login"));
            }

            var platform = collection["platform"];
            var sid      = collection["server"];
            var playname = collection["playname"];
            var gift     = collection["gift"];     //礼包名称
            var gifttype = collection["gifttype"]; //礼包类型 1:全服礼包 2:个人礼包
            var m1       = collection["m_1"];
            var m2       = collection["m_2"];
            var m3       = collection["m_3"];
            var m4       = collection["m_4"];
            var m5       = collection["m_5"];

            var n1 = collection["name_1"];
            var n2 = collection["name_2"];
            var n3 = collection["name_3"];
            var n4 = collection["name_4"];
            var n5 = collection["name_5"];

            var c1 = collection["count_1"];
            var c2 = collection["count_2"];
            var c3 = collection["count_3"];
            var c4 = collection["count_4"];
            var c5 = collection["count_5"];

            var p1 = collection["pin_1"];
            var p2 = collection["pin_2"];
            var p3 = collection["pin_3"];
            var p4 = collection["pin_4"];
            var p5 = collection["pin_5"];

            var t11  = collection["att_1_1"];
            var t12  = collection["att_1_2"];
            var t13  = collection["att_1_3"];
            var av11 = collection["att_v_1_1"];
            var av12 = collection["att_v_1_2"];
            var av13 = collection["att_v_1_3"];

            var t21  = collection["att_2_1"];
            var t22  = collection["att_2_2"];
            var t23  = collection["att_2_3"];
            var av21 = collection["att_v_2_1"];
            var av22 = collection["att_v_2_2"];
            var av23 = collection["att_v_2_3"];

            var t31  = collection["att_3_1"];
            var t32  = collection["att_3_2"];
            var t33  = collection["att_3_3"];
            var av31 = collection["att_v_3_1"];
            var av32 = collection["att_v_3_2"];
            var av33 = collection["att_v_3_3"];

            var t41  = collection["att_4_1"];
            var t42  = collection["att_4_2"];
            var t43  = collection["att_4_3"];
            var av41 = collection["att_v_4_1"];
            var av42 = collection["att_v_4_2"];
            var av43 = collection["att_v_4_3"];

            var t51  = collection["att_3_1"];
            var t52  = collection["att_3_2"];
            var t53  = collection["att_3_3"];
            var av51 = collection["att_v_3_1"];
            var av52 = collection["att_v_3_2"];
            var av53 = collection["att_v_3_3"];

            var reason  = collection["reason"];
            var type    = collection["type"];
            var message = collection["message"];
            var list    = ApiPlatforms();

            if (Convert.ToInt32(m1) == 0 && Convert.ToInt32(m2) == 0 && Convert.ToInt32(m3) == 0 &&
                Convert.ToInt32(m4) == 0 && Convert.ToInt32(m5) == 0)
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = "没选择资源";
                ViewBag.Platform = list;
                return(View());
            }

            if (c1 != "" && !Regex.IsMatch(c1, @"^\d+$") || c2 != "" && !Regex.IsMatch(c2, @"^\d+$") || c3 != "" && !Regex.IsMatch(c3, @"^\d+$") ||
                c4 != "" && !Regex.IsMatch(c4, @"^\d+$") || c5 != "" && !Regex.IsMatch(c5, @"^\d+$") ||
                av11 != "" && !Regex.IsMatch(av11, @"^\d+$") || av12 != "" && !Regex.IsMatch(av12, @"^\d+$") || av13 != "" && !Regex.IsMatch(av13, @"^\d+$") ||
                av21 != "" && !Regex.IsMatch(av21, @"^\d+$") || av22 != "" && !Regex.IsMatch(av22, @"^\d+$") || av23 != "" && !Regex.IsMatch(av23, @"^\d+$") ||
                av31 != "" && !Regex.IsMatch(av31, @"^\d+$") || av32 != "" && !Regex.IsMatch(av32, @"^\d+$") || av33 != "" && !Regex.IsMatch(av33, @"^\d+$") ||
                av41 != "" && !Regex.IsMatch(av41, @"^\d+$") || av42 != "" && !Regex.IsMatch(av42, @"^\d+$") || av43 != "" && !Regex.IsMatch(av43, @"^\d+$") ||
                av51 != "" && !Regex.IsMatch(av51, @"^\d+$") || av52 != "" && !Regex.IsMatch(av52, @"^\d+$") || av53 != "" && !Regex.IsMatch(av53, @"^\d+$"))
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = "数据格式错误";
                ViewBag.Platform = list;
                return(View());
            }
            if (Convert.ToInt32(m1) > 0 && c1 == "" || Convert.ToInt32(m2) > 0 && c2 == "" || Convert.ToInt32(m3) > 0 && c3 == "" || Convert.ToInt32(m4) > 0 && c4 == "" || Convert.ToInt32(m5) > 0 && c5 == "")
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = "某物品没填数量";
                ViewBag.Platform = list;
                return(View());
            }
            var b = new BaseEquip();

            if (!CheckEquip(Convert.ToInt32(m1), n1, p1, ref b))
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = b.name + "没有该品质";
                ViewBag.Platform = list;
                return(View());
            }
            if (!CheckEquip(Convert.ToInt32(m2), n2, p2, ref b))
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = b.name + "没有该品质";
                ViewBag.Platform = list;
                return(View());
            }
            if (!CheckEquip(Convert.ToInt32(m3), n3, p3, ref b))
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = b.name + "没有该品质";
                ViewBag.Platform = list;
                return(View());
            }
            if (!CheckEquip(Convert.ToInt32(m4), n4, p4, ref b))
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = b.name + "没有该品质";
                ViewBag.Platform = list;
                return(View());
            }
            if (!CheckEquip(Convert.ToInt32(m5), n5, p5, ref b))
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = b.name + "没有该品质";
                ViewBag.Platform = list;
                return(View());
            }
            string s  = "";
            var    s1 = GetString(Convert.ToInt32(m1), n1, c1, p1, t11, t12, t13, av11, av12, av13);
            var    s2 = GetString(Convert.ToInt32(m2), n2, c2, p2, t21, t22, t23, av21, av22, av23);
            var    s3 = GetString(Convert.ToInt32(m3), n3, c3, p3, t31, t32, t33, av31, av32, av33);
            var    s4 = GetString(Convert.ToInt32(m4), n4, c4, p4, t41, t42, t43, av41, av42, av43);
            var    s5 = GetString(Convert.ToInt32(m5), n5, c5, p5, t51, t52, t53, av51, av52, av53);

            if (platform == "" || sid == "")
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = "请选择平台和服务器";
                ViewBag.Platform = list;
                return(View());
            }
            if (gifttype == "0")
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = "没有选择申请类型";
                ViewBag.Platform = list;
                return(View());
            }
            if (playname != "" && gifttype == "1")
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = "选择了玩家不能选择全服礼包类型";
                ViewBag.Platform = list;
                return(View());
            }

            var resource = ApiFindResource(user.token, Convert.ToInt64(platform), Convert.ToInt64(sid), user.id,
                                           playname, gift, Convert.ToInt32(gifttype), s1, s2, s3, s4, s5, reason, Convert.ToInt32(type), message);

            if (resource.result != 1)
            {
                ViewBag.Error    = -1;
                ViewBag.Message  = resource.message;
                ViewBag.Platform = list;
                return(View());
            }

            ViewBag.Platform = list;
            return(View());
        }
示例#11
0
    /// <summary>
    /// 显示装备
    /// </summary>
    /// <param name="itemList"></param>
    private void OnShowEquipGridInfo(List <GameCmd.ItemSerialize> itemList)
    {
        //装备栏
        GameCmd.ItemSerialize equipItem = null;
        uint        cacheEquipId        = 0;
        UIEquipGrid equipGrid           = null;
        BaseItem    baseItem            = null;
        bool        needSetData         = false;

        //GameCmd.eItemAttribute

        for (GameCmd.EquipPos i = GameCmd.EquipPos.EquipPos_Hat; i < GameCmd.EquipPos.EquipPos_Max; i++)
        {
            if (i == GameCmd.EquipPos.EquipPos_Capes ||
                i == GameCmd.EquipPos.EquipPos_Office)
            {
                continue;
            }
            needSetData = false;
            if (equipGridDic.TryGetValue(i, out equipGrid))
            {
                if (Equip(itemList, (int)i, out equipItem))
                {
                    baseItem = new BaseEquip(equipItem.dwObjectID, equipItem);
                    if (equipDic.TryGetValue(i, out cacheEquipId) &&
                        cacheEquipId != equipItem.qwThisID)
                    {
                        equipDic[i] = equipItem.qwThisID;
                        needSetData = true;
                    }
                    else if (!equipDic.ContainsKey(i))
                    {
                        equipDic.Add(i, equipItem.qwThisID);
                        needSetData = true;
                    }

                    if (needSetData)
                    {
                        equipGrid.SetGridData(baseItem);
                    }
                }
                else
                {
                    baseItem = null;
                    if (equipDic.ContainsKey(i))
                    {
                        equipDic[i] = 0;
                    }
                    needSetData = true;
                }

                if (needSetData)
                {
                    equipGrid.SetGridData(baseItem);
                }

                //强化等级
                GameCmd.StrengthList strengthData = this.m_showInfo.strengthList.Find((data) => { return(data.equip_pos == i); });
                if (strengthData != null)
                {
                    equipGrid.UpdateStrengthenInfo(strengthData.level, baseItem != null);
                }
                else
                {
                    equipGrid.UpdateStrengthenInfo(0, baseItem != null);
                }
            }
        }
    }
示例#12
0
    public void InitPushItem(PushItem item)
    {
        if (item == null)
        {
            return;
        }
        m_pushType = item.pushType;
        m_uThisID  = item.thisID;
        //是不是成就推送
        bool isAchievementPush = m_pushType == PushType.Achievement;

        m_trans_NormalRoot.gameObject.SetActive(!isAchievementPush);
        m_trans_AchievementRoot.gameObject.SetActive(isAchievementPush);
        if (isAchievementPush)
        {
            m_nCountDown = GameTableManager.Instance.GetGlobalConfig <int>("AchievementCountDown");
            m_label_AchievementName.text = item.strName;
            UIEventListener.Get(m_label_ClickLabel.gameObject).onClick = OnClickLabel;
        }
        else
        {
            if (item.pushType == PushType.Equip)
            {
                m_trans_EffectContent.gameObject.SetActive(true);
                BaseEquip be = DataManager.Manager <ItemManager>().GetBaseItemByQwThisId <BaseEquip>(item.thisID);
                if (be != null)
                {
                    m_label_power.text = be.Power.ToString();
                }
                m_nCountDown = GameTableManager.Instance.GetGlobalConfig <int>("EquipUseCountDown");
            }
            else if (item.pushType == PushType.Consum)
            {
                m_trans_EffectContent.gameObject.SetActive(false);
                m_nCountDown = GameTableManager.Instance.GetGlobalConfig <int>("DanyaoUseCountDown");
            }
            BaseItem bi = DataManager.Manager <ItemManager>().GetBaseItemByQwThisId(item.thisID);
            if (bi != null)
            {
                ItemDataBase db = GameTableManager.Instance.GetTableItem <ItemDataBase>(bi.BaseId);

                if (db != null)
                {
                    m_label_Name.text = db.itemName;

                    UIManager.GetTextureAsyn(db.itemIcon, ref m_curIconAsynSeed, () =>
                    {
                        if (null != m__Icon)
                        {
                            m__Icon.mainTexture = null;
                        }
                    }, m__Icon);
                    UIManager.GetAtlasAsyn(bi.BorderIcon, ref m_curQualityAsynSeed, () =>
                    {
                        if (null != m_sprite_qualityIcon)
                        {
                            m_sprite_qualityIcon.atlas = null;
                        }
                    }, m_sprite_qualityIcon);
                }
            }
        }
    }
示例#13
0
        /// <summary>获取基表装备属性</summary>
        /// <param name="base_equip">基表装备实体</param>
        private static List <EquipItem> GetAttribute(BaseEquip base_equip)
        {
            var list = new List <EquipItem>();

            if (base_equip.captain > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_CAPTAIN, value = base_equip.captain
                });
            }
            if (base_equip.force > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_FORCE, value = base_equip.force
                });
            }
            if (base_equip.brains > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_BRAINS, value = base_equip.brains
                });
            }
            if (base_equip.govern > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_GOVERN, value = base_equip.govern
                });
            }
            if (base_equip.charm > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_CHARM, value = base_equip.charm
                });
            }
            if (base_equip.attack > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_ATTACK, value = base_equip.attack
                });
            }
            if (base_equip.defense > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_DEFENSE, value = base_equip.defense
                });
            }
            if (base_equip.life > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_LIFE, value = base_equip.life
                });
            }
            if (base_equip.hurtIncrease > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_HURTINCREASE, value = base_equip.hurtIncrease
                });
            }
            if (base_equip.hurtReduce > 0)
            {
                list.Add(new EquipItem {
                    type = (int)RoleAttributeType.ROLE_HURTREDUCE, value = base_equip.hurtReduce
                });
            }
            return(list);
        }
示例#14
0
    List <uint> GetPushList(BaseItem bi = null)
    {
        EquipManager em = DataManager.Manager <EquipManager>();

        if (em == null)
        {
            return(null);
        }
        Dictionary <GameCmd.EquipType, List <BaseEquip> > dic = GetWillCompareDic(bi);
        //Array enumArray = Enum.GetValues(typeof(GameCmd.EquipType));
        //for (int i = 0; i < enumArray.Length; i++)
        //{
        //    GameCmd.EquipType type = (GameCmd.EquipType)enumArray.GetValue(i);
        //    List<BaseEquip> wareList = em.GetEquipsByPackageType(PACKAGETYPE.PACKAGETYPE_EQUIP, type);
        //    List<BaseEquip> packageList = em.GetEquipsByPackageType(PACKAGETYPE.PACKAGETYPE_MAIN, type);
        //    wareList.AddRange(packageList);
        //    //if(type == EquipType.EquipType_AdornlOne)
        //    //{
        //    //    int a = 10;
        //    //}
        //    List<BaseEquip> tempList = GetSortList(wareList);
        //    dic.Add(type, tempList);
        //}

        List <uint> pushList     = new List <uint>();
        Array       posenumArray = Enum.GetValues(typeof(GameCmd.EquipPos));

        for (int i = 0; i < posenumArray.Length; i++)
        {
            GameCmd.EquipPos pos = (GameCmd.EquipPos)posenumArray.GetValue(i);
            if (pos != null)
            {
                EquipType type = em.GetEquipTypeByEquipPos(pos);

                if (type == EquipType.EquipType_AdornlOne || type == EquipType.EquipType_SoulOne || type == EquipType.EquipType_None)
                {
                    continue;
                }
                if (!dic.ContainsKey(type))
                {
                    continue;
                }
                List <BaseEquip> allList = dic[type];

                if (allList == null)
                {
                    continue;
                }
                uint posEquipID = 0;

                for (int m = 0; m < allList.Count; m++)
                {
                    BaseEquip tempEquip = allList[m];
                    if (em.IsWearEquip(tempEquip.QWThisID))
                    {
                        continue;
                    }
                    if (em.IsEquipPos(pos, out posEquipID))
                    {
                        ItemManager im        = DataManager.Manager <ItemManager>();
                        BaseEquip   wareEquip = im.GetBaseItemByQwThisId(posEquipID) as BaseEquip;

                        if (wareEquip.Power < tempEquip.Power)
                        {
                            pushList.Add(tempEquip.QWThisID);
                            allList.RemoveAt(m);
                            break;
                        }
                    }
                    else
                    {
                        pushList.Add(tempEquip.QWThisID);
                        allList.RemoveAt(m);
                        break;
                    }
                }
            }
        }

        //处理戒指和圣魂    if (type == EquipType.EquipType_AdornlOne || type ==EquipType.EquipType_SoulOne)
        if (dic.ContainsKey(EquipType.EquipType_AdornlOne))
        {
            List <BaseEquip> adornList = dic[EquipType.EquipType_AdornlOne];
            if (adornList != null)
            {
                for (int i = 0; i < adornList.Count; i++)
                {
                    if (i > 1)
                    {
                        break;
                    }
                    BaseEquip temp = adornList[i];
                    if (!em.IsWearEquip(temp.QWThisID))
                    {
                        pushList.Add(temp.QWThisID);
                    }
                }
            }
        }

        if (dic.ContainsKey(EquipType.EquipType_SoulOne))
        {
            List <BaseEquip> soulList = dic[EquipType.EquipType_SoulOne];
            if (soulList != null)
            {
                for (int i = 0; i < soulList.Count; i++)
                {
                    if (i > 1)
                    {
                        break;
                    }
                    BaseEquip temp = soulList[i];
                    if (!em.IsWearEquip(temp.QWThisID))
                    {
                        pushList.Add(temp.QWThisID);
                    }
                }
            }
        }

        return(pushList);
    }
示例#15
0
    /// <summary>
    /// 获取要比较的装备dic
    /// </summary>
    /// <param name="isSingle">是否只比较掉落的这一个</param>
    /// <returns></returns>
    Dictionary <GameCmd.EquipType, List <BaseEquip> > GetWillCompareDic(BaseItem bi = null)
    {
        EquipManager em = DataManager.Manager <EquipManager>();

        if (em == null)
        {
            return(null);
        }
        Dictionary <GameCmd.EquipType, List <BaseEquip> > dic = new Dictionary <EquipType, List <BaseEquip> >();

        if (bi != null)
        {
            if (bi.BaseType == ItemBaseType.ItemBaseType_Equip)
            {
                if (bi is BaseEquip)
                {
                    BaseEquip be = bi as BaseEquip;
                    if (be != null)
                    {
                        Array enumArray = Enum.GetValues(typeof(GameCmd.EquipType));
                        for (int i = 0; i < enumArray.Length; i++)
                        {
                            GameCmd.EquipType type = (GameCmd.EquipType)enumArray.GetValue(i);
                            if (be.EType == type)
                            {
                                List <BaseEquip> wareList = em.GetEquipsByPackageType(PACKAGETYPE.PACKAGETYPE_EQUIP, type);
                                wareList.Add(be);
                                List <BaseEquip> tempList = GetSortList(wareList);
                                dic.Add(type, tempList);
                            }
                            else
                            {
                                if (dic.ContainsKey(type))
                                {
                                    Log.Error("has contain key is " + type);
                                }
                                else
                                {
                                    dic.Add(type, null);
                                }
                            }
                        }
                    }
                }
            }
        }
        else
        {
            Array enumArray = Enum.GetValues(typeof(GameCmd.EquipType));
            for (int i = 0; i < enumArray.Length; i++)
            {
                GameCmd.EquipType type        = (GameCmd.EquipType)enumArray.GetValue(i);
                List <BaseEquip>  wareList    = em.GetEquipsByPackageType(PACKAGETYPE.PACKAGETYPE_EQUIP, type);
                List <BaseEquip>  packageList = em.GetEquipsByPackageType(PACKAGETYPE.PACKAGETYPE_MAIN, type);
                wareList.AddRange(packageList);

                List <BaseEquip> tempList = GetSortList(wareList);
                dic.Add(type, tempList);
            }
        }
        return(dic);
    }