Core/GameEngine/Model/TelPartialConfig/RandomNameConfig.cs
@@ -63,5 +63,41 @@ string str = list[Random.Range(0, cnt)].RandomName2; return str; } public static string GetFirstName(ref List<int> randoms) { var list = m_RandomFirstNames; if (randoms.Count == 0) { for (int i = 0; i < list.Count; i++) { randoms.Add(i); } } var index = Random.Range(0, randoms.Count); var name = list[randoms[index]].RandomName1; randoms.RemoveAt(index); return name; } public static string GetSecondName(ref List<int> randoms) { List<RandomNameConfig> list = null; var name = string.Empty; if (m_RandomNameCfgs.TryGetValue(1, out list)) { if (randoms.Count == 0) { for (int i = 0; i < list.Count; i++) { randoms.Add(i); } } var index = Random.Range(0, randoms.Count); name = list[randoms[index]].RandomName2; randoms.RemoveAt(index); } return name; } } } System/Activity/ActivityModel.cs
@@ -70,7 +70,7 @@ { CheckActivity(); TimeMgr.Instance.OnMinuteEvent -= CheckActivity; TimeMgr.Instance.OnMinuteEvent += CheckActivity; TimeMgr.Instance.OnMinuteEvent += CheckActivity; } public void OnBeforePlayerDataInitialize() @@ -143,6 +143,12 @@ } } } else { ancientRandomName.Clear(); firstNameRandoms.Clear(); secondNameRandoms.Clear(); } } IEnumerator Co_StageLoad() @@ -203,6 +209,10 @@ { return false; } if (type == (int)DailyQuestType.FairyGrabBoss) { return false; } DailyQuestConfig cfg = Config.Instance.Get<DailyQuestConfig>(type); if (cfg == null) { @@ -215,9 +225,9 @@ return true; } private bool CheckLimit(int type) public bool CheckLimit(int type) { DailyQuestConfig cfg = Config.Instance.Get<DailyQuestConfig>(type); DailyQuestConfig config = Config.Instance.Get<DailyQuestConfig>(type); switch ((DailyQuestType)type) { case DailyQuestType.FairyGrabBoss: @@ -263,16 +273,16 @@ } break; } if (cfg.UnLockFuncID != 0) if (config.UnLockFuncID != 0) { if (!FuncOpen.Instance.IsFuncOpen(cfg.UnLockFuncID)) if (!FuncOpen.Instance.IsFuncOpen(config.UnLockFuncID)) { return true; } } int entertimes = dailyQuestModel.GetDailyQuestCompletedTimes(type); if (dailyQuestModel.GetDailyQuestTotalTimes(cfg.ID) <= entertimes) if (dailyQuestModel.GetDailyQuestTotalTimes(config.ID) <= entertimes) { return true; } @@ -352,6 +362,33 @@ public string Icon; } #endregion Dictionary<int, Dictionary<int, string>> ancientRandomName = new Dictionary<int, Dictionary<int, string>>(); List<int> firstNameRandoms = new List<int>(); List<int> secondNameRandoms = new List<int>(); public string GetAncientRobotName(int objId, int npcId) { if (ancientRandomName.ContainsKey(objId) && ancientRandomName[objId].ContainsKey(npcId)) { return ancientRandomName[objId][npcId]; } var firstName = RandomNameConfig.GetFirstName(ref firstNameRandoms); var secondName = RandomNameConfig.GetSecondName(ref secondNameRandoms); var name = StringUtility.Contact(firstName, secondName); Dictionary<int, string> dict; if (!ancientRandomName.ContainsKey(objId)) { dict = new Dictionary<int, string>(); dict.Add(npcId, name); ancientRandomName.Add(objId, dict); } else { ancientRandomName[objId].Add(npcId, name); } return name; } } } System/Dungeon/DungeonFightWin.cs
@@ -131,25 +131,6 @@ DropItemManager.pickUpCallBack -= OnPickItem; MainInterfaceWin.Event_Duplicates -= OnChangeFuncBtnPosEvent; model.dungeonCoolDownEvent -= OnLeaveMapTimeEvent; var mapId = PlayerDatas.Instance.baseData.MapID; if (mapId != 31250) { var mapConfig = Config.Instance.Get<MapConfig>(mapId); try { if (mapConfig != null && mapConfig.MapFBType != (int)MapType.OpenCountry) { throw new NullReferenceException(); } } catch (Exception ex) { Debug.Log(ex); var content = StringUtility.Contact("当前地图:", PlayerDatas.Instance.baseData.MapID, ";堆栈信息:", ex.StackTrace); ExceptionCatcher.ReportException("副本战斗界面异常关闭", content); } } } protected override void OnAfterClose() System/Dungeon/TargetBriefInfoWin.cs
@@ -138,6 +138,7 @@ [SerializeField] ElderGodAngerBehaviour m_ElderGodAnger; [SerializeField] Transform m_ContainerPlayer; [SerializeField] PlayerLifeBar m_PlayerLifeBar; [SerializeField] FairyGrabBossBuffTip m_FairyGrabBossBuffTip; public static uint currentBossInstanceId = 0; public static uint currentPlayerInstanceId = 0; @@ -189,6 +190,7 @@ m_ContainerPlayer.gameObject.SetActive(false); m_ContainerBoss.gameObject.SetActive(true); m_FairyGrabBossBuffTip.Init(); var boss = GAMgr.Instance.GetBySID(_instanceId) as GActorNpcFight; if (boss != null) @@ -197,10 +199,12 @@ } m_ElderGodAnger.Display(_npcId); m_FairyGrabBossBuffTip.Display(_npcId); } else { m_ContainerBoss.gameObject.SetActive(false); m_FairyGrabBossBuffTip.UnInit(); currentBossInstanceId = 0; } } @@ -225,6 +229,7 @@ var player = GAMgr.Instance.GetBySID(currentPlayerInstanceId) as GActorPlayerBase; m_ContainerPlayer.gameObject.SetActive(true); m_ContainerBoss.gameObject.SetActive(false); m_FairyGrabBossBuffTip.UnInit(); var job = player.ActorInfo.Job; var reincarnationLv = player.ActorInfo.ReincarnationLv; System/FairyAu/FairyCallMemberBehaviour.cs
@@ -29,7 +29,7 @@ GlobalTimeEvent.Instance.secondEvent += DisplayTimer; Display(); DisplayTimer(); //DisplayEffect(); DisplayEffect(); } public void UnInit() @@ -52,7 +52,7 @@ void Display() { m_CallMember.gameObject.SetActive(CheckCallMember()); //DisplayEffect(); DisplayEffect(); } bool CheckCallMember() @@ -115,14 +115,14 @@ if (seconds <= 0 && m_Timer.gameObject.activeSelf) { m_Timer.gameObject.SetActive(false); //DisplayEffect(); DisplayEffect(); } else if (seconds > 0) { if (!m_Timer.gameObject.activeSelf) { m_Timer.gameObject.SetActive(true); //DisplayEffect(); DisplayEffect(); } m_Timer.text = StringUtility.Contact(seconds, Language.Get("RealmWin_Bewrite_35")); } @@ -143,6 +143,7 @@ if (m_Tween.enabled) { m_Tween.enabled = false; m_Tween.transform.localEulerAngles = Vector3.zero; } } else System/FairyAu/FairyGrabBossBuffTip.cs
New file @@ -0,0 +1,85 @@ using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FairyGrabBossBuffTip : MonoBehaviour { [SerializeField] Text m_BuffDescription; int selectNpcId = 0; FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } PlayerBuffDatas buffModel { get { return ModelCenter.Instance.GetModel<PlayerBuffDatas>(); } } public void Init() { PlayerBuffDatas.Even_ObjAddBuf -= AddBuff; PlayerBuffDatas.Even_ObjDelBuff -= DeleteBuff; PlayerBuffDatas.Even_ObjAddBuf += AddBuff; PlayerBuffDatas.Even_ObjDelBuff += DeleteBuff; } public void UnInit() { PlayerBuffDatas.Even_ObjAddBuf -= AddBuff; PlayerBuffDatas.Even_ObjDelBuff -= DeleteBuff; } public void Display(int _npcId) { selectNpcId = _npcId; DisplayBuff(); } private void DisplayBuff() { bool isFairyGrabBoss = model.bosses.Contains(selectNpcId); var reduceInjuryBuffId = 0; if (isFairyGrabBoss) { var buffDict = buffModel._BuffDic; if (buffDict != null) { foreach (var buffData in buffDict.Values) { if (model.reduceInjuryBuffId == buffData.SkillTypeID && buffData.SkillID > reduceInjuryBuffId) { reduceInjuryBuffId = buffData.SkillID; } } } var config = Config.Instance.Get<SkillConfig>(reduceInjuryBuffId); if (config != null) { m_BuffDescription.text = Language.Get("FairyGrabBossDeBuff", config.EffectValue11 / 100); } } this.gameObject.SetActive(isFairyGrabBoss && reduceInjuryBuffId != 0); } private void DeleteBuff() { DisplayBuff(); } private void AddBuff() { DisplayBuff(); } } } System/FairyAu/FairyGrabBossBuffTip.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 02fac49a82d1f084db2a67ae6aaf9ce4 timeCreated: 1541576034 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FairyAu/FairyGrabBossModel.cs
@@ -82,6 +82,8 @@ public int cacheGotoBossId { get; private set; } public int reduceInjuryBuffId { get; private set; } private bool serverInited = false; //private DateTime lastQueryProgressTime = DateTime.Now; @@ -98,6 +100,7 @@ MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } PlayerDeadModel deadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } } TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } } public override void Init() { @@ -115,6 +118,10 @@ TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh; deadModel.AllPlayerDieEvent += PlayerDieEvent; deadModel.AllPlayerRebornEvent += AllPlayerRebornEvent; WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent; WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent; NewBieCenter.Instance.guideCompletedEvent += GuideCompletedEvent; TreasureNewGotWin.CloseTreasureNewGotWinEvent += CloseTreasureNewGotWinEvent; OpenServerActivityCenter.Instance.Register(13, this); } @@ -146,6 +153,10 @@ TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh; deadModel.AllPlayerDieEvent -= PlayerDieEvent; deadModel.AllPlayerRebornEvent -= AllPlayerRebornEvent; WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent; NewBieCenter.Instance.guideCompletedEvent -= GuideCompletedEvent; TreasureNewGotWin.CloseTreasureNewGotWinEvent -= CloseTreasureNewGotWinEvent; WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent; } private void AllPlayerRebornEvent(H0419_tagPlayerReborn package) @@ -244,6 +255,7 @@ if (!(StageManager.Instance.CurrentStage is DungeonStage)) { grabBossHintOpen = false; notified = false; fairyGrabBossHelps.Clear(); ClearGrabBossInfo(); } @@ -361,6 +373,14 @@ gotoBossStateUpdate(); } } if (serverInited) { notified = false; } } else { SnxxzGame.Instance.StartCoroutine(Co_OpenNotifyWin()); } RecheckGrabBoss(); if (stateUpdate != null) @@ -421,6 +441,8 @@ { noticeSessions = int.Parse(config.Numerical1); } config = Config.Instance.Get<FuncConfigConfig>("FairyGrabBossBuff"); reduceInjuryBuffId = int.Parse(config.Numerical1); } public bool TryGetDropItems(int bossId, out List<Item> dropItems) @@ -842,6 +864,102 @@ } #endregion #region Boss争夺战活动开始通知 public bool notified { get; private set; } private void WindowAfterOpenEvent(Window win) { if (win is MainInterfaceWin) { if (CheckNotifyFairyGrabBossOpen()) { SnxxzGame.Instance.StartCoroutine(Co_OpenNotifyWin()); } } } private void WindowAfterCloseEvent(Window win) { if (win is LoginAdWin || win is OffLineOnHookWin) { if (CheckNotifyFairyGrabBossOpen()) { SnxxzGame.Instance.StartCoroutine(Co_OpenNotifyWin()); } } } IEnumerator Co_OpenNotifyWin() { yield return WaitingForSecondConst.WaitMS600; TryOpenFairyGrabBossNotifyWin(); } void TryOpenFairyGrabBossNotifyWin() { if (CheckNotifyFairyGrabBossOpen()) { notified = true; WindowCenter.Instance.Open<FairyGrabBossOpenWin>(); } } private void GuideCompletedEvent(int obj) { if (CheckNotifyFairyGrabBossOpen()) { SnxxzGame.Instance.StartCoroutine(Co_OpenNotifyWin()); } } private void CloseTreasureNewGotWinEvent() { if (CheckNotifyFairyGrabBossOpen()) { SnxxzGame.Instance.StartCoroutine(Co_OpenNotifyWin()); } } private bool CheckNotifyFairyGrabBossOpen() { if (notified) { return false; } var activityModel = ModelCenter.Instance.GetModel<ActivityModel>(); if (activityModel.CheckLimit((int)DailyQuestType.FairyGrabBoss)) { return false; } var mapConfig = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID); if (mapConfig == null || mapConfig.MapFBType != 0) { return false; } if (treasureModel.newGotShowing) { return false; } if (NewBieCenter.Instance.inGuiding) { return false; } if (WindowCenter.Instance.IsOpen<OffLineOnHookWin>()) { return false; } if (WindowCenter.Instance.ExitAnyFullScreenOrMaskWin()) { return false; } if (InActivityTime) { return true; } return false; } #endregion public class FairyGrabBossInfo { public int npcId { get; private set; } System/FairyAu/FairyGrabBossOpenWin.cs
New file @@ -0,0 +1,56 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, November 07, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FairyGrabBossOpenWin : Window { [SerializeField] Button m_Close; [SerializeField] Button m_Goto; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.onClick.AddListener(CloseClick); m_Goto.onClick.AddListener(Goto); } protected override void OnPreOpen() { } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion private void Goto() { CloseImmediately(); WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FairyGrabBoss); } } } System/FairyAu/FairyGrabBossOpenWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 52ff1f0c7eeab2241bd32a33f925ea49 timeCreated: 1541562612 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/MainInterfacePanel/MainInterfaceWin.cs
@@ -85,7 +85,7 @@ [SerializeField] Button m_SendRedbagBtn; [SerializeField] Button WishingAwardImg; [SerializeField] Button m_GotoFairyGrabBoss; //[SerializeField] Button m_FlyToFairyGrabBoss; [SerializeField] Button m_FlyToFairyGrabBoss; [SerializeField] Transform m_EffectTask;//任务完成特效播放位置 private int m_CollectNPCID; @@ -179,7 +179,7 @@ m_SendRedbagBtn.AddListener(SendRedpacketBtn); WishingAwardImg.AddListener(ClickWishAward); m_GotoFairyGrabBoss.AddListener(GotoFairyGrabBoss); //m_FlyToFairyGrabBoss.AddListener(FlyToFairyGrabBoss); m_FlyToFairyGrabBoss.AddListener(FlyToFairyGrabBoss); } protected override void OnPreOpen() @@ -1142,36 +1142,36 @@ } } //private void FlyToFairyGrabBoss() //{ // if (fairyGrabBossModel.cacheGotoBossId != 0) // { // var error = 0; // if (fairyGrabBossModel.TestEnterDungeon(fairyGrabBossModel.cacheGotoBossId, out error)) // { // var bossInfoConfig = Config.Instance.Get<BossInfoConfig>(fairyGrabBossModel.cacheGotoBossId); // var flyItemCount = ModelCenter.Instance.GetModel<PlayerPackModel>().GetItemCountByID(PackType.rptItem, GeneralDefine.flyBootItemId); // var freeFly = ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0; // if (bossInfoConfig != null) // { // if (freeFly || flyItemCount > 0) // { // MapTransferUtility.Instance.MissionFlyTo(bossInfoConfig.MapID, fairyGrabBossModel.cacheGotoBossId); // } // else // { // FlyShoseConfirmwin.useEnvironment = FlyShoseConfirmwin.UseEnvironment.FairyGrabBoss; // FlyShoseConfirmwin.confirmCallBack = FlyShoesUseCallback; // WindowCenter.Instance.Open<FlyShoseConfirmwin>(); // } // } // } // else // { // fairyGrabBossModel.DisplayErrorTip(error); // } // } //} private void FlyToFairyGrabBoss() { if (fairyGrabBossModel.cacheGotoBossId != 0) { var error = 0; if (fairyGrabBossModel.TestEnterDungeon(fairyGrabBossModel.cacheGotoBossId, out error)) { var bossInfoConfig = Config.Instance.Get<BossInfoConfig>(fairyGrabBossModel.cacheGotoBossId); var flyItemCount = ModelCenter.Instance.GetModel<PlayerPackModel>().GetItemCountByID(PackType.rptItem, GeneralDefine.flyBootItemId); var freeFly = ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0; if (bossInfoConfig != null) { if (freeFly || flyItemCount > 0) { MapTransferUtility.Instance.MissionFlyTo(bossInfoConfig.MapID, fairyGrabBossModel.cacheGotoBossId); } else { FlyShoseConfirmwin.useEnvironment = FlyShoseConfirmwin.UseEnvironment.FairyGrabBoss; FlyShoseConfirmwin.confirmCallBack = FlyShoesUseCallback; WindowCenter.Instance.Open<FlyShoseConfirmwin>(); } } } else { fairyGrabBossModel.DisplayErrorTip(error); } } } private void FlyShoesUseCallback() { System/Message/RichEvent.cs
@@ -22,4 +22,5 @@ TIP,//信息提示 GetWay,//获取途径 JOINTEAM,//加入队伍 AncientRobotName,//上古战场随机名字 } System/Message/RichNormalEvent.cs
@@ -15,6 +15,7 @@ RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.TIP, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.GetWay, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.JOINTEAM, this); RichTextMgr.Inst.RegisterEvent(RichTextEventEnum.AncientRobotName, this); } public override bool Execute(RichTextEventEnum type, RichTextMgr.HrefInfo href) @@ -112,6 +113,24 @@ public override string GetDisplay(RichTextEventEnum type, Dictionary<string, string> 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<ActivityModel>(); return model.GetAncientRobotName(objId, npcId); } } } break; } return string.Empty; } } System/Message/WordAnalysis.cs
@@ -142,6 +142,11 @@ displayDic.Add(split_value, array[1].ToLower()); } break; case "ancientrobotname": { eventType = RichTextEventEnum.AncientRobotName; } break; default: { displayDic.Add(split_value, array[1]); System/Treasure/TreasureModel.cs
@@ -250,6 +250,7 @@ FuncOpen.Instance.OnFuncStateChangeEvent += OnFunctionStateChange; packageModel.RefreshItemCountAct += OnPackageItemChange; WindowCenter.Instance.windowAfterOpenEvent += OnWindowOpen; WindowCenter.Instance.windowAfterCloseEvent += OnWindowClose; NewBieCenter.Instance.guideCompletedEvent += GuideComplete; StageManager.Instance.onStageLoadFinish += OnStageLoadFinish; } @@ -266,6 +267,7 @@ FuncOpen.Instance.OnFuncStateChangeEvent -= OnFunctionStateChange; packageModel.RefreshItemCountAct -= OnPackageItemChange; WindowCenter.Instance.windowAfterOpenEvent -= OnWindowOpen; WindowCenter.Instance.windowAfterCloseEvent -= OnWindowClose; StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish; } @@ -985,9 +987,20 @@ } } private void OnWindowClose(Window win) { if (win is LoginAdWin) { SnxxzGame.Instance.StartCoroutine(Co_OpenTreasureNewGot()); } } void GuideComplete(int _id) { SnxxzGame.Instance.StartCoroutine(Co_OpenTreasureNewGot()); if (newGotTreasureId != 0) { SnxxzGame.Instance.StartCoroutine(Co_OpenTreasureNewGot()); } } IEnumerator Co_OpenTreasureNewGot()