示例#1
0
        public void Init(BuffData _this)
        {
            var tbBuff = _this.mBuff;

            if (tbBuff.Duration != 0)
            {
                foreach (var i in tbBuff.effectpoint)
                {
                    //Buff不需要心跳
                    if (i == -1)
                    {
                        continue;
                    }
                    if (BitFlag.GetAnd(i, 14336) == 0)
                    {
                        continue;
                    }
                    StarUpdata(_this);
                    return;
                }
                if (tbBuff.Duration > 0)
                {
                    StarTrigger(_this);
                }
            }
        }
示例#2
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);
        }
示例#3
0
 public void NotifyTableChange(int flag)
 {
     if (BitFlag.GetLow(flag, (int)eNotifyTableChangeFlag.RechargeTables))
     {
         EventDispatcher.Instance.DispatchEvent(new RechageActivityInitTables());
     }
 }
示例#4
0
        public void SetPause(bool value, int stateIndex = 0)
        {
            if (stateIndex < 0 || 63 < stateIndex)
            {
#if LOG_DEBUG
#if UNITY_5_6_OR_NEWER
                UnityEngine.Debug.LogWarning("DYNAMIC_TIMER:INVALID_STATEINDEX:" + stateIndex);
#endif // UNITY_5_6_OR_NEWER
#endif // LOG_DEBUG
                return;
            }

            bool prev = this.Paused;
            this.pauseStatus = BitFlag.SetField(this.pauseStatus, stateIndex, value);
            bool next = this.Paused;

            if (prev != next)
            {
                var ms = this.GetTimeMs();
                if (next)
                {
                    this.pausedMs = ms;
                }
                else
                {
                    this.fromMs  += ms - this.pausedMs;
                    this.pausedMs = 0;
                }
            }
        }
示例#5
0
        //检查并显示一个提示条
        private bool CheckAndShowMsg(int entryId, int itemId, int bagIdx)
        {
            var _args = PlayerDataManager.Instance.GetGainItemHintEntryArgs(itemId, bagIdx);

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

            m_DataModel.UseMask = BitFlag.IntSetFlag(m_DataModel.UseMask, entryId);

            var _entry = m_DataModel.Entrys[entryId];

            _entry.BagItemData   = _args.ItemData;
            _entry.Count         = _args.Count;
            _entry.FightValueOld = _args.FightValueOld;
            _entry.Index         = _args.OldEquipIdx;
            _entry.FightValueAdd = _entry.BagItemData.FightValue - _entry.FightValueOld;

            var quality = Table.GetItemBase(_entry.BagItemData.ItemId).Quality;

            m_DataModel.IsShowTimes[entryId] = false;
            if (quality <= 3 && _entry.BagItemData.BagId == 0)
            {
                m_DataModel.IsShowTimes[entryId]    = true;
                CountdownTime[entryId]              = 9f;
                m_DataModel.CountdownTimes[entryId] = "(" + (int)CountdownTime[entryId] + GameUtils.GetDictionaryText(1045) + ")";
            }
            return(true);
        }
示例#6
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;
            }
        }
    }
示例#7
0
        public void ToStringTest3()
        {
            BitFlag flag = new BitFlag();

            Assert.AreEqual(flag.ToString(), "(0-0-0-0-0-0-0-0)");
            Console.WriteLine(flag);
        }
示例#8
0
        public void ToStringTest2()
        {
            BitFlag flag = new BitFlag(0xFF);

            Assert.AreEqual(flag.ToString(), "(1-1-1-1-1-1-1-1)");
            Console.WriteLine(flag);
        }
示例#9
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);
            }
        }
示例#10
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);
        }
    }
示例#11
0
        public void GetTest()
        {
            BitFlag flag = new BitFlag(0x05);

            Assert.True(flag[0]);
            Assert.True(flag[2]);
            Console.WriteLine(flag);
        }
        /// <summary>
        /// Process normal character
        /// </summary>
        /// <param name="plane">Plane</param>
        /// <param name="s">String</param>
        /// <param name="current">Current automaton</param>
        /// <param name="c">Char</param>
        /// <param name="index">Index</param>
        /// <param name="next">Next automaton</param>
        /// <returns></returns>
        internal InputAutomaton ProcessNormal(int plane, string s, InputAutomaton current, ref string c, ref int index, InputAutomaton next)
        {
            BitFlag custom = InputCustomDefaultV1.Ope_NO_CUSTOM;

            // Add automaton
            CreateAutomaton(plane, current, c, next, custom);

            return(current);
        }
示例#13
0
 /// <summary>
 ///     BitFlag类型存储的初始化构造器
 /// </summary>
 public BitFlagValueStored(BitFlag value)
 {
     _value  = value;
     _typeId = (byte)PropertyTypes.BitFlag;
     if (_value == null)
     {
         IsNull = true;
     }
 }
示例#14
0
        /// <summary>
        ///     从第三方客户数据转换为元数据
        ///     <para>* 此方法将会被轻量级的DataHelper所使用,并且写入的数据将不会拥有编号(Id)</para>
        /// </summary>
        /// <param name="proxy">内存片段代理器</param>
        /// <param name="target">目标对象实例</param>
        /// <param name="isArrayElement">当前写入的值是否为数组元素标示</param>
        /// <param name="isNullable">是否为可空字段标示</param>
        public override void Process(IMemorySegmentProxy proxy, object target, bool isArrayElement = false, bool isNullable = false)
        {
            if (target == null)
            {
                return;
            }
            BitFlag value = (BitFlag)target;

            proxy.WriteBitFlag(value);
        }
