亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dxinput.pas

?? 雙人對戰 俄羅斯訪快
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    FAttackLevel := Value;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetAttackTime(Value: Integer);
begin
  if Value<0 then Value := 0;

  if FAttackTime<>Value then
  begin
    FAttackTime := Value;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetCondition(Value: TPoint);
begin
  with Value do
  begin
    if X<-10000 then X := -10000;
    if X>+10000 then X := +10000;

    if Y<-10000 then Y := -10000;
    if Y>+10000 then Y := +10000;
  end;

  if not CompareMem(@FCondition, @Value, SizeOf(FCondition)) then
  begin
    FCondition := Value;

    if HasInterface then
      ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetConstant(Value: TPoint);
begin
  with Value do
  begin
    if X<-10000 then X := -10000;
    if X>+10000 then X := +10000;

    if Y<-10000 then Y := -10000;
    if Y>+10000 then Y := +10000;
  end;

  if not CompareMem(@FConstant, @Value, SizeOf(FConstant)) then
  begin
    FConstant := Value;

    if HasInterface then
      ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetEffectType(Value: TForceFeedbackEffectType);
begin
  if FEffectType<>Value then
  begin
    FEffectType := Value;
    Stop;
    CreateEffect;
  end;
end;

procedure TForceFeedbackEffect.SetFadeLevel(Value: Integer);
begin
  if Value<0 then Value := 0;
  if Value>10000 then Value := 10000;

  if FFadeLevel<>Value then
  begin
    FFadeLevel := Value;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetFadeTime(Value: Integer);
begin
  if Value<0 then Value := 0;

  if FFadeTime<>Value then
  begin
    FFadeTime := Value;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetPeriod(Value: Integer);
begin
  if Value<0 then Value := 0;

  if FPeriod<>Value then
  begin
    FPeriod := Value;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetPower(Value: Integer);
begin
  if Value<0 then Value := 0;
  if Value>10000 then Value := 10000;

  if FPower<>Value then
  begin
    FPower := Value;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetTime(Value: Integer);
begin
  if (Value<>-1) and (Value<0) then Value := 0;

  if FTime<>Value then
  begin
    FTime := Value;
    Stop;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.SetStartDelayTime(Value: Integer);
begin
  if Value<0 then Value := 0;

  if FStartDelayTime<>Value then
  begin
    FStartDelayTime := Value;
    Stop;
    ChangeEffect;
  end;
end;

procedure TForceFeedbackEffect.Start;

  procedure StartEffect(Effect: IDirectInputEffect);
  var
    hr: HRESULT;
  begin
    if Effect<>nil then
    begin
      hr := Effect.Start(1, 0);
      if (hr=DIERR_INPUTLOST) or (hr=DIERR_NOTACQUIRED) then
      begin
        FRoot.FInput.Acquire;
        Effect.Start(1, 0);
      end;
    end;
  end;

var
  i: Integer;
begin
  for i:=0 to Count-1 do
    Effects[i].Start;

  if not HasInterface then
  begin
    CreateEffect;
    if not HasInterface then Exit;
  end;

  StartEffect(FObject.FEffect);
  StartEffect(FObject2.FEffect);

  FPlaying := True;
end;

procedure TForceFeedbackEffect.Stop;
var
  i: Integer;
begin
  if Playing then
  begin
    FPlaying := False;
    if FObject.FEffect<>nil then FObject.FEffect.Stop;
    if FObject2.FEffect<>nil then FObject2.FEffect.Stop;
  end;

  for i:=0 to Count-1 do
    Effects[i].Stop;
end;

procedure TForceFeedbackEffect.Unload(Recurse: Boolean);
var
  i: Integer;
begin
  if Playing then
  begin
    if FObject.FEffect<>nil then FObject.FEffect.Stop;
    if FObject2.FEffect<>nil then FObject2.FEffect.Stop;
  end;

  if FObject.FEffect<>nil then FObject.FEffect.Unload;
  if FObject2.FEffect<>nil then FObject2.FEffect.Unload;

  if Recurse then
  begin
    for i:=0 to Count-1 do
      Effects[i].Unload(True);
  end;
end;

