using UnityEngine; using UnityEngine.UI; using System.Collections; using GCGame.Table; using GCGame; using Module.Log; using Games.GlobeDefine; using Games.Item; using Games.UserCommonData; using System.Collections.Generic; using Games.LogicObj; using Games.Mission; using System; public class OptionDialogLogic : UIControllerBase { #region public class OptionInfo { public string _OptionStr; public string _OptionFunc; public Hashtable _OptionParams; } #endregion public GameObject _RootPanel; public UICameraTexture _CameraTexture; //顶部人物头像 public Text m_NPCTalk; public Text npcName; public UISubScollMenu _SubMenu; private Dictionary _OptionList = new Dictionary(); private Tab_NpcDialog m_NpcDialogInfo; private int m_curOptionDialogId; private bool m_IsNeedEnterCopyWhenClose = false; private bool m_IsHasReq = false; private int m_CopySceneId = -1; void CleanUp() { m_NpcDialogInfo = null; m_NPCTalk.text = ""; npcName.text = ""; m_curOptionDialogId = -1; m_IsNeedEnterCopyWhenClose = false; m_CopySceneId = -1; m_IsHasReq = false; } void Awake() { SetInstance(this); } private void OnDisable() { _CameraTexture.DestroyObj(); } void Start() { } void FixedUpdate() { if (Time.frameCount % 15 != 0) { if (gameObject.activeSelf) { if (false == Singleton.GetInstance().IsInDialogArea()) { //UIManager.CloseUI(UIInfo.MissionInfoController); OnCloseClick(); } } } } void OnDestroy() { SetInstance(null); } void OnEnable() { _RootPanel.SetActive(false); } public void ReqEneterCopyScene() { CG_REQ_ENTER_COPY req = (CG_REQ_ENTER_COPY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY); req.SetCopyid(m_CopySceneId); req.SendPacket(); m_IsHasReq = true; } public void OnCloseClick() { if(m_IsNeedEnterCopyWhenClose && !m_IsHasReq) { ReqEneterCopyScene(); } UIManager.CloseUI(UIInfo.OptionDialogRoot); } public static void ShowOptionDialogUI(Obj_NPC _obj) { UIManager.ShowUI(UIInfo.OptionDialogRoot, OnShowOptionDialog, _obj); } public void DoOptionDialog(Obj_NPC _obj, Tab_NpcOptionDialog _tabOption) { _CameraTexture.gameObject.SetActive(false); m_NPCTalk.gameObject.SetActive(false); _SubMenu.gameObject.SetActive(false); if (_obj == null) return; if (_tabOption == null) return; if (_tabOption.getOptionFuncCount() <= 0) return; string _OptionStr = _tabOption.GetOptionTextbyIndex(0); string _OptionFunc = _tabOption.GetOptionFuncbyIndex(0); CleanUp(); _OptionList.Clear(); OptionInfo optionInfo = new OptionInfo(); optionInfo._OptionStr = _OptionStr; optionInfo._OptionFunc = _OptionFunc; if (optionInfo._OptionParams == null) optionInfo._OptionParams = new Hashtable(); optionInfo._OptionParams.Add("Btnid", _tabOption.GetOptionParambyIndex(0)); optionInfo._OptionParams.Add("Npc", _obj); _OptionList.Add(optionInfo._OptionStr, optionInfo); _SelectMenu = _OptionStr; Invoke(_OptionFunc, 0); } private static int _NpcSoundLimitTime = -1; static void PlaySound(int dialogId) { Debug.LogError("Play Optional Dialog : " + dialogId); var DialogLine = TableManager.GetNpcDialogByID(dialogId, 0); if (GlobalData.NextNpcSoundTime == -1) { GameManager.gameManager.SoundManager.StopSoundEffect(GlobalData._PlayingSoundID, 1); GlobalData._PlayingSoundID = DialogLine.SoundId; GameManager.gameManager.SoundManager.PlaySoundEffect(DialogLine.SoundId, 1); } else { if (GlobalData.ServerAnsiTime > GlobalData.NextNpcSoundTime) { GameManager.gameManager.SoundManager.StopSoundEffect(GlobalData._PlayingSoundID, 1); GlobalData._PlayingSoundID = DialogLine.SoundId; GameManager.gameManager.SoundManager.PlaySoundEffect(DialogLine.SoundId, 1); if (_NpcSoundLimitTime == -1) { _NpcSoundLimitTime = int.Parse(TableManager.GetSystemParamByID(51, 0).StringValue); } GlobalData.NextNpcSoundTime += _NpcSoundLimitTime; } } } static void OnShowOptionDialog(bool bSuccess, object param) { if (!bSuccess) { LogModule.ErrorLog("load OptionDialog fail"); return; } Obj_NPC _Obj = (Obj_NPC)param; if (_Obj!=null && null != OptionDialogLogic.Instance()) { //判断点击NPC的操作是否需要出对话框 Tab_NpcDialog NpcDialogInfo = TableManager.GetNpcDialogByID(_Obj.DefaultDialogID, 0); if (NpcDialogInfo != null) { Tab_NpcOptionDialog _tabOption = TableManager.GetNpcOptionDialogByID(NpcDialogInfo.OptionDialogId, 0); if (_tabOption == null) return; if (_tabOption.IsNeedOpenUI == 1) { OptionDialogLogic.Instance().DoOptionDialog(_Obj, _tabOption); return; }else if(_tabOption.IsNeedOpenUI == 3) { OptionDialogLogic.Instance()._RootPanel.SetActive(true); OptionDialogLogic.Instance().DoHideoptionDialogUI(_Obj); return; } } OptionDialogLogic.Instance()._RootPanel.SetActive(true); OptionDialogLogic.Instance().DoShowOptionDialog(_Obj); PlaySound(_Obj.DefaultDialogID); } } public void ShowOrHideSubMenu(int param) { _SubMenu.gameObject.SetActive(param != 3); } void UpdateNPCInfo() { Obj_NPC TargetNpc = Singleton.GetInstance().CareNPC; if (TargetNpc != null) { if (TargetNpc.ModelID >= 0) { Tab_RoleBaseAttr roleBase = TableManager.GetRoleBaseAttrByID(TargetNpc.BaseAttr.RoleBaseID, 0); if (roleBase != null) { npcName.text = roleBase.Name; Tab_CharModel charModel = TableManager.GetCharModelByID(TargetNpc.ModelID, 0); if (charModel != null ) { _CameraTexture.InitModelPath(charModel.ResPath, charModel, LoadAssetBundle.BUNDLE_PATH_MODEL,false); //LoadAssetBundle.Instance.LoadModelAsync(charModel.ResPath, LoadModelFinish); } } } if (m_curOptionDialogId != -1) { Tab_NpcOptionDialog _npcOptionInfo = TableManager.GetNpcOptionDialogByID(m_curOptionDialogId, 0); if (_npcOptionInfo != null) { m_NPCTalk.text = StrDictionary.GetClientString_WithNameSex(_npcOptionInfo.CenterText); } List OptionInfos = new List(); for (int i=0;i< m_NpcDialogInfo.getMissionIDCount();i++) { int missionId = m_NpcDialogInfo.GetMissionIDbyIndex(i); //跑环任务特殊处理一下(有OptionDialogId之后会遍历挂载的任务,这样会有两个跑环的Btn,但是不挂入口任务的话就不显示状态,所以这边要屏蔽掉一个入口任务,只显示一个) if(missionId == GlobeVar.RINGMISSIONENTERFACEID) { continue; } Tab_MissionBase mission = TableManager.GetMissionBaseByID(missionId, 0); if (mission == null) continue; if (mission.MissionType == (int)MISSIONTYPE.MISSION_MAIN || mission.MissionType == (int)MISSIONTYPE.MISSION_BRANCH) { if (GameManager.gameManager.MissionManager.CanAcceptMission(missionId) == false) continue; } Games.Mission.MissionState misState = (Games.Mission.MissionState)GameManager.gameManager.MissionManager.GetMissionState(missionId); OptionInfo optionInfo = new OptionInfo(); optionInfo._OptionStr = GetMissionName(missionId); ; optionInfo._OptionFunc = "AcceptMission"; if (optionInfo._OptionParams == null) optionInfo._OptionParams = new Hashtable(); optionInfo._OptionParams.Add("state", (misState == Games.Mission.MissionState.Mission_Completed ? 2 : 1)); optionInfo._OptionParams.Add("id", mission.Id); OptionInfos.Add(optionInfo); } OptionInfos.Sort(OptionInfosSort); for (int i=0;i< OptionInfos.Count;i++) { _OptionList[OptionInfos[i]._OptionStr] = OptionInfos[i]; } } } } public string GetMissionName(int missionId) { Tab_MissionDictionary missionDic = TableManager.GetMissionDictionaryByID(missionId, 0); if(missionDic != null) { return missionDic.MissionName; }else { return ""; } } private int OptionInfosSort(OptionInfo info1, OptionInfo info2) { int state1 = 0; int state2 = 0; if(info1._OptionParams!=null && info1._OptionParams.ContainsKey("state")) { state1 = (int)info1._OptionParams["state"]; } if (info2._OptionParams != null && info2._OptionParams.ContainsKey("state")) { state2 = (int)info2._OptionParams["state"]; } int id1 = 0; int id2 = 0; if (info1._OptionParams != null && info1._OptionParams.ContainsKey("id")) { id1 = (int)info1._OptionParams["id"]; } if (info2._OptionParams != null && info2._OptionParams.ContainsKey("id")) { id2 = (int)info2._OptionParams["id"]; } if (state1==state2) { Tab_MissionBase missinfo1 = TableManager.GetMissionBaseByID(id1, 0); Tab_MissionBase missinfo2 = TableManager.GetMissionBaseByID(id2, 0); if (missinfo1 == null) return 0; else { if(missinfo2 != null) { if(missinfo1.MissionType == missinfo2.MissionType) { return missinfo1.Id > missinfo2.Id ? 1 : 0; } else { return missinfo1.MissionType > missinfo2.MissionType ? 1 : 0; } } } } else { return state1 > state2 ? 1 : 0; } return 1; } // 已经失效的接口,并且UICameraTexture.InitShowGO(GameObject showObj)也早以不能使用 // private void LoadModelFinish(string modelName, GameObject resObj, object param1, object param2, object param3 = null) // { // if (resObj == null) // return; // // _CameraTexture.InitShowGO(resObj); // // } //close的时候需要进副本 void DoHideoptionDialogUI(Obj_NPC _Obj) { if(_Obj == null) { return; } _CameraTexture.gameObject.SetActive(true); m_NPCTalk.gameObject.SetActive(true); _SubMenu.gameObject.SetActive(false); CleanUp(); m_NpcDialogInfo = TableManager.GetNpcDialogByID(_Obj.DefaultDialogID, 0); if (m_NpcDialogInfo != null) { m_curOptionDialogId = m_NpcDialogInfo.OptionDialogId; UpdateNPCInfo(); var _tabOption = TableManager.GetNpcOptionDialogByID(m_curOptionDialogId, 0); if (_tabOption != null) { m_CopySceneId = int.Parse(_tabOption.GetOptionParambyIndex(0)); } } m_IsNeedEnterCopyWhenClose = true; //五秒之后自动进副本 StartCoroutine(AutoEnterrCopy()); } void DoShowOptionDialog(Obj_NPC _Obj) { if (_Obj == null) return; _CameraTexture.gameObject.SetActive(true); m_NPCTalk.gameObject.SetActive(true); _SubMenu.gameObject.SetActive(true); CleanUp(); m_NpcDialogInfo = TableManager.GetNpcDialogByID(_Obj.DefaultDialogID,0); if (m_NpcDialogInfo !=null) { m_curOptionDialogId = m_NpcDialogInfo.OptionDialogId; _SubMenu.Clear(); _OptionList.Clear(); UpdateButtons(_Obj); UpdateNPCInfo(); foreach (var optionInfo in _OptionList) { _SubMenu.PushMenu(optionInfo.Value); } _SubMenu.SetBGRect(); } } public void BtnAutoCompleteCircle() { ReqAutoCompleteCircleMission req = new ReqAutoCompleteCircleMission(); req._flag = 1; req.SendMsg(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } private void UpdateButtons(Obj_NPC _Obj) { var _tabOption = TableManager.GetNpcOptionDialogByID(m_curOptionDialogId, 0); for (int i = _tabOption.getOptionTextCount(); i >= 0; --i) { if (!string.IsNullOrEmpty(_tabOption.GetOptionTextbyIndex(i))) { OptionInfo optionInfo = new OptionInfo(); optionInfo._OptionStr = _tabOption.GetOptionTextbyIndex(i); optionInfo._OptionFunc = _tabOption.GetOptionFuncbyIndex(i); if (optionInfo._OptionParams == null) optionInfo._OptionParams = new Hashtable(); optionInfo._OptionParams.Add("Btnid", _tabOption.GetOptionParambyIndex(i)); optionInfo._OptionParams.Add("Npc", _Obj); if(optionInfo._OptionFunc.Equals("EnterCopy")) { optionInfo._OptionParams.Add("needShowEffect", true); } _OptionList.Add(optionInfo._OptionStr, optionInfo); } } } private const float _AutoEnterCopyTime = 5.0f; IEnumerator AutoEnterrCopy() { yield return new WaitForSeconds(_AutoEnterCopyTime); CG_REQ_ENTER_COPY packet = (CG_REQ_ENTER_COPY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY); packet.Copyid = m_CopySceneId; packet.SendPacket(); UIManager.CloseUI(UIInfo.OptionDialogRoot); yield break; } public void OnMenuSelect(object optionObj) { string optionStr = optionObj as string; if (_OptionList.ContainsKey(optionStr)) { _SelectMenu = optionStr; Invoke(_OptionList[optionStr]._OptionFunc, 0); } } #region option func private void PlayWeddingMovie() { const string movieName = "/Audio/3333.mp4"; if (MarryMovieCtr.Instance) { MarryMovieCtr.Instance.PlayMovie(movieName); } else { UIManager.ShowUI(UIInfo.MarryMovieCtr, (sucess, param) => { MarryMovieCtr.Instance.PlayMovie(movieName); }); } } string _SelectMenu = ""; void OpenAutoTeam() { if(GameManager.gameManager.PlayerDataPool.IsHaveTeam()) { UIManager.ShowUI(UIInfo.TeamInfoRoot); } else { UIManager.ShowUI(UIInfo.TeamCreateRoot, delegate (bool bSuccess, object param) { if (bSuccess) { Hashtable hash = new Hashtable(); hash["index"] = 1; Games.Events.EventDispatcher.Instance.SendMessage(Games.Events.EventId.SELECTTEAMCREATEWNDITEM, hash); } }); } } void OpenShop() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if(_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int shopId = int.Parse(param); SysShopController.ShowShop(shopId, true); UIManager.CloseUI(UIInfo.OptionDialogRoot); } } void InviteGuildMatch() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { Obj_NPC _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; if (_Obj != null) { if (Singleton.Instance.MainPlayer != null) Singleton.Instance.MainPlayer.GuildWarUnionInfoReq(CG_GUILD_UNION_MATCH_REQ.UNION_MATCH_REQ.MEMBER_LIST, _Obj.ServerID); } } } void OpenUI() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; UIManager.ShowUI(UIPathData.m_DicUIName[param], null, null); UIManager.CloseUI(UIInfo.OptionDialogRoot); } } void FireWork() { if (BanQuetOperationPanel.Instance) BanQuetOperationPanel.Instance.OnFireWorkBtn(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } //切磋观战 void DualLookFight() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { Obj_NPC _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; if(_Obj != null) { if(Singleton.Instance.MainPlayer!=null) Singleton.GetInstance().MainPlayer.ReqDuelOption(CG_COMPETITION_OPTION.COMPETITION_TYPE.SEEWAR, 0, _Obj.ServerID); } } UIManager.CloseUI(UIInfo.OptionDialogRoot); } void OpenPopUI() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; Obj_NPC _Obj = null; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; } UIManager.ShowUI(UIPathData.m_DicUIName[param], delegate(bool bSucess, object _Param) { if(bSucess) { Games.Events.EventDispatcher.Instance.Dispatch(Games.Events.EventId.DialogWithNPC, _Param); } }, _Obj.BaseAttr.RoleBaseID); UIManager.CloseUI(UIInfo.OptionDialogRoot); } } void EnterCopy() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int copyId = int.Parse(param); CG_REQ_ENTER_COPY packet = (CG_REQ_ENTER_COPY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY); packet.Copyid = copyId; packet.SendPacket(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } } void BackGuild() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; if(param=="-1") { GameManager.gameManager.AutoSearch.BackGuild(GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid, -1, 0, 0); return; } int roleId = 0; string[] poss = param.Split(','); float x = 0; float z = 0; if (poss.Length > 0) int.TryParse(poss[0], out roleId); if (poss.Length > 1) float.TryParse(poss[1], out x); if (poss.Length > 2) float.TryParse(poss[2], out z); GameManager.gameManager.AutoSearch.BackGuild(GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid, roleId, x, z); } } void EnterCopyNpcObj() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int copyId = int.Parse(param); Obj_NPC _Obj = null; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; } CG_REQ_ENTER_COPY packet = (CG_REQ_ENTER_COPY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY); packet.Copyid = copyId; // packet.SetNpcObjId(_Obj.ServerID); packet.SendPacket(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } } //帮会联赛召唤BOSS void MatchAskBoss() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int indexID = int.Parse(param); Obj_NPC _Obj = null; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; } if (_Obj == null) return; CG_CALL_MONSTER send = (CG_CALL_MONSTER)PacketDistributed.CreatePacket(MessageID.PACKET_CG_CALL_MONSTER); send.SetNpcId(_Obj.ServerID); send.SetParam(indexID); send.SendPacket(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } } //帮会联赛提交矿石 void MatchGold() { if (_OptionList[_SelectMenu]._OptionParams == null) return; Obj_NPC _Obj = null; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; } if (_Obj == null) return; CG_GUILD_UNION_MATCH_REQ send = (CG_GUILD_UNION_MATCH_REQ)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_UNION_MATCH_REQ); send.SetType((int)CG_GUILD_UNION_MATCH_REQ.UNION_MATCH_REQ.COMMIT_BUFF); send.SetParam(_Obj.ServerID); send.SendPacket(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } void CallNPCBUFF() { if (_OptionList[_SelectMenu]._OptionParams == null) return; int param = -1; Obj_NPC _Obj = null; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string paramStr = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int.TryParse(paramStr, out param); } if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; } if (_Obj == null) return; CG_CLICK_BUFF_NPC send = (CG_CLICK_BUFF_NPC)PacketDistributed.CreatePacket(MessageID.PACKET_CG_CLICK_BUFF_NPC); send.SetIndex(param); send.SetNpcid(_Obj.ServerID); send.SendPacket(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } //客户端对完话后关闭 void SendOptionToServerAndClose() { SendOptionToServer(); UIManager.CloseUI(UIInfo.OptionDialogRoot); } //客户端对完话后如果服务器需要知道,就通过这条协议发过去 void SendOptionToServerAndAutoFight() { SendOptionToServer(); if(Singleton.Instance.MainPlayer!=null) Singleton.Instance.MainPlayer.EnterAutoCombat(); } //客户端对完话后如果服务器需要知道,就通过这条协议发过去 void SendOptionToServer() { if (_OptionList[_SelectMenu]._OptionParams == null) return; int param = -1; Obj_NPC _Obj = null; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string paramStr = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int.TryParse(paramStr, out param); } if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Npc")) { _Obj = _OptionList[_SelectMenu]._OptionParams["Npc"] as Obj_NPC; } if (_Obj == null || param <= 0) return; CG_NPC_ADDITION_ACTION send = (CG_NPC_ADDITION_ACTION)PacketDistributed.CreatePacket(MessageID.PACKET_CG_NPC_ADDITION_ACTION); send.SetActionType(param); send.SetObjId(_Obj.ServerID); send.SendPacket(); //UIManager.CloseUI(UIInfo.OptionDialogRoot); } //离开监狱 void LeaveWanton() { CG_CHANGE_MAJORCITY send = (CG_CHANGE_MAJORCITY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_CHANGE_MAJORCITY); send.SetType(1); send.SendPacket(); } void OpenCangku() { UIManager.ShowUI(UIInfo.CangKu); UIManager.CloseUI(UIInfo.OptionDialogRoot); } void AcceptMission() { if (_OptionList[_SelectMenu]._OptionParams == null) return; int id = -1; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string btnID = (string)_OptionList[_SelectMenu]._OptionParams["Btnid"]; if (int.TryParse(btnID, out id) == false) id = -1; } if(_OptionList[_SelectMenu]._OptionParams.ContainsKey("id")) { id = (int)_OptionList[_SelectMenu]._OptionParams["id"]; } int result = 0; if(id > 0) { if(GameManager.gameManager.MissionManager.CanAcceptMissionTip(id,true)==0) { UIManager.CloseUI(UIInfo.OptionDialogRoot); MissionInfoController.ShowMissionDialogUI(id); return; } } if(result == -9) //需要组队但是没有队伍 { OpenAutoTeam(); } } // 回血NPC对话相关 void DoRecover() { Obj_MainPlayer mainPlayer = Singleton.Instance.MainPlayer; if (mainPlayer == null) { return; } long nCurHP = mainPlayer.BaseAttr.HP; long nMaxHp = mainPlayer.BaseAttr.MaxHP; int nCurMP = mainPlayer.BaseAttr.MP; int nMaxMP = mainPlayer.BaseAttr.MaxMP; if (nCurHP >= nMaxHp && nCurMP >= nMaxMP) { mainPlayer.SendNoticMsg(false,"#{3291}"); return; } else { long nTempNeedMoney = ((nMaxHp - nCurHP)*7 + (nMaxMP - nCurMP)*77) * 115; long nNeedMoney = nTempNeedMoney / 100000 + (nTempNeedMoney > 0 ? 1 : 0); if (nNeedMoney < 0) { return; } string strTip = StrDictionary.GetClientDictionaryString("#{3292}", nNeedMoney); MessageBoxLogic.OpenOKCancelBox(strTip, null, OnRecoverOk, OnCloseClick); } } void OnRecoverOk() { Obj_NPC TargetNpc = Singleton.GetInstance().CareNPC; if (TargetNpc == null) { return; } if (Singleton.Instance.MainPlayer) { CG_ASK_RECOVER Pack = (CG_ASK_RECOVER)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_RECOVER); Pack.ObjID = TargetNpc.ServerID; Pack.SendPacket(); } } //改名对话相关 void OnChangeNameForCombineServer() { if (!Singleton.GetInstance().MainPlayer) { return; } if (Singleton.GetInstance().MainPlayer.IsNameWithCombineServerSign()) { } else { Singleton.GetInstance().MainPlayer.SendNoticMsg(false, "#{3341}"); } } // 跑商选项相关 1:低级跑商,2:高级跑商 void DoAcceptPaoShang(int nOptIndex) { Obj_MainPlayer _mainPlayer = Singleton.Instance.MainPlayer; if (_mainPlayer == null) { return; } bool bRetMissionPaoshangH = GameManager.gameManager.MissionManager.IsHaveMission(GlobeVar.PAOSHANG_MISSIONID_H); bool bRetMissionPaoshangL = GameManager.gameManager.MissionManager.IsHaveMission(GlobeVar.PAOSHANG_MISSIONID_L); if (bRetMissionPaoshangH || bRetMissionPaoshangL) { // 不让接 给个提示吧 _mainPlayer.SendNoticMsg(false, "#{3926}"); return; } // 条件都去服务器检测吧 CG_ASK_PAOSHANG_ACCEPT Pack = (CG_ASK_PAOSHANG_ACCEPT)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_PAOSHANG_ACCEPT); Pack.Type = nOptIndex; Pack.SendPacket(); } void OpenMasterMatch() { if (_OptionList[_SelectMenu]._OptionParams == null) return; if (_OptionList[_SelectMenu]._OptionParams.ContainsKey("Btnid")) { string param = _OptionList[_SelectMenu]._OptionParams["Btnid"] as string; int master = int.Parse(param); if (master == 0 || master == 1) { GameManager.gameManager.PlayerDataPool.m_MasterInfo.SelectMatchInfo(master > 0); } else if (master == 2) { if (GameManager.gameManager.PlayerDataPool.m_MasterInfo._MyApprentices.Count > 0) { MasterInfoLogic.ShowMasterRelieve(); } else { GUIData.AddNotifyData("#{7218}"); } } else if (master == 3) { if (GameManager.gameManager.PlayerDataPool.m_MasterInfo._MyMaster != null) { GameManager.gameManager.PlayerDataPool.m_MasterInfo.MasterRelieve(GameManager.gameManager.PlayerDataPool.m_MasterInfo._MyMaster.Guid, GameManager.gameManager.PlayerDataPool.m_MasterInfo._MyMaster.Name); } else { GUIData.AddNotifyData("#{7219}"); } } //UIManager.CloseUI(UIInfo.OptionDialogRoot); } } #endregion }