少年修仙传客户端代码仓库
client_linchunjie
2019-04-23 68254e5c82e7aed34a686dc6474ba24daf94fbd5
6584 【2.0】【前端】定海神针认主
7个文件已修改
6个文件已添加
461 ■■■■■ 已修改文件
Fight/Stage/StageLoadProcessor.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonFightWin.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonGetTreasureVictoryWin.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/ClientTreasureDungeon.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/ClientTreasureDungeon.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/ClientTreasureDungeonStage.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/ClientTreasureDungeonStage.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/HumanTreasureWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/NormalDialogueWin.cs 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/NormalDialogueWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureDungeonVictoryWin.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/WindowCenter.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageLoadProcessor.cs
@@ -408,6 +408,9 @@
                case HazyGrassModel.Client_FairyGrassMapID:
                case HazyGrassModel.Client_ReikiGrassMapID:
                    stage = stageGameObject.AddComponent<ClientHazyGrassStage>();
                    break;
                case ClientTreasureDungeon.Client_DataMap:
                    stage = stageGameObject.AddComponent<ClientTreasureDungeonStage>();
                    break;
                default:
                    stage = stageGameObject.AddComponent<DungeonStage>();
System/Dungeon/DungeonFightWin.cs
@@ -302,6 +302,9 @@
                            case HazyGrassModel.Client_ReikiGrassMapID:
                                ModelCenter.Instance.GetModel<HazyGrassModel>().RequestExitClientDungeon();
                                break;
                            case ClientTreasureDungeon.Client_DataMap:
                                ClientTreasureDungeon.RequestExit();
                                break;
                            default:
                                model.ExitCurrentDungeon();
                                break;
