unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,AdDraws, AdClasses, AdTypes, PNGImage, AdSprites, StdCtrls;
type
//Eigener Raumschifftyp I
TFlieger1 =
class(TImageSprite)
private
FSelected:Boolean;
FPosition,FDestination:TPoint;
procedure SetSelection(Value:Boolean);
public
XSpeed:integer;
procedure Update;
constructor Create(AParent:TSprite);
override;
procedure Move(Destination: TPoint);
procedure Update;
override;
published
property Selected: Boolean
read FSelected
write FSelected;
end;
TForm1 =
class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
AdImageList:TAdImageList;
AdDraw:TAdDraw;
AFlieger1 :
Array[0..100]
of TFlieger1;
AdSpriteEngine:TSpriteEngine;
procedure Idle(Sender:TObject;
var Done:boolean);
{ Public declarations }
end;
var
Form1: TForm1;
i:integer;
Flieger1:TFLieger1;
TAnzahl : integer = 0;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
AdDraw := TAdDraw.Create(self);
AdDraw.DllName := '
main/AndorraDX93D.dll';
if AdDraw.Initialize
then
begin
Application.OnIdle := Idle;
AdImageList := TAdImageList.Create(AdDraw);
with AdImageList.Add('
flieger1')
do
begin
Texture.LoadGraphicFromFile('
anim/flieger1.png',true,clFuchsia);
PatternWidth := 128;
PatternHeight := 128;
end;
AdImageList.Restore;
AdSpriteEngine := TSpriteEngine.Create(
nil);
AdSpriteEngine.Surface := AdDraw;
Randomize;
end
else
begin
ShowMessage(AdDraw.GetLastError);
halt;
//<-- Schließt die komplette Anwendung
end;
end;
procedure TForm1.Idle(Sender: TObject;
var Done: boolean);
begin
if AdDraw.CanDraw
then //Wenn überhaupt auf das AdDraw gezeichnet werden kann dann...
begin
AdDraw.ClearSurface(clBlack);
//Füllt die Oberfläche mit schwarzer Farbe
AdDraw.BeginScene;
AdSpriteEngine.Draw;
AdSpriteEngine.Dead;
AdDraw.EndScene;
AdDraw.Flip;
//Präsentiert die gezeichneten Dinge auf dem Bildschirm.
end;
Done := false;
// Diese Zeile nicht vergessen, sonst wird der Code nur sporadisch ausgeführt.
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
AdDraw.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=TAnzahl;
AFlieger1[i]:= TFlieger1.Create(AdSpriteEngine);
AFlieger1[i].Image := AdImageList.Find('
flieger1');
inc(TAnzahl);
end;
Constructor TFlieger1.Create(AParent:TSprite);
var
i:integer;
begin
i:=TAnzahl;
if i<5
then begin
inherited;
X := 100*i;
Y := 90;
Z := 0;
end;
end;
procedure TFlieger1.SetSelection(Value: Boolean);
begin
FSelected:=Value;
end;
procedure TFlieger1.Move(Destination: TPoint);
begin
if Selected
then FDestination := Destination;
end;
procedure TFlieger1.Update;
begin
*
if (FPosition.X = FDestination.X)
and (FPosition.Y = FDestination.Y)
then
*
begin
* *
// Wenn Position erreicht wurde, Selektion entfernen
* * Selected := false;
*
end else
*
begin
* *
// Zum Ziel bewegen
* *
// Mit Geschwindigkeit von 1 Pixel pro Frame
* *
if FPosition.X > FDestination.X
then FPosition.X := FPosition.X - 1
else FPosition.X := FPosition.X + 1;
* *
if FPosition.Y > FDestination.Y
then FPosition.Y := FPosition.Y - 1
else FPosition.Y := FPosition.Y + 1;
*
end;
end;
end.