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

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

?? dxwnavigator.pas

?? Delphi Engine for games.
?? PAS
字號:
//UnTitledRTS for UnDelphiX
unit DXWNavigator;

interface
 uses
  Windows, Messages, SysUtils, Classes, ExtCtrls, Controls,
  DXClass, DXDraws, DXSprite, DXWImageSprite,DIB;

Type
/////////////////////////////////////////////////////////////////////////

  TDXWCustomNavigator = class
  private
    FInitLeft    : Integer;
    FInitTop     : Integer;
    FInitWidth   : Integer;
    FInitHeight  : Integer;
    FVisible     : Boolean;

    FLeft     : Integer;
    FTop      : Integer;
    FWidth    : Integer;
    FHeight   : Integer;

    FMapW,FMapH   : Integer;

    FGidRect      : TRect; // in Screen CS
    FGidW,FGidH   : Integer;
    FGidX,FGidY   : Integer;// in OutRect CS

    FkX,FkY,Fk    : Double;

    FGidClicked   : Boolean;
    FClicked      : Boolean;

    procedure SetInitHeight(const Value: Integer);
    procedure SetInitWidth(const Value: Integer);

    procedure SetMapH(const Value: Integer);
    procedure SetMapW(const Value: Integer);
    procedure Calculate;

  protected
    procedure DoDraw ; virtual; abstract;
    function  GetBoundsRect : TRect;

    function MapXToX(AMapX : Double):Integer;
    function MapYToY(AMapY : Double):Integer;

    function XToMapX(AX : Integer ) : Double;
    function YToMapY(AY : Integer ) : Double;

  public

    constructor Create; virtual;
    destructor Destroy; override;

    property BoundsRect: TRect read GetBoundsRect;

    property InitLeft   : Integer write FInitLeft;
    property InitTop    : Integer write FInitTop;
    property InitWidth  : Integer write SetInitWidth;
    property InitHeight : Integer write SetInitHeight;

    property MapW    : Integer write SetMapW;
    property MapH    : Integer write SetMapH;

    property GidRect : TRect read FGidRect;

    property Visible : Boolean read FVisible write FVisible;

  end;


 TDXWNavigator = class (TDXWCustomNavigator)
  private
   FSpriteEngine : TDXSpriteEngine;
   FImage: TPictureCollectionItem;

   procedure SetSpriteEngine(Value: TDXSpriteEngine);

  protected
   procedure ScrollTo( X,Y : Integer);
   procedure DoDraw; override;
  public

   procedure NavigatorMouseMove(Shift: TShiftState;Const X,Y: Integer);
   procedure NavigatorMouseDown(Shift: TShiftState;Const X, Y: Integer);
   procedure NavigatorMouseUp(Shift: TShiftState;Const X, Y: Integer);

   constructor Create; override;
   destructor Destroy; override;

   procedure DrawSelf;

   property Image: TPictureCollectionItem read FImage write FImage;
   property SpriteEngine: TDXSpriteEngine write SetSpriteEngine;
  end;

implementation
Uses Math,Main,GameSpritesUnit;

{ TDXWCustomNavigator }

constructor TDXWCustomNavigator.Create;
begin
  inherited Create;
  FInitWidth:=0;
  FInitHeight:=0;

  FMapW:=0;
  FMapH:=0;
  FkX:=0;
  FkY:=0;
  Fk :=0;
  FVisible:=true;
  FGidClicked:=false;
  FClicked:=false;
end;

destructor TDXWCustomNavigator.Destroy;
begin
  inherited Destroy;
end;

{
procedure TDXWCustomNavigator.DoDraw;
begin
//
end;
}

function TDXWCustomNavigator.GetBoundsRect: TRect;
begin
 Result := Bounds(FLeft,FTop,FWidth,FHeight);
end;

function TDXWCustomNavigator.MapXToX(AMapX: Double): Integer;
begin

end;

