| | |
| | | //-------------------------------------------------------- |
| | | // [Author]: 第二世界 |
| | | // [ Date ]: Saturday, January 20, 2018 |
| | | //-------------------------------------------------------- |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System; |
| | | using TableConfig; |
| | | |
| | | namespace Snxxz.UI |
| | | { |
| | | public class BetterEquipGetModel : Model, IBeforePlayerDataInitialize, ISwitchAccount |
| | | { |
| | | PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } |
| | | PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } } |
| | | DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } |
| | | |
| | | public string currentEquipGuid { get; private set; } |
| | | |
| | | Dictionary<string, ItemModel> betterEquipModels = new Dictionary<string, ItemModel>(); |
| | | |
| | | public event Action showEquipRefreshEvent; |
| | | |
| | | public override void Init() |
| | | { |
| | | modelInterface.RefreshGetBetterEquipEvent += OnGetBetterEquip; |
| | | playerPack.RefreshPackAct += OnPackageRefresh; |
| | | playerPack.RefreshItemCountAct += OnPackageItemRefresh; |
| | | } |
| | | |
| | | public override void UnInit() |
| | | { |
| | | modelInterface.RefreshGetBetterEquipEvent -= OnGetBetterEquip; |
| | | playerPack.RefreshPackAct -= OnPackageRefresh; |
| | | playerPack.RefreshItemCountAct -= OnPackageItemRefresh; |
| | | } |
| | | |
| | | public void OnBeforePlayerDataInitialize() |
| | | { |
| | | } |
| | | |
| | | public void OnSwitchAccount() |
| | | { |
| | | currentEquipGuid = string.Empty; |
| | | } |
| | | |
| | | public bool TryGetBetterEquip(string _guid, out ItemModel _equip) |
| | | { |
| | | return betterEquipModels.TryGetValue(_guid, out _equip); |
| | | } |
| | | |
| | | public void ReportConfirmBetterEquip(string _guid) |
| | | { |
| | | betterEquipModels.Remove(_guid); |
| | | |
| | | var tempGuid = GetOneEquip(); |
| | | if (tempGuid != currentEquipGuid) |
| | | { |
| | | currentEquipGuid = tempGuid; |
| | | if (showEquipRefreshEvent != null) |
| | | { |
| | | showEquipRefreshEvent(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public int GetShowItemQuality() |
| | | { |
| | | if (string.IsNullOrEmpty(currentEquipGuid)) |
| | | { |
| | | return 0; |
| | | } |
| | | else |
| | | { |
| | | ItemModel item; |
| | | if (TryGetBetterEquip(currentEquipGuid, out item)) |
| | | { |
| | | return item.chinItemModel.ItemColor; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public int GetShowEquipPlace() |
| | | { |
| | | if (string.IsNullOrEmpty(currentEquipGuid)) |
| | | { |
| | | return 0; |
| | | } |
| | | else |
| | | { |
| | | ItemModel item; |
| | | if (TryGetBetterEquip(currentEquipGuid, out item)) |
| | | { |
| | | return item.chinItemModel.EquipPlace; |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void OnGetBetterEquip(string guid) |
| | | { |
| | | var betterModel = playerPack.GetItemModelByGUID(guid); |
| | | ItemModel oldBetterEquip = null; |
| | | if (TryGetEquipByPlace(betterModel.chinItemModel.EquipPlace, out oldBetterEquip)) |
| | | { |
| | | var oldGrade = oldBetterEquip != null ? oldBetterEquip.equipScore : 0; |
| | | if (betterModel.equipScore >= oldGrade) |
| | | { |
| | | RemoveItemByEquipPlace(betterModel.chinItemModel.EquipPlace); |
| | | } |
| | | } |
| | | |
| | | betterEquipModels[guid] = betterModel; |
| | | if (guid != currentEquipGuid) |
| | | { |
| | | if (!string.IsNullOrEmpty(guid)) |
| | | { |
| | | var sourcelist = betterModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetSource); |
| | | if (sourcelist != null && sourcelist[0] == 4) |
| | | { |
| | | SnxxzGame.Instance.StartCoroutine(Co_DelayRefreshBetterEquip(guid)); |
| | | } |
| | | else |
| | | { |
| | | currentEquipGuid = guid; |
| | | if (showEquipRefreshEvent != null) |
| | | { |
| | | showEquipRefreshEvent(); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | currentEquipGuid = guid; |
| | | if (showEquipRefreshEvent != null) |
| | | { |
| | | showEquipRefreshEvent(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | IEnumerator Co_DelayRefreshBetterEquip(string _guid) |
| | | { |
| | | yield return WaitingForSecondConst.WaitMS2000; |
| | | currentEquipGuid = _guid; |
| | | if (showEquipRefreshEvent != null) |
| | | { |
| | | showEquipRefreshEvent(); |
| | | } |
| | | } |
| | | |
| | | private void OnPackageRefresh(PackType _packType) |
| | | { |
| | | if (_packType != PackType.rptItem) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | var keys = new List<string>(betterEquipModels.Keys); |
| | | for (int i = keys.Count - 1; i >= 0; i--) |
| | | { |
| | | var guid = keys[i]; |
| | | var itemModel = playerPack.GetItemModelByGUID(guid); |
| | | if (itemModel == null || itemModel.packType != PackType.rptItem) |
| | | { |
| | | betterEquipModels.Remove(guid); |
| | | } |
| | | } |
| | | |
| | | var tempGuid = GetOneEquip(); |
| | | if (tempGuid != currentEquipGuid) |
| | | { |
| | | if (!string.IsNullOrEmpty(tempGuid)) |
| | | { |
| | | var itemModel = playerPack.GetItemModelByGUID(tempGuid); |
| | | var sourcelist = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetSource); |
| | | if (sourcelist != null && sourcelist[0] == 4) |
| | | { |
| | | SnxxzGame.Instance.StartCoroutine(Co_DelayRefreshBetterEquip(tempGuid)); |
| | | } |
| | | else |
| | | { |
| | | currentEquipGuid = tempGuid; |
| | | if (showEquipRefreshEvent != null) |
| | | { |
| | | showEquipRefreshEvent(); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | currentEquipGuid = tempGuid; |
| | | if (showEquipRefreshEvent != null) |
| | | { |
| | | showEquipRefreshEvent(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void OnPackageItemRefresh(PackType _packType, int _index, int _itemId) |
| | | { |
| | | if (_packType == PackType.rptEquip) |
| | | { |
| | | //穿上装备的时候的处理 |
| | | var item = playerPack.GetItemModelByIndex(_packType, _index); |
| | | if (item != null) |
| | | { |
| | | RemoveLowGradeItemByEquipPlace(_index, item.equipScore); |
| | | } |
| | | } |
| | | else if (_packType == PackType.rptItem) |
| | | { |
| | | OnPackageRefresh(_packType); |
| | | } |
| | | } |
| | | |
| | | private string GetOneEquip() |
| | | { |
| | | var guid = string.Empty; |
| | | foreach (var key in betterEquipModels.Keys) |
| | | { |
| | | guid = key; |
| | | break; |
| | | } |
| | | |
| | | return guid; |
| | | } |
| | | |
| | | private void RemoveItemByEquipPlace(int _place) |
| | | { |
| | | var place = _place == 10 ? 9 : _place; |
| | | var keys = new List<string>(betterEquipModels.Keys); |
| | | for (int i = keys.Count - 1; i >= 0; i--) |
| | | { |
| | | var item = betterEquipModels[keys[i]]; |
| | | if (item != null && item.chinItemModel.EquipPlace == place) |
| | | { |
| | | betterEquipModels.Remove(keys[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void RemoveLowGradeItemByEquipPlace(int _place, int _score) |
| | | { |
| | | var place = _place == 10 ? 9 : _place; |
| | | var keys = new List<string>(betterEquipModels.Keys); |
| | | for (int i = keys.Count - 1; i >= 0; i--) |
| | | { |
| | | var item = betterEquipModels[keys[i]]; |
| | | if (item != null && item.chinItemModel.EquipPlace == place && item.equipScore <= _score) |
| | | { |
| | | betterEquipModels.Remove(keys[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private bool TryGetEquipByPlace(int _place, out ItemModel _itemModel) |
| | | { |
| | | var place = _place == 10 ? 9 : _place; |
| | | var keys = new List<string>(betterEquipModels.Keys); |
| | | for (int i = keys.Count - 1; i >= 0; i--) |
| | | { |
| | | var item = betterEquipModels[keys[i]]; |
| | | if (item != null && item.chinItemModel.EquipPlace == place) |
| | | { |
| | | _itemModel = item; |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | _itemModel = null; |
| | | return false; |
| | | } |
| | | |
| | | public bool ShowBetterEquipAble() |
| | | { |
| | | var mapId = PlayerDatas.Instance.baseData.MapID; |
| | | var lineId = PlayerDatas.Instance.baseData.dungeonLineId; |
| | | var dungeonId = dungeonModel.DungeonMap(dungeonModel.GetDungeonDataIdByMapId(mapId), lineId); |
| | | if (dungeonId == 0) |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | var config = ConfigManager.Instance.GetTemplate<DungeonConfig>(dungeonId); |
| | | return config.ShowNewItemTip == 1; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //--------------------------------------------------------
|
| | | // [Author]: 第二世界
|
| | | // [ Date ]: Saturday, January 20, 2018
|
| | | //--------------------------------------------------------
|
| | | using UnityEngine;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using System;
|
| | | using TableConfig;
|
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | | public class BetterEquipGetModel : Model, IBeforePlayerDataInitialize, ISwitchAccount
|
| | | {
|
| | | PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
|
| | | PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
|
| | | DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
| | |
|
| | | public string currentEquipGuid { get; private set; }
|
| | |
|
| | | Dictionary<string, ItemModel> betterEquipModels = new Dictionary<string, ItemModel>();
|
| | |
|
| | | public event Action showEquipRefreshEvent;
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | | modelInterface.RefreshGetBetterEquipEvent += OnGetBetterEquip;
|
| | | playerPack.RefreshPackAct += OnPackageRefresh;
|
| | | playerPack.RefreshItemCountAct += OnPackageItemRefresh;
|
| | | }
|
| | |
|
| | | public override void UnInit()
|
| | | {
|
| | | modelInterface.RefreshGetBetterEquipEvent -= OnGetBetterEquip;
|
| | | playerPack.RefreshPackAct -= OnPackageRefresh;
|
| | | playerPack.RefreshItemCountAct -= OnPackageItemRefresh;
|
| | | }
|
| | |
|
| | | public void OnBeforePlayerDataInitialize()
|
| | | {
|
| | | }
|
| | |
|
| | | public void OnSwitchAccount()
|
| | | {
|
| | | currentEquipGuid = string.Empty;
|
| | | }
|
| | |
|
| | | public bool TryGetBetterEquip(string _guid, out ItemModel _equip)
|
| | | {
|
| | | return betterEquipModels.TryGetValue(_guid, out _equip);
|
| | | }
|
| | |
|
| | | public void ReportConfirmBetterEquip(string _guid)
|
| | | {
|
| | | betterEquipModels.Remove(_guid);
|
| | |
|
| | | var tempGuid = GetOneEquip();
|
| | | if (tempGuid != currentEquipGuid)
|
| | | {
|
| | | currentEquipGuid = tempGuid;
|
| | | if (showEquipRefreshEvent != null)
|
| | | {
|
| | | showEquipRefreshEvent();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public int GetShowItemQuality()
|
| | | {
|
| | | if (string.IsNullOrEmpty(currentEquipGuid))
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | else
|
| | | {
|
| | | ItemModel item;
|
| | | if (TryGetBetterEquip(currentEquipGuid, out item))
|
| | | {
|
| | | return item.chinItemModel.ItemColor;
|
| | | }
|
| | | else
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public int GetShowEquipPlace()
|
| | | {
|
| | | if (string.IsNullOrEmpty(currentEquipGuid))
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | else
|
| | | {
|
| | | ItemModel item;
|
| | | if (TryGetBetterEquip(currentEquipGuid, out item))
|
| | | {
|
| | | return item.chinItemModel.EquipPlace;
|
| | | }
|
| | | else
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnGetBetterEquip(string guid)
|
| | | {
|
| | | var betterModel = playerPack.GetItemModelByGUID(guid);
|
| | | ItemModel oldBetterEquip = null;
|
| | | if (TryGetEquipByPlace(betterModel.chinItemModel.EquipPlace, out oldBetterEquip))
|
| | | {
|
| | | var oldGrade = oldBetterEquip != null ? oldBetterEquip.equipScore : 0;
|
| | | if (betterModel.equipScore >= oldGrade)
|
| | | {
|
| | | RemoveItemByEquipPlace(betterModel.chinItemModel.EquipPlace);
|
| | | }
|
| | | }
|
| | |
|
| | | betterEquipModels[guid] = betterModel;
|
| | | if (guid != currentEquipGuid)
|
| | | {
|
| | | if (!string.IsNullOrEmpty(guid))
|
| | | {
|
| | | var sourcelist = betterModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetSource);
|
| | | if (sourcelist != null && sourcelist[0] == 4)
|
| | | {
|
| | | SnxxzGame.Instance.StartCoroutine(Co_DelayRefreshBetterEquip(guid));
|
| | | }
|
| | | else
|
| | | {
|
| | | currentEquipGuid = guid;
|
| | | if (showEquipRefreshEvent != null)
|
| | | {
|
| | | showEquipRefreshEvent();
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | currentEquipGuid = guid;
|
| | | if (showEquipRefreshEvent != null)
|
| | | {
|
| | | showEquipRefreshEvent();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | IEnumerator Co_DelayRefreshBetterEquip(string _guid)
|
| | | {
|
| | | yield return WaitingForSecondConst.WaitMS2000;
|
| | | currentEquipGuid = _guid;
|
| | | if (showEquipRefreshEvent != null)
|
| | | {
|
| | | showEquipRefreshEvent();
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnPackageRefresh(PackType _packType)
|
| | | {
|
| | | if (_packType != PackType.rptItem)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | var keys = new List<string>(betterEquipModels.Keys);
|
| | | for (int i = keys.Count - 1; i >= 0; i--)
|
| | | {
|
| | | var guid = keys[i];
|
| | | var itemModel = playerPack.GetItemModelByGUID(guid);
|
| | | if (itemModel == null || itemModel.packType != PackType.rptItem)
|
| | | {
|
| | | betterEquipModels.Remove(guid);
|
| | | }
|
| | | }
|
| | |
|
| | | var tempGuid = GetOneEquip();
|
| | | if (tempGuid != currentEquipGuid)
|
| | | {
|
| | | if (!string.IsNullOrEmpty(tempGuid))
|
| | | {
|
| | | var itemModel = playerPack.GetItemModelByGUID(tempGuid);
|
| | | var sourcelist = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetSource);
|
| | | if (sourcelist != null && sourcelist[0] == 4)
|
| | | {
|
| | | SnxxzGame.Instance.StartCoroutine(Co_DelayRefreshBetterEquip(tempGuid));
|
| | | }
|
| | | else
|
| | | {
|
| | | currentEquipGuid = tempGuid;
|
| | | if (showEquipRefreshEvent != null)
|
| | | {
|
| | | showEquipRefreshEvent();
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | currentEquipGuid = tempGuid;
|
| | | if (showEquipRefreshEvent != null)
|
| | | {
|
| | | showEquipRefreshEvent();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnPackageItemRefresh(PackType _packType, int _index, int _itemId)
|
| | | {
|
| | | if (_packType == PackType.rptEquip)
|
| | | {
|
| | | //穿上装备的时候的处理
|
| | | var item = playerPack.GetItemModelByIndex(_packType, _index);
|
| | | if (item != null)
|
| | | {
|
| | | RemoveLowGradeItemByEquipPlace(_index, item.equipScore);
|
| | | }
|
| | | OnPackageRefresh(PackType.rptItem);
|
| | | }
|
| | | else if (_packType == PackType.rptItem)
|
| | | {
|
| | | OnPackageRefresh(_packType);
|
| | | }
|
| | | }
|
| | |
|
| | | private string GetOneEquip()
|
| | | {
|
| | | var guid = string.Empty;
|
| | | foreach (var key in betterEquipModels.Keys)
|
| | | {
|
| | | guid = key;
|
| | | break;
|
| | | }
|
| | |
|
| | | return guid;
|
| | | }
|
| | |
|
| | | private void RemoveItemByEquipPlace(int _place)
|
| | | {
|
| | | var place = _place == 10 ? 9 : _place;
|
| | | var keys = new List<string>(betterEquipModels.Keys);
|
| | | for (int i = keys.Count - 1; i >= 0; i--)
|
| | | {
|
| | | var item = betterEquipModels[keys[i]];
|
| | | if (item != null && item.chinItemModel.EquipPlace == place)
|
| | | {
|
| | | betterEquipModels.Remove(keys[i]);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void RemoveLowGradeItemByEquipPlace(int _place, int _score)
|
| | | {
|
| | | var place = _place == 10 ? 9 : _place;
|
| | | var keys = new List<string>(betterEquipModels.Keys);
|
| | | for (int i = keys.Count - 1; i >= 0; i--)
|
| | | {
|
| | | var item = betterEquipModels[keys[i]];
|
| | | if (item != null && item.chinItemModel.EquipPlace == place && item.equipScore <= _score)
|
| | | {
|
| | | betterEquipModels.Remove(keys[i]);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private bool TryGetEquipByPlace(int _place, out ItemModel _itemModel)
|
| | | {
|
| | | var place = _place == 10 ? 9 : _place;
|
| | | var keys = new List<string>(betterEquipModels.Keys);
|
| | | for (int i = keys.Count - 1; i >= 0; i--)
|
| | | {
|
| | | var item = betterEquipModels[keys[i]];
|
| | | if (item != null && item.chinItemModel.EquipPlace == place)
|
| | | {
|
| | | _itemModel = item;
|
| | | return true;
|
| | | }
|
| | | }
|
| | |
|
| | | _itemModel = null;
|
| | | return false;
|
| | | }
|
| | |
|
| | | public bool ShowBetterEquipAble()
|
| | | {
|
| | | var mapId = PlayerDatas.Instance.baseData.MapID;
|
| | | var lineId = PlayerDatas.Instance.baseData.dungeonLineId;
|
| | | var dungeonId = dungeonModel.DungeonMap(dungeonModel.GetDungeonDataIdByMapId(mapId), lineId);
|
| | | if (dungeonId == 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | | else
|
| | | {
|
| | | var config = Config.Instance.Get<DungeonConfig>(dungeonId);
|
| | | return config.ShowNewItemTip == 1;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|