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

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

?? scenemainunit.pas

?? Delphi Engine for games.
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
//UnTitledRTS for UnDelphiX
unit SceneMainUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DXClass, DXSprite, DXInput, DXDraws,
  DXSounds, DIB , DXWStatObj,DXWPath, DXWImageSprite;


 Var
   StartSelection   : boolean;

 procedure StartSceneMain;
 procedure SceneMain;
 procedure EndSceneMain;
 procedure ScrollSpriteEngine;
 procedure WatchForEnemy;
 procedure Attack;


 procedure SceneMainMouseDown(Shift: TShiftState; X, Y: Integer);
 procedure SceneMainMouseUp(Shift: TShiftState; X, Y: Integer);
 procedure SceneMainMouseMove(Shift: TShiftState; X, Y: Integer);

 procedure OutSelSpriteInf;

implementation
Uses Main,GameSpritesUnit,Menu, DXWNavigator, Pathes ;

procedure ScrollSpriteEngine;
Const
 StepScroll=20;
Var
  dx,dy,ScrollCount : integer;
  NewX,NewY : double;
  Xmax,Xmin,Ymax,Ymin : double;
begin
With MainForm do begin

Xmax:=0;
Ymax:=0;
Xmin:=SpriteEngine.Engine.Width-MapW;
Ymin:=SpriteEngine.Engine.Height-MapH;

if DXTimer.FrameRate=0
 then ScrollCount:=Trunc(StepScroll)
  else ScrollCount:=Trunc(StepScroll*(80/DXTimer.FrameRate));

dx:=0;
dy:=0;
if MouseXY.Y=0 then dy:=ScrollCount;
if MouseXY.Y=479 then dy:=-ScrollCount;//(480-1)
if MouseXY.X=0 then dx:=ScrollCount;
if MouseXY.X=639 then dx:=-ScrollCount;//(640-1)

if ( isUp in DXInput.States )then dy:=ScrollCount;
if ( isDown in DXInput.States )then dy:=-ScrollCount;
if ( isLeft in DXInput.States )then dx:=ScrollCount;
if ( isRight in DXInput.States )then dx:=-ScrollCount;

NewX:=SpriteEngine.Engine.X+dx;
NewY:=SpriteEngine.Engine.Y+dy;
if ( NewX<=Xmax ) and ( NewX>=Xmin )
 then SpriteEngine.Engine.X:=NewX
 else
  if NewX>Xmax
   then SpriteEngine.Engine.X:=Xmax
    else SpriteEngine.Engine.X:=Xmin;

if ( NewY<=Ymax ) and ( NewY>=Ymin )
 then SpriteEngine.Engine.Y:=NewY
 else
  if NewY>Ymax
   then SpriteEngine.Engine.Y:=Ymax
    else SpriteEngine.Engine.Y:=Ymin;

end;
end;

procedure WatchForEnemy;
Var
 i     : integer;


begin
// need  optimiztion
 With MainForm do
 begin
 //Zprofiler.mark(1,true);


  For i:=0 to MainForm.SpriteEngine.Engine.AllCount-1 do
   if (MainForm.SpriteEngine.Engine.Items[i] is TGameUnit)
    then TGameUnit(MainForm.SpriteEngine.Engine.Items[i]).doWatchForEnemy;


{
   i := -1;
   repeat
    i := MainForm.SpriteEngine.Engine.FindInstanceOf(TGameUnit, false, i+1);
    if i >= 0
     then TGameUnit(MainForm.SpriteEngine.Engine.Items[i]).doWatchForEnemy;
   until(i < 0);
}

 //Zprofiler.mark(1,false);
 end;
end;

procedure Attack;
Var
 i     : integer;
begin
// need  optimiztion
 With MainForm do
 begin
  For i:=0 to MainForm.SpriteEngine.Engine.AllCount-1 do
   if (MainForm.SpriteEngine.Engine.Items[i] is TGameUnit)
    then TGameUnit(MainForm.SpriteEngine.Engine.Items[i]).doAttack;
 end;
end;


procedure SceneMain;
Const
 StepMove=25;// (1000/40)
 Counter : LongInt=0;
Var
  i     : integer;
  selX  : integer;
begin
With MainForm do begin

if DXTimer.FrameRate=0
 then SpriteEngine.Move(Trunc(StepMove))
  else SpriteEngine.Move(Trunc(StepMove*(80/DXTimer.FrameRate)));

SpriteEngine.Dead;

ScrollSpriteEngine;


//simple AI
If Counter>(DXTimer.FrameRate div 2) then// no need exectly
  begin
   WatchForEnemy;
   Counter:=0;
  end
   else Inc(Counter);
Attack;


