using vnxbqy.UI; 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); } public override bool Execute(RichTextEventEnum type, RichTextMgr.HrefInfo href) { switch (type) { 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; } 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; } }