Ok ich habe es nun "hinbekommen".
Zuerst hab ich einfach eine neue SpriteEngine eingefügt. Hiernach hab ich einfach per DXSpriteEngine1.dead die alten Sprites "gelöscht, dann das DXDraw gefüllt (DXDraw1.Surface.Fill(0)) und anzeigen lassen (DXDraw1.Flip).
Nun hab ich wieder meine Level-Create Procedure aufgerufen, wobei hier aber die Sprites nun mit der neuen SpriteEngine ( DXSpriteEngine2 ) created. Anschließend noch drawen ( DXSpriteEngine2.Draw ) und erneut flipen, und siehe da das neue "Level" wird dargestellt.
So nun hab ich aber mal ne Frage:
Bei dem ersten Level war es der Fall, dass er die Sprites it dem Spieler mitbewegt hat ( mit DXTimer event ). Ich habe das selbe DXTimer-Event nochmal für die zweite SpriteEngine eingefügt, nur wird da nix bewegt. Kann mir jemand sagen wieso ? Unten hab ich ma den relevanten Code gepostet...
Gruß fabiO
Delphi-Quellcode:
{ Collision-Procedure, trifft Spieler auf "Haustür"... }
/////////////////////////////////////////////////////////////////////////////////////
procedure TSpieler.DoCollision(Sprite: TSprite; var Done: Boolean);
var Gold,Gold2 : Integer;
Sender : TObject;
i, j : Integer;
C : string;
Inneresl : array[0..19] of string;
begin
//////////////////// falls Spieler auf THausTuer trifft ... ////////////////////
if (Sprite is THausTuer) then
begin
Form1.DXSpriteEngine1.dead; // Alle Sprites löschen ( ich denk ma dass es so geht ? o_O )
Form1.DXDraw1.Surface.Fill(0); // Hintergrund der DXDraw-Oberfläche Schwarz
Form1.DXDraw1.Flip; // Oberfläche neu Zeichnen
{$INCLUDE Classes\HausInneresCreate.rpg}
Form1.DXSpriteEngine2.Draw; // Sprites anzeigen
Form1.DXDraw1.Flip; // Oberfläche neu Zeichnen
Form1.DXTimer1.Enabled := false; // DXTimer1 für DXSpritEngine1 ausschallten
Form1.DXTimer2.Enabled := true; // DXTimer2 für DXSpritEngine2 anschallten
end;
/////////////////////////////////////////////////////////////////////////////////////
{ DXTimer-Event, für die zweite DXSpriteEngine... }
procedure TForm1.DXTimer2Timer(Sender: TObject; LagCount: Integer);
begin
DXInput1.Update; // Aktuelle Input.States abfragen
DXSpriteEngine2.Move(1); // alle Sprites bewegen
DXDraw1.Surface.Fill(clGray); // Hintergrund der DXDraw-Oberfläche Schwarz
DXSpriteEngine2.Draw; // Sprites anzeigen
DXDraw1.Flip; // Oberfläche neu Zeichnen
end;
/////////////////////////////////////////////////////////////////////////////////////