少年修仙传客户端代码仓库
hch
2019-12-21 599dfcddf9b7b9a265708fe247d9bef0791683e5
8347 协助系统
8个文件已修改
2个文件已添加
286 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event/DTCB003_tagGCAssistingInfo.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Player.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/AssistConfirmwin.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonAssistModel.cs 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/AssistBehaviour.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/AssistBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarDamageRankWin.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainInterfaceWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
@@ -124,7 +124,6 @@
                return;
            }
            _player.UpdateData(vNetData);
            switch ((PlayerDataType)vNetData.RefreshType)
            {
@@ -150,6 +149,7 @@
                    _player.ActorInfo.ExAttr1 = vNetData.Value;
                    break;
            }
            _player.UpdateData(vNetData.RefreshType, vNetData.Value);
            if ((PlayerDataType)vNetData.RefreshType == PlayerDataType.Family
             || (PlayerDataType)vNetData.RefreshType == PlayerDataType.TeamID
Core/NetworkPackage/DTCFile/ServerPack/HA7_Arena/DTCA709_tagObjInfoListRefresh.cs
@@ -14,23 +14,22 @@
        var objId = vNetDatas.ObjID;
        GActorPlayerBase _player = GAMgr.Instance.GetBySID(objId) as GActorPlayerBase;
        if (_player == null)
        {
            //#if UNITY_EDITOR
            //            Debug.LogErrorFormat("[{0}] DTCA709_tagObjInfoListRefresh => 对象: {1} 不存在",
            //                System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), objId);
            //#endif
            return;
        }
        if (objId == PlayerDatas.Instance.PlayerId)
        {
            PlayerDatas.Instance.RefreshPlayerData(vNetDatas);
        }
        else
        {
            GA_Player _player = GAMgr.Instance.GetBySID(objId) as GA_Player;
            if (_player == null)
            {
                //#if UNITY_EDITOR
                //            Debug.LogErrorFormat("[{0}] DTCA709_tagObjInfoListRefresh => 对象: {1} 不存在",
                //                System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), objId);
                //#endif
                return;
            }
            for (int i = 0; i < vNetDatas.Count; i++)
            {
                var vNetData = vNetDatas.RefreshType[i];
@@ -81,6 +80,8 @@
                        break;
                }
                _player.UpdateData(vNetData.RefreshType, vNetData.Value);
                if ((PlayerDataType)vNetData.RefreshType == PlayerDataType.Family
                 || (PlayerDataType)vNetData.RefreshType == PlayerDataType.TeamID
                 || (PlayerDataType)vNetData.RefreshType == PlayerDataType.Faction)
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event/DTCB003_tagGCAssistingInfo.cs
@@ -1,11 +1,12 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// B0 03 正在进行中的协助 #tagGCAssistingInfo
public class DTCB003_tagGCAssistingInfo : DtcBasic {
    DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HB003_tagGCAssistingInfo vNetData = vNetPack as HB003_tagGCAssistingInfo;
        HB003_tagGCAssistingInfo vNetData = vNetPack as HB003_tagGCAssistingInfo;         assistModel.OnAssisting(vNetData);
    }
}
Fight/GameActor/GA_Player.cs
@@ -445,13 +445,16 @@
        base.OnFixedUpdate();
    }
    public void UpdateData(H0418_tagObjInfoRefresh data)
    public void UpdateData(int proType, uint proValue)
    {
        switch ((PlayerDataType)data.RefreshType)
        switch ((PlayerDataType)proType)
        {
            case PlayerDataType.EquipShowSwitch:
                m_H0434.EquipShowSwitch = data.Value;
                m_H0434.EquipShowSwitch = proValue;
                ReqLingGenEffect((int)(m_H0434.EquipShowSwitch / 10 % 100), (int)(m_H0434.EquipShowSwitch / 1000 % 1000));
                break;
            case PlayerDataType.ExAttr1:
                RequestName();
                break;
        }
    }
@@ -537,7 +540,7 @@
        {
            realm = ActorInfo.realm,
            title = titleId,
            name = ActorInfo.PlayerName + (ActorInfo.ExAttr1 > 0 ? "(助)":""),
            name = (UIHelper.ServerStringTrim(ActorInfo.PlayerName) + (ActorInfo.ExAttr1 > 0 ? UIHelper.AppendColor(TextColType.Green, "(助)") : "")),
            alliance = ActorInfo.familyName,
            isHang = m_H0434.State == 1,
        }
System/Dungeon/AssistConfirmwin.cs
@@ -22,11 +22,12 @@
        [SerializeField] RichText m_Text;
        [SerializeField] Button m_button;
        [SerializeField] Image m_Image;
        [SerializeField] Image m_ItemBG;
        [SerializeField] Text Count;
        DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } }
        int FamilyActiveID = 28;
        int FamilyActiveID = 3903;
        #region Built-in
        protected override void BindController()
