2024-08-23 15:49:34 +08:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using GCGame.Table;
|
|
|
|
|
using Games.Item;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 是否可进阶判断 ??
|
|
|
|
|
public class AdvanceCanadvanceCtr
|
|
|
|
|
{
|
|
|
|
|
public static AdvanceCanadvanceCtr Instance;
|
|
|
|
|
public static AdvanceCanadvanceCtr GetInstance()
|
|
|
|
|
{
|
|
|
|
|
if (Instance == null)
|
|
|
|
|
Instance = new AdvanceCanadvanceCtr();
|
|
|
|
|
return Instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsAdvanceFuncOpen(int type)
|
|
|
|
|
{
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Ride:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideLevel == 0 || !CheckFuncOpen(8))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Piano:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponLevel == 0 || !CheckFuncOpen(9))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Wing:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingLevel == 0 || !CheckFuncOpen(10))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Qilinbi:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishLevel == 0 || !CheckFuncOpen(11))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Soul:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealLevel == 0 || !CheckFuncOpen(12))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Mask:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskLevel == 0 || !CheckFuncOpen(13))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceBase.AdvanceType.Huopao:
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownLevel == 0 || !CheckFuncOpen(14))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool CheckFuncOpen(int id)
|
|
|
|
|
{
|
2024-09-23 22:56:51 +08:00
|
|
|
|
Tab_FunctionOpen table = TableManager.GetFunctionOpenByID(id);
|
2024-08-23 15:49:34 +08:00
|
|
|
|
if (table != null)
|
|
|
|
|
{
|
|
|
|
|
//return table.OpenServerDay <= GlobalData.OpenServerDays && table.OpenVipLv <= GameManager.gameManager.PlayerDataPool.VipCost
|
|
|
|
|
// && table.OpenLevel <= GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level;
|
|
|
|
|
if (table.OpenServerDay > GlobalData.OpenServerDays)
|
|
|
|
|
{
|
|
|
|
|
var str = StrDictionary.GetClientDictionaryString("#{6450}", table.OpenServerDay, table.Name );
|
|
|
|
|
GUIData.AddNotifyData(str);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (table.OpenLevel > GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level)
|
|
|
|
|
{
|
|
|
|
|
var str = StrDictionary.GetClientDictionaryString("#{6451}", table.OpenLevel.ToString(), table.Name );
|
|
|
|
|
GUIData.AddNotifyData(str);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断可以进阶的类型显示对应的Icon 背包更新的时候判断
|
|
|
|
|
public void JudgeShowCanAdvanceIcon()
|
|
|
|
|
{
|
|
|
|
|
if(canAdvanceItemDic.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
GetCanAdvanceitemfunc(); //获取可以用来进阶的物品ID
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GameItemContainer Container = GameManager.gameManager.PlayerDataPool.GetItemContainer(GameItemContainer.Type.TYPE_BACKPACK);
|
|
|
|
|
var itemList = Container.GetList();
|
|
|
|
|
var backPack = GameManager.gameManager.PlayerDataPool.BackPack;
|
|
|
|
|
List<int> needShowCanAdvanceList = new List<int>();
|
|
|
|
|
for (int index = 0; index < itemList.Count; index++)
|
|
|
|
|
{
|
|
|
|
|
GameItem item = itemList[index];
|
|
|
|
|
//根据ID获取道具对应的功能
|
|
|
|
|
if (item.DataID != -1 && canAdvanceItemDic.ContainsKey(item.DataID) && !IsCleanWish(canAdvanceItemDic[item.DataID].advanceType))
|
|
|
|
|
{
|
|
|
|
|
//对应的进阶已经激活
|
|
|
|
|
if (GetAdvanceLevel(canAdvanceItemDic[item.DataID].advanceType) > 0)
|
|
|
|
|
{
|
|
|
|
|
if (IsItemEnough(canAdvanceItemDic[item.DataID].advanceType))
|
|
|
|
|
{
|
|
|
|
|
needShowCanAdvanceList.Add((int)canAdvanceItemDic[item.DataID].advanceType);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ExtraFunTipRoot.Instance())
|
|
|
|
|
{
|
|
|
|
|
ExtraFunTipRoot.Instance().ShowOrHideTypeIcon(needShowCanAdvanceList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Dictionary<int, AdvanceItemFunc> canAdvanceItemDic = new Dictionary<int, AdvanceItemFunc>();
|
|
|
|
|
public struct AdvanceItemFunc
|
|
|
|
|
{
|
|
|
|
|
public AdvanceBase.AdvanceType advanceType; //对应的进阶类型
|
|
|
|
|
public bool isClean;
|
|
|
|
|
public AdvanceItemFunc(AdvanceBase.AdvanceType _AdvanceType, bool _isClean)
|
|
|
|
|
{
|
|
|
|
|
advanceType = _AdvanceType;
|
|
|
|
|
isClean = _isClean;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsCleanWish(AdvanceBase.AdvanceType type)
|
|
|
|
|
{
|
|
|
|
|
int advanceBaseId = ((int)type + 1) * 1000 + GetAdvanceLevel(type);
|
|
|
|
|
var advanceBase = TableManager.GetAdvanceBaseByID(advanceBaseId, 0);
|
|
|
|
|
if(advanceBase != null)
|
|
|
|
|
{
|
|
|
|
|
return advanceBase.DayDecWishValuePercent > 0 ? true : false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取跟进阶有关的Item的信息
|
|
|
|
|
public void GetCanAdvanceitemfunc()
|
|
|
|
|
{
|
|
|
|
|
var baseTabDic = TableManager.GetAdvanceBase();
|
|
|
|
|
foreach(var tab in baseTabDic.Values)
|
|
|
|
|
{
|
|
|
|
|
if(!canAdvanceItemDic.ContainsKey(tab.AdvanceCostItemId) && tab.AdvanceCostItemId != -1)
|
|
|
|
|
{
|
|
|
|
|
AdvanceBase.AdvanceType advanceType = (AdvanceBase.AdvanceType)((tab.Id - tab.Level) / 1000 - 1);
|
|
|
|
|
AdvanceItemFunc func = new AdvanceItemFunc(advanceType, tab.DayDecWishValuePercent > 0 ? true : false);
|
|
|
|
|
canAdvanceItemDic.Add(tab.AdvanceCostItemId, func);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool IsItemEnough(AdvanceBase.AdvanceType type)
|
|
|
|
|
{ //是否会被清空 数量是否足够
|
|
|
|
|
int advanceBaseId = -1;
|
|
|
|
|
if (GetAdvanceLevel(type) != -1)
|
|
|
|
|
advanceBaseId = ((int)type + 1) * 1000 + GetAdvanceLevel(type) + 1; //消耗判断的是下一个ID的
|
|
|
|
|
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(advanceBaseId, 0);
|
|
|
|
|
if (advanceBase != null)
|
|
|
|
|
{
|
|
|
|
|
int needCostItemId = advanceBase.AdvanceCostItemId;
|
|
|
|
|
return advanceBase.AdvanceCostItemNum <= GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(needCostItemId) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int GetAdvanceLevel(AdvanceBase.AdvanceType type)
|
|
|
|
|
{
|
|
|
|
|
switch(type)
|
|
|
|
|
{
|
|
|
|
|
case AdvanceBase.AdvanceType.Wing:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingLevel;
|
|
|
|
|
case AdvanceBase.AdvanceType.Ride:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideLevel ;
|
|
|
|
|
case AdvanceBase.AdvanceType.Piano:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponLevel;
|
|
|
|
|
case AdvanceBase.AdvanceType.Qilinbi:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishLevel;
|
|
|
|
|
case AdvanceBase.AdvanceType.Soul:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealLevel;
|
|
|
|
|
case AdvanceBase.AdvanceType.Mask:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskLevel;
|
|
|
|
|
case AdvanceBase.AdvanceType.Huopao:
|
|
|
|
|
return GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownLevel;
|
|
|
|
|
default:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class AdvanceInfo
|
|
|
|
|
{
|
|
|
|
|
public int baseId; // 对应表ID
|
|
|
|
|
public int type = -1; // 进阶类型
|
|
|
|
|
public int level = 0; // 等级
|
|
|
|
|
public int wish = 0; // 祝福值
|
|
|
|
|
public int SoulDan = 0; // 进阶之魂使用数量
|
|
|
|
|
public int SpiritDan = 0; // 进阶之灵使用数量
|
|
|
|
|
public int combatValue = 0; // 总战力
|
|
|
|
|
public List<int> skillId; // 技能id
|
|
|
|
|
public int _RemainAdvanceItemCount; //剩余进阶道具数量
|
|
|
|
|
|
|
|
|
|
public AdvanceInfo() { }
|
|
|
|
|
public AdvanceInfo(int baseId, int type, int level, int wish, int SoulDan, int SpiritDan, int combatValue, List<int> skillList, int remainAdvanceItemCount)
|
|
|
|
|
{
|
|
|
|
|
this.baseId = baseId;
|
|
|
|
|
this.type = type;
|
|
|
|
|
this.level = level;
|
|
|
|
|
this.wish = wish;
|
|
|
|
|
this.SoulDan = SoulDan;
|
|
|
|
|
this.SpiritDan = SpiritDan;
|
|
|
|
|
this.combatValue = combatValue;
|
|
|
|
|
_RemainAdvanceItemCount = remainAdvanceItemCount;
|
|
|
|
|
skillId = new List<int>();
|
|
|
|
|
skillId.AddRange(skillList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void AddSkill(int skillID)
|
|
|
|
|
{
|
|
|
|
|
Tab_AdvanceSkill tab_AdvanceSkill = TableManager.GetAdvanceSkillByID(skillID, 0);
|
|
|
|
|
if (tab_AdvanceSkill == null)
|
|
|
|
|
return;
|
|
|
|
|
for(int i=0;i< skillId.Count;i++)
|
|
|
|
|
{
|
|
|
|
|
Tab_AdvanceSkill tabAdvanceSkill = TableManager.GetAdvanceSkillByID(skillId[i], 0);
|
|
|
|
|
if (tabAdvanceSkill != null && tabAdvanceSkill.Type == tab_AdvanceSkill.Type && tabAdvanceSkill.Index == tab_AdvanceSkill.Index)
|
|
|
|
|
{
|
|
|
|
|
skillId[i] = skillID;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void InitSkill(int advanceType)
|
|
|
|
|
{
|
|
|
|
|
if (skillId != null)
|
|
|
|
|
skillId.Clear();
|
|
|
|
|
else
|
|
|
|
|
skillId = new List<int>();
|
|
|
|
|
|
|
|
|
|
Dictionary<int, Tab_AdvanceSkill> tab_AdvanceSkills = TableManager.GetAdvanceSkill();
|
|
|
|
|
foreach(var skill in tab_AdvanceSkills)
|
|
|
|
|
{
|
|
|
|
|
if(skill.Value.Type == advanceType && skill.Value.SkillLevel == 0 && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession == skill.Value.NeedCareer)
|
|
|
|
|
{
|
|
|
|
|
skillId.Add(skill.Key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//进阶返回
|
|
|
|
|
public class AdvanceRetInfo
|
|
|
|
|
{
|
|
|
|
|
public int type;
|
|
|
|
|
public int level;
|
|
|
|
|
public int wish;
|
|
|
|
|
public bool isCrit; //是否暴击
|
|
|
|
|
public int incWish; //增长的祝福值,大于0就是成功。
|
|
|
|
|
public int remainAdvanceItemCount;
|
|
|
|
|
public AdvanceRetInfo() { }
|
|
|
|
|
public AdvanceRetInfo(int type, int level, int wish, int isCrit, int incWish, int remainAdvanceItemCount) {
|
|
|
|
|
this.type = type;
|
|
|
|
|
this.level = level;
|
|
|
|
|
this.wish = wish;
|
|
|
|
|
this.isCrit = isCrit == 1 ? true : false;
|
|
|
|
|
this.incWish = incWish;
|
|
|
|
|
this.remainAdvanceItemCount = remainAdvanceItemCount;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class AdvanceBase : MonoBehaviour {
|
|
|
|
|
|
|
|
|
|
public static AdvanceBase Instance;
|
|
|
|
|
private void Awake()
|
|
|
|
|
{
|
|
|
|
|
Instance = this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
Instance = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected int m_BaseId; // 当前对应的模型索引ID(用于读取对应的描述,需要自己计算)
|
|
|
|
|
protected int m_level; // 当前对应的等级((进阶类型+1)*1000 + 等级 == curBaseId)
|
|
|
|
|
protected int m_WishValue; // 当前祝福值
|
|
|
|
|
protected int m_InjectionSoulItemUsedCount; // 进阶之魂使用的数量
|
|
|
|
|
protected int m_InjectionSpiritualItemUsedCount; // 进阶之灵使用过的数量
|
|
|
|
|
protected int m_TotalCombatValue; // 总战力
|
|
|
|
|
protected int m_AdvanceGrage; // 当前进阶等阶
|
|
|
|
|
protected List<int> m_SkillList = new List<int>();
|
|
|
|
|
|
|
|
|
|
public List<GameObject> pagePanels; // 三个界面预设数组
|
|
|
|
|
public bool hasOpenUI = false; // 是否有打开的界面,信息、进阶、幻化的其中一个
|
|
|
|
|
|
|
|
|
|
public AdvanceType m_AdvanceType; // 当前进阶界面类型
|
|
|
|
|
public AdvanceMenuItemPanelCtr menuItemPanelCtr; // 右侧菜单栏
|
|
|
|
|
|
|
|
|
|
public AdvanceShowPanelCtr showPanel; // 信息界面
|
|
|
|
|
public AdvancePanelCtr advancePanel; // 进阶界面
|
|
|
|
|
public AdvanceFashionPanelCtr fashionPanel; // 幻化界面
|
|
|
|
|
|
|
|
|
|
public enum AdvanceType
|
|
|
|
|
{
|
|
|
|
|
Invalid = -1,
|
|
|
|
|
Ride = 0, // 坐骑
|
|
|
|
|
Piano = 1, // 竖琴
|
|
|
|
|
Wing = 2, // 翅膀
|
|
|
|
|
Qilinbi = 3, //麒麟臂
|
|
|
|
|
Soul = 4, // 魂器
|
|
|
|
|
Mask = 5, // 面具
|
|
|
|
|
Huopao = 6, //火炮
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum ReqType
|
|
|
|
|
{
|
|
|
|
|
ADVANCE_OPTION = 1, // 进阶(参数1:goodId不是-1代表自动购买该道具, 参数2:需要购买的数量)
|
|
|
|
|
CHANGE_USEID = 2, // 幻化(参数1:目标id,进阶的id为等级)
|
|
|
|
|
REQ_INFO = 3, // 请求进阶信息(参数1:0进阶信息,1时装信息)
|
|
|
|
|
USE_DAN = 4, // 使用进阶丹(参数1:0进阶之魂,1进阶之灵)
|
|
|
|
|
SKILL_OPTION = 5, // 学习或升级技能(参数1:目标技能id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum Advance_req_infotype
|
|
|
|
|
{
|
|
|
|
|
AdvanceInfo = 0,
|
|
|
|
|
FashionInfo = 1,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 菜单按钮点击回调
|
|
|
|
|
public void OnMenuItemClick(AdvanceMenuItemPanelCtr.MenuItemOptType type)
|
|
|
|
|
{
|
|
|
|
|
hasOpenUI = true;
|
|
|
|
|
ShowMarkIcon(type);
|
|
|
|
|
CG_REQ_ADVANCE req = (CG_REQ_ADVANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE);
|
|
|
|
|
req.SetOptionType((int)ReqType.REQ_INFO);
|
|
|
|
|
req.SetType((int)m_AdvanceType);
|
|
|
|
|
req.SetParam2(-1);
|
|
|
|
|
switch (type) //请求对应页面的信息
|
|
|
|
|
{
|
|
|
|
|
case AdvanceMenuItemPanelCtr.MenuItemOptType.Show:
|
|
|
|
|
case AdvanceMenuItemPanelCtr.MenuItemOptType.Advance:
|
|
|
|
|
//请求当前进阶信息
|
|
|
|
|
req.SetParam1((int)Advance_req_infotype.AdvanceInfo);
|
|
|
|
|
break;
|
|
|
|
|
case AdvanceMenuItemPanelCtr.MenuItemOptType.Fashion:
|
|
|
|
|
//请求当前进阶信息
|
|
|
|
|
req.SetParam1((int)Advance_req_infotype.FashionInfo);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
req.SendPacket();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 激活和目前MenuItem一致的Panel
|
|
|
|
|
public void ShowMarkIcon(AdvanceMenuItemPanelCtr.MenuItemOptType type)
|
|
|
|
|
{
|
|
|
|
|
for (int index = 0; index < pagePanels.Count; index++)
|
|
|
|
|
{
|
|
|
|
|
pagePanels[index].gameObject.SetActive(index == (int)type ? true : false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//显示对应的按钮高亮
|
|
|
|
|
menuItemPanelCtr.ShowMenuItemMaskBG(type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 请求所有进阶数据信息
|
|
|
|
|
public void ReqAllAdvanceInfo()
|
|
|
|
|
{
|
|
|
|
|
CG_REQ_ADVANCE req = (CG_REQ_ADVANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE);
|
|
|
|
|
req.SetOptionType((int)AdvanceBase.ReqType.REQ_INFO);
|
|
|
|
|
req.SetType((int)m_AdvanceType);
|
|
|
|
|
req.SetParam2(-1);
|
|
|
|
|
req.SendPacket();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 进阶信息
|
|
|
|
|
public AdvanceInfo m_advanceInfo;
|
|
|
|
|
|
|
|
|
|
// 接收返回的信息
|
|
|
|
|
public virtual void OnAdvanceInfoReceive(AdvanceInfo packet)
|
|
|
|
|
{
|
|
|
|
|
m_level = packet.level;
|
|
|
|
|
m_WishValue = packet.wish;
|
|
|
|
|
m_InjectionSoulItemUsedCount = packet.SoulDan;
|
|
|
|
|
m_InjectionSpiritualItemUsedCount = packet.SpiritDan;
|
|
|
|
|
m_TotalCombatValue = packet.combatValue;
|
|
|
|
|
m_SkillList = new List<int>();
|
|
|
|
|
m_SkillList.AddRange(packet.skillId);
|
|
|
|
|
|
|
|
|
|
// 计算对应的BaseId(进阶类型+1)*1000 + 等级 == curBaseId
|
|
|
|
|
m_BaseId = (packet.type + 1) * 1000 + packet.level;
|
|
|
|
|
|
|
|
|
|
// 获取当前进阶的等级
|
|
|
|
|
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(m_BaseId, 0);
|
|
|
|
|
if (advanceBase != null)
|
|
|
|
|
{
|
|
|
|
|
m_AdvanceGrage = advanceBase.Grade;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_advanceInfo = new AdvanceInfo(m_BaseId, packet.type, packet.level, packet.wish, packet.SoulDan, packet.SpiritDan, packet.combatValue, packet.skillId, packet._RemainAdvanceItemCount);
|
|
|
|
|
SetCurAdvanceInfo(m_BaseId);
|
|
|
|
|
InitAdvanceInfo();
|
|
|
|
|
|
|
|
|
|
UpdateRedPoint();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int lastBaseId = -1; // 上一次显示的阶级ID
|
|
|
|
|
|
|
|
|
|
// 保存当前显示的进阶数据到玩家信息库
|
|
|
|
|
public void SetCurAdvanceInfo(int baseId)
|
|
|
|
|
{
|
|
|
|
|
if(lastBaseId == baseId)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
lastBaseId = baseId;
|
|
|
|
|
|
|
|
|
|
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0);
|
|
|
|
|
if(advanceBase == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int type = (advanceBase.Id - advanceBase.Level) / 1000 - 1;
|
|
|
|
|
|
|
|
|
|
switch(type)
|
|
|
|
|
{
|
|
|
|
|
case (int)AdvanceType.Ride:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceType.Wing:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceType.Piano:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceType.Qilinbi:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceType.Soul:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceType.Mask:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
case (int)AdvanceType.Huopao:
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownGrade = advanceBase.Grade;
|
|
|
|
|
GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownLevel = advanceBase.Level;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//是否要显示可以进阶的Icon(刷新物品的时候也要显示)
|
|
|
|
|
if (AdvanceCanadvanceCtr.GetInstance() != null)
|
|
|
|
|
{
|
|
|
|
|
AdvanceCanadvanceCtr.GetInstance().JudgeShowCanAdvanceIcon();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 红点更新相关
|
|
|
|
|
|
|
|
|
|
public void UpdateRedPoint()
|
|
|
|
|
{
|
|
|
|
|
UpdateShowRedPoint();
|
|
|
|
|
UpdateAdvanceRedPoint();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UpdateShowRedPoint()
|
|
|
|
|
{
|
|
|
|
|
menuItemPanelCtr.UpdateRedPoint(0, showPanel.hasRedPoint());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UpdateAdvanceRedPoint()
|
|
|
|
|
{
|
|
|
|
|
menuItemPanelCtr.UpdateRedPoint(1, advancePanel.hasRedPoint());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新红点
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="adType">进阶类型</param>
|
|
|
|
|
public static void UpdateRedPoint(AdvanceType adType)
|
|
|
|
|
{
|
|
|
|
|
if (IsCanActiveRedIcon(adType) && (AdvanceShowPanelCtr.HasRedPoint(adType)
|
|
|
|
|
|| AdvancePanelCtr.HasRedPoint(adType)))
|
|
|
|
|
{
|
|
|
|
|
RedTipPoint.SetAdvanceRedTipState(adType, true);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
RedTipPoint.SetAdvanceRedTipState(adType, false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool IsCanActiveRedIcon(AdvanceType type)
|
|
|
|
|
{
|
|
|
|
|
var functionOpenId = (int)type + 8; //0 --》 8
|
|
|
|
|
var functionOpenTab = TableManager.GetFunctionOpenByID(functionOpenId, 0);
|
|
|
|
|
if (functionOpenTab == null)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if(functionOpenTab.OpenLevel != 0)
|
|
|
|
|
{
|
|
|
|
|
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= functionOpenTab.OpenLevel
|
|
|
|
|
&& (GameManager.gameManager.PlayerDataPool.FunctionOpenState.ContainsKey(functionOpenId)
|
|
|
|
|
&& GameManager.gameManager.PlayerDataPool.FunctionOpenState[functionOpenId]))
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(Guide.Instance._FinishGuideID >= functionOpenTab.ShowGUIDId
|
|
|
|
|
&& (GameManager.gameManager.PlayerDataPool.FunctionOpenState.ContainsKey(functionOpenId)
|
|
|
|
|
&& GameManager.gameManager.PlayerDataPool.FunctionOpenState[functionOpenId]))
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void UpdateAllRedPoint()
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i <= (int)AdvanceType.Huopao; ++i)
|
|
|
|
|
{
|
|
|
|
|
UpdateRedPoint((AdvanceType)i);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (AdvanceMountPanelCtr.Instance && AdvanceMountPanelCtr.Instance.gameObject.activeInHierarchy)
|
|
|
|
|
{
|
|
|
|
|
AdvanceMountPanelCtr.Instance.showPanel.ShowEquipRedIcon();
|
|
|
|
|
AdvanceMountPanelCtr.Instance.showPanel.ShowInjectRedIcon();
|
|
|
|
|
AdvanceMountPanelCtr.Instance.UpdateRedPoint();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化进阶界面数据:显示面板以及进阶面板
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void InitAdvanceInfo()
|
|
|
|
|
{
|
|
|
|
|
showPanel.InitShowPanel(m_advanceInfo);
|
|
|
|
|
advancePanel.InitAdvancePanel(m_advanceInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnDisable()
|
|
|
|
|
{
|
|
|
|
|
hasOpenUI = false;
|
|
|
|
|
UIManager.CloseUI(UIInfo.MoneyInfoPanel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新进阶界面的数据
|
|
|
|
|
public virtual void RefreshAdvancePanel(AdvanceRetInfo info)
|
|
|
|
|
{
|
|
|
|
|
showPanel.RefreshShowInfo(info);
|
|
|
|
|
advancePanel.RefreshAdvancePanelInfo(info);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void RefreshItemPanel()
|
|
|
|
|
{
|
|
|
|
|
advancePanel.itemPanel.RefreshOwnItemInfo();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void RefreshOwnValue()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void OnCloseBtnClick() { }
|
|
|
|
|
}
|