function TDXWCustomNavigator.MapYToY(AMapY: Double): Integer;
begin

end;

procedure TDXWCustomNavigator.Calculate;
begin
if ( FInitHeight*FMapH*FInitWidth*FMapW=0 )  then Exit;

FkY:=FInitHeight/FMapH;
FkX:=FInitWidth/FMapW;
Fk:=min(FkX,FkY);

FWidth:=Trunc(Fk*FMapW);
FHeight:=Trunc(Fk*FMapH);

FLeft:=FInitLeft+(FInitWidth-FWidth)div 2;
FTop:=FInitTop+(FInitHeight-FHeight)div 2;

JobList.Add('DXWCustomNavigator.Fk'+'|'+FloatToStr(Fk));
JobList.Add('DXWCustomNavigator.FWidth'+'|'+IntToStr(FWidth));
JobList.Add('DXWCustomNavigator.FHeight'+'|'+IntToStr(FHeight));

end;

procedure TDXWCustomNavigator.SetInitHeight(const Value: Integer);
begin
FInitHeight:=Value;
Calculate;
end;

procedure TDXWCustomNavigator.SetMapH(const Value: Integer);
begin
FMapH:=Value;
Calculate;
end;

procedure TDXWCustomNavigator.SetMapW(const Value: Integer);
begin
FMapW:=Value;
Calculate;
end;

procedure TDXWCustomNavigator.SetInitWidth(const Value: Integer);
begin
FInitWidth:=Value;
Calculate;
end;

function TDXWCustomNavigator.XToMapX(AX: Integer): Double;
begin

end;

function TDXWCustomNavigator.YToMapY(AY: Integer): Double;
begin

end;



{ TDXWNavigator }

constructor TDXWNavigator.Create;
begin
  inherited Create;
  FSpriteEngine:=nil;
end;

procedure TDXWNavigator.DoDraw;
Var
 i       : integer;
 L,T     : integer;
 SpriteR : TRect;
begin
if Not FVisible then Exit;

FGidX:=Trunc(Abs(FSpriteEngine.Engine.X*Fk));
FGidY:=Trunc(Abs(FSpriteEngine.Engine.Y*Fk));

L:=FLeft+FGidX;
T:=FTop +FGidY;
FGidRect:=Bounds(L,T,FGidW,FGidH);

with FSpriteEngine.DXDraw do
begin
//Surface.FillRect(Self.BoundsRect,0);
FImage.Draw(Surface,FLeft,FTop,0);

Surface.FillRectAlpha(FGidRect,DXYellow,50);

  For i:=0 to FSpriteEngine.Engine.AllCount-1 do
   //if FSpriteEngine.Engine.Items[i] is TWImageSprite then
     //With TWImageSprite(FSpriteEngine.Engine.Items[i]) do
   if FSpriteEngine.Engine.Items[i] is TGameUnit then
     With TGameUnit(FSpriteEngine.Engine.Items[i]) do
     begin
       L:=FLeft+Trunc(X*Fk);
       T:=FTop+Trunc(Y*Fk);
       SpriteR:=Bounds(L,T,Trunc(Width*Fk),Trunc(Height*Fk));
       Surface.FillRect(SpriteR,FUnitColor);
       //Pixels[L,T]:=DXRed;
     end;

end;

end;

procedure TDXWNavigator.DrawSelf;
begin
 DoDraw;
end;

procedure TDXWNavigator.SetSpriteEngine(Value: TDXSpriteEngine);
 begin
  FSpriteEngine:=Value;
  FGidW:=Trunc(FSpriteEngine.Engine.Width*Fk);
  FGidH:=Trunc(FSpriteEngine.Engine.Height*Fk);
 end;

procedure TDXWNavigator.ScrollTo( X,Y : Integer);
Var
 eX,eY: Double;
