Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs
New file @@ -0,0 +1,56 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, January 18, 2019 //-------------------------------------------------------- using UnityEngine; using System; namespace TableConfig { public partial class JadeDynastyBossConfig : ConfigBase { public int NPCID { get ; private set ; } public int LineID { get ; private set ; } public int Time { get ; private set ; } public int RealmLV { get ; private set ; } public int ZhuXianScore { get ; private set ; } public string dropItems { get ; private set; } public string PortraitID { get ; private set; } public override string getKey() { return NPCID.ToString(); } public override void Parse() { try { NPCID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; LineID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; Time=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; RealmLV=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; ZhuXianScore=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; dropItems = rawContents[5].Trim(); PortraitID = rawContents[6].Trim(); } catch (Exception ex) { DebugEx.Log(ex); } } } } Core/GameEngine/Model/Config/JadeDynastyBossConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: bc9f70989c6d3344aad5bd0dbda7bc2b timeCreated: 1547804881 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/ConfigManager.cs
@@ -225,6 +225,7 @@ AddAsyncTask<FashionDressConfig>(); AddAsyncTask<WeekPartyPointConfig>(); AddAsyncTask<SceneReplaceConfig>(); AddAsyncTask<JadeDynastyBossConfig>(); while (!AllCompleted()) { System/Dungeon/DungeonBuyTimesWin.cs
@@ -188,6 +188,17 @@ return false; } } else if (JadeDynastyBossModel.JADEDYNASTY_MAP == model.currentDungeon.mapId) { var _totalTimes = model.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); var _enterTimes = model.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); if ((_totalTimes - _enterTimes) >= jadeDynastyBossModel.challengeLimitCount) { MessageWin.Inst.ShowFixedTip(Language.Get("DemonJar18")); return false; } } return true; } System/Dungeon/DungeonModel.cs
@@ -840,6 +840,12 @@ WindowCenter.Instance.Open<DemonJarDamageRankWin>(); } break; //case JadeDynastyBossModel.JADEDYNASTY_MAP: // if (!WindowCenter.Instance.IsOpen<JadeDynastyDamageRankWin>()) // { // WindowCenter.Instance.Open<JadeDynastyDamageRankWin>(); // } // break; case TreasureModel.TREASURE_MAPID: break; case HeavenBattleModel.HEAVEBATTLE_MAPID: System/Dungeon/DungeonRankBehaviour.cs
@@ -39,6 +39,7 @@ switch (currentDugeonId) { case 31170: //case JadeDynastyBossModel.JADEDYNASTY_MAP: case DemonJarModel.DEMONJAR_MAPID: { if (model.mission.hurtInfo != null && model.mission.hurtInfo.Length > 0) System/FindPrecious/FindPreciousBossRebornBehaviour.cs
@@ -130,7 +130,7 @@ case FindPreciousType.CrossServerBoss: GotoKillCrossServerBoss(bossId); break; case FindPreciousType.StrangleGodBoss: case FindPreciousType.JadeDynastyBoss: GotoKillStrangleGodBoss(bossId); break; } @@ -345,8 +345,8 @@ if (mapConfig.MapFBType == (int)MapType.OpenCountry) { WindowCenter.Instance.Close<MainInterfaceWin>(); var strangleGodBossModel = ModelCenter.Instance.GetModel<StrangleGodBossModel>(); strangleGodBossModel.assginSelectBossId = _bossId; var jadeDynastyBossModel = ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); jadeDynastyBossModel.assginSelectBossId = _bossId; WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 3); } else System/FindPrecious/FindPreciousModel.cs
@@ -56,7 +56,7 @@ BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } PersonalBossModel personalBossModel { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } } DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } } StrangleGodBossModel strangleGodBossModel { get { return ModelCenter.Instance.GetModel<StrangleGodBossModel>(); } } JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } } public override void Init() { @@ -432,11 +432,13 @@ } if (_redpointId == DemonJarModel.DEMONJAR_REDPOINTID || _redpointId == DogzDungeonModel.DOGZDUNGEON_REDPOINT) _redpointId == DogzDungeonModel.DOGZDUNGEON_REDPOINT || _redpointId == JadeDynastyBossModel.JADEDYNASTY_REDPOINTID) { var demonJarRedpointCount = demonJarModel.redpoint.count; var dogzDungeonRedpointCount = dogzDungeonModel.redpoint.count; var totalCount = demonJarRedpointCount + dogzDungeonRedpointCount; var jadeDynastyBossRedpointCount = jadeDynastyBossModel.redpoint.count; var totalCount = demonJarRedpointCount + dogzDungeonRedpointCount + jadeDynastyBossRedpointCount; lootPreciousRedpoint.count = totalCount; lootPreciousRedpoint.state = totalCount > 0 ? RedPointState.Quantity : RedPointState.None; @@ -473,9 +475,9 @@ { return FindPreciousType.CrossServerBoss; } else if (strangleGodBossModel.IsStrangleGodBoss(_bossId)) else if (jadeDynastyBossModel.IsJadeDynastyBoss(_bossId)) { return FindPreciousType.StrangleGodBoss; return FindPreciousType.JadeDynastyBoss; } return FindPreciousType.None; } System/FindPrecious/LootPreciousFrameWin.cs
@@ -17,7 +17,7 @@ [SerializeField] FunctionButton m_DemonJar; [SerializeField] FunctionButton m_FairyGrabBoss; [SerializeField] FunctionButton m_DogzDungeon; [SerializeField] FunctionButton m_StrangleGodBoss; [SerializeField] FunctionButton m_JadeDynastyBoss; [SerializeField] Button m_Left; [SerializeField] Button m_Right; @@ -33,7 +33,7 @@ m_DemonJar.AddListener(ShowDemonJar); m_DogzDungeon.AddListener(ShowDogzDungeon); m_FairyGrabBoss.AddListener(FairyGrabBoss); m_StrangleGodBoss.AddListener(StrangleGodBoss); m_JadeDynastyBoss.AddListener(JadeDynastyBoss); m_Left.AddListener(ShowLastFunction); m_Right.AddListener(ShowNextFunction); m_Close.AddListener(CloseClick); @@ -93,11 +93,11 @@ functionOrder = m_DogzDungeon.order; } private void StrangleGodBoss() private void JadeDynastyBoss() { CloseSubWindows(); WindowCenter.Instance.Open<StrangleGodBossWin>(); functionOrder = m_StrangleGodBoss.order; WindowCenter.Instance.Open<JadeDynastyBossWin>(); functionOrder = m_JadeDynastyBoss.order; } private void CloseSubWindows() System/JadeDynastyBoss.meta
System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs
New file @@ -0,0 +1,162 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class JadeDynastyBossBehaviour : FindPreciousBossBriefInfoBehaviour { [SerializeField] Transform m_ContainerChallengeable; [SerializeField] Transform m_ContainerUnChanllgeable; [SerializeField] Text m_ChallengeCondition; [SerializeField] Transform m_ContainerAttention; [SerializeField] Text m_Participant; JadeDynastyBossModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } } public int bossNpcId { get; private set; } protected override int selectedBossId { get { return model.selectBossId; } set { model.selectBossId = value; } } protected override InteractorableState interactorableState { get { var selected = selectedBossId == bossId; var condition = 0; var dieOrLocked = !model.IsBossUnLocked(bossId, out condition) || !findPreciousModel.IsBossAlive(bossId); if (!dieOrLocked) { return selected ? InteractorableState.NormalSelected : InteractorableState.NormalUnSelected; } else { return selected ? InteractorableState.DieOrLockedSelected : InteractorableState.DieOrLockedUnSelected; } } set { base.interactorableState = value; } } protected override bool isRebornRightNow { get { var condition = 0; return model.IsBossUnLocked(bossId, out condition) && base.isRebornRightNow; } } protected override bool isUnLocked { get { var condition = 0; return model.IsBossUnLocked(bossId, out condition); } } public override void Display(object _data) { base.Display(_data); bossNpcId = (int)_data; DisplayBase(); UpdateBossRebornCoolDown(isUnLocked); UpdateBossPortrait(interactorableState); UpdateBossNameLevelFont(interactorableState); DisplayParticipant(); DisplayCondition(); DisplaySubscrib(); model.participantRefresh -= DisplayParticipant; model.participantRefresh += DisplayParticipant; model.selectBossRefresh -= SelectBossRefresh; model.selectBossRefresh += SelectBossRefresh; } public override void Dispose() { base.Dispose(); model.participantRefresh -= DisplayParticipant; model.selectBossRefresh -= SelectBossRefresh; } protected override void OnSubscribe(int _bossId) { base.OnSubscribe(_bossId); if (bossId != _bossId) { return; } DisplaySubscrib(); } protected override void OnBossInfoUpdate(int _bossId) { base.OnBossInfoUpdate(_bossId); var condition = 0; var unLocked = model.IsBossUnLocked(bossId, out condition); m_Participant.gameObject.SetActive(unLocked && findPreciousModel.IsBossAlive(bossId)); } public void DisplayBase() { var config = Config.Instance.Get<NPCConfig>(bossNpcId); var jadeDynastyBossConfig = Config.Instance.Get<JadeDynastyBossConfig>(bossNpcId); DrawBossBaseInfo(jadeDynastyBossConfig.PortraitID, config.charName, config.NPCLV, config.ClientRealm); } private void DisplaySubscrib() { m_ContainerAttention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId)); } private void DisplayParticipant() { m_Participant.gameObject.SetActive(isUnLocked && findPreciousModel.IsBossAlive(bossId)); m_Participant.text = Language.Get("FindPrecious_8", model.GetParticipantCount(bossId)); } private void DisplayCondition() { m_ContainerUnChanllgeable.gameObject.SetActive(!isUnLocked); m_ContainerChallengeable.gameObject.SetActive(isUnLocked); var condition = 0; m_ChallengeCondition.text = string.Empty; if (!model.IsBossUnLocked(bossId, out condition)) { switch (condition) { case 1: break; case 2: break; case 3: break; } } } private void SelectBossRefresh(int bossId) { UpdateBossNameLevelFont(interactorableState); } } } System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs.meta
System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs
New file @@ -0,0 +1,21 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class JadeDynastyBossKillRecord : MonoBehaviour { [SerializeField] Text m_KillTime; [SerializeField] Text m_PlayerName; public void Display(DateTime time, string playerName) { m_KillTime.text = time.ToString("hh:mm:ss"); m_PlayerName.text = UIHelper.ServerStringTrim(playerName); } } } System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: ee1187f4529637c48840fb84410ef1f7 timeCreated: 1547809917 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/JadeDynastyBoss/JadeDynastyBossModel.cs
New file @@ -0,0 +1,354 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using TableConfig; using System; namespace Snxxz.UI { public class JadeDynastyBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IAfterPlayerDataInitialize { List<JadeDynastyBossData> jadeDynastyBosses = new List<JadeDynastyBossData>(); Dictionary<int, int> jadeDynastyBossParticipantDict = new Dictionary<int, int>(); Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>(); public const int JADEDYNASTY_MAP = 52010; public const int FUNCTIONID = 0; public const int JADEDYNASTY_REDPOINTID = 77003; public event Action<int> selectBossRefresh; public event Action participantRefresh; public int jadeDynastyScore { get; private set; } public int challengeLimitCount { get; private set; } public int challengeTimes { get; private set; } public int assistLimitCount { get; private set; } public int assistTimes { get; private set; } int m_SelectBossId = 0; public int selectBossId { get { return m_SelectBossId; } set { if (m_SelectBossId != value) { m_SelectBossId = value; if (selectBossRefresh != null) { selectBossRefresh(value); } } } } public int assginSelectBossId { get; set; } public readonly Redpoint redpoint = new Redpoint(FindPreciousModel.LOOTPRECIOUs_REDPOINTID, JADEDYNASTY_REDPOINTID); MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } public override void Init() { ParseConfig(); dungeonModel.dungeonRecordChangeEvent += OnDungeonRecordUpdate; dungeonModel.updateDungeonBuyCnt += OnDungeonBuyCount; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; } public void OnBeforePlayerDataInitialize() { jadeDynastyScore = 100000000; jadeDynastyBossParticipantDict.Clear(); challengeTimes = 0; assistTimes = 0; mapModel.mapLinesUpdateEvent -= MapLinesUpdateEvent; } public void OnAfterPlayerDataInitialize() { mapModel.mapLinesUpdateEvent += MapLinesUpdateEvent; } public void OnPlayerLoginOk() { UpdateRedpoint(); } public override void UnInit() { dungeonModel.dungeonRecordChangeEvent -= OnDungeonRecordUpdate; dungeonModel.updateDungeonBuyCnt -= OnDungeonBuyCount; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; } void ParseConfig() { { var configs = Config.Instance.GetAllValues<JadeDynastyBossConfig>(); foreach (var config in configs) { var dungeonId = dungeonModel.GetDungeonId(JADEDYNASTY_MAP, config.LineID); var dungeonConfig = Config.Instance.Get<DungeonConfig>(dungeonId); jadeDynastyBosses.Add(new JadeDynastyBossData() { bossNpcId = config.NPCID, lineId = config.LineID, challengeCondition = new JadeDynastyBossCondition() { level = dungeonConfig.LVLimitMin, realmLevel = config.RealmLV, score = config.ZhuXianScore, }, }); var itemArray = LitJson.JsonMapper.ToObject<int[][]>(config.dropItems); List<Item> list = new List<Item>(); for (int k = 0; k < itemArray.Length; k++) { Item item = new Item() { id = itemArray[k][0], count = itemArray[k][1], bind = itemArray[k][2] == 1, }; list.Add(item); } dropItemDict.Add(config.NPCID, list); } jadeDynastyBosses.Sort(SortCompare); } } public bool IsJadeDynastyBoss(int bossNpcId) { var index = jadeDynastyBosses.FindIndex((x) => { return x.bossNpcId == bossNpcId; }); return index >= 0; } public bool IsBossUnLocked(int bossNpcId, out int condition) { condition = 0; var index = jadeDynastyBosses.FindIndex((x) => { return x.bossNpcId == bossNpcId; }); if (index != -1) { var challengeCondition = jadeDynastyBosses[index].challengeCondition; if (PlayerDatas.Instance.baseData.LV < challengeCondition.level) { condition = 1; return false; } if (PlayerDatas.Instance.baseData.realmLevel < challengeCondition.realmLevel) { condition = 2; return false; } if (jadeDynastyScore < challengeCondition.score) { condition = 3; return false; } } return true; } public List<int> GetJadeDynastyBosses() { List<int> list = new List<int>(); foreach (var boss in jadeDynastyBosses) { list.Add(boss.bossNpcId); } return list; } public int GetParticipantCount(int bossId) { if (jadeDynastyBossParticipantDict.ContainsKey(bossId)) { return jadeDynastyBossParticipantDict[bossId]; } return 0; } public int GetLatestUnLockBoss() { if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID)) { var latestBossId = jadeDynastyBosses[0].bossNpcId; foreach (var boss in jadeDynastyBosses) { var condition = 0; if (IsBossUnLocked(boss.bossNpcId, out condition)) { latestBossId = boss.bossNpcId; } } return latestBossId; } else { return jadeDynastyBosses[0].bossNpcId; } } public bool TryGetDropItems(int bossId, out List<Item> dropItems) { return dropItemDict.TryGetValue(bossId, out dropItems); } public bool TryEnterDungeon(int bossId,out int error) { var condition = 0; error = 0; if (!IsBossUnLocked(bossId, out condition)) { switch (condition) { case 1: error = 1; break; case 2: error = 2; break; case 3: error = 3; break; } return false; } var totalTimes = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP); var enterTimes = dungeonModel.GetEnterTimes(JADEDYNASTY_MAP); if (enterTimes >= totalTimes) { error = 4; return false; } if (!findPreciousModel.IsBossAlive(bossId)) { error = 5; return false; } if (CrossServerUtility.IsCrossServer()) { error = 6; return false; } return true; } public void DisplayErrorTip(int error) { } private void MapLinesUpdateEvent(int mapId) { if (mapId != JADEDYNASTY_MAP) { return; } var lines = mapModel.GetMapLines(JADEDYNASTY_MAP); foreach (var boss in jadeDynastyBosses) { var index = lines.FindIndex((x) => { return x.lineIndex == boss.lineId; }); if (index != -1) { jadeDynastyBossParticipantDict[boss.bossNpcId] = lines[index].playerCount; } else { jadeDynastyBossParticipantDict[boss.bossNpcId] = 0; } } if (participantRefresh != null) { participantRefresh(); } } public static int SortCompare(JadeDynastyBossData lhs, JadeDynastyBossData rhs) { if (lhs.challengeCondition.level != rhs.challengeCondition.level) { return lhs.challengeCondition.level.CompareTo(rhs.challengeCondition.level); } if (lhs.challengeCondition.realmLevel != rhs.challengeCondition.realmLevel) { return lhs.challengeCondition.realmLevel.CompareTo(rhs.challengeCondition.realmLevel); } if (lhs.challengeCondition.score != rhs.challengeCondition.score) { return lhs.challengeCondition.score.CompareTo(rhs.challengeCondition.score); } return 0; } private void OnDungeonRecordUpdate(int _dataMapId) { if (JADEDYNASTY_MAP == _dataMapId) { UpdateRedpoint(); } } private void OnDungeonBuyCount() { UpdateRedpoint(); } private void OnFuncStateChangeEvent(int id) { if (id == FUNCTIONID) { UpdateRedpoint(); } } void UpdateRedpoint() { if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID)) { var count = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP) - dungeonModel.GetEnterTimes(JADEDYNASTY_MAP); redpoint.count = count; } else { redpoint.count = 0; } redpoint.state = redpoint.count > 0 ? RedPointState.Quantity : RedPointState.None; } } public struct JadeDynastyBossData { public int bossNpcId; public int lineId; public JadeDynastyBossCondition challengeCondition; } public struct JadeDynastyBossCondition { public int level; public int realmLevel; public int score; } } System/JadeDynastyBoss/JadeDynastyBossModel.cs.meta
System/JadeDynastyBoss/JadeDynastyBossWin.cs
New file @@ -0,0 +1,331 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, January 17, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class JadeDynastyBossWin : Window { [SerializeField] CyclicScroll m_Bosses; [SerializeField] ItemCell[] m_Items; [SerializeField] Text m_ChallengeTimes; [SerializeField] Text m_AssistTimes; [SerializeField] Text m_JadeDynastyScore; [SerializeField] Button m_BuyTimes; [SerializeField] Transform m_SurpassLevel; [SerializeField] ToggleButton m_Subscribe; [SerializeField] Button m_Goto; [SerializeField] Transform m_ContainerKillRecord; [SerializeField] Transform m_ContainerNoneRecord; [SerializeField] Transform m_ContainerExistRecord; [SerializeField] JadeDynastyBossKillRecord[] m_KillRecords; [SerializeField] Transform m_ContainerBelongTo; [SerializeField] Text m_BelongToPlayerName; [SerializeField] Text m_BelongToNonePlayer; JadeDynastyBossModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } } float refreshBossStateTime = 0f; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_BuyTimes.AddListener(BuyTimes); m_Subscribe.AddListener(SwitchSubscribeBoss); m_Goto.AddListener(GotoKillBoss); } protected override void OnPreOpen() { SetDefaultSelectBoss(); refreshBossStateTime = -1f; FindPreciousModel.BossInfo bossInfo; if (findPreciousModel.TryGetBossInfo(model.selectBossId, out bossInfo) && !bossInfo.IsBossAlive()) { if (TimeUtility.ServerNow <= bossInfo.refreshTime) { var seconds = (int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds + 1; refreshBossStateTime = Time.realtimeSinceStartup + seconds; } } mapModel.RequestQueryMapLineState(JadeDynastyBossModel.JADEDYNASTY_MAP); model.assginSelectBossId = 0; } protected override void OnActived() { base.OnActived(); Display(); } protected override void OnAfterOpen() { model.selectBossRefresh += SelectBossRefresh; dungeonModel.updateDungeonBuyCnt += ChallengeTimesRefresh; dungeonModel.dungeonRecordChangeEvent += ChallengeTimesRefresh; findPreciousModel.bossSubscribeChangeEvent += DisplaySubscribe; findPreciousModel.bossInfoUpdateEvent += BossInfoUpdateEvent; } protected override void OnPreClose() { model.selectBossRefresh -= SelectBossRefresh; dungeonModel.updateDungeonBuyCnt -= ChallengeTimesRefresh; dungeonModel.dungeonRecordChangeEvent -= ChallengeTimesRefresh; findPreciousModel.bossSubscribeChangeEvent -= DisplaySubscribe; findPreciousModel.bossInfoUpdateEvent -= BossInfoUpdateEvent; refreshBossStateTime = -1f; } protected override void OnAfterClose() { } protected override void LateUpdate() { base.LateUpdate(); if (refreshBossStateTime > 0) { if (Time.realtimeSinceStartup > refreshBossStateTime) { DisplayKillRecord(); DisplayBelongTo(); refreshBossStateTime = -1f; } } } #endregion public void SetDefaultSelectBoss() { if (model.assginSelectBossId != 0 && model.IsJadeDynastyBoss(model.assginSelectBossId)) { model.selectBossId = model.assginSelectBossId; } else { model.selectBossId = model.GetLatestUnLockBoss(); } } public void Display() { DisplayBosses(); DisplayChallengeTimes(); DisplayDropItems(); DisplaySubscribe(model.selectBossId); DisplayKillRecord(); DisplayBelongTo(); DisplayAssistTimes(); DisplayJadeDynastyScore(); } public void DisplayBosses() { var bosses = model.GetJadeDynastyBosses(); m_Bosses.Init(bosses); m_Bosses.MoveToCenter(bosses.IndexOf(model.selectBossId)); } public void DisplayChallengeTimes() { var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); m_ChallengeTimes.text = StringUtility.Contact(totalTimes - enterTimes, "/", model.challengeLimitCount); } public void DisplayAssistTimes() { m_AssistTimes.text = StringUtility.Contact(model.assistLimitCount - model.assistTimes, "/", model.assistLimitCount); } void DisplayDropItems() { List<Item> dropItems = null; model.TryGetDropItems(model.selectBossId, out dropItems); for (int i = 0; i < m_Items.Length; i++) { m_Items[i].cellBtn.RemoveAllListeners(); if (dropItems != null && i < dropItems.Count) { m_Items[i].gameObject.SetActive(true); var item = dropItems[i]; ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count, item.bind ? 1 : 0); m_Items[i].Init(itemCellModel); m_Items[i].cellBtn.AddListener(() => { ItemAttrData itemAttrData = new ItemAttrData(item.id, true, (ulong)item.count, -1, item.bind ? 1 : 0); ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(itemAttrData); }); } else { m_Items[i].gameObject.SetActive(false); } } var npcDropConfig = Config.Instance.Get<NPCDropItemConfig>(model.selectBossId); m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV); } private void DisplaySubscribe(int _bossId) { m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectBossId); } private void DisplayKillRecord() { var alive = findPreciousModel.IsBossAlive(model.selectBossId); m_ContainerKillRecord.gameObject.SetActive(!alive); if (!alive) { var killRecords = findPreciousModel.GetBossKillRecords(model.selectBossId); m_ContainerExistRecord.gameObject.SetActive(killRecords != null && killRecords.Count > 0); m_ContainerNoneRecord.gameObject.SetActive(killRecords == null || killRecords.Count == 0); if (killRecords != null && killRecords.Count > 0) { for (int i = 0; i < m_KillRecords.Length; i++) { if (killRecords != null && i < killRecords.Count) { m_KillRecords[i].gameObject.SetActive(true); m_KillRecords[i].Display(killRecords[i].killTime, killRecords[i].playerName); } else { m_KillRecords[i].gameObject.SetActive(false); } } } } } private void DisplayBelongTo() { var alive = findPreciousModel.IsBossAlive(model.selectBossId); m_ContainerBelongTo.gameObject.SetActive(alive); if (alive) { var belongToPlayer = false; m_BelongToNonePlayer.gameObject.SetActive(!belongToPlayer); m_BelongToPlayerName.gameObject.SetActive(belongToPlayer); } } private void DisplayJadeDynastyScore() { m_JadeDynastyScore.text = Language.Get("", model.jadeDynastyScore); } private void SelectBossRefresh(int bossId) { DisplayDropItems(); DisplaySubscribe(model.selectBossId); DisplayKillRecord(); DisplayBelongTo(); FindPreciousModel.BossInfo bossInfo; if (findPreciousModel.TryGetBossInfo(model.selectBossId, out bossInfo) && !bossInfo.IsBossAlive()) { if (TimeUtility.ServerNow <= bossInfo.refreshTime) { var seconds = (int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds + 1; refreshBossStateTime = Time.realtimeSinceStartup + seconds; } } } private void ChallengeTimesRefresh() { DisplayChallengeTimes(); } private void ChallengeTimesRefresh(int mapId) { if (JadeDynastyBossModel.JADEDYNASTY_MAP != mapId) { return; } DisplayChallengeTimes(); } private void BuyTimes() { var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); if ((totalTimes - enterTimes) >= model.challengeLimitCount) { MessageWin.Inst.ShowFixedTip(Language.Get("DemonJar18")); } else { dungeonModel.currentDungeon = new Dungeon(JadeDynastyBossModel.JADEDYNASTY_MAP, 0); WindowCenter.Instance.Open<DungeonBuyTimesWin>(); } } private void SwitchSubscribeBoss() { if (findPreciousModel.IsBossSubscribed(model.selectBossId)) { findPreciousModel.RequestDeSubscribeBoss(model.selectBossId); } else { findPreciousModel.RequestSubscribeBoss(model.selectBossId, false); } } private void BossInfoUpdateEvent(int bossId) { if (bossId == model.selectBossId) { DisplayKillRecord(); DisplayBelongTo(); } } private void GotoKillBoss() { var error = 0; if (model.TryEnterDungeon(model.selectBossId, out error)) { var config = Config.Instance.Get<JadeDynastyBossConfig>(model.selectBossId); dungeonModel.SingleChallenge(JadeDynastyBossModel.JADEDYNASTY_MAP, config.LineID); } else { model.DisplayErrorTip(error); } } } } System/JadeDynastyBoss/JadeDynastyBossWin.cs.meta
System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs
File was renamed from System/StrangleGodBoss/StrangleGodBossWin.cs @@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, January 17, 2019 // [ Date ]: Friday, January 18, 2019 //-------------------------------------------------------- using System; @@ -11,35 +11,38 @@ namespace Snxxz.UI { public class StrangleGodBossWin : Window public class JadeDynastyDamageRankWin : Window { #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } [SerializeField] DungeonRankBehaviour m_RankBehaviour; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>(); var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); m_RankBehaviour.Init(dataMapId); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion } } System/JadeDynastyBoss/JadeDynastyDamageRankWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 118ee6dbac3babc488ba966899aae754 timeCreated: 1547814117 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/MainInterfacePanel/InGamePushContainer.cs
@@ -35,7 +35,7 @@ DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } } DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } } CrossServerBossModel crossServerBossModel { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } } StrangleGodBossModel strangleGodBossModel { get { return ModelCenter.Instance.GetModel<StrangleGodBossModel>(); } } JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } } VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } @@ -270,10 +270,12 @@ show = !GeneralDefine.elderGodNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.DemonJar: var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID); var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID); killable = totalTimes > enterTimes; show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId); { var totalTimes = dungeonModel.GetTotalTimes(DemonJarModel.DEMONJAR_MAPID); var enterTimes = dungeonModel.GetEnterTimes(DemonJarModel.DEMONJAR_MAPID); killable = totalTimes > enterTimes; show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId); } break; case FindPreciousType.DogzDungeon: killable = dogzDungeonModel.wearyValue < GeneralDefine.bossWearyValues[2]; @@ -283,8 +285,13 @@ killable = crossServerBossModel.wearyValue < GeneralDefine.bossWearyValues[2]; show = !GeneralDefine.dogzNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.StrangleGodBoss: case FindPreciousType.JadeDynastyBoss: { var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyBossModel.JADEDYNASTY_MAP); killable = totalTimes > enterTimes; show = !GeneralDefine.demonJarNoRebornRemindMaps.Contains(mapId); } break; } System/StrangleGodBoss/StrangleGodBossBehaviour.cs
File was deleted System/StrangleGodBoss/StrangleGodBossModel.cs
File was deleted System/WindowBase/ModelCenter.cs
@@ -221,7 +221,7 @@ RegisterModel<CrossServerBossModel>(); RegisterModel<OpenServiceAchievementModel>(); RegisterModel<FashionDressModel>(); RegisterModel<StrangleGodBossModel>(); RegisterModel<JadeDynastyBossModel>(); inited = true; } Utility/EnumHelper.cs
@@ -1179,7 +1179,7 @@ DemonJar = 4, DogzDungeon = 5, CrossServerBoss = 6, StrangleGodBoss = 7, JadeDynastyBoss = 7, None = 99, }