unit level_m; interface uses arena_m, trace_m, creature_m, enemy_packs_m; const LevelCompleteThreshold = 85; type levelState = record a: arena; t: tracePtr; levelStarted, hamsterAlive, unpause: boolean; h: creature; cut: integer; enemyList: creatureList; end; function IsLevelComplete(var level: levelState): boolean; procedure InitLevel(var level: levelState; t: enemyPackType); implementation uses hamster_m, ghost_m, debug_m; const TotalProcent = 100; function IsLevelComplete(var level: levelState): boolean; var completeProcent: integer; begin completeProcent := round(level.cut / (TotalCells / TotalProcent)); IsLevelComplete := completeProcent >= LevelCompleteThreshold end; procedure InitLevel(var level: levelState; t: enemyPackType); begin InitArena(level.a); InitHamster(level.h); InitCreatureList(level.enemyList); AppendEnemies(level.enemyList, t); {PrintEnemies(level.enemyList);} level.levelStarted := true; level.hamsterAlive := true; level.t := nil; level.cut := 0; level.unpause := false end; end.