RunNode 接入游戏主流程

- NodeMapForm:节点地图
    - NodeItem:节点入口
This commit is contained in:
SepComet
2026-03-08 11:27:51 +08:00
parent c81bf97903
commit 5c6f9bf3a4
94 changed files with 6145 additions and 651 deletions
@@ -174,7 +174,7 @@ namespace GeometryTD.CustomComponent
EnsureCombatRuntimeInitialized();
}
public void StartCombat()
public void StartCombat(int levelId = 0)
{
if (!EnsureCombatRuntimeInitialized())
{
@@ -182,9 +182,14 @@ namespace GeometryTD.CustomComponent
return;
}
if (!TrySelectRandomLevel(out DRLevel selectedLevel))
bool hasLevel = levelId > 0
? TryGetLevelById(levelId, out DRLevel selectedLevel)
: TrySelectRandomLevel(out selectedLevel);
if (!hasLevel)
{
Log.Warning("CombatNodeComponent has no level cache. Call OnInit(levelThemeType) first.");
Log.Warning(
"CombatNodeComponent start failed. LevelId={0}. Missing cached level data or invalid level id.",
levelId);
return;
}
@@ -348,6 +353,17 @@ namespace GeometryTD.CustomComponent
return _levelsById.TryGetValue(selectedLevelId, out level);
}
private bool TryGetLevelById(int levelId, out DRLevel level)
{
level = null;
if (levelId <= 0)
{
return false;
}
return _levelsById.TryGetValue(levelId, out level);
}
private int CountPhases()
{
int count = 0;