| File was renamed from Main/Manager/GameSystemManager/VirtualPackManager.cs |
| | |
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using System.Text;
|
| | |
|
| | | using UnityEngine;
|
| | | namespace vnxbqy.UI
|
| | | {
|
| | |
|
| | | public class VirtualPackManager : GameSystemManager<VirtualPackManager>
|
| | | {
|
| | | Dictionary<PackType, List<VirtualPackItem>> virtualPackItems
|
| | | = new Dictionary<PackType, List<VirtualPackItem>>();
|
| | | Dictionary<PackType, ObjectPool<VirtualPackItem>> m_VirtualItemPool
|
| | | = new Dictionary<PackType, ObjectPool<VirtualPackItem>>();
|
| | | Dictionary<PackType, int> virtualPackCapacityDict = new Dictionary<PackType, int>();
|
| | |
|
| | | public event Action<PackType> virtualPackRefresh;
|
| | | int getA206Count = 0; //收到了几次A206包
|
| | | bool isFrist = false; //是不是第一次获得聚魂碎片
|
| | | Dictionary<int, int> noPackItemCountDict = new Dictionary<int, int>(); //无需背包的物品数量刷新,自动转化为数值
|
| | | public event Action OnNoPackItemCountRefresh;
|
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | | {
|
| | | foreach (var packType in virtualPackItems.Keys)
|
| | | {
|
| | | var pool = m_VirtualItemPool[packType];
|
| | | var items = virtualPackItems[packType];
|
| | | foreach (var item in items)
|
| | | {
|
| | | pool.Release(item);
|
| | | }
|
| | | }
|
| | | virtualPackItems.Clear();
|
| | | noPackItemCountDict.Clear();
|
| | | getA206Count = 0;
|
| | | isFrist = false;
|
| | | }
|
| | |
|
| | | public void OnPlayerLoginOk()
|
| | | {
|
| | | isFrist = noPackItemCountDict.Count == 0;
|
| | | }
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | | base.Init();
|
| | | ParseConfig();
|
| | | m_VirtualItemPool.Add(PackType.GatherSoul, new ObjectPool<VirtualPackItem>(OnGetItem, OnReleaseItem));
|
| | | m_VirtualItemPool.Add(PackType.RunePack, new ObjectPool<VirtualPackItem>(OnGetItem, OnReleaseItem));
|
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
| | | DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
|
| | | }
|
| | |
|
| | | public override void Release()
|
| | | {
|
| | | base.Release();
|
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
| | | DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
|
| | | }
|
| | |
|
| | | void ParseConfig()
|
| | | {
|
| | | var funcConfig = FuncConfigConfig.Get("RunePackageNum");
|
| | | virtualPackCapacityDict.Add(PackType.RunePack, int.Parse(funcConfig.Numerical1));
|
| | | }
|
| | |
|
| | | public bool IsVirtualPack(PackType packType)
|
| | | {
|
| | | switch (packType)
|
| | | {
|
| | | case PackType.GatherSoul:
|
| | | case PackType.RunePack:
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | public int GetPackCapacity(PackType packType)
|
| | | {
|
| | | if (virtualPackCapacityDict.ContainsKey(packType))
|
| | | {
|
| | | return virtualPackCapacityDict[packType];
|
| | | }
|
| | | return 0;
|
| | | }
|
| | |
|
| | | public int GetPackRemainCount(PackType packType)
|
| | | {
|
| | | var capacity = GetPackCapacity(packType);
|
| | | return capacity - GetPackItemCount(packType);
|
| | | }
|
| | |
|
| | | public int GetPackItemCount(PackType packType)
|
| | | {
|
| | | if (virtualPackItems.ContainsKey(packType))
|
| | | {
|
| | | return virtualPackItems[packType].Count;
|
| | | }
|
| | | return 0;
|
| | | }
|
| | |
|
| | | public int GetItemCountById(PackType packType, int id)
|
| | | {
|
| | | var count = 0;
|
| | | List<int> list;
|
| | | if (TryGetItems(packType, out list))
|
| | | {
|
| | | for (int i = 0; i < list.Count; i++)
|
| | | {
|
| | | VirtualPackItem item;
|
| | | if (TryGetItem(packType, list[i], out item)
|
| | | && item.id == id)
|
| | | {
|
| | | count++;
|
| | | }
|
| | | }
|
| | | }
|
| | | return count;
|
| | | }
|
| | |
|
| | | public void GetItemIndexs(PackType packType, ref List<int> list)
|
| | | {
|
| | | list.Clear();
|
| | | List<VirtualPackItem> _list;
|
| | | if (virtualPackItems.TryGetValue(packType, out _list))
|
| | | {
|
| | | for (int i = 0; i < _list.Count; i++)
|
| | | {
|
| | | list.Add(_list[i].index);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public bool TryGetItems(PackType packType, out List<int> list)
|
| | | {
|
| | | list = new List<int>();
|
| | | List<VirtualPackItem> _list;
|
| | | if (virtualPackItems.TryGetValue(packType, out _list))
|
| | | {
|
| | | for (int i = 0; i < _list.Count; i++)
|
| | | {
|
| | | list.Add(_list[i].index);
|
| | | }
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | public bool TryGetItem<T>(PackType packType, int packIndex, out T item) where T : VirtualPackItem
|
| | | {
|
| | | item = default(T);
|
| | | if (virtualPackItems.ContainsKey(packType))
|
| | | {
|
| | | var _index = virtualPackItems[packType].FindIndex((x) =>
|
| | | {
|
| | | return x.index == packIndex;
|
| | | });
|
| | | if (_index != -1)
|
| | | {
|
| | | item = virtualPackItems[packType][_index] as T;
|
| | | }
|
| | | return _index != -1;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | public void OnReceiveServerPack(HA204_tagMCVPackRefresh package)
|
| | | {
|
| | | var packType = (PackType)package.PackType;
|
| | | if (!IsVirtualPack(packType))
|
| | | {
|
| | | return;
|
| | | }
|
| | | List<VirtualPackItem> list;
|
| | | if (!virtualPackItems.TryGetValue(packType, out list))
|
| | | {
|
| | | list = new List<VirtualPackItem>();
|
| | | virtualPackItems.Add(packType, list);
|
| | | }
|
| | | SetVirtualItem(packType, ref list, package.VPacklItemList);
|
| | | if (virtualPackRefresh != null)
|
| | | {
|
| | | virtualPackRefresh((PackType)package.PackType);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public void OnReceiveServerPack(HA205_tagMCVPackClear package)
|
| | | {
|
| | | var packType = (PackType)package.PackType;
|
| | | if (!IsVirtualPack(packType))
|
| | | {
|
| | | return;
|
| | | }
|
| | | List<VirtualPackItem> list;
|
| | | if (virtualPackItems.TryGetValue(packType, out list))
|
| | | {
|
| | | var pool = m_VirtualItemPool[packType];
|
| | | for (int i = 0; i < package.Count; i++)
|
| | | {
|
| | | var index = package.ItemPlaceList[i];
|
| | | var items = list.FindAll((x) =>
|
| | | {
|
| | | return x.index == index;
|
| | | });
|
| | | foreach (var item in items)
|
| | | {
|
| | | list.Remove(item);
|
| | | pool.Release(item);
|
| | | }
|
| | | }
|
| | | if (virtualPackRefresh != null)
|
| | | {
|
| | | virtualPackRefresh(packType);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | public void UpdateAutoItemCountRefresh(HA206_tagMCAutoItemCountRefresh netPack)
|
| | | {
|
| | |
|
| | | ShowRewardWin(netPack);//vNetData中ItemCount传的是碎片总数,需要在noPackItemCountDict写入数据之前计算差值
|
| | | for (int i = 0; i < netPack.Count; i++)
|
| | | {
|
| | | noPackItemCountDict[(int)netPack.ItemCountList[i].ItemID] = (int)netPack.ItemCountList[i].ItemCount;
|
| | | }
|
| | | OnNoPackItemCountRefresh?.Invoke();
|
| | | }
|
| | |
|
| | | void ShowRewardWin(HA206_tagMCAutoItemCountRefresh vNetData)
|
| | | {
|
| | | getA206Count += 1;
|
| | | if (ItemLogicUtility.Instance.hidePickItem)
|
| | | return;
|
| | | // if (ModelCenter.Instance.GetModel<GatheringSoulModel>().isOpenXBWin)
|
| | | // return;
|
| | | if (getA206Count <= 1 && !isFrist)
|
| | | return;
|
| | |
|
| | | for (int i = 0; i < vNetData.ItemCountList.Length; i++)
|
| | | {
|
| | | int itemID = (int)vNetData.ItemCountList[i].ItemID;
|
| | | int itemCount = (int)vNetData.ItemCountList[i].ItemCount;
|
| | | if (noPackItemCountDict.ContainsKey(itemID) && noPackItemCountDict[itemID] > itemCount)
|
| | | return;
|
| | | ItemLogicUtility.Instance.RefreshPickItem(PackType.Item, itemID.ToString());
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | public int GetNoPackItemCount(int id)
|
| | | {
|
| | | if (noPackItemCountDict.ContainsKey(id))
|
| | | {
|
| | | return noPackItemCountDict[id];
|
| | | }
|
| | | return 0;
|
| | | }
|
| | |
|
| | | public Dictionary<int, int> GetAllNoPackItem()
|
| | | {
|
| | | return noPackItemCountDict;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | void SetVirtualItem(PackType packType, ref List<VirtualPackItem> list, HA204_tagMCVPackRefresh.tagMCVPackItem[] items)
|
| | | {
|
| | | var pool = m_VirtualItemPool[packType];
|
| | | for (int i = 0; i < items.Length; i++)
|
| | | {
|
| | | var item = list.Find((x) =>
|
| | | {
|
| | | return x.index == items[i].ItemPlace;
|
| | | });
|
| | | if (item != null)
|
| | | {
|
| | | item.Release();
|
| | | }
|
| | | else
|
| | | {
|
| | | if (pool.inactivedCount > 0)
|
| | | {
|
| | | item = pool.Get();
|
| | | list.Add(item);
|
| | | }
|
| | | }
|
| | | if (item == null)
|
| | | {
|
| | | item = VirtualPackItem.Get(packType);
|
| | | list.Add(item);
|
| | | }
|
| | | item.ParsePackItem(items[i].ItemPlace, items[i].ItemData);
|
| | |
|
| | | ItemLogicUtility.Instance.RefreshPickItem(packType, item.id.ToString());
|
| | | }
|
| | | }
|
| | |
|
| | | static void OnGetItem(VirtualPackItem item)
|
| | | {
|
| | |
|
| | | }
|
| | |
|
| | | static void OnReleaseItem(VirtualPackItem item)
|
| | | {
|
| | | item.Release();
|
| | | }
|
| | | }
|
| | |
|
| | | public abstract class VirtualPackItem
|
| | | {
|
| | | public int index { get; private set; }
|
| | |
|
| | | public int id { get; private set; }
|
| | |
|
| | | public int level { get; private set; }
|
| | |
|
| | | protected string dataString { get; set; }
|
| | |
|
| | | protected static StringBuilder sb = new StringBuilder();
|
| | |
|
| | | public virtual void ParsePackItem(int index, uint data)
|
| | | {
|
| | | this.index = index;
|
| | |
|
| | | dataString = data.ToString();
|
| | | int delta = 10 - dataString.Length;
|
| | | sb.Length = 0;
|
| | | sb.Append('0', delta);
|
| | | dataString = dataString.Insert(0, sb.ToString());
|
| | |
|
| | | id = int.Parse(dataString.Substring(5, 5));
|
| | | level = int.Parse(dataString.Substring(2, 3)) + 1;
|
| | | }
|
| | |
|
| | | public virtual void Release()
|
| | | {
|
| | | dataString = null;
|
| | | }
|
| | |
|
| | | public static VirtualPackItem Get(PackType packType)
|
| | | {
|
| | | // switch (packType)
|
| | | // {
|
| | | // case PackType.RunePack:
|
| | | // return new RuneItem();
|
| | | // }
|
| | | return null;
|
| | | }
|
| | | }
|
| | |
|
| | | public struct VirtualItem
|
| | | {
|
| | | public PackType packType;
|
| | | public int itemId;
|
| | | public int index;
|
| | | public int level;
|
| | | }
|
| | | }
|
| | |
|
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | using UnityEngine; |
| | | namespace vnxbqy.UI |
| | | { |
| | | |
| | | public class VirtualPackManager : GameSystemManager<VirtualPackManager> |
| | | { |
| | | Dictionary<PackType, List<VirtualPackItem>> virtualPackItems |
| | | = new Dictionary<PackType, List<VirtualPackItem>>(); |
| | | Dictionary<PackType, ObjectPool<VirtualPackItem>> m_VirtualItemPool |
| | | = new Dictionary<PackType, ObjectPool<VirtualPackItem>>(); |
| | | Dictionary<PackType, int> virtualPackCapacityDict = new Dictionary<PackType, int>(); |
| | | |
| | | public event Action<PackType> virtualPackRefresh; |
| | | int getA206Count = 0; //收到了几次A206包 |
| | | bool isFrist = false; //是不是第一次获得聚魂碎片 |
| | | Dictionary<int, int> noPackItemCountDict = new Dictionary<int, int>(); //无需背包的物品数量刷新,自动转化为数值 |
| | | public event Action OnNoPackItemCountRefresh; |
| | | |
| | | public void OnBeforePlayerDataInitialize() |
| | | { |
| | | foreach (var packType in virtualPackItems.Keys) |
| | | { |
| | | var pool = m_VirtualItemPool[packType]; |
| | | var items = virtualPackItems[packType]; |
| | | foreach (var item in items) |
| | | { |
| | | pool.Release(item); |
| | | } |
| | | } |
| | | virtualPackItems.Clear(); |
| | | noPackItemCountDict.Clear(); |
| | | getA206Count = 0; |
| | | isFrist = false; |
| | | } |
| | | |
| | | public void OnPlayerLoginOk() |
| | | { |
| | | isFrist = noPackItemCountDict.Count == 0; |
| | | } |
| | | |
| | | public override void Init() |
| | | { |
| | | base.Init(); |
| | | ParseConfig(); |
| | | m_VirtualItemPool.Add(PackType.GatherSoul, new ObjectPool<VirtualPackItem>(OnGetItem, OnReleaseItem)); |
| | | m_VirtualItemPool.Add(PackType.RunePack, new ObjectPool<VirtualPackItem>(OnGetItem, OnReleaseItem)); |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; |
| | | DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk; |
| | | } |
| | | |
| | | public override void Release() |
| | | { |
| | | base.Release(); |
| | | DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; |
| | | DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk; |
| | | } |
| | | |
| | | void ParseConfig() |
| | | { |
| | | var funcConfig = FuncConfigConfig.Get("RunePackageNum"); |
| | | virtualPackCapacityDict.Add(PackType.RunePack, int.Parse(funcConfig.Numerical1)); |
| | | } |
| | | |
| | | public bool IsVirtualPack(PackType packType) |
| | | { |
| | | switch (packType) |
| | | { |
| | | case PackType.GatherSoul: |
| | | case PackType.RunePack: |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public int GetPackCapacity(PackType packType) |
| | | { |
| | | if (virtualPackCapacityDict.ContainsKey(packType)) |
| | | { |
| | | return virtualPackCapacityDict[packType]; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | public int GetPackRemainCount(PackType packType) |
| | | { |
| | | var capacity = GetPackCapacity(packType); |
| | | return capacity - GetPackItemCount(packType); |
| | | } |
| | | |
| | | public int GetPackItemCount(PackType packType) |
| | | { |
| | | if (virtualPackItems.ContainsKey(packType)) |
| | | { |
| | | return virtualPackItems[packType].Count; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | public int GetItemCountById(PackType packType, int id) |
| | | { |
| | | var count = 0; |
| | | List<int> list; |
| | | if (TryGetItems(packType, out list)) |
| | | { |
| | | for (int i = 0; i < list.Count; i++) |
| | | { |
| | | VirtualPackItem item; |
| | | if (TryGetItem(packType, list[i], out item) |
| | | && item.id == id) |
| | | { |
| | | count++; |
| | | } |
| | | } |
| | | } |
| | | return count; |
| | | } |
| | | |
| | | public void GetItemIndexs(PackType packType, ref List<int> list) |
| | | { |
| | | list.Clear(); |
| | | List<VirtualPackItem> _list; |
| | | if (virtualPackItems.TryGetValue(packType, out _list)) |
| | | { |
| | | for (int i = 0; i < _list.Count; i++) |
| | | { |
| | | list.Add(_list[i].index); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public bool TryGetItems(PackType packType, out List<int> list) |
| | | { |
| | | list = new List<int>(); |
| | | List<VirtualPackItem> _list; |
| | | if (virtualPackItems.TryGetValue(packType, out _list)) |
| | | { |
| | | for (int i = 0; i < _list.Count; i++) |
| | | { |
| | | list.Add(_list[i].index); |
| | | } |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public bool TryGetItem<T>(PackType packType, int packIndex, out T item) where T : VirtualPackItem |
| | | { |
| | | item = default(T); |
| | | if (virtualPackItems.ContainsKey(packType)) |
| | | { |
| | | var _index = virtualPackItems[packType].FindIndex((x) => |
| | | { |
| | | return x.index == packIndex; |
| | | }); |
| | | if (_index != -1) |
| | | { |
| | | item = virtualPackItems[packType][_index] as T; |
| | | } |
| | | return _index != -1; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public void OnReceiveServerPack(HA204_tagMCVPackRefresh package) |
| | | { |
| | | var packType = (PackType)package.PackType; |
| | | if (!IsVirtualPack(packType)) |
| | | { |
| | | return; |
| | | } |
| | | List<VirtualPackItem> list; |
| | | if (!virtualPackItems.TryGetValue(packType, out list)) |
| | | { |
| | | list = new List<VirtualPackItem>(); |
| | | virtualPackItems.Add(packType, list); |
| | | } |
| | | SetVirtualItem(packType, ref list, package.VPacklItemList); |
| | | if (virtualPackRefresh != null) |
| | | { |
| | | virtualPackRefresh((PackType)package.PackType); |
| | | } |
| | | |
| | | } |
| | | |
| | | public void OnReceiveServerPack(HA205_tagMCVPackClear package) |
| | | { |
| | | var packType = (PackType)package.PackType; |
| | | if (!IsVirtualPack(packType)) |
| | | { |
| | | return; |
| | | } |
| | | List<VirtualPackItem> list; |
| | | if (virtualPackItems.TryGetValue(packType, out list)) |
| | | { |
| | | var pool = m_VirtualItemPool[packType]; |
| | | for (int i = 0; i < package.Count; i++) |
| | | { |
| | | var index = package.ItemPlaceList[i]; |
| | | var items = list.FindAll((x) => |
| | | { |
| | | return x.index == index; |
| | | }); |
| | | foreach (var item in items) |
| | | { |
| | | list.Remove(item); |
| | | pool.Release(item); |
| | | } |
| | | } |
| | | if (virtualPackRefresh != null) |
| | | { |
| | | virtualPackRefresh(packType); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public void UpdateAutoItemCountRefresh(HA206_tagMCAutoItemCountRefresh netPack) |
| | | { |
| | | |
| | | ShowRewardWin(netPack);//vNetData中ItemCount传的是碎片总数,需要在noPackItemCountDict写入数据之前计算差值 |
| | | for (int i = 0; i < netPack.Count; i++) |
| | | { |
| | | noPackItemCountDict[(int)netPack.ItemCountList[i].ItemID] = (int)netPack.ItemCountList[i].ItemCount; |
| | | } |
| | | OnNoPackItemCountRefresh?.Invoke(); |
| | | } |
| | | |
| | | void ShowRewardWin(HA206_tagMCAutoItemCountRefresh vNetData) |
| | | { |
| | | getA206Count += 1; |
| | | if (ItemLogicUtility.Instance.hidePickItem) |
| | | return; |
| | | // if (ModelCenter.Instance.GetModel<GatheringSoulModel>().isOpenXBWin) |
| | | // return; |
| | | if (getA206Count <= 1 && !isFrist) |
| | | return; |
| | | |
| | | for (int i = 0; i < vNetData.ItemCountList.Length; i++) |
| | | { |
| | | int itemID = (int)vNetData.ItemCountList[i].ItemID; |
| | | int itemCount = (int)vNetData.ItemCountList[i].ItemCount; |
| | | if (noPackItemCountDict.ContainsKey(itemID) && noPackItemCountDict[itemID] > itemCount) |
| | | return; |
| | | ItemLogicUtility.Instance.RefreshPickItem(PackType.Item, itemID.ToString()); |
| | | } |
| | | } |
| | | |
| | | |
| | | public int GetNoPackItemCount(int id) |
| | | { |
| | | if (noPackItemCountDict.ContainsKey(id)) |
| | | { |
| | | return noPackItemCountDict[id]; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | public Dictionary<int, int> GetAllNoPackItem() |
| | | { |
| | | return noPackItemCountDict; |
| | | } |
| | | |
| | | |
| | | |
| | | void SetVirtualItem(PackType packType, ref List<VirtualPackItem> list, HA204_tagMCVPackRefresh.tagMCVPackItem[] items) |
| | | { |
| | | var pool = m_VirtualItemPool[packType]; |
| | | for (int i = 0; i < items.Length; i++) |
| | | { |
| | | var item = list.Find((x) => |
| | | { |
| | | return x.index == items[i].ItemPlace; |
| | | }); |
| | | if (item != null) |
| | | { |
| | | item.Release(); |
| | | } |
| | | else |
| | | { |
| | | if (pool.inactivedCount > 0) |
| | | { |
| | | item = pool.Get(); |
| | | list.Add(item); |
| | | } |
| | | } |
| | | if (item == null) |
| | | { |
| | | item = VirtualPackItem.Get(packType); |
| | | list.Add(item); |
| | | } |
| | | item.ParsePackItem(items[i].ItemPlace, items[i].ItemData); |
| | | |
| | | ItemLogicUtility.Instance.RefreshPickItem(packType, item.id.ToString()); |
| | | } |
| | | } |
| | | |
| | | static void OnGetItem(VirtualPackItem item) |
| | | { |
| | | |
| | | } |
| | | |
| | | static void OnReleaseItem(VirtualPackItem item) |
| | | { |
| | | item.Release(); |
| | | } |
| | | } |
| | | |
| | | public abstract class VirtualPackItem |
| | | { |
| | | public int index { get; private set; } |
| | | |
| | | public int id { get; private set; } |
| | | |
| | | public int level { get; private set; } |
| | | |
| | | protected string dataString { get; set; } |
| | | |
| | | protected static StringBuilder sb = new StringBuilder(); |
| | | |
| | | public virtual void ParsePackItem(int index, uint data) |
| | | { |
| | | this.index = index; |
| | | |
| | | dataString = data.ToString(); |
| | | int delta = 10 - dataString.Length; |
| | | sb.Length = 0; |
| | | sb.Append('0', delta); |
| | | dataString = dataString.Insert(0, sb.ToString()); |
| | | |
| | | id = int.Parse(dataString.Substring(5, 5)); |
| | | level = int.Parse(dataString.Substring(2, 3)) + 1; |
| | | } |
| | | |
| | | public virtual void Release() |
| | | { |
| | | dataString = null; |
| | | } |
| | | |
| | | public static VirtualPackItem Get(PackType packType) |
| | | { |
| | | // switch (packType) |
| | | // { |
| | | // case PackType.RunePack: |
| | | // return new RuneItem(); |
| | | // } |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public struct VirtualItem |
| | | { |
| | | public PackType packType; |
| | | public int itemId; |
| | | public int index; |
| | | public int level; |
| | | } |
| | | } |
| | | |