Also...... hier die Kollisionsabfrage:
Delphi-Quellcode:
Procedure TMouseZ.DoCollision(Sprite: TSprite;
Var Done: Boolean);
Begin
(* Kollisionsliste!
50 = Schilder
60 = Eine Unit wurde geklickt! (Ein Thumb im Bau Menü)
70 = Ein Gebäude wurde geklickt (Ein Thumb im Bau Menü)
80 = Ein Special wurde geklickt (Ein Thumb im Bau Menü)
99 = Ein Stück der Map!
*)
If (Sprite
Is TMap)
Then AktColl := 99;
(*
If (Sprite Is TButtons) And (Edifices.Visible = True) Then
AktColl := 50;
*)
If (Sprite
Is TButtons)
Then AktColl := 50;
If (Sprite
Is TThumbUnits)
And (ThSold.Visible = True)
Then AktColl := 60;
If (Sprite
Is TThumbGeb)
And (ThIonCanon.Visible = True)
Then AktColl := 70;
If (Sprite
Is TThumbSpecials)
And (ThBiohazard.Visible = True)
Then
AktColl := 80;
AktSprite := Sprite
End;
Und hier wird das dann ausgewertet!
Delphi-Quellcode:
Procedure TfrmMain.DXDrawMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var
(* 1) Laufvariable
2) Der alte und der neue Name für das Bild, was geladen wird!
*)
I: Integer;
Alter, Neuer: String;
Begin
(* 1) Wenn der aktuelle SPrite leer ist, dann raus!
2) 50 bedeutet ist ist eines der Option - Schilder
3) Erstmal alle Schilder wieder auf standard!
4) Dann wird geprüf, ob der aktzelle ein 'Cho' (Choosen) vor dem namen
stehen hat. Wenn ja, kommt es weg, sonstr davor!
5) Das neue Bild wird zugewiesen!
*)
If AktSprite = Nil Then Exit;
Case AktColl Of
50:
Begin
End;
60:
Begin
End;
70:
Begin
End;
80:
Begin
End;
99:
Begin
End;
End;
End;
End;
Hab die Code Teile aus der Case Anweisung mal rausgenommen......