using System; using System.Collections.Generic; using System.Text; using UnityEngine; public class RichNormalEvent : TRichTextEvent { public RichNormalEvent() { RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.APPLYFAIRY, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.INVITE, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.OPENUI, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.OPENURL, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.TIP, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.GetWay, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.JOINTEAM, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.AncientRobotName, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.AuctionBidding, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.RandomChat, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.TaskFeedback, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.MyFightPoint, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.MyReikiRoot, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.MyDefense, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.JobLabel, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.BLSOS, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.GSZD, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.COPY, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.GUIDE, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.XJDHServerIDRangeInfo, this); } public override bool Execute(RichTextEventEnum type, RichTextMgr.HrefInfo href) { switch (type) { // TODO YYL 超链接文本事件 // // case RichTextEventEnum.APPLYFAIRY: // // { // // uint id = 0; // // if (uint.TryParse(href.mSplits["applyfairy"], out id)) // // { // // ModelCenter.Instance.GetModel().SendApplyFairy(id); // // return true; // // } // // } // // break; // case RichTextEventEnum.JOINTEAM: // { // uint id = 0; // if (uint.TryParse(href.mSplits["jointeam"], out id)) // { // var teamModel = ModelCenter.Instance.GetModel(); // if (teamModel.myTeam.GetIndexOfMember((int)id) != -1) // { // SysNotifyMgr.Instance.ShowTip("AlreadyInTeam2"); // return false; // } // teamModel.RequestInviteJoinTeam((int)id); // } // } // break; // case RichTextEventEnum.INVITE: // { // uint id = 0; // if (uint.TryParse(href.mSplits["invite"], out id)) // { // var teamModel = ModelCenter.Instance.GetModel(); // if (teamModel.myTeam.GetIndexOfMember((int)id) != -1) // { // SysNotifyMgr.Instance.ShowTip("AlreadyInTeam"); // return false; // } // if (teamModel.myTeam.inTeam) // { // ConfirmCancel.ShowPopConfirm( // "", // Language.Get("PlayerJoinTeam_1"), // (bool _ok) => // { // if (_ok) // { // teamModel.RequestExitTeam(); // teamModel.RequestApplyForJoin((int)id); // } // } // ); // } // else // { // teamModel.RequestApplyForJoin((int)id); // } // } // } // break; // case RichTextEventEnum.OPENUI: // { // int id = 0; // if (int.TryParse(href.mSplits["openui"], out id)) // { // WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)id); // } // else // { // var list = href.mSplits["openui"].Split('_'); // int funcOrder = 0; // if (list.Length != 1) // { // funcOrder = int.Parse(list[1]); // } // WindowJumpMgr.Instance.WindowJumpToEx(list[0], 1, 0, funcOrder); // if (list.Length > 2) // { // ModelCenter.Instance.GetModel().openUIMark = int.Parse(list[2]); // } // } // } // break; // case RichTextEventEnum.OPENURL: // { // var url = href.mSplits["openurl"]; // Application.OpenURL(url); // } // break; // case RichTextEventEnum.TIP: // { // var _key = href.mSplits["tip"]; // SysNotifyMgr.Instance.ShowTip(_key); // } // break; // case RichTextEventEnum.GetWay: // { // int _id = 0; // int.TryParse(href.mSplits["getway"], out _id); // ItemTipUtility.Show(_id); // } // break; // case RichTextEventEnum.AuctionBidding: // { // if (href.mSplits.ContainsKey("auctionbidding")) // { // var guid = href.mSplits["auctionbidding"]; // guid = guid.Trim('\"'); // ModelCenter.Instance.GetModel().LocationItemByGuid(guid); // } // } // break; // case RichTextEventEnum.RandomChat: // { // if (href.mSplits.ContainsKey("randomchat")) // { // var chatType = (ChatInfoType)int.Parse(href.mSplits["randomchat"]); // ChatCtrl.Inst.presentChatType = chatType; // ChatCtrl.Inst.openFromFairyTask = true; // WindowCenter.Instance.Open(); // WindowCenter.Instance.Open(); // } // } // break; // case RichTextEventEnum.TaskFeedback: // { // if (href.fromAutoTask) // { // return false; // } // if (href.mSplits.ContainsKey("taskfeedback")) // { // var taskId = 0; // int.TryParse(href.mSplits["taskfeedback"], out taskId); // TaskFeedback feedback; // var feedbackModel = ModelCenter.Instance.GetModel(); // if (feedbackModel.TryGetTaskFeedback(taskId, out feedback)) // { // feedbackModel.ExecuteTaskFeedback(taskId); // return true; // } // } // } // break; // case RichTextEventEnum.BLSOS: // { // var list = href.mSplits["blsos"].Split('_'); // var blessedLandModel = ModelCenter.Instance.GetModel(); // var roleParticularModel = ModelCenter.Instance.GetModel(); // blessedLandModel.robPlayerId = uint.Parse(list[0]); // blessedLandModel.helpPlayerId = uint.Parse(list[1]); // blessedLandModel.helpItemIndex = uint.Parse(list[2]); // blessedLandModel.helpType = 1; // //福地功能未开启 // if (!FuncOpen.Instance.IsFuncOpen(227)) // { // SysNotifyMgr.Instance.ShowTip("BlessedLand11"); // return false; // } // //自己点自己的求援信息 // if (blessedLandModel.helpPlayerId == blessedLandModel.myPlayerId) // { // SysNotifyMgr.Instance.ShowTip("BlessedLand07"); // return false; // } // //抢劫者是自己 // if (blessedLandModel.robPlayerId == blessedLandModel.myPlayerId) // { // SysNotifyMgr.Instance.ShowTip("BlessedLand08"); // return false; // } // //帮助别人的奖励次数用光 // if (blessedLandModel.HelpAwardCount >= blessedLandModel.maxHelpCount) // { // SysNotifyMgr.Instance.ShowTip("BlessedLand06"); // return false; // } // roleParticularModel.ViewCrossPlayerCacheData((int)blessedLandModel.robPlayerId, (int)ViewPlayerType.viewCrossPlayerDataBlessedLand); // } // break; // case RichTextEventEnum.GSZD: // { // var list = href.mSplits["gszd"].Split('_'); // CrossServerGodBattleFieldAssortModel model = ModelCenter.Instance.GetModel(); // bool isHaveTeam = model.TryGetPlayerTeamInfo(out bool isCaptain, out uint playerTeamID, out AssortTeamInfo teamInfo); // uint teamID = uint.Parse(list[0]); // uint sendPlayerID = uint.Parse(list[1]); // //跨服古神战场功能未开启 // if (!FuncOpen.Instance.IsFuncOpen(208)) // { // SysNotifyMgr.Instance.ShowTip("GodBattleFieldAssort01"); // return false; // } // //开服天数不足 // if (TimeUtility.OpenDay < GeneralDefine.crossServerBattleFieldOpenDay) // { // var mapName = UIHelper.AppendColor(TextColType.Green, MapConfig.Get(GeneralDefine.CrossBattleFieldMapID).Name); // SysNotifyMgr.Instance.ShowTip("ImpactRankActivityUnOpen", mapName, GeneralDefine.crossServerBattleFieldOpenDay + 1); // return false; // } // // 活动已开启 // if (model.IsOpenAction()) // { // SysNotifyMgr.Instance.ShowTip("GodBattleFieldAssort03"); // return false; // } // //自己点自己的信息 // if (sendPlayerID == PlayerDatas.Instance.baseData.PlayerID) // { // SysNotifyMgr.Instance.ShowTip("AlreadyInTeam"); // return false; // } // //自己已经有队伍 // if (isHaveTeam) // { // SysNotifyMgr.Instance.ShowTip("AlreadyHaveTeam"); // return false; // } // //该队伍已经申请过了 // if (model.IsRequest(teamID)) // { // SysNotifyMgr.Instance.ShowTip("GodBattleFieldAssort02"); // return false; // } // model.SendFuncTeamMemOP(teamID, model.FuncMapID, 1); // } // break; // case RichTextEventEnum.COPY: // { // var info = href.mSplits["copy"]; // ynmbxxjUtil.Instance.CopyContent(info); // } // break; // case RichTextEventEnum.GUIDE: // { // var info = href.mSplits["startguide"]; // string itemInfo; // href.mSplits.TryGetValue("buyitemid", out itemInfo); // if (!string.IsNullOrEmpty(itemInfo)) // { // var infoArr = itemInfo.Split('_'); // if (infoArr.Length >= 2) // { // StoreConfig storeConfig = StoreConfig.Get(int.Parse(infoArr[1])); // ModelCenter.Instance.GetModel().SetJumpToModel(storeConfig.ItemID); // ModelCenter.Instance.GetModel().SetWinOrder(int.Parse(infoArr[0])); // ModelCenter.Instance.GetModel().selectSecondType = storeConfig.SecondType[0]; // } // } // NewBieCenter.Instance.StartNewBieGuideEx(int.Parse(info)); // } // break; // case RichTextEventEnum.XJDHServerIDRangeInfo: // { // var info = href.mSplits["xjdhserveridrangeinfo"]; // OperationLianQiCross act; // OperationTimeHepler.Instance.TryGetOperation(LianQiActModel.operaTypeCross, out act); // if (act == null) // return false; // FuncRules.OpenFuncTip(Language.Get("L2015"), act.m_ServerListStr); // } // break; } return false; } public override string GetDisplay(RichTextEventEnum type, Dictionary dic) { // switch (type) // { // case RichTextEventEnum.AncientRobotName: // { // if (dic.ContainsKey("objid") && dic.ContainsKey("npcid")) // { // var objId = 0; // var npcId = 0; // if (int.TryParse(dic["objid"], out objId) // && int.TryParse(dic["npcid"], out npcId)) // { // var model = ModelCenter.Instance.GetModel(); // return model.GetAncientRobotName(objId, npcId); // } // } // } // break; // case RichTextEventEnum.MyFightPoint: // { // var colorType = 0; // if (RichTextMgr.Inst.presentRichText != null) // { // colorType = RichTextMgr.Inst.presentRichText.colorType == RichText.ColorType.Dark ? 0 : 1; // } // var fightPoint = PlayerDatas.Instance.baseData.FightPoint; // ulong targetValue = 0; // var infoArray = dic["myfightpoint"].Split('_'); // if (infoArray.Length > 1) // { // switch (infoArray[0]) // { // case "skytower": // var config = SkyTowerConfig.Get(infoArray[1]); // if (config != null) // { // targetValue = (ulong)NPCExConfig.Get(config.bossId).SuppressFightPower; // } // break; // } // } // else // { // ulong.TryParse(dic["myfightpoint"], out targetValue); // } // if (fightPoint < (ulong)targetValue) // { // var label = dic.ContainsKey("replacelabel1") ? dic["replacelabel1"] : string.Empty; // return UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(label, fightPoint, "/", targetValue), colorType == 1); // } // else // { // var label = dic.ContainsKey("replacelabel2") ? dic["replacelabel2"] : string.Empty; // return UIHelper.AppendColor(TextColType.Green, label, colorType == 1); // } // } // case RichTextEventEnum.MyReikiRoot: // { // var colorType = 0; // if (RichTextMgr.Inst.presentRichText != null) // { // colorType = RichTextMgr.Inst.presentRichText.colorType == RichText.ColorType.Dark ? 0 : 1; // } // var reikiRootModel = ModelCenter.Instance.GetModel(); // var satisfy = false; // var targetValue = 0; // var point = 0; // var property = 0; // if (int.TryParse(dic["myreikiroot"], out targetValue)) // { // point = reikiRootModel.GetReikiRootTotalPoint(); // satisfy = point >= targetValue; // } // else // { // var jsonArray = LitJson.JsonMapper.ToObject(dic["myreikiroot"]); // var job = PlayerDatas.Instance.baseData.Job; // for (int i = 0; i < jsonArray.Length; i++) // { // if (i == job - 1) // { // property = jsonArray[i][0]; // point = reikiRootModel.GetReikiRootPoint(jsonArray[i][0]); // targetValue = jsonArray[i][1]; // satisfy = point >= targetValue; // break; // } // } // } // if (!satisfy) // { // var label = dic.ContainsKey("replacelabel1") ? dic["replacelabel1"] : string.Empty; // if (property != 0) // { // var propertyConfig = PlayerPropertyConfig.Get(property); // label = StringUtility.Contact(propertyConfig.Name, ":"); // } // return UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(label, point, "/", targetValue), colorType == 1); // } // else // { // var label = dic.ContainsKey("replacelabel2") ? dic["replacelabel2"] : string.Empty; // return label; // } // } // case RichTextEventEnum.MyDefense: // { // var colorType = 0; // if (RichTextMgr.Inst.presentRichText != null) // { // colorType = RichTextMgr.Inst.presentRichText.colorType == RichText.ColorType.Dark ? 0 : 1; // } // var treasureModel = ModelCenter.Instance.GetModel(); // var satisfy = false; // var targetValue = 0; // var point = 0; // var treasureId = 0; // if (int.TryParse(dic["mydefense"], out treasureId)) // { // TreasureDungeon treasureDungeon; // if (treasureModel.TryGetTreasureDungeon(treasureId, out treasureDungeon)) // { // var dungeonInfo = treasureDungeon.Get(treasureDungeon.currentLevel + 1); // if (!dungeonInfo.Equals(default(TreasureDungeonInfo))) // { // targetValue = dungeonInfo.defense; // } // } // point = (int)UIHelper.GetPropertyValue(PropertyType.DEF); // satisfy = point >= targetValue; // } // if (!satisfy) // { // var label = dic.ContainsKey("replacelabel1") ? dic["replacelabel1"] : string.Empty; // return UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(label, point, "/", targetValue), colorType == 1); // } // else // { // var label = dic.ContainsKey("replacelabel2") ? dic["replacelabel2"] : string.Empty; // return label; // } // } // case RichTextEventEnum.JobLabel: // { // var json = dic["joblabel"]; // var labelArray = LitJson.JsonMapper.ToObject(json); // var job = PlayerDatas.Instance.baseData.Job; // var index = job - 1; // if (labelArray != null && index < labelArray.Length) // { // return labelArray[index]; // } // } // break; // } return string.Empty; } }