@@ -48,6 +49,8 @@
            Count.text = assistModel.assistActiveCnt.ToString();
            m_Text.text = UIHelper.ReplaceNewLine(Language.Get("AssistCheckInfo", assistModel.assistOtherPlayerName,
                assistModel.assistObjStr));
            m_ItemBG.SetItemBackGround(config.ItemColor);
        }
        protected override void OnAfterOpen()
@@ -67,6 +70,8 @@
        private void OnclickOKButton()
        {
            assistModel.SendStartAssistBoss(assistModel.assistGUID);
            var assistInfo = assistModel.assistInfoDict[assistModel.assistGUID];
            assistModel.GotoKillBoss((int)assistInfo.npcID);
            Close();
            WindowCenter.Instance.Close<DungeonAssistWin>();
        }
System/Dungeon/DungeonAssistModel.cs
@@ -21,11 +21,14 @@
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        #region 正在协助中数据
        public string assistOtherPlayerName = string.Empty;
        public string assistObjStr = string.Empty; //协助额外信息如boss名 或功能名等
        public string assistGUID = string.Empty;
        public string assistGUID = string.Empty; //只要记录guid即可 后续优化
        public int assistActiveCnt = 0;
        #endregion
        public override void Init()
        {
@@ -36,6 +39,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= UpdateFuncState;
            PlayerDatas.Instance.playerDataRefreshEvent -= playerDataRefreshEvent;
            assistInfoDict.Clear();
            assistResults.Clear();
            assistRefreshNum = 0;
@@ -57,6 +61,7 @@
        {
            FuncOpen.Instance.OnFuncStateChangeEvent += UpdateFuncState;
            PlayerDatas.Instance.playerDataRefreshEvent += playerDataRefreshEvent;
            UpdateRedpoint();
            //UpdateMainAssistRedpoint();
        }
@@ -666,6 +671,14 @@
                UpdateAssistInfo();
        }
        public event Action UpdateAssisting;
        public void OnAssisting(HB003_tagGCAssistingInfo pack)
        {
            assistGUID = pack.AssistGUID;
            if (UpdateAssisting != null)
                UpdateAssisting();
        }
        // B0 10 发起者请求协助Boss
        public void SendRequestAssistBoss(uint npcObjID)
        {
@@ -683,6 +696,28 @@
            var send = new CB012_tagCGStartAssistBoss();
            send.AssistGUID = guid;
            GameNetSystem.Instance.SendInfo(send);
        }
        // B0 13 取消协助Boss #tagCGCancelAssistBoss
        public void SendStopAssistBoss()
        {
            if (assistGUID == string.Empty) return;
            var send = new CB013_tagCGCancelAssistBoss();
            send.AssistGUID = assistGUID;
            GameNetSystem.Instance.SendInfo(send);
            assistGUID = string.Empty;
        }
        private void playerDataRefreshEvent(PlayerDataType type)
        {
            if (type == PlayerDataType.Family && PlayerDatas.Instance.baseData.FamilyId == 0)
            {
                assistInfoDict.Clear();
                UpdateMainAssistRedpoint();
                if (UpdateAssistInfo != null)
                    UpdateAssistInfo();
            }
        }
        #endregion
