chenxin
2020-10-27 e4389b2f493112306b4aa143e99b2738332ca8d2
新手引导END
8 files modified
144 ■■■■■ changed files
Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs 27 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/EndlessWave.cs 9 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs 29 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Projectiles/BallisticAttack.cs 2 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs 6 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs 62 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs 7 ●●●●● patch | view | raw | blame | history
Assets/StreamingAssets/Table/endless_teachport.json 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Level/EndlessLevelManager.cs
@@ -160,6 +160,8 @@
        /// </summary>
        private bool isFirstLevelCompleted = false;
        private bool isStopSecondWaveCompleted = false;
        /// <summary>
        /// 切换基地
        /// </summary>
@@ -370,6 +372,17 @@
        }
        /// <summary>
        /// 新手更新关卡
        /// </summary>
        public void NewbieUpdateLevel()
        {
            ++CurrentLevel;
            IsAllWaveCompleted = false;
            EndlessUIStart.instance.Restart();
            WaveManager.StartWaves(CurrentLevel);
        }
        /// <summary>
        /// 延迟进入下一关
        /// </summary>
        /// <returns></returns>
@@ -539,5 +552,19 @@
            WaveManager.RestartAllWave();
            EndlessGameUI.instance.SetAttackingTowerState(true);
        }
        /// <summary>
        /// 停止第二关波次
        /// </summary>
        public void StopSecondWave()
        {
            Debug.LogError("--------------------- 停止第二关出怪 ---------------------");
            if (!isStopSecondWaveCompleted)
            {
                isStopSecondWaveCompleted = true;
                PauseWave();
            }
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillStep);
        }
    }
}
Assets/Scripts/TowerDefense/Level/EndlessWave.cs
@@ -46,6 +46,11 @@
        public event Action WaveCompleted;
        /// <summary>
        /// 有新的敌人生成
        /// </summary>
        public event Action SpawnNewAgent;
        /// <summary>
        /// 波次发生改变
        /// </summary>
        public event Action WaveChanged;
@@ -126,7 +131,11 @@
                SafelyBroadcastWaveCompletedEvent();
            }
            else
            {
                ++spawnedEnemies;
                if (SpawnNewAgent != null)
                    SpawnNewAgent();
            }
        }
        /// <summary>
Assets/Scripts/TowerDefense/Level/EndlessWaveManager.cs
@@ -74,6 +74,12 @@
        public int TotalEnemies { get; protected set; }
        /// <summary>
        /// 所有兵线已经生成的敌人总数量
        /// </summary>
        /// <value></value>
        public int SpawnedTotalEnemies { get; protected set; }
        /// <summary>
        /// 本波次剩余敌人数量
        /// </summary>
        public int RemainEnemies { get; protected set; }
@@ -184,7 +190,7 @@
            WaveInterval = waveData[0].Config.cooldown / 1000f;
            TotalWaveLines = waveData.Count;
            CompletedWaveLine = 0;
            SpawnedTotalEnemies = 0;
            HideTunel();
            // 刷新法阵的显示
@@ -216,8 +222,11 @@
                    continue;
                }
                waves[data.Config.tunel - 1].WaveCompleted -= OneWaveCompleted;
                waves[data.Config.tunel - 1].WaveCompleted += OneWaveCompleted;
                int tunelIndex = data.Config.tunel - 1;
                waves[tunelIndex].WaveCompleted -= OneWaveCompleted;
                waves[tunelIndex].WaveCompleted += OneWaveCompleted;
                waves[tunelIndex].SpawnNewAgent -= SpawnNewAgent;
                waves[tunelIndex].SpawnNewAgent += SpawnNewAgent;
                waves[data.Config.tunel - 1].StartWave(data);
            }
@@ -226,6 +235,20 @@
        }
        /// <summary>
        /// 有新的敌人生成
        /// </summary>
        private void SpawnNewAgent()
        {
            ++SpawnedTotalEnemies;
            if (GameConfig.IsNewbie && EndlessUIStart.instance.beginSkillStep && SpawnedTotalEnemies >= 8)
            {
                EndlessUIStart.instance.beginSkillStep = false;
                EndlessLevelManager.instance.StopSecondWave();
            }
        }
        /// <summary>
        /// 暂停所有兵线出兵
        /// </summary>
        public void PauseAllWave()
