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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? drawscrn.pas

?? 傳奇源代碼的delphi版本
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit DrawScrn;

interface

uses
  svn, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DXDraws, DXClass, DirectX, IntroScn, Actor, cliUtil, clFunc,
  HUtil32;


const
   MAXSYSLINE = 8;

   BOTTOMBOARD = 1;
   VIEWCHATLINE = 9;
   AREASTATEICONBASE = 150;
   HEALTHBAR_BLACK = 0;
   HEALTHBAR_RED = 1;
   HEALTHBAR_BLUE = 10;
   HEALTHBAR_YELLOW = 11;
   HEALTHBAR_GREEN = 12;
   HEALTHBAR_PINK = 13;
   HEALTHBAR_SEA = 14;


type
   TDrawScreen = class
   private
      m_dwFrameTime       :LongWord;
      m_dwFrameCount      :LongWord;
      m_dwDrawFrameCount  :LongWord;
      m_SysMsgList        :TStringList;
   public
      CurrentScene: TScene;
      ChatStrs: TStringList;
      ChatBks: TList;
      ChatBoardTop: integer;

      HintList: TStringList;
      HintX, HintY, HintWidth, HintHeight: integer;
      HintUp: Boolean;
      HintColor: TColor;

      constructor Create;
      destructor Destroy; override;
      procedure KeyPress (var Key: Char);
      procedure KeyDown (var Key: Word; Shift: TShiftState);
      procedure MouseMove (Shift: TShiftState; X, Y: Integer);
      procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
      procedure Initialize;
      procedure Finalize;
      procedure ChangeScene (scenetype: TSceneType);
      procedure DrawScreen (MSurface: TDirectDrawSurface);
      procedure DrawScreenTop (MSurface: TDirectDrawSurface);
      procedure AddSysMsg (msg: string);
      procedure AddChatBoardString (str: string; fcolor, bcolor: integer);
      procedure ClearChatBoard;

      procedure ShowHint (x, y: integer; str: string; color: TColor; drawup: Boolean);
      procedure ClearHint;
      procedure DrawHint (MSurface: TDirectDrawSurface);
   end;


implementation

uses
   ClMain, MShare, Share;
   

constructor TDrawScreen.Create;
var
   i: integer;
begin
   CurrentScene := nil;
   m_dwFrameTime := GetTickCount;
   m_dwFrameCount := 0;
   m_SysMsgList := TStringList.Create;
   ChatStrs := TStringList.Create;
   ChatBks := TList.Create;
   ChatBoardTop := 0;

   HintList := TStringList.Create;

end;

destructor TDrawScreen.Destroy;
begin
   m_SysMsgList.Free;
   ChatStrs.Free;
   ChatBks.Free;
   HintList.Free;
   inherited Destroy;
end;

procedure TDrawScreen.Initialize;
begin
end;

procedure TDrawScreen.Finalize;
begin
end;

procedure TDrawScreen.KeyPress (var Key: Char);
begin
   if CurrentScene <> nil then
      CurrentScene.KeyPress (Key);
end;

procedure TDrawScreen.KeyDown (var Key: Word; Shift: TShiftState);
begin
   if CurrentScene <> nil then
      CurrentScene.KeyDown (Key, Shift);
end;

procedure TDrawScreen.MouseMove (Shift: TShiftState; X, Y: Integer);
begin
   if CurrentScene <> nil then
      CurrentScene.MouseMove (Shift, X, Y);
end;

procedure TDrawScreen.MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   if CurrentScene <> nil then
      CurrentScene.MouseDown (Button, Shift, X, Y);
end;

procedure TDrawScreen.ChangeScene (scenetype: TSceneType);
begin
   if CurrentScene <> nil then
      CurrentScene.CloseScene;
   case scenetype of
      stIntro:  CurrentScene := IntroScene;
      stLogin:  CurrentScene := LoginScene;
      stSelectCountry:  ;
      stSelectChr: CurrentScene := SelectChrScene;
      stNewChr:     ;