DXDraw.Surface.Fill(0);// may do not this
if FNextScene=gsNone then
  begin
   SpriteEngine.Draw;

   //TmpImageList2.Items.Find('Map1_1').Draw(DXDraw.Surface,0,0, 0);
   //TmpImageList2.Items.Find('Map1_2').Draw(DXDraw.Surface,22,0, 0);
   //TmpImageList2.Items.Find('Map1_3').Draw(DXDraw.Surface,22,458, 0);
   TmpImageList2.Items.Find('Map1_4').Draw(DXDraw.Surface,446,0, 0);

   For i:=0 to FBtnList.Count-1
    do TDXImageButton(FBtnList[i]).DoDraw;

   Navigator.DrawSelf;

   if SubSceneMainMenuEnabled then SubSceneMainMenu;

//---------- Frame rate display and GroupeSelRect---------
    with DXDraw.Surface.Canvas do
    begin

    if StartSelection then
     begin
      Pen.Color:=clGreen;
      Pen.Style:=psDot;
      Pen.Width:=1;

      if MouseXY.X >SpriteEngine.Engine.Width
       then selX:=SpriteEngine.Engine.Width
        else selX:=MouseXY.X;

      Rectangle(Trunc(MapDownPointX+SpriteEngine.Engine.X),
                Trunc(MapDownPointY+SpriteEngine.Engine.Y),
                selX,MouseXY.Y);
     end;
    Pen.Style:=psSolid;


    Brush.Style := bsClear;
    Font.Color := clWhite;
    //Font.Name := 'MS Sans Serif';
    Font.Name := 'Arial';
    Font.Size := 7;

    //Textout(480, 150, 'FPS: '+inttostr(DXTimer.FrameRate));
    //Textout(480, 160, 'Sprite: '+inttostr(SpriteEngine.Engine.AllCount));
    Textout(480, 160, 'Sprite: '+inttostr(SpriteEngine.Engine.Count));

    Textout(480, 170, 'Draw: '+inttostr(SpriteEngine.Engine.DrawCount));


    Textout(480, 180, format('Engine.W/H: %d,%d ',[SpriteEngine.Engine.Width,SpriteEngine.Engine.Height]));
    Textout(480, 190, format('Engine.XY: %.0f,%.0f ',[SpriteEngine.Engine.X,SpriteEngine.Engine.Y]));
    Textout(480, 200, format('Engine.WorldXY: %.0f,%.0f ',[SpriteEngine.Engine.WorldX,SpriteEngine.Engine.WorldY]));
    Textout(400, 210, format('Engine.SerfaseRect: %d,%d,%d,%d ',
           [SpriteEngine.Engine.SurfaceRect.left,
            SpriteEngine.Engine.SurfaceRect.top,
            SpriteEngine.Engine.SurfaceRect.Right,
            SpriteEngine.Engine.SurfaceRect.Bottom]));
    Textout(400, 220, format('Engine.BoundsRect: %d,%d,%d,%d ',
           [SpriteEngine.Engine.BoundsRect.left,
            SpriteEngine.Engine.BoundsRect.top,
            SpriteEngine.Engine.BoundsRect.Right,
            SpriteEngine.Engine.BoundsRect.Bottom]));

    Textout(480, 230, format('MapW/H: %d,%d ',[MapW,MapH]));


    Textout(400, 240, format('ScrollBackground.WorldXY: %.0f,%.0f ',[ScrollBackground.WorldX,ScrollBackground.WorldY]));
    Textout(400, 250, format('ScrollBackground.XY: %.0f,%.0f ',[ScrollBackground.X,ScrollBackground.Y]));



    Release;
    end;
    OutSelSpriteInf;
  end;
end;
end;



procedure StartSceneMain;
Var
 i, j    : Integer;
 FileName : string;
begin
 MainForm.SpriteEngine.Engine.SurfaceRect :=Rect(0,0,446,480);

 FileName:='MainFon.dxg';
 MainForm.LoadPicData(MainForm.TmpImageList2,FileName);
 //MainForm.TmpImageList2.Items.LoadFromFile(GetName('Graphics\DXG',FileName));
 MainForm.SavePicData(MainForm.TmpImageList2,FileName);

 FileName:='GameSprites.dxg';
 MainForm.LoadPicData(MainForm.ImageList,FileName);
 //MainForm.ImageList.Items.LoadFromFile(GetName('Graphics\DXG',FileName));
 MainForm.SavePicData(MainForm.ImageList,FileName);

 MainForm.LoadWaves;
 //MainForm.DXWaveList.Items.LoadFromFile(GetName('Sound\DXW','SpriteEffect.dxw'));

 //FScore := 0;
 //FEnemyAdventPos := 0;
 //FFrame := 0;

