Subversion Repositories spacemission

Rev

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

Rev 30 Rev 31
Line 4... Line 4...
4
 
4
 
5
uses
5
uses
6
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, MMSystem,
6
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, MMSystem,
7
  Dialogs, StdCtrls, ExtCtrls, Menus, DIB, DXClass, DXSprite, DXDraws,
7
  Dialogs, StdCtrls, ExtCtrls, Menus, DIB, DXClass, DXSprite, DXDraws,
8
  DXSounds, Spin, ComCtrls{$IF CompilerVersion >= 23.0}, System.UITypes,
8
  DXSounds, Spin, ComCtrls{$IF CompilerVersion >= 23.0}, System.UITypes,
9
  WinAPI.DirectDraw{$ENDIF}, DirectX, ComLevelReader;
9
  WinAPI.DirectDraw{$ENDIF}, DirectX, ComLevelReader, Global;
10
 
10
 
11
type
11
type
12
  TMainForm = class(TDXForm)
12
  TMainForm = class(TDXForm)
13
    MainMenu: TMainMenu;
13
    MainMenu: TMainMenu;
14
    Spiel: TMenuItem;
14
    Spiel: TMenuItem;
Line 82... Line 82...
82
    AltScrollPos: integer;
82
    AltScrollPos: integer;
83
    Boss: boolean;
83
    Boss: boolean;
84
    LevChanged: boolean;
84
    LevChanged: boolean;
85
    NumEnemys: integer;
85
    NumEnemys: integer;
86
    function SelectedEnemyType: TEnemyType;
86
    function SelectedEnemyType: TEnemyType;
-
 
87
    { Grafik-Routinen }
-
 
88
    function GetSpriteGraphic(Sprite: TSpaceMissionGraphicSprite): TPictureCollectionItem;
87
    { Level-Routinen }
89
    { Level-Routinen }
88
    procedure EnemyCreateSprite(x, y: integer; AEnemyType: TEnemyType; ALives: integer);
90
    procedure EnemyCreateSprite(x, y: integer; AEnemyType: TEnemyType; ALives: integer);
89
    procedure DestroyLevel;
91
    procedure DestroyLevel;
90
    procedure RefreshFromLevData;
92
    procedure RefreshFromLevData;
91
    procedure AnzeigeAct;
93
    procedure AnzeigeAct;
Line 101... Line 103...
101
  MainForm: TMainForm;
103
  MainForm: TMainForm;
102
 
104
 
103
implementation
105
implementation
104
 
106
 
105
uses
107
uses
106
  Global, LevSplash, LevSpeicherung, ComInfo, LevOptions;
108
  LevSplash, LevSpeicherung, ComInfo, LevOptions;
107
 
-
 
108
const
-
 
109
  RasterW = 48;
-
 
110
  RasterH = 32;
-
 
111
 
109
 
112
{$R *.DFM}
110
{$R *.DFM}
113
 
111
 
114
type
112
type
115
  TBackground = class(TBackgroundSprite)
113
  TBackground = class(TBackgroundSprite)
Line 150... Line 148...
150
end;
148
end;
151
 
149
 
152
constructor TEnemy.Create(AParent: TSprite; AEnemyType: TEnemyType; ALives: Integer);
150
constructor TEnemy.Create(AParent: TSprite; AEnemyType: TEnemyType; ALives: Integer);
153
begin
151
begin
154
  inherited Create(AParent);
152
  inherited Create(AParent);
155
  if AEnemyType = etEnemyAttacker then Image := MainForm.ImageList.Items.Find('Enemy-Attacker');
153
  if AEnemyType = etEnemyAttacker then Image := MainForm.GetSpriteGraphic(smgEnemyAttacker);
156
  if AEnemyType = etEnemyAttacker2 then Image := MainForm.ImageList.Items.Find('Enemy-Attacker2');
154
  if AEnemyType = etEnemyAttacker2 then Image := MainForm.GetSpriteGraphic(smgEnemyAttacker2);
157
  if AEnemyType = etEnemyAttacker3 then Image := MainForm.ImageList.Items.Find('Enemy-Attacker3');
155
  if AEnemyType = etEnemyAttacker3 then Image := MainForm.GetSpriteGraphic(smgEnemyAttacker3);
158
  if AEnemyType = etEnemyMeteor then Image := MainForm.ImageList.Items.Find('Enemy-Meteor');
156
  if AEnemyType = etEnemyMeteor then Image := MainForm.GetSpriteGraphic(smgEnemyMeteor);
159
  if AEnemyType = etEnemyUFO then Image := MainForm.ImageList.Items.Find('Enemy-Disk');
157
  if AEnemyType = etEnemyUFO then Image := MainForm.GetSpriteGraphic(smgEnemyDisk);
160
  if AEnemyType = etEnemyUFO2 then Image := MainForm.ImageList.Items.Find('Enemy-Disk2');
158
  if AEnemyType = etEnemyUFO2 then Image := MainForm.GetSpriteGraphic(smgEnemyDisk2);
161
  if AEnemyType = etEnemyBoss then Image := MainForm.ImageList.Items.Find('Enemy-Boss');
159
  if AEnemyType = etEnemyBoss then Image := MainForm.GetSpriteGraphic(smgEnemyBoss);
