53 lines
1.1 KiB
ObjectPascal
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.
|