示例#1
0
    protected override void RegistAttribute()
    {
        base.RegistAttribute();

        _cfg = BossConfig.GetData(Id);

        gameObject.name = _cfg.Name;
        var _hp = new GameRangeAttribute(E_Attribute.Hp.ToString(), 0, _cfg.Hp);

        m_Hp = AddRangeAttribute(_hp);
        var _mp = new GameRangeAttribute(E_Attribute.Mp.ToString(), 0, _cfg.Mp, 0.1f);

        m_Mp = AddRangeAttribute(_mp);
        var _attack = new GameAttribute(E_Attribute.Atk.ToString(), _cfg.Attack);

        m_Attack = AddAttribute(_attack);
        var _moveSpeed = new GameAttribute(E_Attribute.MoveSpeed.ToString(), _cfg.MoveSpeed);

        m_MoveSpeed = AddAttribute(_moveSpeed);

        m_CaculateDelta = TimerManager.Instance.AddListener(0, 0.02f, m_MonoAttribute.CaculateRangeDelta, null, true);


        _shield  = new GameRangeAttribute(E_Attribute.Shield.ToString(), 0, _cfg.Shield, 0.02f);
        m_Shield = AddRangeAttribute(_shield);


        UIBattleWindow.ShowBossUI();
        UIBattleWindow.OnBossHpChange(m_Hp.Current, m_Hp.GetMinTotalValue(), m_Hp.GetMaxTotalValue());
        UIBattleWindow.OnBossShieldChange(m_Shield.Current, m_Shield.GetMinTotalValue(), m_Shield.GetMaxTotalValue());
        GetRangeAttribute(E_Attribute.Hp.ToString()).OnValueChanged     += (delta) => { UIBattleWindow.OnBossHpChange(m_Hp.Current, m_Hp.GetMinTotalValue(), m_Hp.GetMaxTotalValue()); };
        GetRangeAttribute(E_Attribute.Shield.ToString()).OnValueChanged += (delta) => { UIBattleWindow.OnBossShieldChange(m_Shield.Current, m_Shield.GetMinTotalValue(), m_Shield.GetMaxTotalValue()); };

        AudioManager.Instance.PlayBGM(_cfg.FightBGM);
    }
示例#2
0
 private void TestBoss_OnBossAwaken(TestEntity obj)
 {
     if (obj is TestBoss)
     {
         var boss = obj as TestBoss;
         currentData           = boss.Data;
         obj.HP.OnDataChanged += HP_OnDataChanged;
     }
 }
示例#3
0
 public void LoadConfigs()
 {
     ItemConfig.LoadCsvCfg();
     AnimConfig.LoadCsvCfg();
     PlayerConfig.LoadCsvCfg();
     MonsterConfig.LoadCsvCfg();
     BossConfig.LoadCsvCfg();
     BuffConfig.LoadCsvCfg();
     SkillConfig.LoadCsvCfg();
     LevelConfig.LoadCsvCfg();
     BulletConfig.LoadCsvCfg();
     BarrageConfig.LoadCsvCfg();
     ColliderConfig.LoadCsvCfg();
 }
示例#4
0
    private void Start()
    {
        string path = "";

        switch (Type)
        {
        case EnemyType.怪物:
            MonsterConfig mCfg = MonsterConfig.GetData(EnemyId);
            path = PathManager.RolePrefabsPath + mCfg.Name + "/" + mCfg.Name;
            break;

        case EnemyType.Boss:
            BossConfig bCfg = BossConfig.GetData(EnemyId);
            path = PathManager.RolePrefabsPath + bCfg.Name + "/" + bCfg.Name;
            break;
        }
        var obj = ResourceManager.Load <GameObject>(path);
        var go  = GameObject.Instantiate(obj);

        go.transform.SetParent(transform, false);
        var character = go.GetComponent <Character>();

        MonoBehaviourManager.Add(character);
    }
示例#5
0
 public AnalyzedDayBoss(AnalyzedDay day, int index)
 {
     boss   = (this.day = day).day.bosses[bossIndex = index];
     phases = SMAnalysis.AnalyzeDay(this, (StateMachineManager.FromText(boss.stateMachine) as PatternSM) !);
 }
示例#6
0
 public AnalyzedBoss(AnalyzedCampaign campaign, int index)
 {
     boss = (this.campaign = campaign).campaign.practiceBosses[bossIndex = index];
 }
示例#7
0
        private static (List <Enemy>, List <BehaviorEntity>) ConfigureAllBosses(IUIManager?ui,
                                                                                SMHandoff smh, BossConfig main, BossConfig[]?all)
        {
            all ??= new[] { main };
            //BossConfig may summon an Enemy or just a BehaviorEntity.
            //Enemies are tracked in the main boss for HP sharing.
            //BehaviorEntities are tracked
            var subbosses  = new List <Enemy>();
            var subsummons = new List <BehaviorEntity>();

            foreach (var(i, b) in all.Enumerate())
            {
                var target = smh.Exec;
                if (i > 0)
                {
                    target = Object.Instantiate(b.boss).GetComponent <BehaviorEntity>();
                    var mov = new Movement(new Vector2(-50f, 0f), 0f);
                    target.Initialize(null, mov, new ParametricInfo(in mov), SMRunner.Null);
                    subsummons.Add(target);
                }
                if (target.TryAsEnemy(out var e))
                {
                    if (i > 0)
                    {
                        e.distorter = null; // i dont really like this but it overlaps weirdly
                        subbosses.Add(e);
                    }
                    e.ConfigureBoss(b);
                    e.SetVulnerable(Vulnerability.NO_DAMAGE);
                }
                string trackerName = b.BottomTrackerName;
                if (trackerName.Length > 0)
                {
                    ui?.TrackBEH(target, trackerName, smh.cT);
                }
            }
            smh.Exec.Enemy.Subbosses = subbosses;
            return(subbosses, subsummons);
        }
示例#8
0
 private static void SetUniqueBossUI(IUIManager?ui, bool first, SMHandoff smh, BossConfig b)
 {
     if (first)
     {
         ui?.AddProfile(b.profile);
     }
     else
     {
         ui?.SwitchProfile(b.profile);
     }
     ui?.SetBossColor(b.colors.uiColor, b.colors.uiHPColor);
 }