Files
JJBB/Assets/Project/Script/GUI/Mission/OptionDialogLogic.cs
2024-08-23 15:49:34 +08:00

951 lines
31 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<OptionDialogLogic>
{
#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<string, OptionInfo> _OptionList = new Dictionary<string, OptionInfo>();
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<DialogCore>.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<DialogCore>.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<OptionInfo> OptionInfos = new List<OptionInfo>();
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<ObjManager>.Instance.MainPlayer != null)
Singleton<ObjManager>.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<ObjManager>.Instance.MainPlayer!=null)
Singleton<ObjManager>.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<ObjManager>.Instance.MainPlayer!=null)
Singleton<ObjManager>.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<ObjManager>.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<DialogCore>.GetInstance().CareNPC;
if (TargetNpc == null)
{
return;
}
if (Singleton<ObjManager>.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<ObjManager>.GetInstance().MainPlayer)
{
return;
}
if (Singleton<ObjManager>.GetInstance().MainPlayer.IsNameWithCombineServerSign())
{
}
else
{
Singleton<ObjManager>.GetInstance().MainPlayer.SendNoticMsg(false, "#{3341}");
}
}
// 跑商选项相关 1:低级跑商2高级跑商
void DoAcceptPaoShang(int nOptIndex)
{
Obj_MainPlayer _mainPlayer = Singleton<ObjManager>.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
}