Assets/Scripts/TowerDefense/Towers/Projectiles/BallisticAttack.cs
@@ -53,6 +53,8 @@
            // 处理PVE无尽模式,buff增加的伤害
            finalDamage += ProcessEndlessBuffAttack(finalDamage);
            // cx test
            finalDamage *= 2f;
            // 提前处理非当前Enemy的爆炸攻击:
            if (chainAttackRate > 0)
Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs
@@ -32,6 +32,8 @@
    // 对应放置TowerGrid的类.
    protected TowerPlacementGridEndless towerGrid;
    private bool isOpenTower = false;
    // Start is called before the first frame update
    void Start()
    {
@@ -56,8 +58,12 @@
        {
            if (!GameConfig.CanOpenNewTower) return;
            if (!isOpenTower)
            {
                isOpenTower = true;
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GetOneTowerPos);
        }
        }
        if (towerGrid != null)
Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
@@ -8,6 +8,7 @@
using TowerDefense.Level;
using KTGMGemClient;
using TowerDefense.UI.HUD;
using System.Collections;
/// <summary>
/// 无尽模式用自己的EndlessUIStart
@@ -46,6 +47,8 @@
    private bool isPause;
    public bool beginSkillStep = false;
    // Start is called before the first frame update
    void Start()
    {
@@ -76,14 +79,6 @@
            Instantiate(Resources.Load<GameObject>("UI/Guide/GuidePanel"), this.transform);
            AddGuideEvent();
            //bGameStart = true;
            // 开始关卡
            //EndlessLevelManager.instance.StartLevel();
            //timeTextNew.gameObject.SetActive(true);
            // 开始播放背景音乐.
            // if (bgMusic != null)
            //     bgMusic.Play();
        }
    }
@@ -99,6 +94,7 @@
        EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateWaterLv1, CreateWaterLv1);
        EventCenter.Ins.Add((int)KTGMGemClient.EventType.CreateSecondWave, CreateSecondWave);
        EventCenter.Ins.Add((int)KTGMGemClient.EventType.SkillRelease, SkillRelease);
        EventCenter.Ins.Add((int)KTGMGemClient.EventType.GuideFinish, NewbieGuideEnd);
    }
    /// <summary>
@@ -110,12 +106,18 @@
        EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(2, 3), 2);
    }
    /// <summary>
    /// 开始第一关的第一个波次
    /// </summary>
    private void CreateFirstWave()
    {
        Restart();
        EventCenter.Ins.Add((int)KTGMGemClient.EventType.FireTowerChargeEnd, OnFireTowerChargeEnd);
    }
    /// <summary>
    /// 火塔充能释放完成
    /// </summary>
    private void OnFireTowerChargeEnd()
    {
        Pause();
@@ -124,31 +126,73 @@
        EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.ChargingEnd);
    }
    /// <summary>
    /// 恢复波次
    /// </summary>
    private void RestartWave()
    {
        Restart();
        EndlessLevelManager.instance.RestartWave();
    }
    /// <summary>
    /// 获得金币
    /// </summary>
    /// <param name="gold"></param>
    private void AddGold(int gold)
    {
        EndlessLevelManager.instance.Currency.AddCurrency(gold);
    }
    /// <summary>
    /// 在攻击位置上创建一个1级的水塔
    /// </summary>
    private void CreateWaterLv1()
    {
        Tower aTower = EndlessRandomTower.instance.getTowerByName("CopyCatTower");
        EndlessGameUI.instance.PlaceTowerForce(aTower, new IntVector2(1, 3), 1);
    }
    /// <summary>
    /// 开始第二关
    /// </summary>
    private void CreateSecondWave()
    {
        EndlessLevelManager.instance.NewbieUpdateLevel();
        beginSkillStep = true;
    }
    /// <summary>
    /// 在第三条兵线释放技能宝石
    /// </summary>
    private void SkillRelease()
    {
        EndlessLevelManager.instance.RestartWave();
        int attributeId = 99902;
        int level = 1;
        int waveLineIndex = 2;
        // 播放特效,并处理伤害.
        EndlessWaveLineManager.instance.PlayWaveLineEffect(waveLineIndex);
        AgentInsManager.instance.ExecWavelineAttack(waveLineIndex, attributeId, level, false);
        StartCoroutine(Delay1());
    }
    private IEnumerator Delay1()
    {
        yield return new WaitForSeconds(1f);
        EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SkillReleaseDone);
        GameConfig.IsNewbie = false;
        EndlessLevelManager.instance.PauseWave();
    }
    /// <summary>
    /// 新手引导结束
    /// </summary>
    private void NewbieGuideEnd()
    {
        EndlessLevelManager.instance.RestartWave();
        GameConfig.IsNewbie = false;
    }
    /// <summary>
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -15,6 +15,7 @@
using UnityEngine.UI;
using TowerDefense.Nodes;
using TowerDefense.Affectors;
using KTGMGemClient;
namespace TowerDefense.UI.HUD
{
@@ -711,6 +712,12 @@
                break;
            }
            if (GameConfig.IsNewbie && EndlessUIStart.instance.beginSkillStep)
            {
                EndlessUIStart.instance.beginSkillStep = true;
                EndlessLevelManager.instance.StopSecondWave();
            }
            bool isAllDestroyed = true;
            for (int i = 0; i < AttackRowNumbers; ++i)
