少年修仙传客户端代码仓库
hch
2025-03-19 6770e1eb64c4282def45adb824b14b2a407fdd30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
namespace vnxbqy.UI
{
    public class RealmHeartMagicBehaviour : MonoBehaviour
    {
        [SerializeField] Text m_BossName;
        [SerializeField] Text m_FightPower;
        [SerializeField] RawImage m_RawBoss;
        [SerializeField] Button m_Goto;
        [SerializeField] UIEffect m_OpenEffect;
 
        const string State_EnterHash = "Show";
        const string State_IdleHash = "Idle";
 
        int realmLevel = 0;
 
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
 
        private void Awake()
        {
            m_Goto.AddListener(GotoBoss);
        }
 
        public void Display(int realmLevel)
        {
            this.realmLevel = realmLevel;
 
            DisplayBase();
 
            m_RawBoss.SetActive(false);
            m_OpenEffect.Play();
 
            StartCoroutine(Co_DisplayBoss());
        }
 
        void DisplayBase()
        {
            var fightPower = PlayerDatas.Instance.baseData.FightPoint;
            var bossFightPower = NPCExConfig.Get( RealmLVUPTaskConfig.GetBossID(realmLevel)).SuppressFightPower;
            var satisfy = fightPower >= (ulong)bossFightPower;
            var label = UIHelper.AppendColor(satisfy ? TextColType.LightGreen : TextColType.Red, UIHelper.ReplaceLargeNum(fightPower));
            m_FightPower.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.LightGreen,
                Language.Get("RolePromoteBetterFight")), label, "/", UIHelper.ReplaceLargeNum(bossFightPower));
            var npcConfig = NPCConfig.Get(RealmLVUPTaskConfig.GetBossID(realmLevel));
            m_BossName.text = npcConfig.charName;
        }
 
        IEnumerator Co_DisplayBoss()
        {
            yield return WaitingForSecondConst.WaitMS1800;
            DisplayBoss();
        }
 
        void DisplayBoss()
        {
            m_RawBoss.SetActive(true);
            int bossID = RealmLVUPTaskConfig.GetBossID(realmLevel);
            UI3DModelExhibition.Instance.ShowNPC(m_RawBoss, new UI3DNPCExhibitionData()
            {
                gray = false,
                isDialogue = false,
                npcId = bossID,
            });
 
            var npcConfig = NPCConfig.Get(bossID);
 
            var npcModel = UI3DModelExhibition.Instance.NpcModelPet;
            if (npcModel != null)
            {
                var animator = npcModel.GetComponentInChildren<Animator>();
                if (animator != null)
                {
                    var runtimeController = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerRealmSuffix, npcConfig.MODE);
                    animator.runtimeAnimatorController = runtimeController;
                    animator.Play(State_EnterHash, 0);
                }
            }
        }
 
        public void Dispose()
        {
            UI3DModelExhibition.Instance.StopShow();
            StopAllCoroutines();
        }
 
        private void GotoBoss()
        {
            if (CrossServerUtility.IsCrossServer())
            {
                SysNotifyMgr.Instance.ShowTip("CrossMap10");
                return;
            }
 
            var fightPower = PlayerDatas.Instance.baseData.FightPoint;
            var bossFightPower = NPCExConfig.Get(RealmLVUPTaskConfig.GetBossID(realmLevel)).SuppressFightPower;
            var satisfy = fightPower >= (ulong)bossFightPower;
 
            if ((ulong)bossFightPower > PlayerDatas.Instance.baseData.FightPoint)
            { 
                ConfirmCancel.ShowPopConfirm(
                            Language.Get("Mail101"),
                            Language.Get("RuneTower25", bossFightPower),
                            (bool ok) =>
                            {
                                if (ok)
                                {
                                    dungeonModel.SingleChallenge(RealmModel.REALM_DUNGEON_ID, 0);
                                }
                            }
                            );
                return;
            }
 
 
            dungeonModel.SingleChallenge(RealmModel.REALM_DUNGEON_ID, 0);
        }
    }
}