//composant Freeware Version Beta à utiliser avec le DelphiX
//©1998 Congré Stéphane http://www.cdfrance.com/dbi/steph.htm
//pour afficher les fixhiers carte *.dxc
//pour afficher la carte n'oubliez pas d'utiliser 1 DxTimer
// et d'y ajouter dans le ontimer:
//  DxSpriteEngine1.Dead;
//  DxSpriteEngine1.draw;
//  DXDraw1.Flip;
unit DxMap;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  dxsprite,dxdraws;

type
  TDxMap = class(TComponent)
  private
  FEngine:TDxSpriteEngine;
  FLibrairieImage:TDxImageList;
      { Déclarations privées}
  protected
    { Déclarations protégées}
  public
    { Déclarations publiques}
    DecAcces,DecNoAcces,bonus:tsprite;
    //DecNoAcces:TBackgroundsprite;
  procedure DrawMap(FichierCarte:string);

  published
    { Déclarations publiées}
    property Engine:TDxSpriteEngine read FEngine write FEngine;
    property LibrairieImage:TDxImageList read FLibrairieImage write FLibrairieImage;
    end;

procedure Register;
type
TDecAcces=class(TimageSprite)
end;
TDecNoAcces=class(TimageSprite)
end;
TBonus=class(TImageSprite)
public
Reference:integer;
end;
implementation
procedure TDxMap.drawMap(FichierCarte:string);
var f:textfile;
var a,a1,a2,a3,a4,a5,a6,a7,a8,a9:string;
begin
if(Engine<>nil) and (LibrairieImage<>nil)then begin
  assignfile(f,FichierCarte);
  reset(f);

   readln(f,a );
   readln(f,a);

  while not Eof(F) do begin
      readln(f,a);
      readln(f,a1);
      readln(f,a2);
      readln(f,a3);
      readln(f,a4);
      readln(f,a5);
      readln(f,a6);
      readln(f,a7);
      readln(f,a8);
      readln(f,a9);
if(a9='Type:Decor')then begin
 with TBackgroundSprite.Create(Engine.Engine) do
begin
   SetMapSize(strtoint(a6), strtoint(a7)); //parcelle du décors (1x1)
   //chargement de l'image du décors
    Image := LibrairieImage.Items.Find(a1);
    Z := strtoint(a3);//position en profondeur
    x:=strtoint(a4)-image.Width div 2;
    y:=strtoint(a5)-image.height div 2;
    //width:=Image.PatternWidth;
    //height:=Image.PatternHeight;
    if(a2='Tile:Vrai')then
    tile:=true
    else
    tile:=false;
  end;
end;
if (a8='Accessible:Faux')and(a9='Type:Obstacle')then begin
DecNoAcces:=TDecNoAcces.create(Engine.engine);
with TDecNoAcces(DecNoAcces) do
  begin
  // SetMapSize(strtoint(a6), strtoint(a7)); //parcelle du décors (1x1)
   //chargement de l'image du décors
    Image := LibrairieImage.Items.Find(a1);
    Z := strtoint(a3);//position en profondeur
    x:=strtoint(a4)-image.Width div 2;
    y:=strtoint(a5)-image.height div 2;
    width:=Image.PatternWidth;
    height:=Image.PatternHeight;

   // if(a2='Tile:Vrai')then
   // tile:=true
   // else
   // tile:=false;
  end;
end;
if (a8='Accessible:Vrai') and(a9='Type:Obstacle')then begin
DecAcces:= TDecAcces.Create(Engine.Engine);
with TDecAcces(DecAcces) do
  begin
    Image := LibrairieImage.Items.Find(a1);
    Z := strtoint(a3);//position en profondeur
    x:=strtoint(a4)-image.Width div 2;
    y:=strtoint(a5)-image.height div 2;
    width:=Image.PatternWidth;
    height:=Image.PatternHeight;
   end;
end;
if (a9='Type:Bonus')then begin
Bonus:= TBonus.Create(Engine.Engine);
with TBonus(Bonus) do
  begin
    Image := LibrairieImage.Items.Find(a1);
    Z := strtoint(a3);//position en profondeur
    x:=strtoint(a4)-image.Width div 2;
    y:=strtoint(a5)-image.height div 2;
    width:=Image.PatternWidth;
    height:=Image.PatternHeight;
    reference:=StrToInt(a8);
   end;
end;


     end;
  closefile(f);
end;
end;
{$r Dxmap.res}
procedure Register;
begin
  RegisterComponents('DelphiXPlus', [TDxMap]);
end;

end.
 