//      stLoading:   CurrentScene := LoadingScene;
//      stLoginNotice: CurrentScene := LoginNoticeScene;
      stPlayGame: CurrentScene := PlayScene;
   end;
   if CurrentScene <> nil then begin
      CurrentScene.OpenScene;
      if (scenetype = stLogin) and g_boAutoLogin then FrmMain.SendLogin(LowerCase(g_sAutoID),g_sAutoPass); 
   end;
end;

procedure TDrawScreen.AddSysMsg (msg: string);
begin
   if m_SysMsgList.Count >= 10 then m_SysMsgList.Delete (0);
   m_SysMsgList.AddObject (msg, TObject(GetTickCount));
end;

procedure TDrawScreen.AddChatBoardString (str: string; fcolor, bcolor: integer);
var
   i, len, aline: integer;
   dline, temp: string;
const
   BOXWIDTH = (SCREENWIDTH div 2 - 214) * 2{374}; //41 聊天框文字寬度
begin
   len := Length (str);
   temp := '';
   i := 1;
   while TRUE do begin
      if i > len then break;
      if byte (str[i]) >= 128 then begin
         temp := temp + str[i];
         Inc (i);
         if i <= len then temp := temp + str[i]
         else break;
      end else
         temp := temp + str[i];

      aline := FrmMain.Canvas.TextWidth (temp);
      if aline > BOXWIDTH then begin
         ChatStrs.AddObject (temp, TObject(fcolor));
         ChatBks.Add (Pointer(bcolor));
         str := Copy (str, i+1, Len-i);
         temp := '';
         break;
      end;
      Inc (i);
   end;
   if temp <> '' then begin
      ChatStrs.AddObject (temp, TObject(fcolor));
      ChatBks.Add (Pointer(bcolor));
      str := '';
   end;
   if ChatStrs.Count > 200 then begin
      ChatStrs.Delete (0);
      ChatBks.Delete (0);
      if ChatStrs.Count - ChatBoardTop < VIEWCHATLINE then Dec(ChatBoardTop);
   end else if (ChatStrs.Count-ChatBoardTop) > VIEWCHATLINE then begin
      Inc (ChatBoardTop);
   end;

   if str <> '' then
      AddChatBoardString (' ' + str, fcolor, bcolor);

end;

procedure TDrawScreen.ShowHint (x, y: integer; str: string; color: TColor; drawup: Boolean);
var
   data: string;
   w, h: integer;
