update spirit
This commit is contained in:
@@ -197,6 +197,19 @@ export class ConfigMgr {
|
||||
throw new Error(`ConfigMgr: level "${lv.id}" spawn references unknown enemy "${sp.type}"`);
|
||||
}
|
||||
}
|
||||
if (lv.reinforcements) {
|
||||
for (const rule of lv.reinforcements) {
|
||||
if (!enemyIds.has(rule.type)) {
|
||||
throw new Error(`ConfigMgr: level "${lv.id}" reinforcement references unknown enemy "${rule.type}"`);
|
||||
}
|
||||
if (rule.intervalSec <= 0) {
|
||||
throw new Error(`ConfigMgr: level "${lv.id}" reinforcement intervalSec must be positive`);
|
||||
}
|
||||
if (rule.count <= 0) {
|
||||
throw new Error(`ConfigMgr: level "${lv.id}" reinforcement count must be positive`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -134,6 +134,22 @@ export interface ILevelObjective {
|
||||
bossId?: string;
|
||||
}
|
||||
|
||||
/** Reinforcement rule — enemies that jump in from screen edges during gameplay. */
|
||||
export interface IReinforcementRule {
|
||||
/** Which enemy type to spawn as reinforcement. */
|
||||
type: EnemyType;
|
||||
/** Minimum interval (seconds) between two reinforcement waves of this rule. */
|
||||
intervalSec: number;
|
||||
/** How many enemies to spawn per reinforcement wave. */
|
||||
count: number;
|
||||
/** Maximum total reinforcements of this rule per level (0 = unlimited). */
|
||||
maxTotal?: number;
|
||||
/** Which edge(s) the enemies appear from. */
|
||||
edge: 'left' | 'right' | 'both';
|
||||
/** Minimum elapsed seconds before this rule becomes active. */
|
||||
delaySec?: number;
|
||||
}
|
||||
|
||||
export interface ILevelConfig {
|
||||
id: string; // e.g. '1-1'
|
||||
chapter: 1 | 2 | 3;
|
||||
@@ -150,6 +166,8 @@ export interface ILevelConfig {
|
||||
bgm: string;
|
||||
/** Enemy spawn list evaluated by the LevelMgr. */
|
||||
enemySpawns: Array<{ type: EnemyType; atPx: number; count?: number }>;
|
||||
/** Dynamic reinforcement rules — enemies jump in from screen edges. */
|
||||
reinforcements?: IReinforcementRule[];
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user