type
  TForceFeedbackEffectItem = class(TCollectionItem)
  private
    FName: string;
    FEffectType: TForceFeedbackEffectType;
    FAttackLevel: Integer;
    FAttackTime: Integer;
    FConditionX: Integer;
    FConditionY: Integer;
    FConstantX: Integer;
    FConstantY: Integer;
    FFadeLevel: Integer;
    FFadeTime: Integer;
    FPeriod: Integer;
    FPower: Integer;
    FTime: Integer;
    FStartDelayTime: Integer;
    FEffects: TCollection;
    function GetStoredEffects: Boolean;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    procedure AssignTo(Dest: TPersistent); override;
  published
    property Name: string read FName write FName;
    property EffectType: TForceFeedbackEffectType read FEffectType write FEffectType;
    property AttackLevel: Integer read FAttackLevel write FAttackLevel default 0;
    property AttackTime: Integer read FAttackTime write FAttackTime default 0;
    property ConditionX: Integer read FConditionX write FConditionX default 0;
    property ConditionY: Integer read FConditionY write FConditionY default 0;
    property ConstantX: Integer read FConstantX write FConstantX default 0;
    property ConstantY: Integer read FConstantY write FConstantY default 0;
    property FadeLevel: Integer read FFadeLevel write FFadeLevel default 0;
    property FadeTime: Integer read FFadeTime write FFadeTime default 0;
    property Period: Integer read FPeriod write FPeriod;
    property Power: Integer read FPower write FPower;
    property Time: Integer read FTime write FTime;
    property StartDelayTime: Integer read FStartDelayTime write FStartDelayTime;
    property Effects: TCollection read FEffects write FEffects stored GetStoredEffects;
  end;

  TForceFeedbackEffectComponent = class(TComponent)
  private
    FEffects: TCollection;
  published
    property Effects: TCollection read FEffects write FEffects;
  end;

constructor TForceFeedbackEffectItem.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FEffects := TCollection.Create(TForceFeedbackEffectItem);
end;

destructor TForceFeedbackEffectItem.Destroy;
begin
  FEffects.Free;
  inherited Destroy;
end;

procedure TForceFeedbackEffectItem.Assign(Source: TPersistent);
var
  Effect: TForceFeedbackEffect;
  i: Integer;
begin
  Effect := Source as TForceFeedbackEffect;

  FName := Effect.Name;
  FEffectType := Effect.EffectType;
  FAttackLevel := Effect.AttackLevel;
  FAttackTime := Effect.AttackTime;
  FConditionX := Effect.Condition.X;
  FConditionY := Effect.Condition.Y;
  FConstantX := Effect.Constant.X;
  FConstantY := Effect.Constant.Y;
  FFadeLevel := Effect.FadeLevel;
  FFadeTime := Effect.FadeTime;
  FPeriod := Effect.Period;
  FPower := Effect.Power;
  FTime := Effect.Time;
  FStartDelayTime := Effect.StartDelayTime;

  for i:=0 to Effect.Count-1 do
    TForceFeedbackEffectItem.Create(FEffects).Assign(Effect[i]);
end;

procedure TForceFeedbackEffectItem.AssignTo(Dest: TPersistent);
var
  Effect: TForceFeedbackEffect;
  i: Integer;
begin
  Effect := Dest as TForceFeedbackEffect;

  Effect.EffectType := etNone;

  Effect.Name := FName;
  Effect.AttackLevel := FAttackLevel;
  Effect.AttackTime := FAttackTime;
  Effect.Condition := Point(FConditionX, FConditionY);
  Effect.Constant := Point(FConstantX, FConstantY);
  Effect.FadeLevel := FFadeLevel;
  Effect.FadeTime := FFadeTime;
  Effect.Period := FPeriod;
  Effect.Power := FPower;
  Effect.Time := FTime;
  Effect.StartDelayTime := FStartDelayTime;

  Effect.EffectType := FEffectType;

  for i:=0 to FEffects.Count-1 do
    TForceFeedbackEffectItem(FEffects.Items[i]).AssignTo(TForceFeedbackEffect.Create(Effect));
end;

function TForceFeedbackEffectItem.GetStoredEffects: Boolean;
begin
  Result := FEffects.Count>0;
end;

procedure TForceFeedbackEffect.LoadFromFile(const FileName: string);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TForceFeedbackEffect.LoadFromStream(Stream: TStream);
var
  Component: TForceFeedbackEffectComponent;
begin
  Clear;

  Component := TForceFeedbackEffectComponent(FRoot.FComponent);
  try
    Component.FEffects := TCollection.Create(TForceFeedbackEffectItem);
    Stream.ReadComponentRes(Component);
    TForceFeedbackEffectItem(Component.FEffects.Items[0]).AssignTo(Self);
  finally
    Component.FEffects.Free;
    Component.FEffects := nil;
  end;
end;

procedure TForceFeedbackEffect.SaveToFile(const FileName: string);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TForceFeedbackEffect.SaveToStream(Stream: TStream);
var
  Component: TForceFeedbackEffectComponent;
begin
  Component := TForceFeedbackEffectComponent(FRoot.FComponent);
  try
    Component.FEffects := TCollection.Create(TForceFeedbackEffectItem);
    TForceFeedbackEffectItem.Create(Component.FEffects).Assign(Self);
    Stream.WriteComponentRes('DelphiXForceFeedbackEffect', Component);
  finally
    Component.FEffects.Free;
    Component.FEffects := nil;
  end;
