gh/level_m.pas
2026-01-10 12:09:22 +05:00

53 lines
1.1 KiB
ObjectPascal

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.