Subversion Repositories spacemission

Rev

Rev 3 | Rev 6 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3 Rev 4
Line 3... Line 3...
3
interface
3
interface
4
 
4
 
5
uses
5
uses
6
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, MMSystem, Dialogs,
6
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, MMSystem, Dialogs,
7
  StdCtrls, ExtCtrls, Menus, DIB, DXClass, DXSprite, DXDraws, DXInput,
7
  StdCtrls, ExtCtrls, Menus, DIB, DXClass, DXSprite, DXDraws, DXInput,
8
  DXSounds, INIFiles, ShellAPI, wininet;
8
  DXSounds, INIFiles, ShellAPI, wininet, Winapi.DirectDraw, System.UITypes;
9
 
9
 
10
type
10
type
11
  TGameScene = (
11
  TGameScene = (
12
    gsNone,
12
    gsNone,
13
    gsTitle,
13
    gsTitle,
Line 211... Line 211...
211
    OptionMusic: TMenuItem;
211
    OptionMusic: TMenuItem;
212
    Leer2: TMenuItem;
212
    Leer2: TMenuItem;
213
    Leer4: TMenuItem;
213
    Leer4: TMenuItem;
214
    Hilfe: TMenuItem;
214
    Hilfe: TMenuItem;
215
    OptionSound: TMenuItem;
215
    OptionSound: TMenuItem;
216
    Mitarbeiter: TMenuItem;
-
 
217
    Leer3: TMenuItem;
216
    Leer3: TMenuItem;
218
    Spielstand: TMenuItem;
217
    Spielstand: TMenuItem;
219
    Leer5: TMenuItem;
218
    Leer5: TMenuItem;
220
    Neustart: TMenuItem;
219
    Neustart: TMenuItem;
221
    OptionBreitbild: TMenuItem;
220
    OptionBreitbild: TMenuItem;
Line 241... Line 240...
241
    procedure GamePauseClick(Sender: TObject);
240
    procedure GamePauseClick(Sender: TObject);
242
    procedure BeendenClick(Sender: TObject);
241
    procedure BeendenClick(Sender: TObject);
243
    procedure OptionSoundClick(Sender: TObject);
242
    procedure OptionSoundClick(Sender: TObject);
244
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
243
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
245
    procedure OptionMusicClick(Sender: TObject);
244
    procedure OptionMusicClick(Sender: TObject);
246
    procedure MitarbeiterClick(Sender: TObject);
-
 
247
    procedure SpielstandClick(Sender: TObject);
245
    procedure SpielstandClick(Sender: TObject);
248
    procedure NeustartClick(Sender: TObject);
246
    procedure NeustartClick(Sender: TObject);
249
    procedure OptionBreitbildClick(Sender: TObject);
247
    procedure OptionBreitbildClick(Sender: TObject);
250
    procedure LeichtClick(Sender: TObject);
248
    procedure LeichtClick(Sender: TObject);
251
    procedure MittelClick(Sender: TObject);
249
    procedure MittelClick(Sender: TObject);
Line 331... Line 329...
331
 
329
 
332
var
330
var
333
  MainForm: TMainForm;
331
  MainForm: TMainForm;
334
 
332
 
335
const
333
const
-
 
334
  // TODO: ini file
336
  conleicht = 650 div 60; // 10
335
  conleicht = 650 div 60; // 10
337
  conmittel = 1000 div 60; // 16
336
  conmittel = 1000 div 60; // 16
338
  conschwer = 1350 div 60; // 22
337
  conschwer = 1350 div 60; // 22
339
  conmaster = 2000 div 60; // 33
338
  conmaster = 2000 div 60; // 33
340
  lives = 6;
339
  lives = 6;
341
 
340
 
342
implementation
341
implementation
343
 
342
 
344
uses
343
uses
345
  GamSplash, GamSpeicherung, ComInfo, ComText, GamCheat, Global;
344
  GamSplash, GamSpeicherung, ComInfo, GamCheat, Global;
346
 
345
 
347
resourcestring
346
resourcestring
348
  FileError = 'Die Datei kann von SpaceMission nicht geöffnet werden!';
347
  FileError = 'Die Datei kann von SpaceMission nicht geöffnet werden!';
349
 
348
 
350
{$R *.DFM}
349
{$R *.DFM}
351
 
350
 
352
{$R WindowsXP.res}
-
 
353
 
-
 
354
var // TODO: irgendwo hinpacken. irgendwo!!!
351
var // TODO: irgendwo hinpacken. irgendwo!!!
355
  EnemyAdventTable: array[0..9999] of TEnemyAdvent; // TODO: dyn
352
  EnemyAdventTable: array[0..9999] of TEnemyAdvent; // TODO: dyn
356
  Crash2, ec: integer;
353
  Crash2, ec: integer;
357
  BossExists, Crash, crashsound: boolean;
354
  BossExists, Crash, crashsound: boolean;
358
  pos: array[1..4] of integer;
355
  pos: array[1..4] of integer;
Line 371... Line 368...
371
  PLAYER_MODE_DEAD = 1;
368
  PLAYER_MODE_DEAD = 1;
372
  PLAYER_MODE_DEAD_VANISHED = 2;
369
  PLAYER_MODE_DEAD_VANISHED = 2;
373
  PLAYER_MODE_FLYAWAY = 3;
370
  PLAYER_MODE_FLYAWAY = 3;
374
  PLAYER_MODE_ENTER = 4;
371
  PLAYER_MODE_ENTER = 4;
375
 
372
 
-
 
373
  DEFAULT_ANIMSPEED = 15/1000;
-
 
374
 
376
// TODO: Code komplett überarbeiten. Bessere Ableitungen machen
375
// TODO: Code komplett überarbeiten. Bessere Ableitungen machen
377
 
376
 
378
constructor TPlayerSprite.Create(AParent: TSprite);
377
constructor TPlayerSprite.Create(AParent: TSprite);
379
begin
378
begin
380
  inherited Create(AParent);
379
  inherited Create(AParent);
Line 384... Line 383...
384
  X := -70{20};
383
  X := -70{20};
385
  Y := mainform.dxdraw.surfaceHeight / 2 - (height / 2);
384
  Y := mainform.dxdraw.surfaceHeight / 2 - (height / 2);
386
  Z := 2;
385
  Z := 2;
387
  AnimCount := Image.PatternCount;
386
  AnimCount := Image.PatternCount;
388
  AnimLooped := True;
387
  AnimLooped := True;
389
  AnimSpeed := 15/1000;
388
  AnimSpeed := DEFAULT_ANIMSPEED;
390
  FMode := PLAYER_MODE_ENTER;
389
  FMode := PLAYER_MODE_ENTER;
391
end;
390
end;
392
 
391
 
393
procedure TPlayerSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
392
procedure TPlayerSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
394
begin
393
begin
Line 409... Line 408...
409
        Image := MainForm.ImageList.Items.Find('Explosion');
408
        Image := MainForm.ImageList.Items.Find('Explosion');
410
        Width := Image.Width;
409
        Width := Image.Width;
411
        Height := Image.Height;
410
        Height := Image.Height;
412
        AnimCount := Image.PatternCount;
411
        AnimCount := Image.PatternCount;
413
        AnimLooped := False;
412
        AnimLooped := False;
414
        AnimSpeed := 15/1000;
413
        AnimSpeed := DEFAULT_ANIMSPEED;
415
        AnimPos := 0;
414
        AnimPos := 0;
416
      end;
415
      end;
417
    end
416
    end
418
    else
417
    else
419
    begin
418
    begin
Line 521... Line 520...
521
    if not OptionBreitBild.checked then
520
    if not OptionBreitBild.checked then
522
    begin
521
    begin
523
      dxdraw.autosize := false;
522
      dxdraw.autosize := false;
524
      dxdraw.Top := 0;
523
      dxdraw.Top := 0;
525
      dxdraw.Left := 0;
524
      dxdraw.Left := 0;
526
      dxdraw.width := 640;
525
      dxdraw.width := 640;    // TODO: besser die dimensionen des fensters
527
      dxdraw.height := 480;
526
      dxdraw.height := 480;
528
      dxdraw.surfacewidth := 640;
527
      dxdraw.surfacewidth := 640;
529
      dxdraw.surfaceheight := 480;
528
      dxdraw.surfaceheight := 480;
530
    end
529
    end
531
    else dxdraw.autosize := true;
530
    else dxdraw.autosize := true;
Line 543... Line 542...
543
  Z := 2;
542
  Z := 2;
544
  Width := Image.Width;
543
  Width := Image.Width;
545
  Height := Image.Height;
544
  Height := Image.Height;
546
  AnimCount := Image.PatternCount;
545
  AnimCount := Image.PatternCount;
547
  AnimLooped := True;
546
  AnimLooped := True;
548
  AnimSpeed := 15/1000;
547
  AnimSpeed := DEFAULT_ANIMSPEED;
549
  MainForm.PlaySound('Shoot', False);
548
  MainForm.PlaySound('Shoot', False);
550
end;
549
end;
551
 
550
 
552
destructor TTamaSprite.Destroy;
551
destructor TTamaSprite.Destroy;
553
begin
552
begin
Line 665... Line 664...
665
  Image := MainForm.ImageList.Items.Find('Explosion');
664
  Image := MainForm.ImageList.Items.Find('Explosion');
666
  Width := Image.Width;
665
  Width := Image.Width;
667
  Height := Image.Height;
666
  Height := Image.Height;
668
  AnimCount := Image.PatternCount;
667
  AnimCount := Image.PatternCount;
669
  AnimLooped := True;
668
  AnimLooped := True;
670
  AnimSpeed := 15/1000;
669
  AnimSpeed := DEFAULT_ANIMSPEED;
671
  AnimPos := Random(AnimCount);
670
  AnimPos := Random(AnimCount);
672
end;
671
end;
673
 
672
 
674
procedure TExplosion.DoMove(MoveCount: Integer);
673
procedure TExplosion.DoMove(MoveCount: Integer);
675
begin
674
begin
Line 684... Line 683...
684
  Image := MainForm.ImageList.Items.Find('Bounce2');
683
  Image := MainForm.ImageList.Items.Find('Bounce2');
685
  Width := Image.Width;
684
  Width := Image.Width;
686
  Height := Image.Height;
685
  Height := Image.Height;
687
  AnimCount := Image.PatternCount;
686
  AnimCount := Image.PatternCount;
688
  AnimLooped := True;
687
  AnimLooped := True;
689
  AnimSpeed := 15/1000;
688
  AnimSpeed := DEFAULT_ANIMSPEED;
690
  MainForm.PlaySound('Shoot', False);
689
  MainForm.PlaySound('Shoot', False);
691
end;
690
end;
692
 
691
 
693
procedure TEnemyTama.DoMove(MoveCount: Integer);
692
procedure TEnemyTama.DoMove(MoveCount: Integer);
694
begin
693
begin
Line 720... Line 719...
720
  Image := MainForm.ImageList.Items.Find('Enemy-disk');
719
  Image := MainForm.ImageList.Items.Find('Enemy-disk');
721
  Width := Image.Width;
720
  Width := Image.Width;
722
  Height := Image.Height;
721
  Height := Image.Height;
723
  AnimCount := Image.PatternCount;
722
  AnimCount := Image.PatternCount;
724
  AnimLooped := True;
723
  AnimLooped := True;
725
  AnimSpeed := 15/1000;
724
  AnimSpeed := DEFAULT_ANIMSPEED;
726
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
725
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
727
end;
726
end;
728
 
727
 
729
constructor TEnemy.Create(AParent: TSprite);
728
constructor TEnemy.Create(AParent: TSprite);
730
begin
729
begin
Line 750... Line 749...
750
    Image := MainForm.ImageList.Items.Find('Explosion');
749
    Image := MainForm.ImageList.Items.Find('Explosion');
751
    Width := Image.Width;
750
    Width := Image.Width;
752
    Height := Image.Height;
751
    Height := Image.Height;
753
    AnimCount := Image.PatternCount;
752
    AnimCount := Image.PatternCount;
754
    AnimLooped := False;
753
    AnimLooped := False;
755
    AnimSpeed := 15/1000;
754
    AnimSpeed := DEFAULT_ANIMSPEED;
756
    AnimPos := 0;
755
    AnimPos := 0;
757
  end else
756
  end else
758
  begin
757
  begin
759
    MainForm.PlaySound('Hit', False);
758
    MainForm.PlaySound('Hit', False);
760
    Inc(MainForm.FScore, 100);
759
    Inc(MainForm.FScore, 100);
Line 800... Line 799...
800
    Image := MainForm.ImageList.Items.Find('Explosion');
799
    Image := MainForm.ImageList.Items.Find('Explosion');
801
    Width := Image.Width;
800
    Width := Image.Width;
802
    Height := Image.Height;
801
    Height := Image.Height;
803
    AnimCount := Image.PatternCount;
802
    AnimCount := Image.PatternCount;
804
    AnimLooped := False;
803
    AnimLooped := False;
805
    AnimSpeed := 15/1000;
804
    AnimSpeed := DEFAULT_ANIMSPEED;
806
    AnimPos := 0;
805
    AnimPos := 0;
807
  end else
806
  end else
808
  begin
807
  begin
809
    MainForm.PlaySound('Hit', False);
808
    MainForm.PlaySound('Hit', False);
810
    Inc(MainForm.FScore, 100);
809
    Inc(MainForm.FScore, 100);
Line 817... Line 816...
817
  Image := MainForm.ImageList.Items.Find('Enemy-disk2');
816
  Image := MainForm.ImageList.Items.Find('Enemy-disk2');
818
  Width := Image.Width;
817
  Width := Image.Width;
819
  Height := Image.Height;
818
  Height := Image.Height;
820
  AnimCount := Image.PatternCount;
819
  AnimCount := Image.PatternCount;
821
  AnimLooped := True;
820
  AnimLooped := True;
822
  AnimSpeed := 15/1000;
821
  AnimSpeed := DEFAULT_ANIMSPEED;
823
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
822
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
824
end;
823
end;
825
 
824
 
826
procedure TEnemyUFO.DoMove(MoveCount: Integer);
825
procedure TEnemyUFO.DoMove(MoveCount: Integer);
827
begin
826
begin
Line 845... Line 844...
845
  Image := MainForm.ImageList.Items.Find('Enemy-Attacker');
844
  Image := MainForm.ImageList.Items.Find('Enemy-Attacker');
846
  Width := Image.Width;
845
  Width := Image.Width;
847
  Height := Image.Height;
846
  Height := Image.Height;
848
  AnimCount := Image.PatternCount;
847
  AnimCount := Image.PatternCount;
849
  AnimLooped := True;
848
  AnimLooped := True;
850
  AnimSpeed := 15/1000;
849
  AnimSpeed := DEFAULT_ANIMSPEED;
851
  PixelCheck := True;
850
  PixelCheck := True;
852
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
851
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
853
end;
852
end;
854
 
853
 
855
procedure TEnemyAttacker.HitEnemy(ADead: Boolean);
854
procedure TEnemyAttacker.HitEnemy(ADead: Boolean);
Line 863... Line 862...
863
    Image := MainForm.ImageList.Items.Find('Explosion');
862
    Image := MainForm.ImageList.Items.Find('Explosion');
864
    Width := Image.Width;
863
    Width := Image.Width;
865
    Height := Image.Height;
864
    Height := Image.Height;
866
    AnimCount := Image.PatternCount;
865
    AnimCount := Image.PatternCount;
867
    AnimLooped := False;
866
    AnimLooped := False;
868
    AnimSpeed := 15/1000;
867
    AnimSpeed := DEFAULT_ANIMSPEED;
869
    AnimPos := 0;
868
    AnimPos := 0;
870
  end else
869
  end else
871
  begin
870
  begin
872
    MainForm.PlaySound('Hit', False);
871
    MainForm.PlaySound('Hit', False);
873
    Inc(MainForm.FScore, 100);
872
    Inc(MainForm.FScore, 100);
Line 897... Line 896...
897
  Height := Image.Height;
896
  Height := Image.Height;
898
  BossExists := true;
897
  BossExists := true;
899
  MainForm.PlayMusic(mtBoss);
898
  MainForm.PlayMusic(mtBoss);
900
  AnimCount := Image.PatternCount;
899
  AnimCount := Image.PatternCount;
901
  AnimLooped := True;
900
  AnimLooped := True;
902
  AnimSpeed := 15/1000;
901
  AnimSpeed := DEFAULT_ANIMSPEED;
903
  PixelCheck := True;
902
  PixelCheck := True;
904
  Collisioned := False;
903
  Collisioned := False;
905
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
904
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
906
  MainForm.FBossLife := FLife;
905
  MainForm.FBossLife := FLife;
907
  waiter1 := 0;
906
  waiter1 := 0;
Line 1004... Line 1003...
1004
  Image := MainForm.ImageList.Items.Find('Enemy-Attacker2');
1003
  Image := MainForm.ImageList.Items.Find('Enemy-Attacker2');
1005
  Width := Image.Width;
1004
  Width := Image.Width;
1006
  Height := Image.Height;
1005
  Height := Image.Height;
1007
  AnimCount := Image.PatternCount;
1006
  AnimCount := Image.PatternCount;
1008
  AnimLooped := True;
1007
  AnimLooped := True;
1009
  AnimSpeed := 15/1000;
1008
  AnimSpeed := DEFAULT_ANIMSPEED;
1010
  PixelCheck := True;
1009
  PixelCheck := True;
1011
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
1010
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
1012
end;
1011
end;
1013
 
1012
 
1014
procedure TEnemyAttacker2.HitEnemy(ADead: Boolean);
1013
procedure TEnemyAttacker2.HitEnemy(ADead: Boolean);
Line 1022... Line 1021...
1022
    Image := MainForm.ImageList.Items.Find('Explosion');
1021
    Image := MainForm.ImageList.Items.Find('Explosion');
1023
    Width := Image.Width;
1022
    Width := Image.Width;
1024
    Height := Image.Height;
1023
    Height := Image.Height;
1025
    AnimCount := Image.PatternCount;
1024
    AnimCount := Image.PatternCount;
1026
    AnimLooped := False;
1025
    AnimLooped := False;
1027
    AnimSpeed := 15/1000;
1026
    AnimSpeed := DEFAULT_ANIMSPEED;
1028
    AnimPos := 0;
1027
    AnimPos := 0;
1029
  end else
1028
  end else
1030
  begin
1029
  begin
1031
    MainForm.PlaySound('Hit', False);
1030
    MainForm.PlaySound('Hit', False);
1032
    Inc(MainForm.FScore, 100);
1031
    Inc(MainForm.FScore, 100);
Line 1094... Line 1093...
1094
    Image := MainForm.ImageList.Items.Find('Explosion');
1093
    Image := MainForm.ImageList.Items.Find('Explosion');
1095
    Width := Image.Width;
1094
    Width := Image.Width;
1096
    Height := Image.Height;
1095
    Height := Image.Height;
1097
    AnimCount := Image.PatternCount;
1096
    AnimCount := Image.PatternCount;
1098
    AnimLooped := False;
1097
    AnimLooped := False;
1099
    AnimSpeed := 15/1000;
1098
    AnimSpeed := DEFAULT_ANIMSPEED;
1100
    AnimPos := 0;
1099
    AnimPos := 0;
1101
  end else
1100
  end else
1102
  begin
1101
  begin
1103
    MainForm.PlaySound('Hit', False);
1102
    MainForm.PlaySound('Hit', False);
1104
    Inc(MainForm.FScore, 100);
1103
    Inc(MainForm.FScore, 100);
Line 1137... Line 1136...
1137
  Image := MainForm.ImageList.Items.Find('Enemy-Attacker3');
1136
  Image := MainForm.ImageList.Items.Find('Enemy-Attacker3');
1138
  Width := Image.Width;
1137
  Width := Image.Width;
1139
  Height := Image.Height;
1138
  Height := Image.Height;
1140
  AnimCount := Image.PatternCount;
1139
  AnimCount := Image.PatternCount;
1141
  AnimLooped := True;
1140
  AnimLooped := True;
1142
  AnimSpeed := 15/1000;
1141
  AnimSpeed := DEFAULT_ANIMSPEED;
1143
  PixelCheck := True;
1142
  PixelCheck := True;
1144
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
1143
  FLife := EnemyAdventTable[mainform.FEnemyAdventPos].lifes;
1145
end;
1144
end;
1146
 
1145
 
1147
function TMainForm.SoundKarte: boolean;
1146
function TMainForm.SoundKarte: boolean;
Line 1178... Line 1177...
1178
  dxdraw.Display.FixedBitCount := False;
1177
  dxdraw.Display.FixedBitCount := False;
1179
  dxdraw.Display.FixedRatio := False;
1178
  dxdraw.Display.FixedRatio := False;
1180
  dxdraw.Display.FixedSize := False;
1179
  dxdraw.Display.FixedSize := False;
1181
  dxdraw.Display.Height := 600;
1180
  dxdraw.Display.Height := 600;
1182
  dxdraw.Display.Width := 800;
1181
  dxdraw.Display.Width := 800;
1183
  dxdraw.Options := [doAllowReboot, doWaitVBlank, doAllowPalette256, doCenter, doRetainedMode, doHardware, doSelectDriver];
1182
  dxdraw.Options := [doAllowReboot, doWaitVBlank, doAllowPalette256, doCenter, {doRetainedMode,} doHardware, doSelectDriver];
1184
  dxdraw.TabOrder := 0;
1183
  dxdraw.TabOrder := 0;
1185
  dxdraw.Visible := true;
1184
  dxdraw.Visible := true;
1186
  dxdraw.OnFinalize := DXDrawFinalize;
1185
  dxdraw.OnFinalize := DXDrawFinalize;
1187
  dxdraw.OnInitialize := DXDrawInitialize;
1186
  dxdraw.OnInitialize := DXDrawInitialize;
1188
  dxdraw.OnInitializing := DXDrawInitializing;
1187
  dxdraw.OnInitializing := DXDrawInitializing;
Line 2341... Line 2340...
2341
  master.checked := true;
2340
  master.checked := true;
2342
  FInterval := giMaster;
2341
  FInterval := giMaster;
2343
  writeoptions;
2342
  writeoptions;
2344
end;
2343
end;
2345
 
2344
 
2346
procedure TMainForm.MitarbeiterClick(Sender: TObject);
-
 
2347
resourcestring
-
 
2348
  LNG_NOTFOUND = 'Die Datei "Texte\Mitwirkende.txt" ist nicht mehr vorhanden. Die Aktion wird abgebrochen!';
-
 
2349
const
-
 
2350
  MitwirkendeTxt = 'Texte\Mitwirkende.txt';
-
 
2351
begin
-
 
2352
  if not fileexists(fdirectory+MitwirkendeTxt) then
-
 
2353
  begin
-
 
2354
    MessageDLG(Format(LNG_NOTFOUND, [MitwirkendeTxt]), mtWarning, [mbOK], 0);
-
 
2355
    Exit;
-
 
2356
  end;
-
 
2357
 
-
 
2358
  TextForm.memo1.lines.loadfromfile(FDirectory+MitwirkendeTxt);
-
 
2359
 
-
 
2360
  dxtimer.enabled := false;
-
 
2361
  TextForm.ShowModal;
-
 
2362
  if not mainform.gamepause.checked then mainform.dxtimer.enabled := true;
-
 
2363
end;
-
 
2364
 
-
 
2365
procedure TEnemyMeteor.DoMove(MoveCount: Integer);
2345
procedure TEnemyMeteor.DoMove(MoveCount: Integer);
2366
begin
2346
begin
2367
  X := X - MoveCount*(250/1000);
2347
  X := X - MoveCount*(250/1000);
2368
  if X < -Width then Dead;
2348
  if X < -Width then Dead;
2369
end;
2349
end;
Line 2402... Line 2382...
2402
  Image := MainForm.ImageList.Items.Find('Enemy-Meteor');
2382
  Image := MainForm.ImageList.Items.Find('Enemy-Meteor');
2403
  Width := Image.Width;
2383
  Width := Image.Width;
2404
  Height := Image.Height;
2384
  Height := Image.Height;
2405
  AnimCount := Image.PatternCount;
2385
  AnimCount := Image.PatternCount;
2406
  AnimLooped := True;
2386
  AnimLooped := True;
2407
  AnimSpeed := 15/1000;
2387
  AnimSpeed := DEFAULT_ANIMSPEED;
2408
  PixelCheck := True;
2388
  PixelCheck := True;
2409
end;
2389
end;
2410
 
2390
 
2411
procedure TMainForm.SpielstandClick(Sender: TObject);
2391
procedure TMainForm.SpielstandClick(Sender: TObject);
2412
begin
2392
begin