| | |
| | | public override void Init()
|
| | | {
|
| | | ParseConfig();
|
| | | SetDogzAndEquipPlaceRedKey();
|
| | | }
|
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | |
| | | SetDogzEquipInfo();
|
| | | playerPack.RefreshItemCountAct -= RefreshDogzEquipInfo;
|
| | | playerPack.RefreshItemCountAct += RefreshDogzEquipInfo;
|
| | | UpdateDogzAssistRed();
|
| | | UpdateDogzEquipPlaceRed();
|
| | | UpdateAssistNumRed();
|
| | | }
|
| | |
|
| | | public override void UnInit()
|
| | |
| | | switch (_index)
|
| | | {
|
| | | case 0:
|
| | | return "兽角";
|
| | | return Language.Get("DogzEquip1");
|
| | | case 1:
|
| | | return "魔眼";
|
| | | return Language.Get("DogzEquip2");
|
| | | case 2:
|
| | | return "獠牙";
|
| | | return Language.Get("DogzEquip3");
|
| | | case 3:
|
| | | return "兽爪";
|
| | | return Language.Get("DogzEquip4");
|
| | | case 4:
|
| | | return "鳞甲";
|
| | | return Language.Get("DogzEquip5");
|
| | | default:
|
| | | return string.Empty;
|
| | | }
|
| | |
| | | {
|
| | | case 0:
|
| | | case 1:
|
| | | return "白色";
|
| | | return Language.Get("DogzWhite");
|
| | | case 2:
|
| | | return "蓝色";
|
| | | return Language.Get("DogzBlue");
|
| | | case 3:
|
| | | return "紫色";
|
| | | return Language.Get("DogzPurple");
|
| | | case 4:
|
| | | return "橙色";
|
| | | return Language.Get("DogzOrange");
|
| | | case 5:
|
| | | return "红色";
|
| | | return Language.Get("DogzRed");
|
| | | case 6:
|
| | | return Language.Get("DogzPink");
|
| | | default:
|
| | | return string.Empty;
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public event Action<int> OpenFuncEvent;
|
| | | public void OpenDogzFuncEvent(int functionOrder)
|
| | | public event Action<int,int> OpenFuncEvent;
|
| | | public void OpenDogzFuncEvent(int functionOrder,int equipIndex)
|
| | | {
|
| | | if(OpenFuncEvent != null)
|
| | | {
|
| | | OpenFuncEvent(functionOrder);
|
| | | OpenFuncEvent(functionOrder,equipIndex);
|
| | | }
|
| | | }
|
| | |
|
| | | public bool CheckIsAddAssistNum()
|
| | | {
|
| | | var _itemConfig = Config.Instance.Get<ItemConfig>(AddAssistItem);
|
| | | if(GetAssistItemCnt() <= playerPack.GetItemCountByID(PackType.rptItem, AddAssistItem))
|
| | | {
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | #region 协议
|
| | |
| | | {
|
| | | UpdateAssistDogzEvent();
|
| | | }
|
| | | UpdateDogzAssistRed();
|
| | | UpdateDogzEquipPlaceRed();
|
| | | }
|
| | |
|
| | | public event Action UpdateAssistDogzEvent;
|
| | |
| | | {
|
| | | UpdateAssistDogzEvent();
|
| | | }
|
| | |
|
| | | UpdateDogzAssistRed();
|
| | | UpdateDogzEquipPlaceRed();
|
| | | }
|
| | |
|
| | | public int GetAssistDogzCount()
|
| | |
| | |
|
| | | public void SetDogzEquipInfo()
|
| | | {
|
| | | m_DogzEquipDict = new Dictionary<int, List<ItemModel>>();
|
| | | m_DogzEquipDict.Clear();
|
| | | SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzEquip);
|
| | | if (singlePack == null) return;
|
| | |
|
| | |
| | | public Action<int> RefreshDogzEquipAct;
|
| | | private void RefreshDogzEquipInfo(PackType type, int index, int id)
|
| | | {
|
| | | if (type != PackType.rptDogzEquip) return;
|
| | |
|
| | | ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
|
| | | int dogzId = GetDogzIDByIndex(index);
|
| | | List<ItemModel> modellist = GetDogzEquips(dogzId);
|
| | | if(modellist != null)
|
| | | if(type == PackType.rptItem && id == AddAssistItem)
|
| | | {
|
| | | if (itemModel != null)
|
| | | UpdateAssistNumRed();
|
| | | }
|
| | | else if(type == PackType.rptDogzItem)
|
| | | {
|
| | | UpdateDogzAssistRed();
|
| | | UpdateDogzEquipPlaceRed();
|
| | | }
|
| | | else if(type == PackType.rptDogzEquip)
|
| | | {
|
| | | ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
|
| | | int dogzId = GetDogzIDByIndex(index);
|
| | | List<ItemModel> modellist = GetDogzEquips(dogzId);
|
| | | if (modellist != null)
|
| | | {
|
| | | bool isAdd = true;
|
| | | for (int i = 0; i < modellist.Count; i++)
|
| | | if (itemModel != null)
|
| | | {
|
| | | if (modellist[i].itemInfo.ItemPlace == index)
|
| | | bool isAdd = true;
|
| | | for (int i = 0; i < modellist.Count; i++)
|
| | | {
|
| | | isAdd = false;
|
| | | modellist[i] = itemModel;
|
| | | break;
|
| | | if (modellist[i].itemInfo.ItemPlace == index)
|
| | | {
|
| | | isAdd = false;
|
| | | modellist[i] = itemModel;
|
| | | break;
|
| | | }
|
| | | }
|
| | | if (isAdd)
|
| | | {
|
| | | modellist.Add(itemModel);
|
| | | }
|
| | | }
|
| | | if(isAdd)
|
| | | else
|
| | | {
|
| | | modellist.Add(itemModel);
|
| | | for (int i = 0; i < modellist.Count; i++)
|
| | | {
|
| | | if (modellist[i].itemInfo.ItemPlace == index)
|
| | | {
|
| | | modellist.RemoveAt(i);
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | for (int i = 0; i < modellist.Count; i++)
|
| | | if (itemModel != null)
|
| | | {
|
| | | if (modellist[i].itemInfo.ItemPlace == index)
|
| | | {
|
| | | modellist.RemoveAt(i);
|
| | | break;
|
| | | }
|
| | | List<ItemModel> equipDatas = new List<ItemModel>();
|
| | | equipDatas.Add(itemModel);
|
| | | m_DogzEquipDict.Add(dogzId, equipDatas);
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | if(itemModel != null)
|
| | | {
|
| | | List<ItemModel> equipDatas = new List<ItemModel>();
|
| | | equipDatas.Add(itemModel);
|
| | | m_DogzEquipDict.Add(dogzId,equipDatas);
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | if(RefreshDogzEquipAct != null)
|
| | | {
|
| | | RefreshDogzEquipAct(dogzId);
|
| | | if (RefreshDogzEquipAct != null)
|
| | | {
|
| | | RefreshDogzEquipAct(dogzId);
|
| | | }
|
| | |
|
| | | UpdateDogzAssistRed();
|
| | | UpdateDogzEquipPlaceRed();
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获得神兽穿戴的装备数据
|
| | | /// </summary>
|
| | | public Dictionary<int, List<ItemModel>> m_DogzEquipDict { get; private set; }
|
| | | private Dictionary<int, List<ItemModel>> m_DogzEquipDict = new Dictionary<int, List<ItemModel>>();
|
| | |
|
| | | public List<ItemModel> GetDogzEquips(int _dogzId)
|
| | | {
|
| | |
| | | }
|
| | |
|
| | | public List<ItemModel> selectEquipPlacelist { get; private set; }
|
| | | public List<ItemModel> GetDogzItemListByIndex(int index)
|
| | | public List<ItemModel> GetDogzItemListByIndex(int dogzId,int index)
|
| | | {
|
| | | SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzItem);
|
| | | selectEquipPlacelist.Clear();
|
| | | if (singlePack == null) return selectEquipPlacelist;
|
| | |
|
| | | var _itemColor = GetDogzEquipLimitByIndex(presentSelectDogz, index);
|
| | | var _itemColor = GetDogzEquipLimitByIndex(dogzId, index);
|
| | | var _equipPlace = GetDogzEquipPlaceByIndex(index);
|
| | | Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
|
| | | foreach (var value in pairs.Values)
|
| | |
| | | }
|
| | | #endregion
|
| | |
|
| | | #region 装备详细信息
|
| | | public DogzEquipData viewDetailData { get; private set; }
|
| | |
|
| | | public bool viewDetailCompare { get; private set; }
|
| | |
|
| | | public void ViewDetail(int _itemId, bool compare = false)
|
| | | {
|
| | | //viewDetailData = new DogzEquipData(_itemId);
|
| | | //viewDetailCompare = compare;
|
| | | //if (!WindowCenter.Instance.CheckOpen<DogzDetailsWin>())
|
| | | //{
|
| | | // WindowCenter.Instance.Open<DogzDetailsWin>();
|
| | | //}
|
| | | }
|
| | |
|
| | | public int DogzEquipScore(DogzEquipData data)
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | #endregion
|
| | |
|
| | | #region 默认选择逻辑处理
|
| | | public void SetDefaultSelectDogz()
|
| | | {
|
| | | var configs = Config.Instance.GetAllValues<DogzConfig>();
|
| | | presentSelectDogz = configs[0].ID;
|
| | | foreach (var key in dogzAssistStateDict.Keys)
|
| | | foreach (var key in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | if(dogzAssistStateDict[key] == 1)
|
| | | Redpoint redpoint = GetSingleDogzRedpointById(key);
|
| | | if (redpoint.state == RedPointState.Simple)
|
| | | {
|
| | | if(presentSelectDogz < key)
|
| | | presentSelectDogz = key;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | #endregion
|
| | |
|
| | | #region 红点逻辑处理
|
| | | public const int MAINDOGZ_REDKEY = 112;
|
| | | public const int DOGZFUNC_REDKEY = 11201;
|
| | | public const int ADDASSISTDOGZ_REDKEY = 1120100002;
|
| | | public Redpoint mainDogzRedpoint = new Redpoint(MainRedDot.RedPoint_key, MAINDOGZ_REDKEY);
|
| | | public Redpoint dogzFuncRedpoint = new Redpoint(MAINDOGZ_REDKEY,DOGZFUNC_REDKEY);
|
| | | public Redpoint addAssistDogzRedpoint = new Redpoint(DOGZFUNC_REDKEY,ADDASSISTDOGZ_REDKEY);
|
| | | private Dictionary<int, Redpoint> singleDogzRedDict = new Dictionary<int, Redpoint>();
|
| | | private Dictionary<int, Redpoint> dogzAssistRedDict = new Dictionary<int, Redpoint>();
|
| | | private Dictionary<int, Dictionary<int, Redpoint>> dogzEquipPlaceRedDict = new Dictionary<int, Dictionary<int, Redpoint>>();
|
| | | public void SetDogzAndEquipPlaceRedKey()
|
| | | {
|
| | | singleDogzRedDict.Clear();
|
| | | dogzEquipPlaceRedDict.Clear();
|
| | | dogzAssistRedDict.Clear();
|
| | | int i = 0;
|
| | | foreach(var dogzId in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | i += 1;
|
| | | int dogzRedKey = DOGZFUNC_REDKEY * 100 + i;
|
| | | Redpoint dogzRedPoint = new Redpoint(DOGZFUNC_REDKEY,dogzRedKey);
|
| | | singleDogzRedDict.Add(dogzId, dogzRedPoint);
|
| | | int dogzAssistRedKey = dogzRedKey * 100 + i;
|
| | | Redpoint dogzAssistRedPoint = new Redpoint(dogzRedKey, dogzAssistRedKey);
|
| | | dogzAssistRedDict.Add(dogzId,dogzAssistRedPoint);
|
| | | Dictionary<int, Redpoint> equipPlaceRedDict = new Dictionary<int, Redpoint>();
|
| | | dogzEquipPlaceRedDict.Add(dogzId,equipPlaceRedDict);
|
| | | int equipPlaceNum = m_DogzEquipLimit[dogzId].Count;
|
| | | for (int j = 0; j < equipPlaceNum; j++)
|
| | | {
|
| | | int equipPlaceRedKey = dogzRedKey * 10 + j;
|
| | | Redpoint equipPlaceRedpoint = new Redpoint(dogzRedKey,equipPlaceRedKey);
|
| | | equipPlaceRedDict.Add(j, equipPlaceRedpoint);
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | |
|
| | | public Redpoint GetSingleDogzRedpointById(int dogzId)
|
| | | {
|
| | | Redpoint redpoint = null;
|
| | | singleDogzRedDict.TryGetValue(dogzId, out redpoint);
|
| | | return redpoint;
|
| | | }
|
| | |
|
| | | public Redpoint GetDogzAssistRedpointById(int dogzId)
|
| | | {
|
| | | Redpoint redpoint = null;
|
| | | dogzAssistRedDict.TryGetValue(dogzId,out redpoint);
|
| | | return redpoint;
|
| | | }
|
| | |
|
| | | public Redpoint GetDogzEquipPlaceRedpointById(int dogzId,int index)
|
| | | {
|
| | | Redpoint redpoint = null;
|
| | | if(dogzEquipPlaceRedDict.ContainsKey(dogzId))
|
| | | {
|
| | | dogzEquipPlaceRedDict[dogzId].TryGetValue(index, out redpoint);
|
| | | }
|
| | | return redpoint;
|
| | | }
|
| | |
|
| | | public void UpdateDogzAssistRed()
|
| | | {
|
| | | foreach(var value in dogzAssistRedDict.Values)
|
| | | {
|
| | | value.state = RedPointState.None;
|
| | | }
|
| | | bool isMaxAssistNum = GetAssistDogzCount() >= DogzAssistDefaultCnt ? true : false;
|
| | | if(!isMaxAssistNum)
|
| | | {
|
| | | int maxDogzId = 0;
|
| | | foreach(var dogzId in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | var equips = GetDogzEquips(dogzId);
|
| | | int equipNum = equips == null ? 0 : equips.Count;
|
| | | if(equipNum >= 5 && maxDogzId < dogzId
|
| | | && !TryGetAssistDogzState(dogzId))
|
| | | {
|
| | | presentSelectDogz = key;
|
| | | maxDogzId = dogzId;
|
| | | }
|
| | | }
|
| | | if(maxDogzId > 0)
|
| | | {
|
| | | Redpoint assistRedpoint = GetDogzAssistRedpointById(maxDogzId);
|
| | | if(assistRedpoint.state == RedPointState.None)
|
| | | {
|
| | | assistRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | foreach (var dogzId in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | var equips = GetDogzEquips(dogzId);
|
| | | int equipNum = equips == null ? 0 : equips.Count;
|
| | | if(!TryGetAssistDogzState(dogzId) && equipNum == 5)
|
| | | {
|
| | | Redpoint assistRedpoint = GetDogzAssistRedpointById(dogzId);
|
| | | if (assistRedpoint.state == RedPointState.None)
|
| | | {
|
| | | assistRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public void UpdateDogzEquipPlaceRed()
|
| | | {
|
| | | foreach(var value in dogzEquipPlaceRedDict.Values)
|
| | | {
|
| | | foreach(var value2 in value.Values)
|
| | | {
|
| | | value2.state = RedPointState.None;
|
| | | }
|
| | | }
|
| | |
|
| | | foreach(var value in dogzAssistRedDict.Values)
|
| | | {
|
| | | if(value.state == RedPointState.Simple)
|
| | | {
|
| | | return;
|
| | | }
|
| | | }
|
| | | bool isMaxAssistNum = GetAssistDogzCount() >= DogzAssistDefaultCnt ? true : false;
|
| | | if (!isMaxAssistNum)
|
| | | {
|
| | | int maxEquipNum = 0;
|
| | | int spaceDogzId = 0;
|
| | | foreach (var dogzId in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | var equips = GetDogzEquips(dogzId);
|
| | | int equipNum = equips == null ? 0 : equips.Count;
|
| | | if (equipNum < 5)
|
| | | {
|
| | | if (spaceDogzId == 0)
|
| | | {
|
| | | if (maxEquipNum <= equipNum)
|
| | | {
|
| | | maxEquipNum = equipNum;
|
| | | spaceDogzId = dogzId;
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | if (maxEquipNum < equipNum)
|
| | | {
|
| | | maxEquipNum = equipNum;
|
| | | spaceDogzId = dogzId;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if(spaceDogzId != 0)
|
| | | {
|
| | | for(int i = 0; i < 5; i++)
|
| | | {
|
| | | ItemModel _data;
|
| | | bool _equiped = TryGetDogzEquip(spaceDogzId, i + 101, out _data);
|
| | | if(!_equiped)
|
| | | {
|
| | | GetDogzItemListByIndex(spaceDogzId,i);
|
| | | if (selectEquipPlacelist.Count > 0)
|
| | | {
|
| | | Redpoint equipPlaceRedpoint = GetDogzEquipPlaceRedpointById(spaceDogzId,i);
|
| | | if(equipPlaceRedpoint.state == RedPointState.None)
|
| | | {
|
| | | equipPlaceRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | int minAlreadyAssistId = 0;
|
| | | foreach (var dogzId in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | if(TryGetAssistDogzState(dogzId)
|
| | | && minAlreadyAssistId != 0
|
| | | && minAlreadyAssistId < dogzId)
|
| | | {
|
| | | minAlreadyAssistId = dogzId;
|
| | | }
|
| | | }
|
| | |
|
| | | foreach (var dogzId in m_DogzEquipLimit.Keys)
|
| | | {
|
| | | var equips = GetDogzEquips(dogzId);
|
| | | int equipNum = equips == null ? 0 : equips.Count;
|
| | | bool isBetterDogz = true;
|
| | | if(!TryGetAssistDogzState(dogzId) && dogzId > minAlreadyAssistId && equipNum < 5)
|
| | | {
|
| | | for (int i = 0; i < 5; i++)
|
| | | {
|
| | | ItemModel _data;
|
| | | bool _equiped = TryGetDogzEquip(dogzId, i + 101, out _data);
|
| | | if (!_equiped)
|
| | | {
|
| | | GetDogzItemListByIndex(dogzId,i);
|
| | | if (selectEquipPlacelist.Count < 1)
|
| | | {
|
| | | isBetterDogz = false;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | isBetterDogz = false;
|
| | | }
|
| | |
|
| | | if(isBetterDogz)
|
| | | {
|
| | | for (int i = 0; i < 5; i++)
|
| | | {
|
| | | ItemModel _data;
|
| | | bool _equiped = TryGetDogzEquip(dogzId, i + 101, out _data);
|
| | | if (!_equiped)
|
| | | {
|
| | | Redpoint equipPlaceRedpoint = GetDogzEquipPlaceRedpointById(dogzId, i);
|
| | | if (equipPlaceRedpoint.state == RedPointState.None)
|
| | | {
|
| | | equipPlaceRedpoint.state = RedPointState.Simple;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public void UpdateAssistNumRed()
|
| | | {
|
| | | if(CheckIsAddAssistNum())
|
| | | {
|
| | | if(addAssistDogzRedpoint.state == RedPointState.None)
|
| | | {
|
| | | addAssistDogzRedpoint.state = RedPointState.Simple;
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | addAssistDogzRedpoint.state = RedPointState.None;
|
| | | }
|
| | | }
|
| | | #endregion
|