end;

{  TForceFeedbackEffects  }

constructor TForceFeedbackEffects.Create(Input: TCustomInput);
begin
  inherited Create(nil);
  FInput := Input;
  FComponent := TForceFeedbackEffectComponent.Create(nil);
end;

destructor TForceFeedbackEffects.Destroy;
begin
  FComponent.Free;
  inherited Destroy;
end;

procedure TForceFeedbackEffects.DefineProperties(Filer: TFiler);
begin
  inherited DefineProperties(Filer);
  Filer.DefineBinaryProperty('Effects', LoadFromStream, SaveToStream, True);
end;

{  TCustomInput  }

constructor TCustomInput.Create(DXInput: TCustomDXInput);
begin
  inherited Create;
  FDXInput := DXInput;
  FDXInput.FDevice.Add(Self);
  FEffects := TForceFeedbackEffects.Create(Self);
  FEnabled := True;
  FBindInputStates := True;
end;

destructor TCustomInput.Destroy;
begin
  Finalize;
  FEffects.Free;
  FDXInput.FDevice.Remove(Self);
  inherited Destroy;
end;

procedure TCustomInput.Acquire;
begin
  if FDXInput.FActiveOnly and (GetForegroundWindow<>FDXInput.FForm.Handle) then
    Exit;

  if FDevice<>nil then
    FDevice.Acquire;

  FEffects.Acquire;
end;

procedure TCustomInput.Finalize;
begin
  if FDevice<>nil then FDevice.Unacquire;
  FInitialized := False;
  FButtonCount := 0;
  FEffects.Finalize;
  FDevice := nil;
  FDevice2 := nil;
  FForceFeedbackDevice := False;
  FStates := [];
end;

procedure TCustomInput.Initialize;
begin
  FInitialized := True;
  FEffects.Initialize;
end;

function TCustomInput.GetButton(Index: Integer): Boolean;
begin
  if Index in [0..31] then
    Result := TDXInputState(Integer(isButton1)+Index) in FStates
  else
    Result := False;
end;

function TCustomInput.GetCooperativeLevel: Integer;
const
  Levels: array[Boolean] of Integer = (DISCL_NONEXCLUSIVE, DISCL_EXCLUSIVE);
  Levels2: array[Boolean] of Integer = (DISCL_BACKGROUND, DISCL_FOREGROUND);
