55,7 → 55,6 |
AufUpdatesprfen1: TMenuItem; |
N4: TMenuItem; |
WasgibtesNeues1: TMenuItem; |
Enemy8: TRadioButton; |
procedure DXDrawFinalize(Sender: TObject); |
procedure DXDrawInitialize(Sender: TObject); |
procedure FormCreate(Sender: TObject); |
170,12 → 169,8 |
if AEnemyType = etEnemyUFO then Image := MainForm.GetSpriteGraphic(smgEnemyDisk); |
if AEnemyType = etEnemyUFO2 then Image := MainForm.GetSpriteGraphic(smgEnemyDisk2); |
if AEnemyType = etEnemyBoss then Image := MainForm.GetSpriteGraphic(smgEnemyBoss); |
if AEnemyType = etItemMedikit then Image := MainForm.GetSpriteGraphic(smgItemMedikit); |
|
if not EnemyTypeHasLives(AEnemyType) then |
FLives := 0 |
else |
FLives := ALives; |
if AEnemyType = etEnemyMeteor then FLives := 0 else FLives := ALives; |
FEnemyType := AEnemyType; |
Width := Image.Width; |
Height := Image.Height; |
563,8 → 558,7 |
procedure TMainForm.DXDrawMouseDown(Sender: TObject; Button: TMouseButton; |
Shift: TShiftState; X, Y: Integer); |
var |
i: TEnemyType; |
j, k, l, ex, ey: integer; |
i, j, k, l, ex, ey: integer; |
ok, breaked: boolean; |
begin |
ex := trunc(x/RasterW) * RasterW; |
579,7 → 573,7 |
ok := false // boss already exists |
else |
begin |
for i := Low(TEnemyType) to High(TEnemyType) do |
for i := 1 to NumEnemyTypes do |
begin |
for j := 0 to MaxPossibleEnemyLives do |
begin |
599,7 → 593,7 |
end; |
if not ok then break; |
end; |
if LevData.IndexOfEnemy(ex + (ScrollP * RasterW), ey, i, j) <> -1 then |
if LevData.IndexOfEnemy(ex + (ScrollP * RasterW), ey, TEnemyType(i), j) <> -1 then |
begin |
ok := false; |
break; |
610,7 → 604,7 |
end; |
if ok then |
begin |
if EnemyTypeHasLives(SelectedEnemyType) then |
if SelectedEnemyType <> etEnemyMeteor then |
LevData.AddEnemy(ex + (ScrollP * RasterW), ey, SelectedEnemyType, LivesEdit.Value) |
else |
LevData.AddEnemy(ex + (ScrollP * RasterW), ey, SelectedEnemyType, 0); |
622,19 → 616,19 |
{ Löschen } |
else if Button = mbRight then |
begin |
for i := Low(TEnemyType) to High(TEnemyType) do |
for i := 1 to NumEnemyTypes do |
begin |
for j := 0 to MaxPossibleEnemyLives do |
begin |
if boss and (i = etEnemyBoss) then |
if boss and (TEnemyType(i) = etEnemyBoss) then |
begin |
for k := 0 to 3 do |
begin |
for l := 0 to 1 do |
begin |
if LevData.IndexOfEnemy(ex + ((ScrollP - k) * RasterW), ey - (RasterH * l), i, j) <> -1 then |
if LevData.IndexOfEnemy(ex + ((ScrollP - k) * RasterW), ey - (RasterH * l), TEnemyType(i), j) <> -1 then |
begin |
LevData.DeleteEnemy(ex + ((ScrollP - k) * RasterW), ey - (RasterH * l), i, j); |
LevData.DeleteEnemy(ex + ((ScrollP - k) * RasterW), ey - (RasterH * l), TEnemyType(i), j); |
Boss := false; |
dec(NumEnemys); |
breaked := true; |
644,10 → 638,10 |
if breaked then break; |
end; |
end; |
if LevData.IndexOfEnemy(ex + (ScrollP * RasterW), ey, i, j) <> -1 then |
if LevData.IndexOfEnemy(ex + (ScrollP * RasterW), ey, TEnemyType(i), j) <> -1 then |
begin |
LevData.DeleteEnemy(ex + (ScrollP * RasterW), ey, i, j); |
if i = etEnemyBoss then Boss := false; |
LevData.DeleteEnemy(ex + (ScrollP * RasterW), ey, TEnemyType(i), j); |
if TEnemyType(i) = etEnemyBoss then Boss := false; |
dec(NumEnemys); |
breaked := true; |
break; |
666,8 → 660,8 |
begin |
et := SelectedEnemyType; |
Image1.Left := -(87 * (Ord(et) - 1)) + 1; |
LivesEdit.Enabled := EnemyTypeHasLives(et); |
LivesLabel.Enabled := EnemyTypeHasLives(et); |
LivesEdit.Enabled := et <> etEnemyMeteor; |
LivesLabel.Enabled := et <> etEnemyMeteor; |
end; |
|
procedure TMainForm.EnemyCreateSprite(x, y: integer; AEnemyType: TEnemyType; ALives: integer); |
747,8 → 741,7 |
status_lives = 'Leben: '; |
status_nolives = 'Einheit hat keine Lebensangabe'; |
var |
i: TEnemyType; |
ex, ey, j, k, l: integer; |
ex, ey, i, j, k, l: integer; |
lifes: integer; |
enemyType: TEnemyType; |
enemyName: string; |
764,17 → 757,17 |
lifes := -1; |
enemyType := etUnknown; |
breaked := false; |
for i := Low(TEnemyType) to High(TEnemyType) do |
for i := 1 to NumEnemyTypes do |
begin |
for j := 0 to MaxPossibleEnemyLives do |
begin |
if boss and (i = etEnemyBoss) then |
if boss and (TEnemyType(i) = etEnemyBoss) then |
begin |
for k := 0 to 3 do |
begin |
for l := 0 to 1 do |
begin |
if LevData.IndexOfEnemy(ex + ((ScrollP - k) * RasterW), ey - (RasterH * l), i, j) <> -1 then |
if LevData.IndexOfEnemy(ex + ((ScrollP - k) * RasterW), ey - (RasterH * l), TEnemyType(i), j) <> -1 then |
begin |
lifes := j; |
breaked := true; |
784,10 → 777,10 |
if breaked then break; |
end; |
end; |
if (breaked = false) and (LevData.IndexOfEnemy(ex + (ScrollP * RasterW), ey, i, j) <> -1) then |
if (breaked = false) and (LevData.IndexOfEnemy(ex + (ScrollP * RasterW), ey, TEnemyType(i), j) <> -1) then |
begin |
lifes := j; |
enemyType := i; |
enemyType := TEnemyType(i); |
breaked := true; |
break; |
end; |
803,7 → 796,6 |
else if Ord(enemyType) = 5 then enemyName := Enemy5.Caption |
else if Ord(enemyType) = 6 then enemyName := Enemy6.Caption |
else if Ord(enemyType) = 7 then enemyName := Enemy7.Caption |
else if Ord(enemyType) = 8 then enemyName := Enemy8.Caption |
else enemyName := '???'; |
if lifes > 0 then |
StatusBar.SimpleText := ' ' + enemyName + ' - ' + status_lives + inttostr(lifes) |
841,7 → 833,6 |
else if Enemy5.Checked then result := etEnemyUFO |
else if Enemy6.Checked then result := etEnemyUFO2 |
else if Enemy7.Checked then result := etEnemyBoss |
else if Enemy8.Checked then result := etItemMedikit |
else result := etUnknown; |
end; |
|