Exemplo n.º 1
0
    public void OnExDataInit(IEvent ievent)
    {
        var e          = ievent as ExDataInitEvent;
        var playerData = PlayerDataManager.Instance;

        CombatData.Hp = playerData.GetExData(59) / 100.0f;
        CombatData.Mp = playerData.GetExData(60) / 100.0f;
        var pick = playerData.GetExData(61);

        for (var i = 0; i < 8; i++)
        {
            CombatData.Pickups[i] = BitFlag.GetLow(pick, i);
        }
        if (BitFlag.GetLow(pick, 9))
        {
            CombatData.Ranges[2] = true;
            CombatData.Ranges[0] = false;
            CombatData.Ranges[1] = false;
        }
        else
        {
            if (BitFlag.GetLow(pick, 8))
            {
                CombatData.Ranges[1] = true;
                CombatData.Ranges[0] = false;
                CombatData.Ranges[2] = false;
            }
            else
            {
                CombatData.Ranges[0] = true;
                CombatData.Ranges[1] = false;
                CombatData.Ranges[2] = false;
            }
        }
    }
Exemplo n.º 2
0
 public void NotifyTableChange(int flag)
 {
     if (BitFlag.GetLow(flag, (int)eNotifyTableChangeFlag.RechargeTables))
     {
         EventDispatcher.Instance.DispatchEvent(new RechageActivityInitTables());
     }
 }
Exemplo n.º 3
0
    public void OnClickGet()
    {
        var tbItem = Table.GetItemBase(DataModel.ItemData.ItemId);

        if (tbItem == null)
        {
            return;
        }
        if (tbItem.GetWay != -1)
        {
            DataModel.IsShowGetPath = true;
            DataModel.GetPathList.Clear();
            var list = new List <ItemGetPathDataModel>();
            for (var i = 0; i < ItemInfoGetController.GET_PATH_COUNT; i++)
            {
                var isShow = BitFlag.GetLow(tbItem.GetWay, i);
                if (isShow)
                {
                    var tbItemGetInfo = Table.GetItemGetInfo(i);
                    if (tbItemGetInfo != null)
                    {
                        var item = new ItemGetPathDataModel();
                        item.ItemGetId = i;
                        list.Add(item);
                    }
                }
            }
            DataModel.GetPathList = new ObservableCollection <ItemGetPathDataModel>(list);
        }
    }
Exemplo n.º 4
0
        private void OnClickReceive()
        {
            var _tbItem = Table.GetItemBase(DataModel.ItemData.ItemId);

            if (_tbItem == null)
            {
                return;
            }
            if (_tbItem.GetWay != -1)
            {
                DataModel.IsShowGetPath = true;
                DataModel.GetPathList.Clear();
                var _list = new List <ItemGetPathDataModel>();
                int leng  = (int)UIManager.GetInstance().GetController(UIConfig.ItemInfoGetUI).CallFromOtherClass("GetPathCount", null);
                for (var i = 0; i < leng; i++)
                {
                    var _isShow = BitFlag.GetLow(_tbItem.GetWay, i);
                    if (_isShow)
                    {
                        var _tbItemGetInfo = Table.GetItemGetInfo(i);
                        if (_tbItemGetInfo != null)
                        {
                            var _item = new ItemGetPathDataModel();
                            _item.ItemGetId = i;
                            _list.Add(_item);
                        }
                    }
                }
                DataModel.GetPathList = new ObservableCollection <ItemGetPathDataModel>(_list);
            }
        }
Exemplo n.º 5
0
        //检查下,当前显示的entry里有没有 itemId 的物品,如果有,则刷新个数
        private bool CheckItemIdEntry(int itemId)
        {
            var _tbItem = Table.GetItemBase(itemId);

            //如果不是物品,返回false
            if (_tbItem.Type >= 10000 && _tbItem.Type <= 10099)
            {
                return(false);
            }

            var _entrys = m_DataModel.Entrys;

            for (int i = 0, imax = _entrys.Count; i < imax; i++)
            {
                if (BitFlag.GetLow(m_DataModel.UseMask, i))
                {
                    var _entry = _entrys[i];
                    if (_entry.BagItemData.ItemId == itemId)
                    {
                        //刷新count,由于获得了同样的物品,数量肯定发生变化了
                        _entry.Count = PlayerDataManager.Instance.GetItemTotalCount(itemId).Count;
                        return(true);
                    }
                }
            }
            return(false);
        }
Exemplo n.º 6
0
    public void OnExDataUpData(IEvent ievent)
    {
        var e          = ievent as SettingExdataUpdate;
        var playerData = PlayerDataManager.Instance;

        switch (e.Type)
        {
        case eExdataDefine.e59:
        {
            CombatData.Hp = playerData.GetExData(eExdataDefine.e59) / 100.0f;
        }
        break;

        case eExdataDefine.e60:
        {
            CombatData.Mp = playerData.GetExData(eExdataDefine.e60) / 100.0f;
        }
        break;

        case eExdataDefine.e61:
        {
            var pick = playerData.GetExData(eExdataDefine.e61);
            if (BitFlag.GetLow(pick, 9))
            {
                CombatData.Ranges[2] = true;
                CombatData.Ranges[0] = false;
                CombatData.Ranges[1] = false;
            }
            else
            {
                if (BitFlag.GetLow(pick, 8))
                {
                    CombatData.Ranges[1] = true;
                    CombatData.Ranges[0] = false;
                    CombatData.Ranges[2] = false;
                }
                else
                {
                    CombatData.Ranges[0] = true;
                    CombatData.Ranges[1] = false;
                    CombatData.Ranges[2] = false;
                }
            }
            for (var i = 0; i < 8; i++)
            {
                CombatData.Pickups[i] = BitFlag.GetLow(pick, i);
            }
        }
        break;
        }
    }
Exemplo n.º 7
0
        private bool IsItemCanCompose(int index)
        {
            var _playerData = PlayerDataManager.Instance.PlayerDataModel;
            var _tbCompose  = Table.GetItemCompose(index);

            if (_tbCompose.ComposeOpenLevel > _playerData.Bags.Resources.Level)
            {
                return(false);
            }
            if (!BitFlag.GetLow(_tbCompose.SortByCareer, PlayerDataManager.Instance.GetRoleId()))
            {
                return(false);
            }
            if (PlayerDataManager.Instance.GetRemaindCapacity(eBagType.BaseItem) == 0)
            {
                return(false);
            }

            for (var i = 0; i < 4; i++)
            {
                if (_tbCompose.NeedId[i] != -1)
                {
                    if (PlayerDataManager.Instance.GetItemCount(_tbCompose.NeedId[i]) < _tbCompose.NeedCount[i])
                    {
                        return(false);
                    }
                }
            }
            switch (_tbCompose.NeedRes)
            {
            case 2:
            {
                if (_tbCompose.NeedValue > _playerData.Bags.Resources.Gold)
                {
                    return(false);
                }
            }
            break;

            case 3:
            {
                if (_tbCompose.NeedValue > _playerData.Bags.Resources.Diamond)
                {
                    return(false);
                }
            }
            break;
            }
            return(true);
        }