示例#15
0
        public void SetTest()
        {
            BitFlag flag = new BitFlag();

            flag[0] = true;
            flag[2] = true;
            byte value = ConvertToByte(flag);

            Assert.True(value == 0x05);
            Console.WriteLine(flag);
        }
示例#16
0
    //卸下装备中的技能
    public void UnEquipSkill(IEvent ievent)
    {
        var ee        = ievent as UIEvent_SkillFrame_UnEquipSkill;
        var skillitem = new SkillItemDataModel();

        skillitem.SkillId    = -1;
        mEquipSkillDirtyMark = BitFlag.IntSetFlag(mEquipSkillDirtyMark, ee.Index);
        SkillDataModel.EquipSkills[ee.Index] = skillitem;
        skillChanged = true;

        SyncSkillEquipData(null);
    }
示例#17
0
        /// <summary>
        ///     将一个BitFlag转换为内部的字节值
        /// </summary>
        /// <param name="bits">BitFlag</param>
        /// <returns>返回内部的字节值</returns>
        internal static byte ConvertToByte(BitFlag bits)
        {
            byte result = 0;

            for (byte i = 0; i < 8; i++)
            {
                if (bits[i])
                {
                    result |= (byte)(1 << i);
                }
            }
            return(result);
        }
示例#18
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;
        }
    }
示例#19
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);
        }
示例#20
0
        public void GetDataTest()
        {
            BitFlag flag = new BitFlag();

            flag[0] = true;
            flag[2] = true;
            byte value = flag.GetData();

            Assert.True(value == 0x05);
            Console.WriteLine(flag);

            flag = new BitFlag(0x05);
            Console.WriteLine(flag);
        }
示例#21
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));
            }
        }
示例#22
0
        /// <summary>
        ///     写入一个指定类型的值
        /// </summary>
        /// <param name="value">指定类型的值</param>
        public void WriteBitFlag(BitFlag value)
        {
            IMemorySegment segment = GetSegment(_currentIndex);
            uint           remainingSize;

            if (segment.EnsureSize(Size.BitFlag, out remainingSize))
            {
                segment.WriteBitFlag(value);
            }
            else
            {
                segment = GetSegment(++_currentIndex);
                segment.WriteBitFlag(value);
            }
        }
示例#23
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);
            }
        }
    }
示例#24
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);
                }
            }
        }
示例#25
0
    //拖拽技能到技能bar
    public void OnSkillEquip(IEvent ievent)
    {
        var ee        = ievent as UIEvent_SkillFrame_EquipSkill;
        var nIndex    = ee.Index;
        var skillId   = ee.SkillId;
        var skillData = SkillDataModel;

        SkillItemDataModel equipSkill;

        if (!PlayerDataManager.Instance.mAllSkills.TryGetValue(skillId, out equipSkill))
        {
            Logger.Error("player dont have this skill -----skillID = {0}--", skillId);
            return;
        }

        //如果当前槽位冷却中,新加入技能重新冷却
        var bNewSkill   = true;
        var lastSkillCD = (Math.Abs(skillData.EquipSkills[nIndex].CoolDownTime) > 0.0001f);

        //如果技能在别的槽位,把原来的槽位置空
        var equipindex = skillData.EquipSkills.IndexOf(equipSkill);

        if (equipindex != -1)
        {
            var nullSkill = new SkillItemDataModel();
            nullSkill.SkillId = -1;
            skillData.EquipSkills[equipindex] = nullSkill;
            bNewSkill = false;
        }

        if (bNewSkill && lastSkillCD)
        {
            mEquipSkillDirtyMark = BitFlag.IntSetFlag(mEquipSkillDirtyMark, nIndex);
        }

        skillData.EquipSkills[nIndex] = equipSkill;
        skillChanged = true;


        if (ee.BSyncToServer)
        {
            SyncSkillEquipData(null);
        }
        else
        {
            PlayerDataManager.Instance.RefrehEquipPriority();
        }
    }
示例#26
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;
 }
示例#27
0
        /// <summary>
        /// Expect enum collection but C# does not support enum constraint
        /// </summary>
        public static Enum ToBitFlag(IEnumerable valueCollection) // where T: System.Enum
        {
            if (valueCollection == null)
            {
                return(BitFlag.None);
            }

            BitFlag combinedFlag = BitFlag.None;

            foreach (object item in valueCollection)
            {
                BitFlag flag = (BitFlag)((int)item);
                combinedFlag = combinedFlag | flag;
            }

            return(combinedFlag);
        }
示例#28
0
        public void PushPosition(Unit unit, byte flag)
        {
            var us = GetCreateUnitSync(unit.uid);

            if (BitFlag.TestByteFlag(flag, 0))
            {
                us.x = unit.x;
            }
            if (BitFlag.TestByteFlag(flag, 1))
            {
                us.y = unit.y;
            }
            if (BitFlag.TestByteFlag(flag, 2))
            {
                us.z = unit.z;
            }
        }
示例#29
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);
        }
示例#30
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);
            }
        }