NLDClient-yudde/ProjectNLD/Assets/Editor/FightDebug/Impl/Debug_AddEnemy.cs

84 lines
2.4 KiB
C#

using cfg.MonsterCfg;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay.Character;
using Gameplay.Level;
using UnityEditor;
using UnityEngine;
namespace FightDebug.Impl
{
public class Debug_AddEnemy : BaseSubDebugPanel
{
private int _monsterId;
private DataMonster _monsterConfig;
private int _addCellIndex;
public Debug_AddEnemy() : base("动态增加敌人")
{
}
protected override void _OnDrawUI()
{
base._OnDrawUI();
var newMonsterId = EditorGUILayout.IntField("MonsterID", _monsterId);
if (newMonsterId != _monsterId)
{
_monsterId = newMonsterId;
_monsterConfig = EditorTableManager.instance.tables.Monster.GetOrDefault(_monsterId);
}
if (_monsterConfig == null)
{
EditorGUILayout.HelpBox("MonsterID不存在", MessageType.Error);
}
_addCellIndex = EditorGUILayout.IntField("CellIndex", _addCellIndex);
if (GUILayout.Button("添加", GUILayout.Height(40)))
{
if (_monsterConfig == null)
{
// 弹窗提示
EditorUtility.DisplayDialog("错误", "MonsterID不存在", "确定");
return;
}
_AddEnemy();
}
}
private void _AddEnemy()
{
if (!Application.isPlaying)
{
EditorUtility.DisplayDialog("错误", "需要先运行游戏", "确定");
return;
}
if (!LevelManager.Instance.IsInLevel)
{
EditorUtility.DisplayDialog("错误", "需要在关卡中", "确定");
return;
}
var fakeNpcInfo = new LevelData.NPCInfo()
{
id = _monsterId,
position = LevelManager.Instance.CurrentLevel.Map.TGSCellIndex2BlockPosition(_addCellIndex),
shield = 1f,
ph = 1f,
morale = 1f,
defensiveDistance = 10,
configName = "AIbaseEnemy",
troopId = ETroopsId.Enemy,
};
LevelManager.Instance.CurrentLevel.ForceCreateEnemyNpc(fakeNpcInfo).Forget();
}
}
}