Exemplo n.º 8
0
        private void PurchaseShopProvision(int storeId, int count)
        {
            if ((IsQuickBuyGift && DataModel.GiftBuy.Item.Count <= 0) || (!IsQuickBuyGift && DataModel.OneBuy.MaxBuyCount <= 0))
            {
                GameUtils.ShowHintTip(200002651);
                return;
            }
            var _tbStore = Table.GetStore(storeId);

            if (_tbStore == null)
            {
                return;
            }
            var _roleType = PlayerDataManager.Instance.GetRoleId();

            if (BitFlag.GetLow(_tbStore.SeeCharacterID, _roleType) == false)
            {
                return;
            }

            if (_tbStore.DisplayCondition != -1)
            {
                var _retCond = PlayerDataManager.Instance.CheckCondition(_tbStore.DisplayCondition);
                if (_retCond != 0)
                {
                    GameUtils.ShowHintTip(_retCond);
                    return;
                }
            }
            var _cost = _tbStore.NeedValue * count;

            if (PlayerDataManager.Instance.GetRes(_tbStore.NeedType) < _cost)
            {
                var _tbItemCost = Table.GetItemBase(_tbStore.NeedType);
                //{0}不足!
                var _str = GameUtils.GetDictionaryText(701);
                _str = string.Format(_str, _tbItemCost.Name);
                GameUtils.ShowHintTip(_str);
                EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.RechargeFrame,
                                                                         new RechargeFrameArguments {
                    Tab = 0
                }));
                EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.QuickBuyUi));
                return;
            }
            if (_tbStore.NeedItem == -1)
            {
                NetManager.Instance.StartCoroutine(ShopPurchaseCoroutine(storeId, count));
            }
        }
Exemplo n.º 9
0
        public void RefreshData(UIInitArguments data)
        {
            var _args = data as GainItemHintArguments;

            if (_args == null)
            {
                return;
            }

            ResetTimer();

            var _itemId = _args.ItemId;
            var _bagIdx = _args.BagIndex;

            if (CheckItemIdEntry(_itemId))
            {
                return;
            }

            // 选择上面那个,还是下面那个
            var _entryId = 0;

            for (; _entryId < 2; _entryId++)
            {
                if (!BitFlag.GetLow(m_DataModel.UseMask, _entryId))
                {
                    break;
                }
            }

            if (_entryId < 2)
            {
                //如果还有空闲的tip pannel,则显示
                CheckAndShowMsg(_entryId, _itemId, _bagIdx);
            }
            else
            {
                //如果没有空闲的tip pannel,则缓存下来
                var _entry = m_Caches.Find(e => e.ItemId == _itemId);
                if (_entry == null)
                {
                    _entry = new CacheEntry {
                        ItemId = _itemId, BagIdx = _bagIdx
                    };
                    m_Caches.Add(_entry);
                }
            }
        }
Exemplo n.º 10
0
    public void RefreshData(UIInitArguments data)
    {
        var args = data as GainItemHintArguments;

        if (args == null)
        {
            return;
        }

        ResetTimer();

        var itemId = args.ItemId;
        var bagIdx = args.BagIndex;

        if (CheckEntry(itemId))
        {
            return;
        }

        // 选择上面那个,还是下面那个
        var entryId = 0;

        for (; entryId < 2; entryId++)
        {
            if (!BitFlag.GetLow(DataModel.UseMask, entryId))
            {
                break;
            }
        }

        if (entryId < 2)
        {
//如果还有空闲的tip pannel,则显示
            SetupEntry(entryId, itemId, bagIdx);
        }
        else
        {
//如果没有空闲的tip pannel,则缓存下来
            var entry = Caches.Find(e => e.ItemId == itemId);
            if (entry == null)
            {
                entry = new CacheEntry {
                    ItemId = itemId, BagIdx = bagIdx
                };
                Caches.Add(entry);
            }
        }
    }
Exemplo n.º 11
0
 public void ClearCoolDownDirty()
 {
     for (var i = 0; i < 4; i++)
     {
         if (BitFlag.GetLow(mEquipSkillDirtyMark, i))
         {
             var skill = SkillDataModel.EquipSkills[i];
             skill.CoolDownTime = skill.CoolDownTimeTotal;
             if (skill.ChargeLayerTotal > 1)
             {
                 skill.ChargeLayer = 0;
             }
         }
     }
     mEquipSkillDirtyMark = 0;
 }
Exemplo n.º 12
0
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); //

        public bool CheckEffectOk(BuffData buff, ObjCharacter bearObj, eEffectEventType eventType, int effectIndex, int param)
        {
            if (buff == null)
            {
                return(false);
            }

            var tbBuff = buff.mBuff;

            if (tbBuff.effectid[effectIndex] == -1 || tbBuff.effectpoint[effectIndex] == -1)
            {
                return(false);
            }
            if (!BitFlag.GetLow(tbBuff.effectpoint[effectIndex], (int)eventType))
            {
                return(false);
            }

            switch (eventType)
            {
            case eEffectEventType.HpLessPercent:
            {
                var nowHp = bearObj.Attr.GetDataValue(eAttributeType.HpNow);
                var maxHp = bearObj.Attr.GetDataValue(eAttributeType.HpMax);
                if (nowHp * 10000L > maxHp * tbBuff.EffectPointParam[effectIndex])     // 是否血量百分比触发
                {
                    return(false);
                }
            }
            break;

            case eEffectEventType.Critical:
            case eEffectEventType.WasCrit:
            {
                var condition = tbBuff.EffectPointParam[effectIndex];
                var hitType   = param;
                if (!BitFlag.GetLow(condition, hitType))
                {
                    return(false);
                }
            }
            break;
            }

            return(true);
        }
Exemplo n.º 13
0
    public void BuyStoreItem(int storeId, int count)
    {
        var tbStore = Table.GetStore(storeId);

        if (tbStore == null)
        {
            return;
        }
        var roleType = PlayerDataManager.Instance.GetRoleId();

        if (BitFlag.GetLow(tbStore.SeeCharacterID, roleType) == false)
        {
            return;
        }

        if (tbStore.DisplayCondition != -1)
        {
            var retCond = PlayerDataManager.Instance.CheckCondition(tbStore.DisplayCondition);
            if (retCond != 0)
            {
                GameUtils.ShowHintTip(retCond);
                return;
            }
        }
        var cost = tbStore.NeedValue * count;

        if (PlayerDataManager.Instance.GetRes(tbStore.NeedType) < cost)
        {
            var tbItemCost = Table.GetItemBase(tbStore.NeedType);
            //{0}不足!
            var str = GameUtils.GetDictionaryText(701);
            str = string.Format(str, tbItemCost.Name);
            GameUtils.ShowHintTip(str);
            EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.RechargeFrame,
                                                                     new RechargeFrameArguments {
                Tab = 0
            }));
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.QuickBuyUi));
            return;
        }
        if (tbStore.NeedItem == -1)
        {
            NetManager.Instance.StartCoroutine(StoreBuyCoroutine(storeId, count));
        }
    }