begin

  eX:=( X-FLeft-(FGidW div 2) )/Fk;
  eY:=( Y-FTop-(FGidH div 2) )/Fk;

  //if eX>FMapW then eX:=FMapW;// working
  //if eY>FMapH then eY:=FMapH;// without it !!! ???

  FSpriteEngine.Engine.X:=-eX;
  FSpriteEngine.Engine.y:=-eY;

  //if (ssLeft in Shift) then FGidClicked := TRUE;

end;


procedure TDXWNavigator.NavigatorMouseDown(Shift: TShiftState; Const X, Y: Integer);
begin
if PointInRect(Point(X,Y),BoundsRect)then
 begin
  FClicked:=true;
  ScrollTo(X,Y);
 end;
end;

procedure TDXWNavigator.NavigatorMouseMove(Shift: TShiftState;Const X,Y: Integer);
begin
if FClicked then
 begin
  ScrollTo(X,Y);
 end
end;

procedure TDXWNavigator.NavigatorMouseUp(Shift: TShiftState;Const X, Y: Integer);
begin
 FGidClicked:=false;
 FClicked:=false;
end;

destructor TDXWNavigator.Destroy;
begin
 //MiniMapGraphic.Free;
 inherited Destroy;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女一区二区| 日韩中文字幕麻豆| 亚洲超碰精品一区二区| 国产激情91久久精品导航| 欧美私人免费视频| 国产精品情趣视频| 另类人妖一区二区av| 91国产免费看| 亚洲人成影院在线观看| 久久精品国产精品亚洲精品| 日本高清无吗v一区| 欧美激情一区二区三区| 激情综合亚洲精品| 91精品国产欧美日韩| 亚洲一二三区视频在线观看| 国产成+人+日韩+欧美+亚洲| 欧美大片在线观看一区| 天堂va蜜桃一区二区三区| 99国产欧美久久久精品| 日本一区二区三区电影| 国产酒店精品激情| 精品久久国产97色综合| 麻豆精品久久精品色综合| 欧美日韩你懂的| 伊人夜夜躁av伊人久久| 色婷婷亚洲婷婷| 综合久久给合久久狠狠狠97色| 国产福利一区在线观看| 亚洲精品一区二区三区精华液| 五月天激情综合网| 91精品国产福利在线观看| 视频一区在线视频| 91精品国产一区二区三区| 日本91福利区| 精品粉嫩aⅴ一区二区三区四区| 亚洲成人手机在线| 欧美高清激情brazzers| 日韩精品视频网| 欧美成人一区二区三区片免费 | 欧美主播一区二区三区| 中文字幕视频一区| 色综合久久99| 亚洲一区二区三区在线看| 欧美午夜精品久久久久久孕妇| 亚洲男人的天堂网| 欧美日韩一区小说| 婷婷开心久久网| 成人自拍视频在线观看| 日韩精品一区二区三区视频在线观看 | 另类小说欧美激情| 欧美大片在线观看一区| 国产乱人伦偷精品视频不卡 | 日韩免费视频一区| 精品亚洲porn| 亚洲国产岛国毛片在线| 91麻豆精品在线观看| 天天综合色天天综合色h| 日韩丝袜情趣美女图片| 国产成人av电影在线| 一区二区三区在线观看视频 | 国产午夜精品理论片a级大结局| 成人av网站免费| 亚洲v中文字幕| 国产亚洲欧美一级| 99久久精品国产观看| 日韩影院免费视频| 久久你懂得1024| 91精品福利视频| 蜜桃久久久久久| 国产精品不卡在线| 欧美老肥妇做.爰bbww| 国产剧情在线观看一区二区| 夜夜嗨av一区二区三区| 久久综合色综合88| 色猫猫国产区一区二在线视频| 青椒成人免费视频| 亚洲欧美日本韩国| 欧美成人a视频| 色噜噜狠狠色综合欧洲selulu| 久久成人免费日本黄色| 亚洲欧美日韩成人高清在线一区| 日韩欧美高清在线| 在线中文字幕不卡| 国产精品一区二区在线播放| 亚洲妇熟xx妇色黄| 国产精品白丝在线| 久久色中文字幕| 欧美日韩国产一二三| 国产98色在线|日韩| 免费观看久久久4p| 亚洲国产视频一区| 中文字幕一区二区三| 精品粉嫩超白一线天av| 欧美精品久久99久久在免费线| 成人aaaa免费全部观看| 国产最新精品精品你懂的| 亚洲成年人影院| 一级精品视频在线观看宜春院| 国产女人18水真多18精品一级做 | 欧美性生活一区| av激情综合网| 成人免费视频视频在线观看免费 | 91美女片黄在线观看91美女| 国产成人福利片| 国内精品写真在线观看| 欧美96一区二区免费视频| 日韩黄色在线观看| 亚洲va欧美va国产va天堂影院| 亚洲美女视频在线观看| 综合色天天鬼久久鬼色| 国产精品对白交换视频| 中文字幕亚洲精品在线观看| 国产精品三级电影| 久久精品亚洲一区二区三区浴池 | 国产一区二区不卡| 韩国女主播成人在线| 久久国产精品99久久人人澡| 日本伊人午夜精品| 日产精品久久久久久久性色| 图片区小说区国产精品视频| 午夜欧美视频在线观看| 午夜不卡av在线| 丝袜亚洲另类欧美综合| 天堂成人免费av电影一区| 视频一区中文字幕国产| 男人的天堂久久精品| 久久不见久久见免费视频1| 麻豆久久久久久| 精品在线播放午夜| 国产乱对白刺激视频不卡| 成人小视频在线| 91猫先生在线| 91精品国产入口| 久久精品一区八戒影视| 亚洲色图在线视频| 亚洲精品视频观看| 美女在线观看视频一区二区| 久久精品国产在热久久| 国产高清在线精品| 91理论电影在线观看| 欧美日韩国产精品自在自线| 欧美成人精品高清在线播放 | 欧美一级免费大片| 久久婷婷色综合| 亚洲欧美电影院| 丝袜亚洲另类丝袜在线| 国产激情视频一区二区在线观看| av不卡在线播放| 在线综合+亚洲+欧美中文字幕| 久久这里只有精品6| 亚洲乱码国产乱码精品精小说| 首页国产欧美日韩丝袜| 成人免费视频视频| 91精品国产91热久久久做人人 | 久久网这里都是精品| 亚洲人成网站在线| 美女在线视频一区| 色综合色综合色综合色综合色综合 | 水野朝阳av一区二区三区| 国产综合久久久久影院| 色婷婷综合久久久中文一区二区| 欧美www视频| 一区二区欧美在线观看| 韩国精品免费视频| 在线视频一区二区三区| 亚洲国产激情av| 日韩av中文字幕一区二区三区| 不卡av在线免费观看| 欧美一区二区视频在线观看2020| 国产精品九色蝌蚪自拍| 美女久久久精品| 欧美视频一区在线| 亚洲国产精华液网站w | 精品国产乱码久久| 亚洲成a人片综合在线| 成人免费黄色大片| 日韩美女一区二区三区四区| 亚洲一区二区三区中文字幕| 波多野结衣在线aⅴ中文字幕不卡| 日韩欧美一级在线播放| 亚洲午夜久久久久中文字幕久| 成人激情黄色小说| 精品国产污污免费网站入口| 日韩中文欧美在线| 在线观看三级视频欧美| 亚洲欧洲精品天堂一级| 国产高清在线观看免费不卡| 久久综合久久鬼色中文字| 日本美女一区二区| 欧美精品tushy高清| 亚洲成人自拍网| 91福利精品视频| 亚洲综合网站在线观看| 97超碰欧美中文字幕| 国产精品人妖ts系列视频| 国产91在线观看丝袜| 国产精品视频第一区| 国产成人av一区二区三区在线| 亚洲精品一区二区三区香蕉| 国内外成人在线视频|