using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; using GCGame.Table; using GCGame; using System; using Games.GlobeDefine; public class MarryPanelCtr : MonoBehaviour { public static MarryPanelCtr Instance; private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } public enum CoupType { Husband = 1, Wife = 2, } public GameObject marriedPanel; public GameObject noMarriedPanel; public List<UICameraTexture> modelCameraList; public List<Text> roleNameTextList; public Text marriedTime; public Text marryRuleText; public Text _MarryCoup; public Text _OperationBtnDesc; public Image roleHeadIcon; public void OnEnable() { ShowMarriedOrNoMarriedPanel(); InitBtnDesc(); } void InitBtnDesc() { var str = StrDictionary.GetClientDictionaryString("#{86226}"); if (_OperationBtnDesc.text.Equals(str)) _OperationBtnDesc.text = str; } public void ShowMarriedOrNoMarriedPanel() { if(IsMarried()) { marriedPanel.SetActive(true); noMarriedPanel.SetActive(false); //请求当前结婚的时间 显示对应的模型(需要知道对象的职业 或者服务器存的就是两个任务结婚时的CharModelId) ReqMarriedInfo(); } else { marriedPanel.SetActive(false); noMarriedPanel.SetActive(true); InitHeadIcon(); InitMarryRuleTip(); } } //请求协议接口 public void ReqMarriedInfo() { ReqMarryDetailData req = new ReqMarryDetailData(); req.flag = 1; req.SendMsg(); } //协议返回(如果是显示的结婚礼服那么服务器最好保存的是CharModelId) private List<int> professionList; private List<string> nameList; public void OnReceivePacket(RetMarryDetailData packet) { _MarryCoup.text = StrDictionary.GetClientDictionaryString("#{47205}", packet.marryTotal); professionList = new List<int>(); nameList = new List<string>(); if (GameManager.gameManager.PlayerDataPool.IsMarried) { GameManager.gameManager.PlayerDataPool.MyRingInfoData.SetLoverName(packet.name); } if (packet.huabandWifeFlag == (int)CoupType.Husband) { professionList.Add(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession); nameList.Add(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName); professionList.Add(packet.loverCareer); nameList.Add(packet.name); } else { professionList.Add(packet.loverCareer); nameList.Add(packet.name); professionList.Add(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession); nameList.Add(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName); } //显示模型 时间 SetMarryTime(packet.marryTm); InitCharModelAndName(packet.marryType); } public void InitCharModelAndName(int weedingType) { Tab_WeedingConfig config = TableManager.GetWeedingConfigByID(weedingType, 0); if(config == null) { return; } Tab_FashionItem fashionItemTab = TableManager.GetFashionItemByID(config.GainFashionId, 0); if(fashionItemTab == null) { return; } Tab_ItemVisual itemVisual = TableManager.GetItemVisualByID(fashionItemTab.ItemVisualId, 0); if(itemVisual == null) { return; } int charModelId = -1; for(int index = 0; index < professionList.Count; index++) { switch (professionList[index]) { case (int)CharacterDefine.PROFESSION.XUANNV: charModelId = itemVisual.CharModelIDXiaoYao; break; case (int)CharacterDefine.PROFESSION.LIUSHAN: charModelId = itemVisual.CharModelIDTianShan; break; case (int)CharacterDefine.PROFESSION.SHUSHAN: charModelId = itemVisual.CharModelIDDaLi; break; case (int)CharacterDefine.PROFESSION.TIANJI: charModelId = itemVisual.CharModelIDShaoLin; break; } if(charModelId == -1) { continue; } modelCameraList[index].InitModel(professionList[index], charModelId); roleNameTextList[index].text = nameList[index]; } } public void SetMarryTime(long time) { System.DateTime startTime = new System.DateTime(1970, 1, 1).ToLocalTime(); System.DateTime curTime = startTime.AddSeconds(time); marriedTime.text = StrDictionary.GetClientDictionaryString("#{25123}", curTime.Year, curTime.Month, curTime.Day); } public bool IsMarried() { return GameManager.gameManager.PlayerDataPool.IsMarried; } public void InitMarryRuleTip() { marryRuleText.text = StrDictionary.GetClientDictionaryString("#{47011}"); } public void InitHeadIcon() { LoadAssetBundle.Instance.SetImageSprite(roleHeadIcon, Utils.GetProfessionSpriteName(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession)); } private const int marryNpcAutosearchId = 9008; public void OnGotoMarryBtnClick() { if (GameManager.gameManager.m_RunningScene == 658) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{79512}")); return; } //UIManager.ShowUI(UIInfo.WeddingOperationPanel); Tab_AutoSearch autoSearch = TableManager.GetAutoSearchByID(marryNpcAutosearchId, 0); if (autoSearch == null) { return; } Vector3 pos = new Vector3(); pos.x = autoSearch.X; pos.z = autoSearch.Z; int sceneId = autoSearch.DstSceneID; AutoSearchPoint targetPoint = new AutoSearchPoint(sceneId, pos.x, pos.z); if (GameManager.gameManager && GameManager.gameManager.AutoSearch) { GameManager.gameManager.AutoSearch.BuildPath(targetPoint); Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(autoSearch.DataId, 0); if (null != RoleBase && null != GameManager.gameManager.AutoSearch.Path) { GameManager.gameManager.AutoSearch.Path.AutoSearchTargetName = RoleBase.Name; GameManager.gameManager.AutoSearch.Path.autoSearchRadius = RoleBase.DialogRadius; } } CloseCurPanel(); } public void CloseCurPanel() { MarryRoot.Instance.OnCloseBtnClick(); } public void PlayWeddingMovie() { if (GameManager.gameManager.m_RunningScene == 658) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{79512}")); return; } const string movieName = "/Audio/3333.mp4"; if (MarryMovieCtr.Instance) { MarryMovieCtr.Instance.PlayMovie(movieName); } else { UIManager.ShowUI(UIInfo.MarryMovieCtr, (sucess, param) => { MarryMovieCtr.Instance.PlayMovie(movieName); }); } } }