Exemplo n.º 14
0
        public void RefreshData(UIInitArguments data)
        {
            var arg = data as ItemInfoGetArguments;

            if (arg == null)
            {
                return;
            }
            DataModel.GetPathList.Clear();
            if (arg.ItemId != -1)
            {
                DataModel.ItemData.ItemId = arg.ItemId;
            }
            if (arg.ItemData != null)
            {
                DataModel.ItemData = arg.ItemData;
            }
            var tbItem = Table.GetItemBase(DataModel.ItemData.ItemId);

            if (tbItem == null)
            {
                return;
            }
            //显示获取途径
            if (tbItem.GetWay != -1)
            {
                var count = 0;
                var list  = new List <ItemGetPathDataModel>();
                for (var i = 0; i < GET_PATH_COUNT; i++)
                {
                    var isShow = BitFlag.GetLow(tbItem.GetWay, i);
                    if (isShow)
                    {
                        var tbItemGetInfo = Table.GetItemGetInfo(i);
                        if (tbItemGetInfo != null)
                        {
                            var item = new ItemGetPathDataModel();
                            item.ItemGetId = i;
                            list.Add(item);
                        }
                    }
                }
                DataModel.GetPathList = new ObservableCollection <ItemGetPathDataModel>(list);
            }
        }
Exemplo n.º 15
0
    public void RemoveCondition(ConditionTableRecord tbcon)
    {
        if (tbcon.Role != -1 && BitFlag.GetLow(tbcon.Role, PlayerDataManager.Instance.GetRoleId()) == false)
        {
            return;
        }

        for (var i = 0; i != tbcon.TrueFlag.Length; ++i)
        {
            var id = tbcon.TrueFlag[i];
            if (id == -1)
            {
                continue;
            }
            FlagTrue.Remove(id, tbcon);
        }
        for (var i = 0; i != tbcon.FalseFlag.Length; ++i)
        {
            var id = tbcon.FalseFlag[i];
            if (id == -1)
            {
                continue;
            }
            FlagFalse.Remove(id, tbcon);
        }
        for (var i = 0; i != tbcon.ExdataId.Length; ++i)
        {
            var id = tbcon.ExdataId[i];
            if (id == -1)
            {
                continue;
            }
            Exdata.Remove(id, tbcon);
        }

        for (var i = 0; i != tbcon.ItemId.Length; ++i)
        {
            var id = tbcon.ItemId[i];
            if (id == -1)
            {
                continue;
            }
            Item.Remove(id, tbcon);
        }
    }