162
 
160
 
163
  if AEnemyType = etEnemyMeteor then FLives := 0 else FLives := ALives;
161
  if AEnemyType = etEnemyMeteor then FLives := 0 else FLives := ALives;
164
  FEnemyType := AEnemyType;
162
  FEnemyType := AEnemyType;
165
  Width := Image.Width;
163
  Width := Image.Width;
166
  Height := Image.Height;
164
  Height := Image.Height;
Line 169... Line 167...
169
 
167
 
170
{ TMainForm }
168
{ TMainForm }
171
 
169
 
172
procedure TMainForm.DXInit;
170
procedure TMainForm.DXInit;
173
begin
171
begin
174
  Imagelist.Items.LoadFromFile(FDirectory+'DirectX\Graphic.dxg');
172
  Imagelist.Items.LoadFromFile(OwnDirectory+'DirectX\Graphics.dxg');
175
  ImageList.Items.MakeColorTable;
173
  ImageList.Items.MakeColorTable;
176
  DXDraw.ColorTable := ImageList.Items.ColorTable;
174
  DXDraw.ColorTable := ImageList.Items.ColorTable;
177
  DXDraw.DefColorTable := ImageList.Items.ColorTable;
175
  DXDraw.DefColorTable := ImageList.Items.ColorTable;
178
  DXDraw.UpdatePalette;
176
  DXDraw.UpdatePalette;
179
  DXDraw.Initialize;
177
  DXDraw.Initialize;
Line 344... Line 342...
344
  sleep(500);
342
  sleep(500);
345
  //PlayerSprite
343
  //PlayerSprite
346
  with TBackground.Create(SpriteEngine.Engine) do
344
  with TBackground.Create(SpriteEngine.Engine) do
347
  begin
345
  begin
348
    SetMapSize(1, 1);
346
    SetMapSize(1, 1);
349
    Image := mainform.ImageList.Items.Find('Star3');
347
    Image := MainForm.GetSpriteGraphic(smgStar3);
350
    Z := -13;
348
    Z := -13;
351
    Y := 40;
349
    Y := 40;
352
    Tile := True;
350
    Tile := True;
353
  end;
351
  end;
354
  with TBackground.Create(SpriteEngine.Engine) do
352
  with TBackground.Create(SpriteEngine.Engine) do
355
  begin
353
  begin
356
    SetMapSize(1, 1);
354
    SetMapSize(1, 1);
357
    Image := mainform.ImageList.Items.Find('Star2');
355
    Image := MainForm.GetSpriteGraphic(smgStar2);
358
    Z := -12;
356
    Z := -12;
359
    Y := 30;
357
    Y := 30;
360
    Tile := True;
358
    Tile := True;
361
  end;
359
  end;
362
  with TBackground.Create(SpriteEngine.Engine) do
360
  with TBackground.Create(SpriteEngine.Engine) do
363
  begin
361
  begin
364
    SetMapSize(1, 1);
362
    SetMapSize(1, 1);
365
    Image := mainform.ImageList.Items.Find('Star1');
363
    Image := MainForm.GetSpriteGraphic(smgStar1);
366
    Z := -11;
364
    Z := -11;
367
    Y := 10;
365
    Y := 10;
368
    Tile := True;
366
    Tile := True;
369
  end;
367
  end;
370
  with TBackground.Create(SpriteEngine.Engine) do
368
  with TBackground.Create(SpriteEngine.Engine) do
371
  begin
369
  begin
372
    SetMapSize(1, 1);
370
    SetMapSize(1, 1);
373
    Image := mainform.ImageList.Items.Find('Matrix');
371
    Image := MainForm.GetSpriteGraphic(smgMatrix);
374
    Z := -10;
372
    Z := -10;
375
    Tile := True;
373
    Tile := True;
376
  end;
374
  end;
377
  {with TBackground.Create(SpriteEngine.Engine) do
375
  {with TBackground.Create(SpriteEngine.Engine) do
378
  begin
376
  begin
Line 457... Line 455...
457
 
455
 
458
  dxtimer.Enabled := true;
456
  dxtimer.Enabled := true;
459
  dxtimer.ActiveOnly := true;
457
  dxtimer.ActiveOnly := true;
460
end;
458
end;
461
 
459
 
-
 
460
function TMainForm.GetSpriteGraphic(
-
 
461
  Sprite: TSpaceMissionGraphicSprite): TPictureCollectionItem;
-
 
462
begin
-
 
463
  if (Sprite<>smgNone) and (imagelist.Items.Count >= Ord(Sprite)) then
-
 
464
    result := imagelist.Items.Items[Ord(Sprite)-1]
-
 
465
  else
-
 
466
    result := nil;
-
 
467
end;
-
 
468
 
462
procedure TMainForm.InformationenClick(Sender: TObject);
469
procedure TMainForm.InformationenClick(Sender: TObject);
463
begin
470
begin
464
  mainform.dxtimer.enabled := false;
471
  mainform.dxtimer.enabled := false;
465
  InfoForm.showmodal;
472
  InfoForm.showmodal;
466
  mainform.dxtimer.enabled := true;
473
  mainform.dxtimer.enabled := true;