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); } } }
//检查下,当前显示的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); }
public void NotifyTableChange(int flag) { if (BitFlag.GetLow(flag, (int)eNotifyTableChangeFlag.RechargeTables)) { EventDispatcher.Instance.DispatchEvent(new RechageActivityInitTables()); } }
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; } } }
//检查并显示一个提示条 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); }
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; } } }
public void ToStringTest3() { BitFlag flag = new BitFlag(); Assert.AreEqual(flag.ToString(), "(0-0-0-0-0-0-0-0)"); Console.WriteLine(flag); }
public void ToStringTest2() { BitFlag flag = new BitFlag(0xFF); Assert.AreEqual(flag.ToString(), "(1-1-1-1-1-1-1-1)"); Console.WriteLine(flag); }
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); } }
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); } }
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); }
/// <summary> /// BitFlag类型存储的初始化构造器 /// </summary> public BitFlagValueStored(BitFlag value) { _value = value; _typeId = (byte)PropertyTypes.BitFlag; if (_value == null) { IsNull = true; } }
/// <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); }
public void SetTest() { BitFlag flag = new BitFlag(); flag[0] = true; flag[2] = true; byte value = ConvertToByte(flag); Assert.True(value == 0x05); Console.WriteLine(flag); }
//卸下装备中的技能 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); }
/// <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); }
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; } }
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); }
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); }
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)); } }
/// <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); } }
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); } } }
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); } } }
//拖拽技能到技能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(); } }
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; }
/// <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); }
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; } }
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); }
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); } }