procedure ProcessDrawing;
var
C: Real;
i: Integer;
begin
case AppState of
Intro1:
begin
al_draw_bitmap(ImgIntroPage1, 0, 0, 0);
with Player do
al_draw_bitmap(AnimImage^.Images[AnimProgress], PosX, PosY, 0);
end;
Intro2:
begin
al_draw_bitmap(ImgIntroPage2, 0, 0, 0);
with Player do
al_draw_bitmap(AnimImage^.Images[AnimProgress], PosX, PosY, 0);
end;
Playing, Paused, Lose, Win:
begin
al_clear_to_color(al_map_rgb(0, 0, 10));
// Draw health bar
al_draw_filled_rectangle(0, 0, PlayerHealth, 20, al_map_rgb(0, 200, 0));
C := (MaxPlayerHealth-PlayerHealth)/MaxPlayerHealth;
al_draw_filled_rectangle(0, 0, PlayerHealth, 20, al_map_rgba_f(C, 0, 0, C));
// Show killed information
al_draw_text(SystemFont, al_map_rgb(255, 255, 255), 20, 4,ALLEGRO_ALIGN_LEFT,
'Killed: '+IntToStr(EnemyKilled));
// Brighten the sky
al_draw_bitmap(ImgBackground1, 0, 20, 0);
C := EnemyKilled/100;
al_draw_tinted_bitmap(ImgBackground2, al_map_rgba_f(C, C, C, C), 0, 20, 0);
// Draw player and enemies
with Player do begin
al_draw_bitmap(AnimImage^.Images[AnimProgress], PosX, PosY, 0);
if DebugMode then begin
al_draw_rectangle(PosX+35, 230, PosX+60, 280, al_map_rgb(0, 255, 0), 1);
if (CurrentActivity = AttackL) then
al_draw_rectangle(PosX+15, 230, PosX+40, 280, al_map_rgb(255, 0, 0), 1);
if (CurrentActivity = AttackR) then
al_draw_rectangle(PosX+55, 230, PosX+80, 280, al_map_rgb(255, 0, 0), 1);
end;
end;
for i := 0 to (Enemies.Count-1) do
with TActor(Enemies[i]^) do begin
al_draw_bitmap(AnimImage^.Images[AnimProgress], PosX, PosY, 0);
if DebugMode then begin
if (CurrentActivity = WalkL) or (CurrentActivity = AttackL) then
al_draw_rectangle(PosX+30, 230, PosX+65, 280, al_map_rgb(0, 0, 255), 1);
if (CurrentActivity = WalkR) or (CurrentActivity = AttackR) then
al_draw_rectangle(PosX+33, 230, PosX+68, 280, al_map_rgb(0, 0, 255), 1);
if (CurrentActivity = AttackL) then
al_draw_rectangle(PosX+22, 230, PosX+47, 280, al_map_rgb(255, 0, 0), 1);
if (CurrentActivity = AttackR) then
al_draw_rectangle(PosX+50, 230, PosX+75, 280, al_map_rgb(255, 0, 0), 1);
end;
end;
// Show cheat info
if CheatFastRecover then
al_draw_text(SystemFont, al_map_rgb(255, 0, 0), 20, 100,ALLEGRO_ALIGN_LEFT,
'FastRecover');
if CheatStoneSkin then
al_draw_text(SystemFont, al_map_rgb(255, 0, 0), 20, 120,ALLEGRO_ALIGN_LEFT,
'StoneSkin');
// AppState related
case AppState of
Paused:
al_draw_bitmap(ImgPaused, 140, 75, 0);
Lose:
al_draw_text(SystemFont, al_map_rgb(255, 255, 255), 250, 100,
ALLEGRO_ALIGN_CENTER, 'YOU FAILED!');
Win:
al_draw_bitmap(ImgWin, 140, 75, 0);
end;
end;
end;
al_flip_display;
end;