using UnityEngine; using System.Collections; using UnityEngine.UI; using GCGame.Table; using System.Collections.Generic; using Games.GlobeDefine; public class OtherPlayerAdvancePanelCtr : MonoBehaviour { #region public Text stageText; // 阶级描述 public Text modelNameText; // 模型名称 public UICameraTexture modelCameraTexture; // 3D模型 public GameObject InfoPanel; // 信息面板 public GameObject noDataPane; // 无数据提示面板 // 当前页面所属类型 // public AdvanceMenuItemPanelCtr.AdvancePanelType panelType; // 进阶所属类型 public int curAdvanceBaseLevel; // 当前进阶等级 public int curAdcanceBaseGrade; // 当前等阶 public AdvanceAttrPanel attrPanel; // 属性面板 public AdvanceSkillPanel skillPanel; // 技能面板 public AdvanceEquipPanel equipPanel; // 装备面板 //public AdvanceAnimation animatonPanel; // 动画帧动画脚本 public GameObject ShowModelPanel; // 模型面板 //public GameObject ShowAnimationPanel; // 动画帧面板 #endregion private Dictionary advanceInfoDic; private Dictionary AdvanceInfoDic { get;set; } public AdvanceBase.AdvanceType advanceType = AdvanceBase.AdvanceType.Invalid; private bool hasInit = false; // 标记是否已经有数据/初始化 public bool HasInit { get { return hasInit; } } #region Single 单例 private static OtherPlayerAdvancePanelCtr _instance; public static OtherPlayerAdvancePanelCtr Instance { get { if(_instance != null) { return _instance; } return null; } } private void Awake() { if(_instance == null) { _instance = this; } } private void OnDestroy() { _instance = null; } #endregion private void OnDisable() { hasInit = false; } public void Init(Dictionary dic) { hasInit = true; AdvanceInfoDic = dic; if(advanceType != AdvanceBase.AdvanceType.Invalid) { ShowPanel(advanceType); } } /// /// 显示页面 /// public void ShowPanel(AdvanceBase.AdvanceType showType) { ShowOrNone(true); if (advanceType == AdvanceBase.AdvanceType.Invalid) { ShowOrNone(false); return; } AdvanceInfo info; if (!AdvanceInfoDic.TryGetValue(advanceType, out info)) { ShowOrNone(false); return; } // 如果baseID为负数,代表没有,则不显示 if(info.baseId < 0 || info.level == 0) { ShowOrNone(false); //LogModule.ErrorLog("BaseID is wrong , baseID = " + info.baseId); return; } attrPanel.InitAttrInfo(info, GameDefine_Globe.ShowType.Other); // 显示属性 skillPanel.InitSkillPanel(info, GameDefine_Globe.ShowType.Other); // 显示技能 switch (info.type) { // 对于坐骑进阶需要需要额外显示坐骑的装备槽 case (int)AdvanceBase.AdvanceType.Ride: equipPanel.gameObject.SetActive(true); if (equipPanel != null) { equipPanel.InitEquipItem(GameDefine_Globe.ShowType.Other); } break; default: equipPanel.gameObject.SetActive(false); break; } ShowModelPanel.SetActive(true); InitShowModel(); } // 显示model public void InitShowModel() { switch (advanceType) { case AdvanceBase.AdvanceType.Ride: { // 获取进阶表数据 Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(AdvanceInfoDic[advanceType].baseId, 0); if (advanceBase == null) { ShowOrNone(false); return; } // 获取坐骑属性数据 Tab_MountBase mountBase = TableManager.GetMountBaseByID(advanceBase.ModelId, 0); if (mountBase == null) { ShowOrNone(false); return; } // 坐骑模型资源数据 Tab_CharMount charMount = TableManager.GetCharMountByID(mountBase.ModelID, 0); if (charMount == null) { ShowOrNone(false); return; } modelCameraTexture.InitMountModelPath(charMount, delegate () { modelCameraTexture.gameObject.SetActive(true); }); modelNameText.text = mountBase.Name; stageText.text = GCGame.Utils.GetGradeString(advanceBase.Grade); curAdvanceBaseLevel = advanceBase.Level; curAdcanceBaseGrade = advanceBase.Grade; } break; case AdvanceBase.AdvanceType.Wing: { Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(AdvanceInfoDic[advanceType].baseId, 0); if (advanceBase == null) { ShowOrNone(false); return; } modelCameraTexture.InitWingModelPath(advanceBase, null, delegate () { modelCameraTexture.gameObject.SetActive(true); }); modelNameText.text = advanceBase.Name; stageText.text = GCGame.Utils.GetGradeString(advanceBase.Grade); curAdvanceBaseLevel = advanceBase.Level; curAdcanceBaseGrade = advanceBase.Grade; } break; default: { Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(AdvanceInfoDic[advanceType].baseId, 0); if (advanceBase == null) { modelCameraTexture.gameObject.SetActive(false); ShowOrNone(false); } Tab_CharModel charModel = TableManager.GetCharModelByID(advanceBase.ShowModelId, 0); if (charModel != null) { modelCameraTexture.InitModelPath(charModel.ResPath, charModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true, delegate () { modelCameraTexture._CameraPrefab.GetComponent().orthographicSize = 1.3f; modelCameraTexture.gameObject.SetActive(true); }); } modelNameText.text = advanceBase.Name; stageText.text = GCGame.Utils.GetGradeString(advanceBase.Grade); curAdvanceBaseLevel = advanceBase.Level; curAdcanceBaseGrade = advanceBase.Grade; } break; } } /// /// 控制是否显示信息 /// 如:当没有相关进阶信息,关闭信息面板,打开提示面板 /// /// 是否显示信息面板 private void ShowOrNone(bool isShow) { InfoPanel.SetActive(isShow); noDataPane.SetActive(!isShow); } }