unit ddidextut21;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Ddidex, StdCtrls, ExtCtrls, DInput;

type
  TForm1 = class(TForm)
    DDIDEX1: TDDIDEX;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
    fx:Array[0..2] of TDDIDFFX;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  //オートセンタリングのカット、FFが働いているのがわかりやすいように
  DDIDEX1.AutoCenter[DI_JOY1]:=False;


  fx[0]:=TDDIDFFX.Create(DDIDEX1);        //FFXオブジェクトの作成
  fx[0].LoadFromFile('machineGun.ffx');   //読みこみ
  fx[0].Apply(DI_JOY1);                   //一台目のジョイスティックに乗っける。
  fx[0].TriggerButton:=DI_B1;             //ボタン1と連動

  fx[1]:=TDDIDFFX.Create(DDIDEX1);
  fx[1].LoadFromFile('chainSaw.ffx');
  fx[1].Apply(DI_JOY1);
  fx[1].TriggerButton:=DI_B2;             //ボタン2と連動

  fx[2]:=TDDIDFFX.Create(DDIDEX1);
  fx[2].LoadFromFile('gomasuri.ffx');
  fx[2].Apply(DI_JOY1);
  fx[2].TriggerButton:=DI_B3;             //ボタン3と連動

end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //左クリックで再生開始…再生回数は一回、既存のFFエフェクトを止めない
  if Button = mbLeft then
    fx[0].Start(1, False);

  //エフェクトの停止
  if Button = mbRight then
    fx[0].Stop;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if fx[0].Applied then
    fx[0].Unload
  else
   fx[0].Apply(DI_JOY1);
end;

end.