begin
   ClearHint;
   HintX := x;
   HintY := y;
   HintWidth := 0;
   HintHeight := 0;
   HintUp := drawup;
   HintColor := color;
   while TRUE do begin
      if str = '' then break;
      str := GetValidStr3 (str, data, ['\']);
      w := FrmMain.Canvas.TextWidth (data) + 4 * 2;
      if w > HintWidth then HintWidth := w;
      if data <> '' then
         HintList.Add (data)
   end;
   HintHeight := (FrmMain.Canvas.TextHeight('A') + 1) * HintList.Count + 3 * 2;
   if HintUp then
      HintY := HintY - HintHeight;
end;

procedure TDrawScreen.ClearHint;
begin
   HintList.Clear;
end;

procedure TDrawScreen.ClearChatBoard;
begin
   m_SysMsgList.Clear;
   ChatStrs.Clear;
   ChatBks.Clear;
   ChatBoardTop := 0;
end;


procedure TDrawScreen.DrawScreen (MSurface: TDirectDrawSurface);
   procedure NameTextOut (surface: TDirectDrawSurface; x, y, fcolor, bcolor: integer; namestr: string);
   var
      i, row: integer;
      nstr: string;
   begin
      row := 0;
      for i:=0 to 10 do begin
         if namestr = '' then break;
         namestr := GetValidStr3 (namestr, nstr, ['\']);
         BoldTextOut (surface,
                      x - surface.Canvas.TextWidth(nstr) div 2,
                      y + row * 12,
                      fcolor, bcolor, nstr);
         Inc (row);
      end;
   end;
var
   i, k, line, sx, sy, fcolor, bcolor, hh: integer;
   actor: TActor;
   str, uname: string;
   dsurface: TDirectDrawSurface;
   d: TDirectDrawSurface;
   rc: TRect;
   infoMsg :String;
begin
   MSurface.Fill(0);
   if CurrentScene <> nil then
      CurrentScene.PlayScene (MSurface);

   if GetTickCount - m_dwFrameTime > 1000 then begin
      m_dwFrameTime := GetTickCount;
      m_dwDrawFrameCount := m_dwFrameCount;
      m_dwFrameCount := 0;
   end;
   Inc (m_dwFrameCount);

   if g_MySelf = nil then exit;

   if CurrentScene = PlayScene then begin
      with MSurface do begin

         with PlayScene do begin
            for k:=0 to m_ActorList.Count-1 do begin
               actor := m_ActorList[k];

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品无圣光一区二区| 在线观看一区二区视频| 精品国产91久久久久久久妲己| 日韩影院免费视频| 欧美一卡二卡三卡四卡| 国内精品免费在线观看| 亚洲国产精品二十页| 波多野结衣亚洲一区| 亚洲精品五月天| 欧美日韩精品一区二区三区四区 | 一区二区三区在线观看视频| 91在线无精精品入口| 亚洲综合自拍偷拍| 日韩欧美国产电影| 大胆亚洲人体视频| 一区二区视频在线| 欧美一激情一区二区三区| 国产精品 欧美精品| 亚洲欧美国产毛片在线| 3atv在线一区二区三区| 国产一区二区三区四区五区入口 | 不卡av在线免费观看| 中文字幕字幕中文在线中不卡视频| 一本一道波多野结衣一区二区| 五月婷婷欧美视频| 欧美经典一区二区| 欧美色男人天堂| 国产精品影视网| 亚洲无线码一区二区三区| 精品国产精品网麻豆系列| 97成人超碰视| 蜜乳av一区二区| 亚洲日本在线视频观看| 26uuu成人网一区二区三区| 91在线观看一区二区| 麻豆久久久久久| 亚洲精品美腿丝袜| 久久综合色播五月| 欧美图区在线视频| 成人一区二区三区在线观看| 午夜不卡av免费| 国产精品二三区| 日韩精品中文字幕在线不卡尤物 | 另类综合日韩欧美亚洲| 亚洲欧美在线另类| 欧美α欧美αv大片| 在线免费精品视频| 成人做爰69片免费看网站| 喷白浆一区二区| 亚洲一区二区三区四区在线观看| 久久精品人人做人人综合| 欧美优质美女网站| 不卡视频在线观看| 国产一区二区在线视频| 无吗不卡中文字幕| 亚洲精选视频在线| 国产精品福利av| 久久蜜桃av一区二区天堂| 91精品一区二区三区久久久久久 | 亚洲va国产天堂va久久en| 国产精品国产三级国产a| 久久免费国产精品| 欧美一卡在线观看| 欧美日韩精品是欧美日韩精品| 不卡在线视频中文字幕| 国产伦精品一区二区三区免费迷| 日韩精品一二三四| 偷偷要91色婷婷| 亚洲一区二区三区视频在线| 亚洲视频在线一区| 中文字幕一区二区三区不卡在线| 久久青草欧美一区二区三区| 欧美www视频| 欧美精品xxxxbbbb| 91精品国产91久久综合桃花| 欧美日韩一区三区四区| 91国偷自产一区二区三区观看 | 99免费精品视频| 粉嫩一区二区三区性色av| 国产精品一区二区三区网站| 国产中文字幕一区| 国产精品亚洲专一区二区三区| 国内久久精品视频| 国产一区二区三区香蕉| 国产馆精品极品| jlzzjlzz国产精品久久| jizz一区二区| 在线国产电影不卡| 欧美日韩一区二区三区不卡| 欧美理论电影在线| 欧美一级艳片视频免费观看| 日韩欧美国产综合一区 | 亚洲高清免费视频| 三级久久三级久久久| 蜜臀av性久久久久蜜臀av麻豆| 久久丁香综合五月国产三级网站| 久久国产成人午夜av影院| 国产不卡高清在线观看视频| av电影在线观看完整版一区二区| 日本高清不卡在线观看| 欧美日韩国产小视频| 日韩午夜激情电影| 国产日韩欧美亚洲| 亚洲精品视频在线| 奇米777欧美一区二区| 国产一区二区h| 一本久道久久综合中文字幕 | 东方欧美亚洲色图在线| 99精品1区2区| 911精品国产一区二区在线| xfplay精品久久| 亚洲女人的天堂| 日本不卡一区二区| 不卡视频免费播放| 欧美日韩的一区二区| 久久久亚洲午夜电影| 亚洲欧美一区二区久久| 免费高清在线视频一区·| 成人小视频在线| 91精品国产福利在线观看| 国产午夜久久久久| 丝袜亚洲另类欧美综合| 国产美女精品一区二区三区| 91久久精品日日躁夜夜躁欧美| 日韩一卡二卡三卡四卡| 国产精品久久久久久一区二区三区| 亚洲电影中文字幕在线观看| 国产一区二区三区在线观看精品 | 亚洲一区欧美一区| 久久国产日韩欧美精品| 91黄色免费观看| 国产视频视频一区| 日产欧产美韩系列久久99| 99久久精品一区二区| 精品少妇一区二区三区在线播放 | 丁香激情综合五月| 337p亚洲精品色噜噜| 中文字幕中文字幕在线一区 | 国产大陆精品国产| 5858s免费视频成人| 中文字幕一区二区三区不卡| 老司机精品视频一区二区三区| 日本高清视频一区二区| 国产女同性恋一区二区| 久久不见久久见中文字幕免费| 日本道色综合久久| 中文字幕一区在线| 国产精品 日产精品 欧美精品| 欧美一区二区三区不卡| 亚洲国产日日夜夜| 91小宝寻花一区二区三区| 国产亚洲综合色| 国产一区二区三区久久久| 欧美精品1区2区3区| 亚洲一二三四在线| 色婷婷av一区二区三区软件 | 亚洲精品少妇30p| 成人午夜电影久久影院| 久久综合色综合88| 精品一区二区av| 欧美一区二区三区男人的天堂| 亚洲中国最大av网站| 一本大道av伊人久久综合| 亚洲欧洲99久久| 91网址在线看| 亚洲精选一二三| 91精彩视频在线| 亚洲一区二区在线观看视频| 日本丰满少妇一区二区三区| 亚洲精品美腿丝袜| 在线精品国精品国产尤物884a | 亚洲国产精品综合小说图片区| 91猫先生在线| 亚洲已满18点击进入久久| 欧美中文字幕一二三区视频| 亚洲一区二区影院| 91精品国产一区二区三区| 日本伊人色综合网| 欧美va亚洲va香蕉在线| 国产在线麻豆精品观看| 国产欧美一区二区精品忘忧草| 国产一区在线观看视频| 久久精品日韩一区二区三区| 成人一区二区三区中文字幕| 国产精品久久久久久久第一福利| 99精品国产热久久91蜜凸| 亚洲毛片av在线| 欧美日本一道本在线视频| 欧美aⅴ一区二区三区视频| 精品国产亚洲在线| www.亚洲在线| 亚洲永久免费av| 日韩一区二区在线看| 国产成人av电影在线| 亚洲视频网在线直播| 欧美伦理电影网| 国产一区二区不卡在线| 亚洲欧美一区二区三区国产精品| 欧美在线观看视频在线| 久久99精品一区二区三区三区|