Esempio n. 1
0
    //  请求锻造装备
    public void RequestCombineEquip(int destCfgID, List <ItemInfo> itemList, bool isLuck, SmithyCost cost)
    {
        List <long> list = new List <long>();

        foreach (var item in itemList)
        {
            list.Add(item.EntityID);
        }
        PCombineEquip data = new PCombineEquip();

        data.destId = destCfgID;
        data.modelId.AddRange(list);
        data.type = isLuck ? eCombineType.COMBINE_LUCK : eCombineType.COMBINE_GOLD;

        Net.Send(eCommand.COMBINE_EQUIP, data, (buffer) =>
        {
            PComItem ret = Net.Deserialize <PComItem>(buffer);
            if (!Net.CheckErrorCode(ret.errorCode, eCommand.COMBINE_EQUIP))
            {
                return;
            }

            ItemInfo info = new ItemInfo();
            info.Deserialize(ret);
            UserManager.Instance.AddItem(info, true);

            // 刷新锻造铺
            UIManager.Instance.RefreshWindow <UISmithyView>();
            UIManager.Instance.OpenWindow <UISmithyGetArmsView>(info);

            UserManager.Instance.Money -= cost.Money;
            UserManager.Instance.Gold  -= cost.Gold;
            foreach (var item in cost.Mold)
            {
                ItemInfo old = UserManager.Instance.GetItem(item.EntityID);
                if (old != null)
                {
                    UserManager.Instance.RemoveItem(old);
                }
            }

            foreach (var item in cost.Material)
            {
                if (item.CfgID == GameConfig.ITEM_CONFIG_ID_WOOD)
                {
                    UserManager.Instance.Wood -= item.Count;
                }
                else if (item.CfgID == GameConfig.ITEM_CONFIG_ID_STONE)
                {
                    UserManager.Instance.Stone -= item.Count;
                }
                else
                {
                    UserManager.Instance.UseItemByConfigID(item.CfgID, item.Count);
                }
            }

            EventDispatcher.TriggerEvent(EventID.EVENT_UI_MAIN_REFRESH_VALUE);
        });
    }
Esempio n. 2
0
    public float Cooldown;  // 冷却缩减

    public void Deserialize(PComItem data)
    {
        EntityID = data.id;
        Number   = data.num;
        ConfigID = data.cfgId;
        Quality  = data.quality;

        // 一级属性
        if (data.basicAttr != null)
        {
            Strength     = data.basicAttr.strength;
            Intelligence = data.basicAttr.Intelligence;
            LeaderShip   = data.basicAttr.LeaderShip;
        }

        // 二级属性
        if (data.battleAttr != null)
        {
            Attack      = data.battleAttr.physAtk;
            MagicAttack = data.battleAttr.magicAtk;
            Hp          = data.battleAttr.hp;
            Def         = data.battleAttr.damReduce;
            Critical    = data.battleAttr.criticStrike;
            HpSorb      = data.battleAttr.suckBlood;
            Stum        = data.battleAttr.damDeepen;
            AttackSpeed = data.battleAttr.atkSpeed;
            Cooldown    = data.battleAttr.coolDown;
        }
    }
Esempio n. 3
0
    // 卸下装备
    public bool RequestTakeOffEquip(long heroID, long itemID)
    {
        HeroInfo heroInfo = GetHeroInfo(heroID);

        if (heroInfo == null)
        {
            return(false);
        }

        PUseCommonItem builder = new PUseCommonItem();

        builder.heroId = heroID;

        ItemInfo itemInfo = heroInfo.GetItem(itemID);

        if (itemInfo == null)
        {
            return(false);
        }

        PComItem ibuilder = new PComItem();

        ibuilder.id = itemID;
        builder.comItem.Add(ibuilder);

        NetworkManager.Instance.Send(eCommand.FIT_DOWN_EQUIP, builder, (buffer) => {
            PHeroAttr ret = Net.Deserialize <PHeroAttr>(buffer);
            if (!Net.CheckErrorCode(ret.errorCode, eCommand.FIT_DOWN_EQUIP))
            {
                return;
            }

            // 把装备放到背包里
            AddItem(itemInfo, false);

            heroInfo.Deserialize(ret, true);

            UIManager.Instance.RefreshWindow <UINewHeroView>();
            UIManager.Instance.RefreshWindow <UINewHeroListView>();
        });
        return(true);
    }
Esempio n. 4
0
    // 请求穿戴装备
    public bool RequestEquipItem(long heroID, long itemID)
    {
        HeroInfo heroInfo = GetHeroInfo(heroID);

        if (heroInfo == null)
        {
            return(false);
        }

        if (heroInfo.GetItem(itemID) != null)
        {
            // 已经装备
            return(false);
        }

        ItemInfo itemInfo = GetItem(itemID);

        if (itemInfo == null)
        {
            // 没有物品
            return(false);
        }

        if (itemInfo.Cfg.Level > heroInfo.Level)
        {
            // 等级不足
            UIUtil.ShowMsgFormat("MSG_HERO_LEVEL_LIMIT");
            return(false);
        }

        PUseCommonItem builder = new PUseCommonItem();

        builder.heroId = heroID;

        PComItem ibuilder = new PComItem();

        ibuilder.id = itemInfo.EntityID;
        builder.comItem.Add(ibuilder);

        NetworkManager.Instance.Send(eCommand.FIT_UP_EQUIP, builder, (buffer) => {
            PHeroAttr ret = Net.Deserialize <PHeroAttr>(buffer);
            if (!Net.CheckErrorCode(ret.errorCode, eCommand.FIT_UP_EQUIP))
            {
                return;
            }

            // 把旧装备放在背包里面
            ItemInfo oldItemInfo = heroInfo.GetItemByType((ItemType)itemInfo.Cfg.Type);
            if (oldItemInfo != null)
            {
                AddItem(oldItemInfo, false);
                heroInfo.EquipedItem.Remove(oldItemInfo);
            }

            // 同步英雄属性
            heroInfo.Deserialize(ret, true);

            // 移除背包内的装备
            UseItem(itemID, 1);

            UIManager.Instance.RefreshWindow <UINewHeroView>();
            UIManager.Instance.RefreshWindow <UINewHeroListView>();
        });

        return(true);
    }