Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,7 @@ public static void Init() { // 登记相应的数据体及对应的数据转逻辑类 Register(typeof(HB212_tagMCZhuXianBossCnt), typeof(DTCB212_tagMCZhuXianBossCnt)); Register(typeof(H0208_tagTalkCountry), typeof(DTC0208_tagTalkCountry)); Register(typeof(HB102_tagMCClothesCoatSkinState), typeof(DTCB102_tagMCClothesCoatSkinState)); Register(typeof(HA112_tagMCDBPlayer), typeof(DTCA112_tagMCDBPlayer)); Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs
@@ -1,25 +1,26 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 08, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using Snxxz.UI; public class DTCA007_tagGCFBLinePlayerCnt : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var package = vNetPack as HA007_tagGCFBLinePlayerCnt; ModelCenter.Instance.GetModel<MapModel>().UpdateDungeonMapLines(package); } } //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 08, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using Snxxz.UI; public class DTCA007_tagGCFBLinePlayerCnt : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var package = vNetPack as HA007_tagGCFBLinePlayerCnt; ModelCenter.Instance.GetModel<MapModel>().UpdateDungeonMapLines(package); ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package); } } Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs
New file @@ -0,0 +1,25 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 21, 2019 //-------------------------------------------------------- using Snxxz.UI; using System; using System.Collections; using System.Collections.Generic; public class DTCB212_tagMCZhuXianBossCnt : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); var package = vNetPack as HB212_tagMCZhuXianBossCnt; ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package); } } Core/NetworkPackage/DTCFile/ServerPack/HB2_ActionMap/DTCB212_tagMCZhuXianBossCnt.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 387e6e44272f55646a66a4613419d3a6 timeCreated: 1548040998 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA0_Sys/HA007_tagGCFBLinePlayerCnt.cs
@@ -1,36 +1,35 @@ using UnityEngine; using System.Collections; // A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt public class HA007_tagGCFBLinePlayerCnt : GameNetPackBasic { public uint MapID; // 地图ID public byte Count; public tagGCFBLineInfo[] FBLineInfoList = null; public HA007_tagGCFBLinePlayerCnt() { _cmd = (ushort)0xA007; } public override void ReadFromBytes(byte[] vBytes) { TransBytes(out MapID, vBytes, NetDataType.DWORD); TransBytes(out Count, vBytes, NetDataType.BYTE); FBLineInfoList = new tagGCFBLineInfo[Count]; for (int i = 0; i < Count; i++) { FBLineInfoList[i] = new tagGCFBLineInfo(); TransBytes(out FBLineInfoList[i].FBLineID, vBytes, NetDataType.BYTE); TransBytes(out FBLineInfoList[i].PlayerCnt, vBytes, NetDataType.WORD); } } public struct tagGCFBLineInfo { public byte FBLineID; // 功能线路ID public ushort PlayerCnt; // 线路当前玩家数 } } using UnityEngine; using System.Collections; // A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt public class HA007_tagGCFBLinePlayerCnt : GameNetPackBasic { public uint MapID; // 地图ID public byte Count; public tagGCFBLineInfo[] FBLineInfoList; public HA007_tagGCFBLinePlayerCnt () { _cmd = (ushort)0xA007; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out MapID, vBytes, NetDataType.DWORD); TransBytes (out Count, vBytes, NetDataType.BYTE); FBLineInfoList = new tagGCFBLineInfo[Count]; for (int i = 0; i < Count; i ++) { FBLineInfoList[i] = new tagGCFBLineInfo(); TransBytes (out FBLineInfoList[i].FBLineID, vBytes, NetDataType.BYTE); TransBytes (out FBLineInfoList[i].PlayerCnt, vBytes, NetDataType.WORD); TransBytes (out FBLineInfoList[i].ExtraStrLen, vBytes, NetDataType.WORD); TransBytes (out FBLineInfoList[i].ExtraStr, vBytes, NetDataType.Chars, FBLineInfoList[i].ExtraStrLen); } } public struct tagGCFBLineInfo { public byte FBLineID; // 功能线路ID public ushort PlayerCnt; // 线路当前玩家数 public ushort ExtraStrLen; // 长度 public string ExtraStr; // 额外信息 } } Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs
New file @@ -0,0 +1,17 @@ using UnityEngine; using System.Collections; // B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt public class HB212_tagMCZhuXianBossCnt : GameNetPackBasic { public byte Cnt; // 剩余可协助次数 public HB212_tagMCZhuXianBossCnt () { _cmd = (ushort)0xB212; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out Cnt, vBytes, NetDataType.BYTE); } } Core/NetworkPackage/ServerPack/HB2_ActionMap/HB212_tagMCZhuXianBossCnt.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: f511f09c68c0ae345a0208282471b83e timeCreated: 1548040944 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/JadeDynastyBoss/JadeDynastyBossBehaviour.cs
@@ -81,18 +81,21 @@ DisplayCondition(); DisplaySubscrib(); model.participantRefresh -= DisplayParticipant; model.participantRefresh += DisplayParticipant; model.bossLineRefresh -= DisplayParticipant; model.bossLineRefresh += DisplayParticipant; model.selectBossRefresh -= SelectBossRefresh; model.selectBossRefresh += SelectBossRefresh; model.bossLineRefresh -= BossLineRefresh; model.bossLineRefresh += BossLineRefresh; } public override void Dispose() { base.Dispose(); model.participantRefresh -= DisplayParticipant; model.bossLineRefresh -= DisplayParticipant; model.selectBossRefresh -= SelectBossRefresh; model.bossLineRefresh -= BossLineRefresh; } protected override void OnSubscribe(int _bossId) @@ -114,6 +117,11 @@ m_Participant.gameObject.SetActive(unLocked && findPreciousModel.IsBossAlive(bossId)); } private void BossLineRefresh() { DisplayParticipant(); } public void DisplayBase() { var config = Config.Instance.Get<NPCConfig>(bossNpcId); System/JadeDynastyBoss/JadeDynastyBossModel.cs
@@ -9,7 +9,7 @@ public class JadeDynastyBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IAfterPlayerDataInitialize { List<JadeDynastyBossData> jadeDynastyBosses = new List<JadeDynastyBossData>(); Dictionary<int, int> jadeDynastyBossParticipantDict = new Dictionary<int, int>(); Dictionary<int, JadeDynastyBossLine> jadeDynastyBossLineDict = new Dictionary<int, JadeDynastyBossLine>(); Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>(); public const int JADEDYNASTY_MAP = 31380; @@ -17,7 +17,8 @@ public const int JADEDYNASTY_REDPOINTID = 77003; public event Action<int> selectBossRefresh; public event Action participantRefresh; public event Action bossLineRefresh; public event Action assistTimeRefresh; public int jadeDynastyScore { get; private set; } public int challengeLimitCount { get; private set; } @@ -59,15 +60,13 @@ public void OnBeforePlayerDataInitialize() { jadeDynastyScore = 100000000; jadeDynastyBossParticipantDict.Clear(); jadeDynastyBossLineDict.Clear(); challengeTimes = 0; assistTimes = 0; mapModel.mapLinesUpdateEvent -= MapLinesUpdateEvent; } public void OnAfterPlayerDataInitialize() { mapModel.mapLinesUpdateEvent += MapLinesUpdateEvent; } public void OnPlayerLoginOk() @@ -176,9 +175,18 @@ public int GetParticipantCount(int bossId) { if (jadeDynastyBossParticipantDict.ContainsKey(bossId)) var index = jadeDynastyBosses.FindIndex((x) => { return x.bossNpcId == bossId; }); var lineId = -1; if (index != -1) { return jadeDynastyBossParticipantDict[bossId]; lineId = jadeDynastyBosses[index].lineId; } if (jadeDynastyBossLineDict.ContainsKey(lineId)) { return jadeDynastyBossLineDict[lineId].playerCount; } return 0; } @@ -221,6 +229,20 @@ condition = jadeDynastyBosses[index].challengeCondition; } return index != -1; } public bool TryGetBossLine(int bossId, out JadeDynastyBossLine mapLineState) { var index = jadeDynastyBosses.FindIndex((x) => { return x.bossNpcId == bossId; }); var lineId = -1; if (index != -1) { lineId = jadeDynastyBosses[index].lineId; } return jadeDynastyBossLineDict.TryGetValue(lineId, out mapLineState); } public bool TryEnterDungeon(int bossId,out int error) @@ -291,33 +313,43 @@ } } private void MapLinesUpdateEvent(int mapId) public void RequestMapLineState() { if (mapId != JADEDYNASTY_MAP) var pak = new CA003_tagPyGetLineState(); pak.MapID = (uint)JADEDYNASTY_MAP; GameNetSystem.Instance.SendInfo(pak); } public void OnReceivePackage(HA007_tagGCFBLinePlayerCnt package) { if (package.MapID != JADEDYNASTY_MAP) { return; } var lines = mapModel.GetMapLines(JADEDYNASTY_MAP); foreach (var boss in jadeDynastyBosses) jadeDynastyBossLineDict.Clear(); for (int i = 0; i < package.Count; i++) { var index = lines.FindIndex((x) => var mapState = package.FBLineInfoList[i]; jadeDynastyBossLineDict[mapState.FBLineID] = new JadeDynastyBossLine() { return x.lineIndex == boss.lineId; }); if (index != -1) { jadeDynastyBossParticipantDict[boss.bossNpcId] = lines[index].playerCount; } else { jadeDynastyBossParticipantDict[boss.bossNpcId] = 0; } playerCount = mapState.PlayerCnt, belongToPlayerName = mapState.ExtraStr, }; } if (participantRefresh != null) if (bossLineRefresh != null) { participantRefresh(); bossLineRefresh(); } } public void OnReceivePackage(HB212_tagMCZhuXianBossCnt package) { assistTimes = package.Cnt; if (assistTimeRefresh != null) { assistTimeRefresh(); } } @@ -388,5 +420,11 @@ public int realmLevel; public int score; } public struct JadeDynastyBossLine { public int playerCount; public string belongToPlayerName; } } System/JadeDynastyBoss/JadeDynastyBossWin.cs
@@ -36,9 +36,9 @@ 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; DateTime lastRequestMapStateTime = DateTime.Now; #region Built-in protected override void BindController() { @@ -67,7 +67,8 @@ } } mapModel.RequestQueryMapLineState(JadeDynastyBossModel.JADEDYNASTY_MAP); lastRequestMapStateTime = DateTime.Now; model.RequestMapLineState(); model.assginSelectBossId = 0; } @@ -85,6 +86,8 @@ dungeonModel.dungeonRecordChangeEvent += ChallengeTimesRefresh; findPreciousModel.bossSubscribeChangeEvent += DisplaySubscribe; findPreciousModel.bossInfoUpdateEvent += BossInfoUpdateEvent; model.bossLineRefresh += BossLineRefresh; model.assistTimeRefresh += AssistTimeRefresh; } protected override void OnPreClose() @@ -94,6 +97,8 @@ dungeonModel.dungeonRecordChangeEvent -= ChallengeTimesRefresh; findPreciousModel.bossSubscribeChangeEvent -= DisplaySubscribe; findPreciousModel.bossInfoUpdateEvent -= BossInfoUpdateEvent; model.bossLineRefresh -= BossLineRefresh; model.assistTimeRefresh -= AssistTimeRefresh; refreshBossStateTime = -1f; } @@ -113,6 +118,12 @@ DisplayBelongTo(); refreshBossStateTime = -1f; } } if ((DateTime.Now - lastRequestMapStateTime).TotalSeconds >= 5f) { lastRequestMapStateTime = DateTime.Now; model.RequestMapLineState(); } } #endregion @@ -188,8 +199,13 @@ } var npcDropConfig = Config.Instance.Get<NPCDropItemConfig>(model.selectBossId); m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV); var dropMaxLevel = 0; if (npcDropConfig != null) { dropMaxLevel = npcDropConfig.MaxLV; } m_SurpassLevel.gameObject.SetActive(dropMaxLevel != 0 && PlayerDatas.Instance.baseData.LV > dropMaxLevel); } private void DisplaySubscribe(int _bossId) @@ -231,8 +247,20 @@ if (alive) { var belongToPlayer = false; JadeDynastyBossLine jadeDynastyBossLine; if (model.TryGetBossLine(model.selectBossId, out jadeDynastyBossLine)) { if (!string.IsNullOrEmpty(jadeDynastyBossLine.belongToPlayerName)) { belongToPlayer = true; } } m_BelongToNonePlayer.gameObject.SetActive(!belongToPlayer); m_BelongToPlayerName.gameObject.SetActive(belongToPlayer); if (belongToPlayer) { m_BelongToPlayerName.text = jadeDynastyBossLine.belongToPlayerName; } } } @@ -259,6 +287,16 @@ } } private void BossLineRefresh() { DisplayBelongTo(); } private void AssistTimeRefresh() { DisplayAssistTimes(); } private void ChallengeTimesRefresh() { DisplayChallengeTimes();