{
  For i:=1 to 5 do begin
  With TPlayer2.Create(SpriteEngine.Engine) do
   begin
    X:=50 + 70*i;
    Y:=100;
    Z := Trunc(Y);
   end;
  end;
}

{  Cursor object  }
//  CursorSprite:=TCursorSprite.Create(SpriteEngine.Engine);


  {
  With  TBuilding.Create(SpriteEngine.Engine) do
   begin
   Image := MainForm.ImageList.Items.Find('Castle');
   Width := Image.Width;
   Height := Image.Height;
   //PixelCheck:=true;
   X := 150;
   Y := 300;
   Z := Trunc(Y);
   end;


 Randomize;
 For i:=1 to 30 do begin
  With  TBuilding.Create(SpriteEngine.Engine) do
   begin
   Image := MainForm.ImageList.Items.Find('Trees');
   Width := Image.Width;
   Height := Image.Height;
   //PixelCheck:=true;

   if i<=15 then
   begin
   X := -1800+ 200*i;
   Y := 0;
   Z := Trunc(Y);
   end
   else
   begin
   X := -1800+ 200*(i-15);
   Y := 450;
   Z := Trunc(Y);
   end;

   end;
  end;


 With  TBuilding.Create(SpriteEngine.Engine) do
   begin
   Image := MainForm.ImageList.Items.Find('Mine');
   Width := Image.Width;
   Height := Image.Height;
   //PixelCheck:=true;
   X := 350;
   Y := 350;
   Z := Trunc(Y);
   end;
}