Assets/StreamingAssets/Table/endless_teachport.json
@@ -1 +1 @@
[[1,1,"史莱姆大王",1,1,1,0,0,0,200,1.5,2,3000,["0"],[0],0],[2,1,"史莱姆大王",1,1,2,0,0,0,200,1.5,2,3000,["0"],[0],0],[3,1,"史莱姆大王",1,1,3,1,10,1800,200,1.5,2,3000,["0"],[0],1],[4,1,"史莱姆大王",1,1,4,0,0,0,200,1.5,2,3000,["0"],[0],0],[5,1,"史莱姆大王",1,1,5,0,0,0,200,1.5,2,3000,["0"],[0],0],[6,1,"史莱姆大王",1,2,1,0,0,0,350,1.5,2,3000,["0"],[0],0],[7,1,"史莱姆大王",1,2,2,0,0,0,350,1.5,2,3000,["0"],[0],0],[8,1,"史莱姆大王",1,2,3,3,6,3000,350,1.5,2,3000,["0"],[0],3],[9,1,"史莱姆大王",1,2,4,0,0,0,350,1.5,2,3000,["0"],[0],0],[10,1,"史莱姆大王",1,2,5,0,0,0,350,1.5,2,3000,["0"],[0],0]]
[[1,1,"史莱姆大王",1,1,1,0,0,0,200,1.5,2,3000,["0"],[0],0],[2,1,"史莱姆大王",1,1,2,0,0,0,200,1.5,2,3000,["0"],[0],0],[3,1,"史莱姆大王",1,1,3,1,10,1800,200,1.5,2,3000,["0"],[0],1],[4,1,"史莱姆大王",1,1,4,0,0,0,200,1.5,2,3000,["0"],[0],0],[5,1,"史莱姆大王",1,1,5,0,0,0,200,1.5,2,3000,["0"],[0],0],[6,1,"史莱姆大王",1,2,1,0,0,0,350,1.5,2,3000,["0"],[0],0],[7,1,"史莱姆大王",1,2,2,0,0,0,350,1.5,2,3000,["0"],[0],0],[8,1,"史莱姆大王",1,2,3,3,6,3000,350,1.5,2,3000,["0"],[0],3],[9,1,"史莱姆大王",1,2,4,0,0,0,350,1.5,2,3000,["0"],[0],0],[10,1,"史莱姆大王",1,2,5,0,0,0,350,1.5,2,3000,["0"],[0],0],[11,2,"史莱姆大王",1,1,1,0,0,0,200,1.5,2,3000,["0"],[0],0],[12,2,"史莱姆大王",1,1,2,0,0,0,200,1.5,2,3000,["0"],[0],0],[13,2,"史莱姆大王",1,1,3,1,10,1800,200,1.5,2,3000,["0"],[0],1],[14,2,"史莱姆大王",1,1,4,0,0,0,200,1.5,2,3000,["0"],[0],0],[15,2,"史莱姆大王",1,1,5,0,0,0,200,1.5,2,3000,["0"],[0],0],[16,2,"史莱姆大王",1,2,1,0,0,0,350,1.5,2,3000,["0"],[0],0],[17,2,"史莱姆大王",1,2,2,0,0,0,350,1.5,2,3000,["0"],[0],0],[18,2,"史莱姆大王",1,2,3,3,6,3000,350,1.5,2,3000,["0"],[0],3],[19,2,"史莱姆大王",1,2,4,0,0,0,350,1.5,2,3000,["0"],[0],0],[20,2,"史莱姆大王",1,2,5,0,0,0,350,1.5,2,3000,["0"],[0],0]]