@@ -746,6 +781,99 @@
        }
        #endregion
        public void GotoKillBoss(int npcID)
        {
            var error = 0;
            if (TestGotoKillBoss(npcID, out error))
            {
                WindowJumpMgr.Instance.ClearJumpData();
                WindowCenter.Instance.Close<OpenServerActivityRankWin>();
                GAStaticDefine.NPCLocation _npcLocation;
                var _findLocation = GAStaticDefine.TryGetMapNPCLocation(npcID, out _npcLocation);
                if (_npcLocation.mapId == BossHomeModel.BOSSHOME_MAPID)
                {
                    ModelCenter.Instance.GetModel<BossHomeModel>().selectedBoss = npcID;
                    dungeonModel.SingleChallenge(BossHomeModel.BOSSHOME_MAPID, 0);
                }
                else
                    MapTransferUtility.Instance.MoveToNPC(npcID);
            }
            else
            {
                ProcessGotoKillBossError(npcID, error);
            }
        }
        private void ProcessGotoKillBossError(int npcID, int _error)
        {
            switch (_error)
            {
                case 1:
                    var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
                    var config = DungeonOpenTimeConfig.Get(dataMapId);
                    var tip = Language.Get(config.ExitDescription);
                    ConfirmCancel.ShowPopConfirm(
                        Language.Get("Mail101"),
                        tip,
                        (bool _ok) =>
                        {
                            if (_ok)
                            {
                                WindowCenter.Instance.Close<FindPreciousFrameWin>();
                                MapTransferUtility.Instance.MoveToNPC(npcID);
                            }
                        }
                        );
                    break;
                case 2:
                    SysNotifyMgr.Instance.ShowTip("InDungeon_CantGo");
                    break;
                case 3:
                    SysNotifyMgr.Instance.ShowTip("CrossMap10");
                    break;
                case 4:
                    SysNotifyMgr.Instance.ShowTip("BossRealmHint2", NPCConfig.Get(npcID).Realm);
                    break;
            }
        }
        private bool TestGotoKillBoss(int npcID, out int _error)
        {
            if (!findPreciousModel.IsBossUnlock(npcID))
            {
                _error = 4;
                return false;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var dataMapId = MapUtility.GetDataMapId(mapId);
            if (dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID)
            {
                _error = 1;
                return false;
            }
            var mapConfig = MapConfig.Get(mapId);
            if (mapConfig.MapFBType != (int)MapType.OpenCountry && mapId != 31020)
            {
                _error = 2;
                return false;
            }
            if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)
            {
                _error = 3;
                return false;
            }
            _error = 0;
            return true;
        }
        public class AssistResult
        {
            public int assistType; // 1 真实的自己 2 自己的镜像
System/FairyAu/AssistBehaviour.cs
New file
@@ -0,0 +1,81 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class AssistBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_Container;
        [SerializeField] Image playerIcon;
        [SerializeField] Text playerName;
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_Close;
        DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } }
        private void Awake()
        {
            m_Goto.SetListener(Goto);
            m_Close.SetListener(()=> {
                assistModel.SendStopAssistBoss();
                m_Container.gameObject.SetActive(false);
            });
        }
        public void Init()
        {
            PlayerDatas.Instance.playerDataRefreshEvent += OnCloseAssist;
            assistModel.UpdateAssisting += Display;
            Display();
        }
        public void UnInit()
        {
            PlayerDatas.Instance.playerDataRefreshEvent -= OnCloseAssist;
            assistModel.UpdateAssisting -= Display;
        }
        private void OnCloseAssist(PlayerDataType type)
        {
            //只处理取消
            if (type != PlayerDataType.ExAttr1)
                return;
            if (PlayerDatas.Instance.baseData.ExAttr1 == 0)
            {
                m_Container.gameObject.SetActive(false);
                assistModel.assistGUID = string.Empty;
            }
        }
        private void Display()
        {
            if (!assistModel.assistInfoDict.ContainsKey(assistModel.assistGUID))
            {
                m_Container.gameObject.SetActive(false);
                return;
            }
            m_Container.gameObject.SetActive(true);
            var assistInfo = assistModel.assistInfoDict[assistModel.assistGUID];
            playerIcon.SetSprite(GeneralDefine.GetJobHeadPortrait(assistInfo.job, 0));
            playerName.text = assistInfo.playerName;
        }
        private void Goto()
        {
            if (!assistModel.assistInfoDict.ContainsKey(assistModel.assistGUID))
            {
                m_Container.gameObject.SetActive(false);
                return;
            }
            var assistInfo = assistModel.assistInfoDict[assistModel.assistGUID];
            assistModel.GotoKillBoss((int)assistInfo.npcID);
        }
    }
}
System/FairyAu/AssistBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 27f4f3a972814964a917ecb3d31d384e
timeCreated: 1576848523
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FindPrecious/DemonJarDamageRankWin.cs
@@ -41,7 +41,16 @@
        {
            HurtRank.SetListener(ShowBossRank);
            AssistHurtRank.SetListener(ShowAssistRank);
            SendAssist.SetListener(SendAssistPack);
            if (PlayerDatas.Instance.baseData.ExAttr1 > 0)
            {
                SendAssist.gameObject.SetActive(false);
            }
            else
            {
                SendAssist.gameObject.SetActive(true);
                SendAssist.SetListener(SendAssistPack);
            }
            ShowAssistTips.SetListener(ShowAssistInfo);
        }
@@ -152,7 +161,6 @@
                isShowAssistInfo = true;
                GActor actore = GAMgr.Instance.GetBySID(model.BossHurtRank.npcObjID);
                int funcID = findPreciousModel.GetBossFuncIDByBossID((actore as GActorNpcFight).NpcConfig.NPCID);
                //AssistAward
                int activeCnt = 0;
                if (GeneralDefine.FBAssistAward.ContainsKey(PlayerDatas.Instance.baseData.MapID))
                {
System/MainInterfacePanel/MainInterfaceWin.cs
@@ -28,6 +28,7 @@
        [SerializeField] MapSwitchingBehaviour m_MapSwitchingBehaviour;
        [SerializeField] DungeonBossBriefInfoContainer m_BossBriefInfos;
        [SerializeField] RightBottomFadeInOut m_RightBottomFadeInOut;
        [SerializeField] AssistBehaviour m_AssistBehaviour;
        [SerializeField] IntensifySmoothSlider _ExpSlider;//经验条
        [SerializeField] Button _DownButton;//查看经验数值
@@ -102,6 +103,7 @@
            m_FairyLeagueRemind.Init();
            m_MainButtonMisc.Init();
            m_RightBottomFadeInOut.Init();
            m_AssistBehaviour.Init();
            try
            {
@@ -191,6 +193,7 @@
            m_TopRightTip.UnInit();
            m_FunctionForecastTip.Unit();
            m_TeamInvitationEntrance.UnInit();
            m_AssistBehaviour.UnInit();
            m_FairyLeagueRemind.UnInit();
            m_MainButtonMisc.UnInit();
            m_RightBottomFadeInOut.UnInit();