//  Background //  Background //  Background //  Background //  Background //  Background
  ScrollBackground:=TScrollBackground.Create(MainForm.SpriteEngine.Engine);
  //ScrollBackground.LoadObstacle;

  ScrollBackground.LoadMap(GetName('Map','Test2.map'));

  PathInf:=TDXPath.Create(DimW,DimH);
  For j :=0 to (DimH-1) do
   For i :=0 to(DimW-1) do

    PathInf.FObstacle[j,i]:=ScrollBackground.Obstacle[j,i];

  For i:=1 to 5 do begin
  With TGameUnit.Create(MainForm.SpriteEngine.Engine) do
   begin
    UnitName:='Player1Spr';
    Direction:=Random(8);

    FChipH:=ChipH;
    FChipW:=ChipW;

    X:=150 + 90*i;
    Y:=130;

    //X:=Random(MapW);
    //Y:=Random(MapH);

    Z := Trunc(Y);

    Life             := 20;
    FLifeMax         := 20;
    FDamage          := 1;
    FAttackRange     := 200;
    FSight           := 200;
    FSpeed           := 75/1000;

    FAllyID          := 1;
    FUnitColor       :=DXRed;

   end;
  end;

  For i:=1 to 5 do begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最近中文字幕一区二区三区| 久久精品国产成人一区二区三区 | a级精品国产片在线观看| 日韩国产精品久久久| 亚洲激情自拍视频| 自拍偷在线精品自拍偷无码专区| 亚洲国产岛国毛片在线| 国产精品每日更新在线播放网址 | 国产精品视频九色porn| 久久综合狠狠综合久久综合88| 精品国产一区二区三区忘忧草 | 国产精品色一区二区三区| xnxx国产精品| 久久精品亚洲国产奇米99| 久久久久久一级片| 国产精品嫩草久久久久| 日本一区二区动态图| 中文字幕亚洲成人| 亚洲乱码国产乱码精品精98午夜 | 亚洲精品在线免费观看视频| 久久综合视频网| 国产日产精品1区| 国产精品免费av| 中文字幕一区二区三区视频| 亚洲激情五月婷婷| 亚洲国产成人porn| 久久99精品国产麻豆婷婷洗澡| 国产精一区二区三区| 成人福利视频网站| 欧美性三三影院| 日韩欧美精品三级| 久久在线观看免费| 亚洲欧美在线另类| 香蕉乱码成人久久天堂爱免费| 日韩二区三区四区| 国产成人综合亚洲91猫咪| 91麻豆精品在线观看| 欧美日韩国产综合一区二区三区| 日韩女优av电影在线观看| 国产欧美一区二区三区沐欲| 18涩涩午夜精品.www| 午夜精品久久久久久久久久| 国产一区二区三区四区五区入口 | 美女爽到高潮91| 国产精品亚洲视频| 欧美在线不卡视频| 精品国产区一区| 国产精品网友自拍| 婷婷开心久久网| 成人丝袜高跟foot| 欧美日韩国产片| 欧美激情在线一区二区| 亚洲成人精品影院| 成人手机电影网| 欧美精品国产精品| 国产精品欧美一区喷水| 日本成人中文字幕在线视频 | 久久久午夜精品理论片中文字幕| 亚洲精品视频免费观看| 精品一区二区日韩| 在线看国产一区| 久久久蜜桃精品| 亚洲午夜国产一区99re久久| 国产九色精品成人porny | 国产精品视频你懂的| 午夜精品福利一区二区三区蜜桃| 国产最新精品免费| 欧美日韩中文字幕一区二区| 国产欧美精品一区aⅴ影院| 午夜欧美视频在线观看| av一区二区三区在线| 欧美精品一区二区三区很污很色的 | 欧美tk—视频vk| 亚洲国产sm捆绑调教视频 | 国产精品1024| 日韩一区二区精品| 亚洲一区在线观看视频| 9久草视频在线视频精品| 亚洲精品一区二区三区影院| 亚洲va欧美va人人爽午夜| 91丨国产丨九色丨pron| 久久精品一区四区| 精品一区二区三区香蕉蜜桃 | 精品91自产拍在线观看一区| 亚洲aaa精品| 欧美丝袜丝交足nylons图片| 中文字幕在线不卡一区二区三区| 国产呦精品一区二区三区网站| 欧美疯狂做受xxxx富婆| 一区二区三区四区高清精品免费观看 | 国产精品久久久久一区| 精品一区二区免费看| 日韩一级二级三级| 五月开心婷婷久久| 欧美色倩网站大全免费| 亚洲综合在线电影| 色婷婷综合久久久中文一区二区| 国产精品大尺度| aaa国产一区| 亚洲欧洲99久久| 99精品在线免费| 亚洲欧洲色图综合| 91亚洲精品久久久蜜桃| 亚洲日本va在线观看| 91视频xxxx| 中文字幕综合网| 91女厕偷拍女厕偷拍高清| 国产精品视频一区二区三区不卡| 成人精品视频一区二区三区尤物| 久久久精品综合| 国产精品夜夜爽| 国产精品久久久久久久裸模| 成人网在线播放| 中文字幕亚洲不卡| 色菇凉天天综合网| 亚洲国产欧美另类丝袜| 7777精品伊人久久久大香线蕉完整版 | 成人亚洲一区二区一| 欧美激情中文字幕一区二区| 成人精品免费看| 国产精品入口麻豆九色| av不卡一区二区三区| 亚洲精选视频在线| 欧美亚洲高清一区二区三区不卡| 亚洲成年人影院| 日韩欧美国产小视频| 国产精品自拍av| 亚洲国产成人午夜在线一区| 91免费在线视频观看| 午夜私人影院久久久久| 日韩一区二区高清| 国产精品18久久久久久久久久久久| 国产日韩欧美综合在线| 一本色道久久综合亚洲aⅴ蜜桃 | 国产精品美女一区二区在线观看| av不卡一区二区三区| 亚洲va天堂va国产va久| 久久综合色8888| 91丨porny丨户外露出| 亚洲国产人成综合网站| 日韩欧美一区二区三区在线| 国产iv一区二区三区| 亚洲一区在线免费观看| 欧美成人猛片aaaaaaa| 成人不卡免费av| 午夜久久久影院| 久久久久国产成人精品亚洲午夜 | 在线成人午夜影院| 国产一区二区三区免费播放 | 成人高清免费观看| 亚洲18女电影在线观看| 久久噜噜亚洲综合| 欧洲av在线精品| 国产一区二区在线观看免费| 中文字幕在线观看不卡视频| 欧美一区二区网站| av电影天堂一区二区在线| 日韩av一二三| 亚洲欧洲一区二区在线播放| 日韩免费看的电影| 色婷婷国产精品久久包臀| 久久国产麻豆精品| 亚洲欧美日韩成人高清在线一区| 日韩精品一区二区三区老鸭窝| 99国内精品久久| 紧缚奴在线一区二区三区| 亚洲精品五月天| 国产亚洲精品aa| 91精品国产高清一区二区三区蜜臀| 成人黄色在线看| 免费日韩伦理电影| 亚洲免费资源在线播放| 久久久不卡影院| 欧美电影一区二区三区| 91丨porny丨在线| 国产精品综合久久| 日本在线不卡视频| 亚洲欧洲日产国码二区| 国产精品亚洲人在线观看| 国产精品888| 欧美电影一区二区| 亚洲欧洲av一区二区三区久久| 日韩电影在线免费看| 色系网站成人免费| 欧美激情艳妇裸体舞| 久久99国产精品久久| 欧美午夜视频网站| 亚洲精品欧美综合四区| 国产不卡高清在线观看视频| 99久久国产免费看| 久久久久99精品国产片| 热久久国产精品| 日本精品视频一区二区三区| 美国一区二区三区在线播放| 亚洲成人在线观看视频| 国产精品女同一区二区三区| 欧美xxxxxxxx| 欧美美女一区二区三区| 欧美三区在线观看| 日本精品一区二区三区高清|