@@ -378,6 +381,12 @@
        {
            if (ClientDungeonStageUtility.isClientDungeon)
            {
                switch (ClientDungeonStageUtility.clientMapId)
                {
                    case ClientTreasureDungeon.Client_DataMap:
                        ClientTreasureDungeon.RequestExit();
                        break;
                }
                return;
            }
@@ -407,7 +416,7 @@
                                    ConfirmCancel.ShowRuneTowerPopConfirm(
                                        Language.Get("Mail101"),
                                        Language.Get("RuneTower25", config.Fightpower),
(Action<bool>)((bool ok) =>
                                        (Action<bool>)((bool ok) =>
                                        {
                                            if (ok)
                                            {
System/Dungeon/DungeonGetTreasureVictoryWin.cs
@@ -1,18 +1,35 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
{
    public class DungeonGetTreasureVictoryWin : DungeonVictoryWin
    {
        protected override void Display()
        {
            base.RequireDungeonExit();
            m_ContainerPoivt.gameObject.SetActive(true);
            base.DrawGetExp();
            base.DrawPassTime();
        }
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
{
    public class DungeonGetTreasureVictoryWin : DungeonVictoryWin
    {
        protected override void AddListeners()
        {
            m_Exit.SetListener(OnExit);
        }
        private void OnExit()
        {
            if (ClientDungeonStageUtility.isClientDungeon)
            {
                ClientTreasureDungeon.RequestExit();
            }
            else
            {
                dungeonModel.ExitCurrentDungeon();
            }
        }
        protected override void Display()
        {
            base.RequireDungeonExit();
            m_ContainerPoivt.gameObject.SetActive(true);
            base.DrawGetExp();
            base.DrawPassTime();
        }
    }
}
System/Dungeon/DungeonModel.cs
@@ -1089,6 +1089,10 @@
                                    break;
                                }
                            }
                            if (ClientDungeonStageUtility.isClientDungeon)
                            {
                                UpdateCoolDown(DungeonCoolDownType.LeaveMap, 7 * 1000);
                            }
                            WindowCenter.Instance.Open<DungeonGetTreasureVictoryWin>();
                            WindowCenter.Instance.Open<TreasureDungeonVictoryWin>();
                            break;
System/Treasure/ClientTreasureDungeon.cs
New file
@@ -0,0 +1,58 @@
using Snxxz.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClientTreasureDungeon
{
    public const int Client_DataMap = 4000;
    public static int challengeTreasureId = 0;
    public static void RequestEnter(int treasureId)
    {
        challengeTreasureId = treasureId;
        var hero = PlayerDatas.Instance.hero;
        if (hero != null)
        {
            hero.StopAll();
        }
        MapTransferUtility.Instance.Clear();
        ClientDungeonStageUtility.SetClientDungeon(true, (ushort)Client_DataMap);
        ClientDungeonStageUtility.RequestStartClientDungeon(0, 0);
        StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
        {
            toMapId = Client_DataMap,
            toLineId = 0,
            needEmpty = true,
            needLoadResource = true,
            serverType = ServerType.Main,
            isClientLoadMap = true
        });
        PlayerDatas.Instance.baseData.mainServerMapIdRecord = PlayerDatas.Instance.baseData.MapID;
        PlayerDatas.Instance.baseData.MapID = (ushort)Client_DataMap;
    }
    public static void RequestExit()
    {
        ClientDungeonStageUtility.SetClientDungeon(false, 0);
        ClientDungeonStageUtility.RequestExitClientDungeon();
        PlayerDatas.Instance.extersion.pkState = 0;
        ModelCenter.Instance.GetModel<DungeonModel>().ResetBufData();
        PlayerDatas.Instance.baseData.MapID = PlayerDatas.Instance.baseData.mainServerMapIdRecord;
        StageLoad.Instance.PushSceneLoadCommand(new StageLoad.StageLoadCommand()
        {
            toMapId = PlayerDatas.Instance.baseData.MapID,
            toLineId = 0,
            needEmpty = true,
            needLoadResource = true,
            serverType = ServerType.Main,
            isClientLoadMap = true,
            refreshPlayerDatas = true
        });
    }
}
System/Treasure/ClientTreasureDungeon.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 189ce34976654c34da06b3239c45076d
timeCreated: 1556000158
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/ClientTreasureDungeonStage.cs
New file
@@ -0,0 +1,96 @@
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClientTreasureDungeonStage : DungeonStage
{
    static readonly Vector3 PlayerBornPosition = new Vector3(24.496f, 0.048f, 8.258f);
    static readonly Vector3 NpcBornPosition = new Vector3(9.45f, 0.04f, 8.258f);
    bool initialized = false;
    int dialogueNpcId = 0;
    int[] speakTypes = null;
    string[] dialogues = null;
    static GA_NpcClientFunc m_Npc;
    public override void Initialize()
    {
        base.Initialize();
        if (!initialized)
        {
            var funcConfig = FuncConfigConfig.Get("ClientTreasureDungeon");
            dialogueNpcId = int.Parse(funcConfig.Numerical1);
            speakTypes = ConfigParse.GetMultipleStr<int>(funcConfig.Numerical2);
            dialogues = ConfigParse.GetMultipleStr(funcConfig.Numerical3);
        }
        UnInitializedNpc();
        NormalDialogueWin.onDialogueComplete -= OnDialogueComplete;
        NormalDialogueWin.onDialogueComplete += OnDialogueComplete;
    }
    protected override void OnStageLoadFinish()
    {
        base.OnStageLoadFinish();
        InitializePlayer();
        InitializeNpc();
    }
    void InitializePlayer()
    {
        var hero = PlayerDatas.Instance.hero;
        hero.Pos = PlayerBornPosition;
        CameraController.Instance.Apply();
    }
    void InitializeNpc()
    {
        m_Npc = GAMgr.Instance.ReqClntNoFightNpc<GA_NpcClientFunc>((uint)dialogueNpcId, E_ActorGroup.FuncNpc);
        m_Npc.Pos = NpcBornPosition;
        NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent;
        NPCInteractProcessor.s_NpcInteractEvent += OnNpcTalkEvent;
    }
    private void OnNpcTalkEvent(E_NpcType arg1, int arg2, uint arg3)
    {
        WindowCenter.Instance.Close<MainInterfaceWin>();
        NormalDialogueWin.dialogues = dialogues;
        NormalDialogueWin.speakTypes = speakTypes;
        NormalDialogueWin.npcId = dialogueNpcId;
        WindowCenter.Instance.Open<NormalDialogueWin>();
    }
    private void OnDialogueComplete()
    {
        var pak = new CA50E_tagCMOpenMagicWeapon();
        pak.MWID = (uint)ClientTreasureDungeon.challengeTreasureId;
        GameNetSystem.Instance.SendInfo(pak);
    }
    void UnInitializedNpc()
    {
        if (m_Npc != null)
        {
            GAMgr.Instance.ServerDie(m_Npc.ServerInstID);
            GAMgr.Instance.Release(m_Npc);
            m_Npc = null;
        }
    }
    public override void UnInitialize()
    {
        base.UnInitialize();
        UnInitializedNpc();
        NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent;
        NormalDialogueWin.onDialogueComplete -= OnDialogueComplete;
    }
}
System/Treasure/ClientTreasureDungeonStage.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9f12818a53b6cb74f8cf93b6748ea869
timeCreated: 1556000059
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/HumanTreasureWin.cs
@@ -250,6 +250,11 @@
            var config = TreasureConfig.Get(model.selectedTreasure);
            if (config != null)
            {
                if (model.selectedTreasure == 101)
                {
                    ClientTreasureDungeon.RequestEnter(101);
                    return;
                }
                if (PlayerDatas.Instance.baseData.LV >= config.ChallengeLevel)
                {
                    model.collectingHuman = model.selectedTreasure;
System/Treasure/NormalDialogueWin.cs
New file
@@ -0,0 +1,162 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, April 23, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class NormalDialogueWin : Window
    {
        [SerializeField] Button m_Skip;
        [SerializeField] Button m_EmptyAccepter;
        [SerializeField] Transform m_ContainerNpc;
        [SerializeField] RawImage m_RawNpc;
        [SerializeField] Text m_NpcName;
        [SerializeField] Text m_NpcDialogue;
        [SerializeField] Transform m_ContainerPlayer;
        [SerializeField] RawImage m_RawPlayer;
        [SerializeField] Text m_PlayerName;
        [SerializeField] Text m_PlayerDialogue;
        int dialogueIndex = 0;
        public static int npcId = 0;
        public static int[] speakTypes = null;
        public static string[] dialogues = null;
        public static event Action onDialogueComplete;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_EmptyAccepter.AddListener(OnClickEmpty);
            m_Skip.AddListener(OnSkip);
        }
        protected override void OnPreOpen()
        {
            dialogueIndex = 0;
            DisplayDialogue();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            UI3DModelExhibition.Instance.StopShow();
        }
        protected override void OnAfterClose()
        {
            if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>())
            {
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        protected override void LateUpdate()
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
            if (_hero == null)
            {
                return;
            }
            if (_hero.LockTarget == null)
            {
                return;
            }
            float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, _hero.LockTarget.Pos);
            if (_chkDistSqrt > Mathf.Pow(GeneralDefine.FarawayNpcDist, 2))
            {
                _hero.LockTarget = null;
                Close();
            }
        }
        #endregion
        private void DisplayDialogue()
        {
            if (speakTypes == null || dialogues == null)
            {
                return;
            }
            var speakType = speakTypes[dialogueIndex];
            m_ContainerNpc.gameObject.SetActive(speakType == 0);
            m_ContainerPlayer.gameObject.SetActive(speakType == 1);
            switch (speakType)
            {
                case 1:
                    var job = PlayerDatas.Instance.baseData.Job;
                    UI3DModelExhibition.Instance.ShowPlayer(m_RawPlayer, job, true);
                    m_PlayerName.text = PlayerDatas.Instance.baseData.PlayerName;
                    m_PlayerDialogue.text = Language.Get(dialogues[dialogueIndex]);
                    break;
                case 0:
                    var npcConfig = NPCConfig.Get(npcId);
                    m_NpcName.text = npcConfig.charName;
                    m_NpcDialogue.text = Language.Get(dialogues[dialogueIndex]);
                    var data = new UI3DNPCExhibitionData()
                    {
                        npcId = npcId,
                        isDialogue = true,
                    };
                    UI3DModelExhibition.Instance.ShowNPC(m_RawNpc, data);
                    break;
            }
        }
        private void OnSkip()
        {
            Close();
            if (onDialogueComplete != null)
            {
                onDialogueComplete();
            }
        }
        private void OnClickEmpty()
        {
            if (dialogues != null && dialogueIndex < dialogues.Length - 1)
            {
                dialogueIndex += 1;
                DisplayDialogue();
            }
            else
            {
                Close();
                if (onDialogueComplete != null)
                {
                    onDialogueComplete();
                }
            }
        }
    }
}
System/Treasure/NormalDialogueWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b3d826a302403c34eb13d555a51f733e
timeCreated: 1556002605
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/TreasureDungeonVictoryWin.cs
@@ -55,10 +55,16 @@
        {
            base.OnActived();
            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            var config = DungeonOpenTimeConfig.Get(dataMapId);
            StartCoroutine(Co_DelayDisplay(config.DelayTime * 0.001f));
            if (ClientDungeonStageUtility.isClientDungeon)
            {
                StartCoroutine(Co_DelayDisplay(1f));
            }
            else
            {
                var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
                var config = DungeonOpenTimeConfig.Get(dataMapId);
                StartCoroutine(Co_DelayDisplay(config.DelayTime * 0.001f));
            }
        }
        #endregion
@@ -70,9 +76,19 @@
            m_TreasureName.gameObject.SetActive(true);
            m_TreasureIcon.gameObject.SetActive(true);
            m_ContainerCommon.gameObject.SetActive(true);
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var lineId = dungeonModel.dungeonResult.lineID;
            var treasureId = ModelCenter.Instance.GetModel<TreasureModel>().GetTreasureIdByMapIdAndLineId(mapId, lineId);
            var treasureId = 0;
            if (!ClientDungeonStageUtility.isClientDungeon)
            {
                var mapId = PlayerDatas.Instance.baseData.MapID;
                var lineId = dungeonModel.dungeonResult.lineID;
                treasureId = ModelCenter.Instance.GetModel<TreasureModel>().GetTreasureIdByMapIdAndLineId(mapId, lineId);
            }
            else
            {
                treasureId = ClientTreasureDungeon.challengeTreasureId;
            }
            var config = TreasureConfig.Get(treasureId);
            m_TreasureName.text = config.Name;
            m_TreasureIcon.SetSprite(config.Icon);
System/WindowBase/WindowCenter.cs
@@ -606,7 +606,8 @@
                        && !IsOpen("DialogueDuidanceWin")
                        && !IsOpen("TaskBoxBGMWin")
                        && !IsOpen("WelcomeWin")
                        && !IsOpen("HazyRegionDialogueWin");
                        && !IsOpen("HazyRegionDialogueWin")
                        && !IsOpen("NormalDialogueWin");
                    if (exceptOpen != IsOpen("MainInterfaceWin"))
                    {