Exemplo n.º 16
0
 //获得BUFF中某个效果ID的某个参数(二进制检查)
 public bool GetEffectParam_Bin(BuffList _this, eEffectType effectid, int paramid, int value)
 {
     foreach (var i in _this.mData)
     {
         if (i.GetActive() == false)
         {
             continue;
         }
         var tbBuff = i.mBuff;
         for (var j = 0; j != tbBuff.effectid.Length; ++j)
         {
             if (tbBuff.effectid[j] == (int)effectid)
             {
                 if (BitFlag.GetLow(tbBuff.effectparam[j, paramid], value))
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Exemplo n.º 17
0
        private void BagItemAlter(IEvent ievent)
        {
            if (State != FrameState.Open)
            {
                return;
            }

            var _e = ievent as UIEvent_BagChange;

            if (_e.HasType(eBagType.BaseItem))
            {
                for (var i = 0; i < 2; ++i)
                {
                    if (BitFlag.GetLow(m_DataModel.UseMask, i))
                    {
                        var _itemData = m_DataModel.Entrys[i].BagItemData;
                        if (_itemData.ItemId == -1 || _itemData.Count == 0)
                        {
                            ShutPanel(i);
                        }
                    }
                }
            }
        }
Exemplo n.º 18
0
    public void OnBagItemChange(IEvent ievent)
    {
        if (State != FrameState.Open)
        {
            return;
        }

        var e = ievent as UIEvent_BagChange;

        if (e.HasType(eBagType.BaseItem))
        {
            for (var i = 0; i < 2; ++i)
            {
                if (BitFlag.GetLow(DataModel.UseMask, i))
                {
                    var itemData = DataModel.Entrys[i].BagItemData;
                    if (itemData.ItemId == -1 || itemData.Count == 0)
                    {
                        ClosePanel(i);
                    }
                }
            }
        }
    }
Exemplo n.º 19
0
        private void ShowTradingPage(BAG_TAB_PAGE page, bool repeat = true)
        {
            var nPage = (int)page;

            bagPage = page;
            var e = new ShowPackPageEvent {
                PackPage = nPage
            };

            EventDispatcher.Instance.DispatchEvent(e);

            var data = PlayerDataManager.Instance.PlayerDataModel.Bags.Bags[nPage];
            var bag  = new BagBaseDataModel();

            bag.BagId       = data.BagId;
            bag.Capacity    = data.Capacity;
            bag.MaxCapacity = data.MaxCapacity;
            bag.Size        = data.Size;
            bag.UnlockTime  = data.UnlockTime;
            var count = data.Items.Count;

            BagItemDataModel selectItem = null;
            var equipPage = -1;

            for (var i = 0; i < count; i++)
            {
                var item = data.Items[i];
                if (data.Items[i].ItemId != -1)
                {
                    var tb = Table.GetItemBase(item.ItemId);
                    if (tb == null)
                    {
                        continue;
                    }
                    //TradingSellPage == 0 &&
                    if (BitFlag.GetLow(tb.CanTrade, 0))
                    {
                        if (selectItem == null)
                        {
                            selectItem = item;
                            equipPage  = 0;
                        }
                        bag.Items.Add(item);
                    }
                    //TradingSellPage == 1 &&
                    if (BitFlag.GetLow(tb.CanTrade, 1))
                    {
                        if (bagPage == BAG_TAB_PAGE.PageEquip && item.Exdata.Binding == 1)
                        {
                            continue;
                        }
                        if (selectItem == null)
                        {
                            selectItem = item;
                            equipPage  = 1;
                        }
                        bag.Items.Add(item);
                    }
                }
            }

            BagInfoBind.SetBindDataSource(bag);

            if (selectItem == null)
            {
                selectItem = new BagItemDataModel();
            }

            if (repeat && equipPage != -1)
            {
                EventDispatcher.Instance.DispatchEvent(new UIEvent_TradingEquipTabPage(equipPage));
            }

            EventDispatcher.Instance.DispatchEvent(new UIEvent_TradingBagItemClick(selectItem));
        }
Exemplo n.º 20
0
        //买东西
        public ErrorCodes BuyItem(StoneManager _this, int id, int count)
        {
            var tbStore = Table.GetStore(id);

            if (tbStore == null)
            {
                return(ErrorCodes.Error_StoreID);
            }
            int NeedType  = tbStore.NeedType;
            int NeedValue = tbStore.NeedValue;


            //检查职业
            var character = _this.mCharacter;
            var bag       = character.mBag;
            var roleType  = character.GetRole();

            if (BitFlag.GetLow(tbStore.SeeCharacterID, roleType) == false)
            {
                return(ErrorCodes.RoleIdError);
            }
            //检查条件
            if (tbStore.DisplayCondition != -1)
            {
                var retCond = character.CheckCondition(tbStore.DisplayCondition);
                if (retCond != -2)
                {
                    return(ErrorCodes.Error_ConditionNoEnough);
                }
            }
            //限购
            var vipLevel = character.mBag.GetRes(eResourcesType.VipLevel);
            var tbVip    = Table.GetVIP(vipLevel);
            var idx      = -1;

            for (int i = 0, imax = tbVip.BuyItemId.Length; i < imax; i++)
            {
                if (tbVip.BuyItemId[i] == id)
                {
                    idx = i;
                    break;
                }
            }
            var vipAddCount = idx < 0 ? 0 : tbVip.BuyItemCount[idx];

            if (tbStore.DayCount >= 0)
            {
                if (character.GetExData(tbStore.DayCount) + vipAddCount < count)
                {
                    return(ErrorCodes.Error_StoreBuyCountMax);
                }
            }
            if (tbStore.WeekCount >= 0)
            {
                if (character.GetExData(tbStore.WeekCount) + vipAddCount < count)
                {
                    return(ErrorCodes.Error_StoreBuyCountMax);
                }
            }
            if (tbStore.MonthCount >= 0)
            {
                if (character.GetExData(tbStore.MonthCount) + vipAddCount < count)
                {
                    return(ErrorCodes.Error_StoreBuyCountMax);
                }
            }
            //资源是否足够
            var nowCount  = bag.GetItemCount(NeedType);
            var needCount = (long)NeedValue * count;

            //价格波动处理
            if (tbStore.WaveValue >= 0)
            {
                //从store表指到skillupgrading中读取次数2价格,然后把价格和购买个数重置
                int exIdx = -1;
                if (tbStore.DayCount >= 0)
                {
                    exIdx = tbStore.DayCount;
                }
                else if (tbStore.WeekCount >= 0)
                {
                    exIdx = tbStore.WeekCount;
                }
                else if (tbStore.MonthCount >= 0)
                {
                    exIdx = tbStore.MonthCount;
                }
                if (exIdx >= 0)
                {
                    var tbExdata = Table.GetExdata(exIdx);
                    //已经购买的次数
                    int times  = tbExdata.RefreshValue[0] - character.GetExData(exIdx);
                    var tbCost = Table.GetSkillUpgrading(tbStore.WaveValue);
                    if (tbCost == null)
                    {
                        return(ErrorCodes.Error_StoreNotHaveItem);
                    }
                    if (times < 0 || tbCost.Values.Count <= 0)
                    {
                        return(ErrorCodes.Error_StoreBuyCountMax);
                    }
                    if (times >= tbCost.Values.Count)
                    {
                        times = tbCost.Values.Count - 1;
                    }

                    needCount = tbCost.GetSkillUpgradingValue(times);
                    count     = 1;
                }
            }

            if (nowCount < needCount)
            {
                return(ErrorCodes.Error_ResNoEnough);
            }

            //物品是否足够
            var nowItemCount  = bag.GetItemCount(tbStore.NeedItem);
            var needItemCount = tbStore.NeedCount * count;

            if (nowItemCount < needItemCount)
            {
                return(ErrorCodes.Error_ResNoEnough);
            }

            //组判断
            if (tbStore.GroupId != -1)
            {
                if (!_this.GroupDatas.ContainsKey(id))
                {
                    return(ErrorCodes.Error_StoreNotHaveItem);
                }
            }
            //添加道具
            int level         = _this.mCharacter.GetLevel();
            int tempItemCount = 0;

            tempItemCount = tbStore.ItemCount * count;
            if (tbStore.ItemId == (int)eResourcesType.DiamondRes)//祈福根据玩家等级获得不同的经验加成
            {
                if (level > 100)
                {
                    tempItemCount = tbStore.ItemCount * count + ((level - 100) / 10) * tbStore.BlessGrow;
                }
            }
            var result = bag.CheckAddItem(tbStore.ItemId, tempItemCount);

            if (result != ErrorCodes.OK)
            {
                if (result != ErrorCodes.OK)
                {
                    return(result);
                }
            }
            bag.AddItem(tbStore.ItemId, tempItemCount, eCreateItemType.StoreBuy);
            var e = new BuyItemEvent(character, tbStore.ItemId, tempItemCount);

            EventDispatcher.Instance.DispatchEvent(e);
            //扣除资源
            bag.DeleteItem(NeedType, (int)needCount, eDeleteItemType.StoreBuy);
            if (NeedType == (int)eResourcesType.Contribution)
            {
                _this.mCharacter.AddExData(953, 1);
            }
            //记录商店购买日志
            // server, account, charname, charid, goodsname, buycount, pricetype, totalprice, logtime

            try
            {
                string v = string.Format("gamegoodslog#{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}",
                                         _this.mCharacter.serverId,
                                         "account",
                                         _this.mCharacter.GetName(),
                                         _this.mCharacter.mGuid,
                                         ((int)tbStore.ItemId + 1) * 1000,
                                         "",
                                         tempItemCount,
                                         (int)NeedType,
                                         needCount,
                                         DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); // 时间
                kafaLogger.Info(v);
            }
            catch (Exception)
            {
            }


            //限购次数设置
            if (tbStore.DayCount >= 0)
            {
                character.AddExData(tbStore.DayCount, -count);
            }
            if (tbStore.WeekCount >= 0)
            {
                character.AddExData(tbStore.WeekCount, -count);
            }
            if (tbStore.MonthCount >= 0)
            {
                character.AddExData(tbStore.MonthCount, -count);
            }
            if (tbStore.FuBenCount >= 0)
            {
            }
            //设置标记位
            if (tbStore.BugSign != -1)
            {
                character.SetFlag(tbStore.BugSign, true, 1);
            }

            _this.mCharacter.BroadCastGetEquip(tbStore.ItemId, 100002168);

            return(ErrorCodes.OK);
        }
Exemplo n.º 21
0
    public void OnClickBuyInfoBuy()
    {
        var index   = DataModel.SelectId;
        var count   = DataModel.SelectCount;
        var tbStore = Table.GetStore(index);

        if (tbStore == null)
        {
            return;
        }
        var roleType = PlayerDataManager.Instance.GetRoleId();

        if (BitFlag.GetLow(tbStore.SeeCharacterID, roleType) == false)
        {
            return;
        }

        if (tbStore.DisplayCondition != -1)
        {
            var retCond = PlayerDataManager.Instance.CheckCondition(tbStore.DisplayCondition);
            if (retCond != 0)
            {
                GameUtils.ShowHintTip(retCond);
                return;
            }
        }
        var cost = tbStore.NeedValue * count;

        if (PlayerDataManager.Instance.GetRes(tbStore.NeedType) < cost)
        {
            var tbItemCost = Table.GetItemBase(tbStore.NeedType);
            //{0}不足!
            var str = GameUtils.GetDictionaryText(701);
            str = string.Format(str, tbItemCost.Name);
            GameUtils.ShowHintTip(str);
            PlayerDataManager.Instance.ShowItemInfoGet(tbStore.NeedType);

            if ((int)eResourcesType.GoldRes == tbStore.NeedType)
            {
                EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.ExchangeUI));
            }
            return;
        }
        if (tbStore.NeedItem != -1)
        {
            if (DataModel.ReplaceEquip.ItemId == -1)
            {
                var tbItemCost = Table.GetItemBase(tbStore.NeedItem);
                //{0}不足!
                var str = GameUtils.GetDictionaryText(701);
                str = string.Format(str, tbItemCost.Name);
                GameUtils.ShowHintTip(str);
                return;
            }

            var find = false;
            PlayerDataManager.Instance.ForeachEquip(equip =>
            {
                if (equip.ItemId != tbStore.NeedItem)
                {
                    return;
                }
                if (equip.Index != DataModel.ReplaceEquip.Index)
                {
                    return;
                }
                find = true;
            });
            if (find == false)
            {
                return;
            }
            var equipOld = Table.GetEquipBase(DataModel.ReplaceEquip.ItemId);
            var equipNew = Table.GetEquipBase(tbStore.ItemId);
            var itemNew  = Table.GetItemBase(tbStore.ItemId);
            if (equipOld == null || equipNew == null || itemNew == null)
            {
                return;
            }
            if (equipOld.Part != equipNew.Part)
            {
                UIManager.Instance.ShowMessage(MessageBoxType.OkCancel,
                                               210115,
                                               "",
                                               () => { BuyEquipItem(); });
                return;
            }
            var result = PlayerDataManager.Instance.CheckItemEquip(itemNew, equipNew);
            if (result != eEquipLimit.OK)
            {
                UIManager.Instance.ShowMessage(MessageBoxType.OkCancel,
                                               210116,
                                               "",
                                               () => { BuyEquipItem(); });
                return;
            }
            BuyEquipItem();
        }
        else
        {
            NetManager.Instance.StartCoroutine(StoreBuyCoroutine(DataModel.SelectId, DataModel.SelectCount));
        }
    }
Exemplo n.º 22
0
        public void GetItemList(StoneManager _this, int type, List <StoneItem> items)
        {
            var roleType = _this.mCharacter.GetRole();

            foreach (var item in _this.GroupDatas)
            {
                if (type == item.Value.tbStore.Type)
                {
                    if (BitFlag.GetLow(item.Value.tbStore.SeeCharacterID, roleType) == false)
                    {
                        continue;
                    }

                    if (item.Value.tbStore.FuBenCount >= 0)
                    {
                        continue;
                    }
//                     if (item.Value.tbStore.DisplayCondition != -1)
//                     {
//                         var cc = _this.mCharacter.CheckCondition(item.Value.tbStore.DisplayCondition);
//                         if (cc != -2)
//                         {
//                             continue;
//                         }
//                     }
                    var tempItem = new StoneItem();
                    tempItem.itemid    = item.Value.Id;
                    tempItem.itemcount = -1;
                    items.Add(tempItem);
                }
                //if (type == -1 || type == item.Value.tbStore.Type)
                //{
                //    items.Add(item.Value.Id);
                //}
            }

            List <StoreItem> tempList;

            if (StoneManager.StoneNoGroup.TryGetValue(type, out tempList))
            {
                foreach (var item in tempList)
                {
                    if (BitFlag.GetLow(item.tbStore.SeeCharacterID, roleType) == false)
                    {
                        continue;
                    }
                    if (item.tbStore.FuBenCount >= 0)
                    {
                        continue;
                    }

                    //                     if (item.tbStore.DisplayCondition != -1)
//                     {
//                         var cc = _this.mCharacter.CheckCondition(item.tbStore.DisplayCondition);
//                         if (cc != -2)
//                         {
//                             continue;
//                         }
//                     }
                    var tempItem = new StoneItem();
                    tempItem.itemid    = item.Id;
                    tempItem.itemcount = -1;
                    items.Add(tempItem);
                }
            }
        }
Exemplo n.º 23
0
        //买东西
        public ErrorCodes BuyEquipItem(StoneManager _this, int id, int bagId, int bagIndex, ref int isAddEquip)
        {
            var tbStore = Table.GetStore(id);

            if (tbStore == null)
            {
                return(ErrorCodes.Error_StoreID);
            }
            //检查职业
            var roleType = _this.mCharacter.GetRole();

            if (BitFlag.GetLow(tbStore.SeeCharacterID, roleType) == false)
            {
                return(ErrorCodes.RoleIdError);
            }
            //检查条件
            if (tbStore.DisplayCondition != -1)
            {
                var retCond = _this.mCharacter.CheckCondition(tbStore.DisplayCondition);
                if (retCond != -2)
                {
                    return(ErrorCodes.Error_ConditionNoEnough);
                }
            }
            var count = 1;

            //限购
            if (tbStore.DayCount >= 0)
            {
                if (_this.mCharacter.GetExData(tbStore.DayCount) < count)
                {
                    return(ErrorCodes.Error_StoreBuyCountMax);
                }
            }
            if (tbStore.WeekCount >= 0)
            {
                if (_this.mCharacter.GetExData(tbStore.WeekCount) < count)
                {
                    return(ErrorCodes.Error_StoreBuyCountMax);
                }
            }
            if (tbStore.MonthCount >= 0)
            {
                if (_this.mCharacter.GetExData(tbStore.MonthCount) < count)
                {
                    return(ErrorCodes.Error_StoreBuyCountMax);
                }
            }
            //资源是否足够
            var nowCount  = _this.mCharacter.mBag.GetItemCount(tbStore.NeedType);
            var needCount = tbStore.NeedValue * count;

            if (nowCount < needCount)
            {
                return(ErrorCodes.Error_ResNoEnough);
            }

            //组判断
            if (tbStore.GroupId != -1)
            {
                if (!_this.GroupDatas.ContainsKey(id))
                {
                    return(ErrorCodes.Error_StoreNotHaveItem);
                }
            }
            if (tbStore.NeedItem == -1)
            {
                return(ErrorCodes.Unknow);
            }
            var item = _this.mCharacter.GetItemByBagByIndex(bagId, bagIndex);

            if (item == null || item.GetId() == -1 || !(item is ItemEquip2))
            {
                return(ErrorCodes.Error_ResNoEnough);
            }
            //物品是否足够
            if (item.GetId() != tbStore.NeedItem)
            {
                return(ErrorCodes.Error_ResNoEnough);
            }
            var oldEquip  = Table.GetEquip(item.GetId());
            var nextEquip = Table.GetEquip(tbStore.ItemId);

            if (oldEquip.Part != nextEquip.Part || nextEquip.Occupation != oldEquip.Occupation)
            {
                //添加道具
                var result = _this.mCharacter.mBag.CheckAddItem(tbStore.ItemId, tbStore.ItemCount * 1);
                if (result != ErrorCodes.OK)
                {
                    if (result != ErrorCodes.OK)
                    {
                        return(result);
                    }
                }
                _this.mCharacter.mBag.AddItem(tbStore.ItemId, tbStore.ItemCount * 1, eCreateItemType.StoreBuy);
                _this.mCharacter.GetBag(bagId).ReduceCountByIndex(bagIndex, 1, eDeleteItemType.StoreBuy);
                _this.mCharacter.EquipChange(0, bagId, bagIndex, item);
                isAddEquip = 1;
            }
            else
            {
                isAddEquip = 0;
                //设置道具
                item.SetId(tbStore.ItemId);
                item.MarkDbDirty();
                //通知属性变化
                _this.mCharacter.EquipChange(2, bagId, bagIndex, item);
            }

            //扣除资源
            _this.mCharacter.mBag.DeleteItem(tbStore.NeedType, needCount, eDeleteItemType.StoreBuy);

            try
            {
                //记录商店购买日志
                // server, account, charname, charid, goodsname, buycount, pricetype, totalprice, logtime
                string v = string.Format("gamegoodslog#{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}",
                                         _this.mCharacter.serverId,
                                         "account",
                                         _this.mCharacter.GetName(),
                                         _this.mCharacter.mGuid,
                                         ((int)tbStore.ItemId + 1) * 1000,
                                         "",
                                         tbStore.ItemCount * count,
                                         (int)tbStore.NeedType,
                                         needCount,
                                         DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); // 时间
                kafaLogger.Info(v);
            }
            catch (Exception)
            {
            }

            var e = new BuyItemEvent(_this.mCharacter, tbStore.ItemId, count);

            EventDispatcher.Instance.DispatchEvent(e);
            //限购次数设置
            if (tbStore.DayCount >= 0)
            {
                _this.mCharacter.AddExData(tbStore.DayCount, -count);
            }
            if (tbStore.WeekCount >= 0)
            {
                _this.mCharacter.AddExData(tbStore.WeekCount, -count);
            }
            if (tbStore.MonthCount >= 0)
            {
                _this.mCharacter.AddExData(tbStore.MonthCount, -count);
            }
            //设置标记位
            if (tbStore.BugSign != -1)
            {
                _this.mCharacter.SetFlag(tbStore.BugSign, true, 1);
            }
            return(ErrorCodes.OK);
        }
Exemplo n.º 24
0
        //响应装备更换事件
        private void OnEquipAlterEvent(IEvent ievent)
        {
            if (State != FrameState.Open)
            {
                return;
            }

            var _e     = ievent as EquipChangeEvent;
            var _equip = _e.Item;

            if (_equip.ItemId == -1)
            {
                return;
            }
            var _playerData = PlayerDataManager.Instance;
            var _worstEquip = _playerData.FindWorstEquip(_equip);

            //把缓存里比这件装备差的,都移除掉
            var _toRemove = new List <CacheEntry>();

            {
                var __list1      = m_Caches;
                var __listCount1 = __list1.Count;
                for (var __i1 = 0; __i1 < __listCount1; ++__i1)
                {
                    var _entry = __list1[__i1];
                    {
                        var _tbItem2 = Table.GetItemBase(_entry.ItemId);
                        var _item2   = _playerData.GetItem(_tbItem2.InitInBag, _entry.BagIdx);

                        int fightValueAdd;
                        if (_playerData.CompareEquips(_worstEquip, _item2, out fightValueAdd))
                        {
                            if (fightValueAdd <= 0)
                            {
                                _toRemove.Add(_entry);
                            }
                        }
                    }
                }
            }

            for (var i = m_Caches.Count - 1; i >= 0; --i)
            {
                if (_toRemove.Contains(m_Caches[i]))
                {
                    m_Caches.RemoveAt(i);
                }
            }

            for (var i = 0; i < 2; ++i)
            {
                // 检查是否需要关闭hint panel
                if (BitFlag.GetLow(m_DataModel.UseMask, i))
                {
                    var _data2   = m_DataModel.Entrys[i];
                    var _bagItem = _data2.BagItemData;
                    if (_bagItem.BagId == _equip.BagId && _bagItem.Index == _equip.Index)
                    {
                        ShutPanel(i);
                    }
                    else
                    {
                        int fightValueAdd;
                        if (_playerData.CompareEquips(_worstEquip, _bagItem, out fightValueAdd))
                        {
                            if (fightValueAdd <= 0)
                            {
                                ShutPanel(i);
                            }
                            else
                            {
                                _data2.FightValueOld = _worstEquip.FightValue;
                                _data2.FightValueAdd = fightValueAdd;
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 25
0
    public void RefreshData(UIInitArguments data)
    {
        var args = data as ItemInfoArguments;

        if (args == null)
        {
            return;
        }

        var showType = args.ShowType;

        DataModel.IsShowRecycleMessage = false;

        if (args.DataModel != null)
        {
            var dataModel = args.DataModel;
            DataModel.ItemData.Clone(dataModel);
            DataModel.Tips = Table.GetItemBase(DataModel.ItemData.ItemId).Desc;
            if (DataModel.ItemData.Count != 0)
            {
                DataModel.SellCount    = dataModel.Count;
                DataModel.SellRate     = (float)(DataModel.SellCount) / DataModel.ItemData.Count;
                DataModel.UseCount     = dataModel.Count;
                DataModel.UseRate      = (float)(DataModel.UseCount) / DataModel.ItemData.Count;
                DataModel.RecycleCount = dataModel.Count;
                DataModel.RecycleRate  = (float)(DataModel.RecycleCount) / DataModel.ItemData.Count;
            }
            else
            {
//没有数量就单纯显示吧
                DataModel.IsTips = 1;
            }

            if (showType == (int)eEquipBtnShow.Share || showType == (int)eEquipBtnShow.None)
            {
                DataModel.IsTips = 1;
            }
            else
            {
                DataModel.IsTips = 0;
            }
        }
        else
        {
            DataModel.ItemData.Reset();
            DataModel.ItemData.ItemId = args.ItemId;
            DataModel.Tips            = Table.GetItemBase(DataModel.ItemData.ItemId).Desc;

            DataModel.SellCount    = 1;
            DataModel.UseCount     = 1;
            DataModel.SellRate     = 0.0f;
            DataModel.UseRate      = 0.0f;
            DataModel.RecycleCount = 1;
            DataModel.RecycleRate  = 0.0f;
            if (showType == (int)eEquipBtnShow.Share || showType == (int)eEquipBtnShow.None)
            {
                DataModel.IsTips = 1;
            }
            else
            {
                DataModel.IsTips = 0;
            }
        }

        var tbItem = Table.GetItemBase(DataModel.ItemData.ItemId);

        if (tbItem == null)
        {
            return;
        }

        var type = Table.GetItemType(tbItem.Type);

        if (type == null)
        {
            return;
        }
        if (tbItem.Sell > 0 || tbItem.CallBackPrice > 0)
        {
            DataModel.ShowSellInfo = true;
        }
        else
        {
            DataModel.ShowSellInfo = false;
        }

        if (tbItem.CanUse == 1)
        {
            DataModel.UseCount = 1;
        }

        DataModel.CallBackType = tbItem.CallBackType;
        switch (tbItem.Type)
        {
        case 21000:     //技能书
        {
            GameUtils.InitSkillBook(DataModel);
        }
        break;

        case 26300:     //藏宝图
        {
            InitTreasureMap(DataModel);
        }
        break;

        case 90000:     //
        {
            InitSeedInfo(DataModel);
        }
        break;

        case 70000:     //随从魂魄
        {
            InitPetSoul(DataModel);
        }
        break;

        case 26000:     //随从蛋
        case 26100:     //随从蛋
        {
            InitPetEgg(DataModel);
        }
        break;
        }

        var tbIype = Table.GetItemType(tbItem.Type);

        //等级
        if (tbItem.UseLevel > PlayerDataManager.Instance.GetLevel())
        {
            DataModel.LevelColor = MColor.red;
        }
        else
        {
            DataModel.LevelColor = MColor.green;
        }
        //职业
        var role = tbItem.OccupationLimit;

        if (role != -1)
        {
            var tbCharacter = Table.GetCharacterBase(role);
            var roleType    = PlayerDataManager.Instance.GetRoleId();
            if (tbCharacter != null)
            {
                if (roleType != role)
                {
                    DataModel.ProfessionColor = MColor.red;
                }
                else
                {
                    DataModel.ProfessionColor = MColor.green;
                }
                DataModel.ProfessionLimit = tbCharacter.Name;
            }
        }
        else
        {
            DataModel.ProfessionLimit = GameUtils.GetDictionaryText(220700);
            DataModel.ProfessionColor = MColor.green;
        }

        for (var i = 0; i < DataModel.ShowList.Count; i++)
        {
            DataModel.ShowList[i] = BitFlag.GetLow(tbIype.Info, i);
        }
        //显示获取途径
        DataModel.IsShowGetPath = false;
        if (tbItem.GetWay != -1)
        {
            DataModel.ShowList[13] = true;
            OnClickGet();
        }
    }
Exemplo n.º 26
0
        private void OnUseNewObjEvent(IEvent ievent)
        {
            if (State != FrameState.Open)
            {
                return;
            }

            var _e = ievent as UseItemEvent;

            if (_e == null)
            {
                return;
            }

            var _item = _e.Item;

            if (_item == null)
            {
                return;
            }

            var _entryIndex = -1;

            for (var i = 0; i < 2; ++i)
            {
                if (BitFlag.GetLow(m_DataModel.UseMask, i))
                {
                    var _itemData = m_DataModel.Entrys[i].BagItemData;
                    if (_itemData.Index == _item.Index && _itemData.ItemId == _item.ItemId)
                    {
                        _entryIndex = i;
                        break;
                    }
                }
            }

            if (_entryIndex == -1)
            {
                return;
            }

            var _itemTotalCount = PlayerDataManager.Instance.GetItemTotalCount(_item.ItemId);

            if (_itemTotalCount.Count > 1)
            {
                if (_item.Count <= 1)
                {
                    var _bagItem = PlayerDataManager.Instance.GetBagItemByItemId(_item.BagId, _item.ItemId);
                    if (_bagItem != null)
                    {
                        m_DataModel.Entrys[_entryIndex].BagItemData = _bagItem;
                    }

                    //ClosePanel(entryIndex);
                    //return;
                }

                m_DataModel.Entrys[_entryIndex].Count = _itemTotalCount.Count - 1;

                ResetTimer();
            }
            else
            {
                ShutPanel(_entryIndex);
            }
        }
Exemplo n.º 27
0
        //商店放入一个道具
        public ErrorCodes PushItem(Exchange _this,
                                   int type,
                                   int bagId,
                                   int bagIndex,
                                   int count,
                                   int needType,
                                   int needCount,
                                   int storeIndex,
                                   ref ExchangeItem resultItem)
        {
            //参数条件检查
            var bag = _this.mCharacter.mBag.GetBag(bagId);

            if (bag == null)
            {
                return(ErrorCodes.Error_BagID);
            }
            var item = bag.GetItemByIndex(bagIndex);

            if (item == null || item.GetId() == -1)
            {
                return(ErrorCodes.Error_ItemNotFind);
            }
            if (storeIndex < 0 || storeIndex >= _this.mDataList.Count)
            {
                return(ErrorCodes.Error_DataOverflow);
            }
            if (item.GetCount() < count)
            {
                return(ErrorCodes.Error_CountNotEnough);
            }
            var storeItem = _this.mDataList[storeIndex];

            if (storeItem.State != StoreItemType.Free)
            {
                return(ErrorCodes.Error_ExchangeItemState);
            }
            var tbItem = Table.GetItemBase(item.GetId());

            if (tbItem == null)
            {
                return(ErrorCodes.Error_ItemID);
            }


            var equip = item as ItemEquip2;

            if (equip != null)
            {
                if (equip.GetBinding())
                {
                    return(ErrorCodes.Error_ItemNoExchange);
                }
            }
            if (type != -1)
            {
                if (!BitFlag.GetLow(tbItem.CanTrade, 0))
                {
                    return(ErrorCodes.Error_ItemNoExchange);
                }

                if (needType == 0)
                {
                    if (tbItem.BuyNeedCount * count > needCount)
                    {
                        return(ErrorCodes.Error_ExchangeValueNotEnough);
                    }
                }
                else if (needType == 1)
                {
                    if (needCount < StaticParam.AuctionMinValue)
                    {
                        return(ErrorCodes.Error_ExchangeValueNotEnough);
                    }
                }
                else
                {
                    Logger.Error("PushItem type={0},needType={1}", type, needType);
                }
            }
            else
            {
                if (!BitFlag.GetLow(tbItem.CanTrade, 1))
                {
                    return(ErrorCodes.Error_ItemNoExchange);
                }

                if (needType == 10)
                {
                    if (tbItem.BuyNeedCount * count > needCount)
                    {
                        return(ErrorCodes.Error_ExchangeValueNotEnough);
                    }
                }
                else if (needType == 11)
                {
                    if (needCount < StaticParam.AuctionMinValue)
                    {
                        return(ErrorCodes.Error_ExchangeValueNotEnough);
                    }
                }
                else
                {
                    Logger.Error("PushItem type={0},needType={1}", type, needType);
                }
            }
            //是否有消耗
            switch (type)
            {
            case -1:     //拍卖行
                break;

            case 0:     //正常不广播
                break;

            case 1:     //正常广播
            {
                if (DateTime.FromBinary(_this.mDbData.NextFreeTime) > DateTime.Now)
                {
                    return(ErrorCodes.Error_ExchangeFreeBroadcast);
                }
                _this.mDbData.NextFreeTime = DateTime.Now.AddSeconds(GetBroadcastCD(_this)).ToBinary();
            }
            break;

            case 2:     //购买广播
            {
                if (DateTime.FromBinary(_this.mDbData.NextFreeTime) > DateTime.Now)
                {
                    if (_this.mCharacter.mBag.GetRes(eResourcesType.DiamondRes) < Exchange.BuyBroadcastNeedRes)
                    {
                        return(ErrorCodes.DiamondNotEnough);
                    }
                    _this.mCharacter.mBag.DelRes(eResourcesType.DiamondRes, Exchange.BuyBroadcastNeedRes,
                                                 eDeleteItemType.ExchangeBroadcast);
                    _this.mDbData.NextFreeTime = DateTime.Now.AddSeconds(GetBroadcastCD(_this)).ToBinary();
                }
            }
            break;
            }
            //执行
            var guid         = GetNextId(_this);
            var itemBaseData = new ItemBaseData();

            itemBaseData.ItemId = item.GetId();
            itemBaseData.Count  = count;
            item.CopyTo(itemBaseData.Exdata);
            storeItem.ResetData(guid, itemBaseData, needCount);
            storeItem.NeedType = needType;
            if (type == -1)
            {
                bag.ReduceCountByIndex(bagIndex, count, eDeleteItemType.AuctionPush);
            }
            else
            {
                bag.ReduceCountByIndex(bagIndex, count, eDeleteItemType.ExchangePush);
            }
            _this.mData.Add(guid, storeItem);
            resultItem = storeItem;
            return(ErrorCodes.OK);
        }
Exemplo n.º 28
0
    // 问服务器要场景状态
    public IEnumerator AskSceneExtData()
    {
        var msg = NetManager.Instance.ApplySceneExdata(0);

        yield return(msg.SendAndWaitUntilDone());

        if (msg.State != MessageState.Reply)
        {
            Logger.Debug("AskSceneExtData-------msg.State != MessageState.Reply");
            yield break;
        }

        if (msg.ErrorCode != (int)ErrorCodes.OK)
        {
            UIManager.Instance.ShowNetError(msg.ErrorCode);
            Logger.Debug("AskSceneExtData-------msg.ErrorCode[{0}]", msg.ErrorCode);
            yield break;
        }

        var data = msg.Response;

        var tbScene = Table.GetScene(Scene.SceneTypeId);

        if (tbScene.Type == (int)eSceneType.Fuben)
        {
            OptList <SceneAnimationTrigger> .List.Clear();

            gameObject.transform.GetComponentsInChildren(OptList <SceneAnimationTrigger> .List);
            var triggers = OptList <SceneAnimationTrigger> .List;
            if (triggers.Count <= 0)
            {
                yield break;
                ;
            }

            Table.ForeachTriggerArea(table =>
            {
                if (Scene.SceneTypeId != table.SceneId ||
                    -1 == table.OffLineTrigger ||
                    !BitFlag.GetLow(data, table.OffLineTrigger))
                {
                    return(true);
                }
                {
                    var __array2       = triggers;
                    var __arrayLength2 = __array2.Count;
                    for (var __i2 = 0; __i2 < __arrayLength2; ++__i2)
                    {
                        var trigger = __array2[__i2];
                        {
                            if (trigger.TriggerId == table.ClientAnimation)
                            {
                                trigger.RunToEnd();
                                break;
                            }
                        }
                    }
                }
                return(true);
            });
        }
        else if (tbScene.Type == (int)eSceneType.Pvp)
        {
            if (data == 1)
            {
                var e = new PvpFightReadyEent();
                EventDispatcher.Instance.DispatchEvent(e);
            }
        }
    }
Exemplo n.º 29
0
        public IEnumerator ChangeSceneOverCoroutine()
        {
            using (var blockingLayer = new BlockingLayerHelper(0))
            {
                var data = PlayerDataManager.Instance.mInitBaseAttr;

                var msg = NetManager.Instance.ChangeSceneOver(data.SceneId, data.SceneGuid);

                yield return(msg.SendAndWaitUntilDone());

                Logger.Debug("ChangeSceneOver-------" + msg.State);
                if (msg.State == MessageState.Reply)
                {
                    if (msg.ErrorCode == (int)ErrorCodes.OK)
                    {
                        PlayerDataManager.Instance.TeamInviteClickFubenID = 0;
                        SendSceneChangeEvent();
                        if (ObjManager.Instance != null && ObjManager.Instance.MyPlayer != null)
                        {
                            //ObjManager.Instance.MyPlayer.Position =
                            //    GameLogic.GetTerrainPosition(PlayerDataManager.Instance.mInitBaseAttr.X,
                            //        PlayerDataManager.Instance.mInitBaseAttr.Y);
                        }

                        var sceneExtData = msg.Response;

                        if (GameLogic.Instance != null && GameLogic.Instance.Scene != null)
                        {
                            var scene = GameLogic.Instance.Scene;

                            if (scene.TableScene.Type == (int)eSceneType.Fuben)
                            {
                                var listTb = new List <TriggerAreaRecord>();
                                Table.ForeachTriggerArea(table =>
                                {
                                    if (scene.SceneTypeId != table.SceneId ||
                                        -1 == table.OffLineTrigger ||
                                        !BitFlag.GetLow(sceneExtData, table.OffLineTrigger))
                                    {
                                        return(true);
                                    }
                                    listTb.Add(table);

                                    return(true);
                                });

                                if (listTb.Count > 0)
                                {
                                    OptList <SceneAnimationTrigger> .List.Clear();

                                    scene.transform.GetComponentsInChildren(OptList <SceneAnimationTrigger> .List);
                                    var triggers = OptList <SceneAnimationTrigger> .List;

                                    var __array2       = triggers;
                                    var __arrayLength2 = __array2.Count;
                                    for (var __i2 = 0; __i2 < __arrayLength2; ++__i2)
                                    {
                                        var trigger = __array2[__i2];
                                        {
                                            foreach (var tb in listTb)
                                            {
                                                if (trigger.TriggerId == tb.ClientAnimation)
                                                {
                                                    trigger.RunToEnd();
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            else if (scene.TableScene.Type == (int)eSceneType.Pvp)
                            {
                                if (sceneExtData == 1)
                                {
                                    var e = new PvpFightReadyEent();
                                    EventDispatcher.Instance.DispatchEvent(e);
                                }
                            }
                        }
                    }
                    else
                    {
                        UIManager.Instance.ShowNetError(msg.ErrorCode);
                    }
                }
            }

            //yield return new WaitForSeconds(1);
            ShowChangeSceneMessage();
        }
Exemplo n.º 30
0
    private void OnUseItemNew(IEvent ievent)
    {
        if (State != FrameState.Open)
        {
            return;
        }

        var e = ievent as UseItemEvent;

        if (e == null)
        {
            return;
        }

        var item = e.Item;

        if (item == null)
        {
            return;
        }

        var entryIndex = -1;

        for (var i = 0; i < 2; ++i)
        {
            if (BitFlag.GetLow(DataModel.UseMask, i))
            {
                var itemData = DataModel.Entrys[i].BagItemData;
                if (itemData == item)
                {
                    entryIndex = i;
                    break;
                }
            }
        }

        if (entryIndex == -1)
        {
            return;
        }

        var itemTotalCount = PlayerDataManager.Instance.GetItemTotalCount(item.ItemId);

        if (itemTotalCount.Count > 1)
        {
            if (item.Count <= 1)
            {
                var bagItem = PlayerDataManager.Instance.GetBagItemByItemId(item.BagId, item.ItemId);
                if (bagItem != null)
                {
                    DataModel.Entrys[entryIndex].BagItemData = bagItem;
                }

                //ClosePanel(entryIndex);
                //return;
            }

            DataModel.Entrys[entryIndex].Count = itemTotalCount.Count - 1;

            ResetTimer();
        }
        else
        {
            ClosePanel(entryIndex);
        }
    }