begin
  Result := Levels[FForceFeedbackDevice and FForceFeedback] or Levels2[FDXInput.ActiveOnly];
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文av一区二区| 国产成人午夜电影网| 色婷婷久久综合| 国产精品免费av| 成人免费看片app下载| 在线观看日韩电影| 亚洲成人精品一区| 九九国产精品视频| 欧美激情中文字幕一区二区| 国产尤物一区二区| 欧美国产一区视频在线观看| 成人综合婷婷国产精品久久蜜臀 | 成熟亚洲日本毛茸茸凸凹| 26uuu欧美| 国产一区二区三区av电影| 国产亚洲一区二区在线观看| jizz一区二区| 亚洲国产成人av| 国产亚洲成aⅴ人片在线观看 | 本田岬高潮一区二区三区| 国产精品成人免费| 日韩欧美国产麻豆| 99视频一区二区| 视频一区视频二区在线观看| 日韩女优制服丝袜电影| 91视频免费看| 激情文学综合丁香| 中文字幕中文字幕一区| 91精品国产手机| 91麻豆免费观看| 国产一区二区看久久| 亚洲精品视频在线| 国产精品传媒在线| 久久久久久影视| 欧美一区二区三区四区五区| www.欧美色图| www.日韩大片| 成人aaaa免费全部观看| 国产一区二区日韩精品| 久久国产婷婷国产香蕉| 日韩国产欧美在线观看| 一区二区三区免费在线观看| 国产无遮挡一区二区三区毛片日本| 99国产精品久| 成人小视频在线| 国产aⅴ精品一区二区三区色成熟| 日韩国产欧美在线播放| 亚洲一区av在线| 亚洲午夜久久久久中文字幕久| 亚洲乱码一区二区三区在线观看| 国产婷婷色一区二区三区在线| 精品处破学生在线二十三| 精品毛片乱码1区2区3区| 欧美一区二区啪啪| 欧美xxxx老人做受| xnxx国产精品| 国产精品久久久久四虎| 日韩美女视频一区| 一区二区三区丝袜| 视频一区中文字幕国产| 美日韩一区二区三区| 韩国v欧美v日本v亚洲v| jlzzjlzz欧美大全| 精品久久久久久久久久久院品网 | 17c精品麻豆一区二区免费| 亚洲欧洲性图库| 亚洲mv在线观看| 国模套图日韩精品一区二区 | 久久久三级国产网站| 中文字幕二三区不卡| 亚洲高清久久久| 国产91清纯白嫩初高中在线观看 | 国产精品沙发午睡系列990531| 亚洲精品免费在线观看| 日本sm残虐另类| 99精品欧美一区| 久久天堂av综合合色蜜桃网| 亚洲免费av观看| 国产成人免费视频一区| 91精品国模一区二区三区| 中文字幕一区二区三区精华液| 亚洲国产综合色| 91伊人久久大香线蕉| 国产亚洲人成网站| 免费成人av资源网| 91麻豆精品国产91久久久久久久久 | 亚洲日本护士毛茸茸| 国产电影一区二区三区| 欧美一区二区三区喷汁尤物| 一区二区三区在线播放| 99天天综合性| 亚洲激情图片qvod| 色婷婷精品大视频在线蜜桃视频| 成人免费小视频| 91无套直看片红桃| 一区二区三区四区在线播放| 日韩精品一区二区三区四区视频| 日韩av不卡在线观看| 欧美丰满少妇xxxxx高潮对白| 一色屋精品亚洲香蕉网站| 白白色亚洲国产精品| 日韩伦理av电影| 在线欧美日韩精品| 亚洲 欧美综合在线网络| 777奇米成人网| 国产在线播放一区二区三区| 久久久久久久久久久久久女国产乱 | 欧美日韩中文一区| 亚洲一区二区三区中文字幕在线| 91一区一区三区| 日韩激情一区二区| 国产三级欧美三级日产三级99| 这里是久久伊人| 成人性生交大片免费看中文| 日韩美女视频一区二区 | 国产日产精品1区| 色婷婷久久一区二区三区麻豆| 视频一区视频二区在线观看| 久久亚洲捆绑美女| 欧美日韩国产成人在线91| 激情亚洲综合在线| 亚洲一二三四久久| 国产欧美视频一区二区三区| 欧美性生活大片视频| 国内精品不卡在线| 蜜桃视频一区二区| 一区二区三区久久| 国产精品久久久久久一区二区三区| 欧美美女视频在线观看| 国产精品综合网| 中文字幕欧美一区| 欧美不卡123| 91电影在线观看| 不卡一卡二卡三乱码免费网站| 国产一区亚洲一区| 精品一区二区三区在线观看国产 | 欧美成人乱码一区二区三区| 在线免费观看一区| 一本久久综合亚洲鲁鲁五月天| 国产成人精品aa毛片| 久久国产婷婷国产香蕉| 日本大胆欧美人术艺术动态| 亚洲精品伦理在线| 亚洲男同性恋视频| 亚洲综合色自拍一区| 亚洲一区二区在线免费看| 亚洲三级电影网站| 玉米视频成人免费看| 亚洲国产日韩在线一区模特| 伊人夜夜躁av伊人久久| 亚洲影院免费观看| 亚洲乱码日产精品bd| 亚洲成人动漫精品| 日韩电影网1区2区| 国产精品伊人色| 99国产精品视频免费观看| 91麻豆swag| 91精品国产一区二区人妖| 精品三级av在线| 国产精品久久一级| 亚洲电影视频在线| 国内成+人亚洲+欧美+综合在线 | 一本久久a久久免费精品不卡| 欧美在线观看一区| 欧美一区二区三区系列电影| 久久这里只精品最新地址| 国产精品无人区| 天堂成人免费av电影一区| 国产精品一级二级三级| 在线免费观看日本一区| 精品日韩在线观看| 亚洲夂夂婷婷色拍ww47| 狠狠色狠狠色综合| 欧美亚洲综合一区| 国产目拍亚洲精品99久久精品| 亚洲一卡二卡三卡四卡无卡久久| 日韩av电影免费观看高清完整版在线观看| 国产一区二区日韩精品| 欧美肥大bbwbbw高潮| 亚洲精品日韩专区silk| 成人午夜大片免费观看| 精品国产不卡一区二区三区| 亚洲国产精品自拍| 色婷婷久久综合| 亚洲视频一区在线观看| 精品无人区卡一卡二卡三乱码免费卡| 91一区在线观看| 中文字幕精品在线不卡| 成人av免费在线观看| 久久久久亚洲综合| 国产99精品在线观看| 亚洲国产精品激情在线观看| 国产美女久久久久| 日韩女优毛片在线| 美女视频网站久久| 26uuu精品一区二区三区四区在线| 午夜精品久久一牛影视| 欧美影视一区二区三区| 亚洲欧美色一区| 国产在线不卡一区|