?? clmain.pas
字號:
// WChrSel.Finalize;
// WMMap.Finalize;
// WBagItem.Finalize;
// WStateItem.Finalize;
// WDnItem.Finalize;
for I := 0 to NpcImageList.Count - 1 do begin
TWMImages(NpcImageList.Items[I]).Finalize;
end;
for I := 0 to ItemImageList.Count - 1 do begin
TWMImages(ItemImageList.Items[I]).Finalize;
end;
for I := 0 to WeaponImageList.Count - 1 do begin
TWMImages(WeaponImageList.Items[I]).Finalize;
end;
for I := 0 to HumImageList.Count - 1 do begin
TWMImages(HumImageList.Items[I]).Finalize;
end;
DScreen.Finalize;
PlayScene.Finalize;
LoginNoticeScene.Finalize;
DScreen.Free;
IntroScene.Free;
LoginScene.Free;
SelectChrScene.Free;
PlayScene.Free;
LoginNoticeScene.Free;
g_SaveItemList.Free;
g_MenuItemList.Free;
DebugOutStr ('----------------------- closed -------------------------');
Map.Free;
g_DropedItemList.Free;
g_MagicList.Free;
g_FreeActorList.Free;
g_ChangeFaceReadyList.Free;
g_ServerList.Free;
//if MainSurface <> nil then MainSurface.Free;
g_Sound.Free;
g_SoundList.Free;
BGMusicList.Free;
//DObjList.Free;
EventMan.Free;
NpcImageList.Free;
ItemImageList.Free;
WeaponImageList.Free;
HumImageList.Free;
g_DXSound.Free;
g_DWinMan.Free;
end;
function ComposeColor(Dest, Src: TRGBQuad; Percent: Integer): TRGBQuad;
begin
with Result do
begin
rgbRed := Src.rgbRed+((Dest.rgbRed-Src.rgbRed)*Percent div 256);
rgbGreen := Src.rgbGreen+((Dest.rgbGreen-Src.rgbGreen)*Percent div 256);
rgbBlue := Src.rgbBlue+((Dest.rgbBlue-Src.rgbBlue)*Percent div 256);
rgbReserved := 0;
end;
end;
procedure TfrmMain.DXDrawInitialize(Sender: TObject);
begin
if g_boFirstTime then begin
g_boFirstTime := FALSE;
DxDraw.SurfaceWidth := SCREENWIDTH;
DxDraw.SurfaceHeight := SCREENHEIGHT;
{$IF USECURSOR = DEFAULTCURSOR}
DxDraw.Cursor:=crHourGlass;
{$ELSE}
DxDraw.Cursor:=crNone;
{$IFEND}
DxDraw.Surface.Canvas.Font.Assign (FrmMain.Font);
FrmMain.Font.Name := g_sCurFontName;
FrmMain.Canvas.Font.Name := g_sCurFontName;
DxDraw.Surface.Canvas.Font.Name := g_sCurFontName;
PlayScene.EdChat.Font.Name := g_sCurFontName;
//MainSurface := TDirectDrawSurface.Create (frmMain.DxDraw.DDraw);
//MainSurface.SystemMemory := TRUE;
//MainSurface.SetSize (SCREENWIDTH, SCREENHEIGHT);
InitWMImagesLib(DxDraw);
// WTiles.DDraw := DxDraw.DDraw;
{
WObjects1.DDraw := DxDraw.DDraw;
WObjects2.DDraw := DxDraw.DDraw;
WObjects3.DDraw := DxDraw.DDraw;
WObjects4.DDraw := DxDraw.DDraw;
WObjects5.DDraw := DxDraw.DDraw;
WObjects6.DDraw := DxDraw.DDraw;
WObjects7.DDraw := DxDraw.DDraw;
WObjects8.DDraw := DxDraw.DDraw;
WObjects9.DDraw := DxDraw.DDraw;
WObjects10.DDraw := DxDraw.DDraw;
}
// WHumWing.DDraw := DxDraw.DDraw;
WDragonImg.DDraw := DxDraw.DDraw;
// WSmTiles.DDraw := DxDraw.DDraw;
// WChrSel.DDraw := DxDraw.DDraw;
// WMMap.DDraw := DxDraw.DDraw;
// WBagItem.DDraw := DxDraw.DDraw;
// WStateItem.DDraw := DxDraw.DDraw;
// WDnItem.DDraw := DxDraw.DDraw;
// WHumImg.DDraw := DxDraw.DDraw;
// WHairImg.DDraw := DxDraw.DDraw;
// WWeapon.DDraw := DxDraw.DDraw;
// WMagic.DDraw := DxDraw.DDraw;
// WMagic2.DDraw := DxDraw.DDraw;
// WMagIcon.DDraw := DxDraw.DDraw;
WMonImg.DDraw := DxDraw.DDraw;
WMon2Img.DDraw := DxDraw.DDraw;
WMon3Img.DDraw := DxDraw.DDraw;
WMon4Img.DDraw := DxDraw.DDraw;
WMon5Img.DDraw := DxDraw.DDraw;
WMon6Img.DDraw := DxDraw.DDraw;
WMon7Img.DDraw := DxDraw.DDraw;
WMon8Img.DDraw := DxDraw.DDraw;
WMon9Img.DDraw := DxDraw.DDraw;
WMon10Img.DDraw := DxDraw.DDraw;
WMon11Img.DDraw := DxDraw.DDraw;
WMon12Img.DDraw := DxDraw.DDraw;
WMon13Img.DDraw := DxDraw.DDraw;
WMon14Img.DDraw := DxDraw.DDraw;
WMon15Img.DDraw := DxDraw.DDraw;
WMon16Img.DDraw := DxDraw.DDraw;
WMon17Img.DDraw := DxDraw.DDraw;
WMon18Img.DDraw := DxDraw.DDraw;
WMon19Img.DDraw := DxDraw.DDraw;
WMon20Img.DDraw := DxDraw.DDraw;
WMon21Img.DDraw := DxDraw.DDraw;
WMon22Img.DDraw := DxDraw.DDraw;
WMon23Img.DDraw := DxDraw.DDraw;
WMon50Img.DDraw := DxDraw.DDraw;
WMon51Img.DDraw := DxDraw.DDraw;
WMon52Img.DDraw := DxDraw.DDraw;
WMon53Img.DDraw := DxDraw.DDraw;
WMon54Img.DDraw := DxDraw.DDraw;
// WNpcImg.DDraw := DxDraw.DDraw;
WEffectImg.DDraw := DxDraw.DDraw;
// WTiles.Initialize;
{
WObjects1.Initialize;
WObjects2.Initialize;
WObjects3.Initialize;
WObjects4.Initialize;
WObjects5.Initialize;
WObjects6.Initialize;
WObjects7.Initialize;
WObjects8.Initialize;
WObjects9.Initialize;
WObjects10.Initialize;
}
// WHumWing.Initialize;
WDragonImg.Initialize;
// WSmTiles.Initialize;
// WChrSel.Initialize;
// WMMap.Initialize;
// WBagItem.Initialize;
// WStateItem.Initialize;
// WDnItem.Initialize;
// WHumImg.Initialize;
// WHairImg.Initialize;
// WWeapon.Initialize;
// WMagic.Initialize;
// WMagic2.Initialize;
// WMagIcon.Initialize;
WMonImg.Initialize;
WMon2Img.Initialize;
WMon3Img.Initialize;
WMon4Img.Initialize;
WMon5Img.Initialize;
WMon6Img.Initialize;
WMon7Img.Initialize;
WMon8Img.Initialize;
WMon9Img.Initialize;
WMon10Img.Initialize;
WMon11Img.Initialize;
WMon12Img.Initialize;
WMon13Img.Initialize;
WMon14Img.Initialize;
WMon15Img.Initialize;
WMon16Img.Initialize;
WMon17Img.Initialize;
WMon18Img.Initialize;
WMon19Img.Initialize;
WMon20Img.Initialize;
WMon21Img.Initialize;
WMon22Img.Initialize;
WMon23Img.Initialize;
WMon50Img.Initialize;
WMon51Img.Initialize;
WMon52Img.Initialize;
WMon53Img.Initialize;
WMon54Img.Initialize;
// WNpcImg.Initialize;
WEffectImg.Initialize;
DxDraw.DefColorTable := g_WMainImages.MainPalette;
DxDraw.ColorTable := DxDraw.DefColorTable;
DxDraw.UpdatePalette;
//256 Blend utility
if not LoadNearestIndex (NEARESTPALETTEINDEXFILE) then begin
BuildNearestIndex (DxDraw.ColorTable);
SaveNearestIndex (NEARESTPALETTEINDEXFILE);
end;
BuildColorLevels (DxDraw.ColorTable);
DScreen.Initialize;
PlayScene.Initialize;
FrmDlg.Initialize;
if doFullScreen in DxDraw.Options then begin
//Screen.Cursor := crNone;
end else begin
Left := 0;
Top := 0;
Width := SCREENWIDTH;
Height := SCREENHEIGHT;
g_boNoDarkness := TRUE;
g_boUseDIBSurface := TRUE;
//frmMain.BorderStyle := bsSingle;
end;
g_ImgMixSurface := TDirectDrawSurface.Create (frmMain.DxDraw.DDraw);
g_ImgMixSurface.SystemMemory := TRUE;
g_ImgMixSurface.SetSize (300, 350);
g_MiniMapSurface := TDirectDrawSurface.Create (frmMain.DxDraw.DDraw);
g_MiniMapSurface.SystemMemory := TRUE;
g_MiniMapSurface.SetSize (540, 360);
//DxDraw.Surface.SystemMemory := TRUE;
end;
end;
procedure TfrmMain.DXDrawFinalize(Sender: TObject);
begin
//DXTimer.Enabled := FALSE;
end;
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Savebags ('.\Data\' + ServerName + '.' + CharName + '.itm', @ItemArr);
//DxTimer.Enabled := FALSE;
end;
{------------------------------------------------------------}
procedure TfrmMain.ProcOnIdle;
var
done: Boolean;
begin
AppOnIdle (self, done);
//DXTimerTimer (self, 0);
end;
procedure TfrmMain.AppOnIdle (Sender: TObject; var Done: Boolean);
//procedure TFrmMain.DXTimerTimer(Sender: TObject; LagCount: Integer);
var
i, j: integer;
p: TPoint;
DF: DDBLTFX;
d: TDirectDrawSurface;
nC:integer;
begin
Done := TRUE;
if not DxDraw.CanDraw then exit;
// DxDraw.Surface.Fill(0);
// BoldTextOut (DxDraw.Surface, 0, 0, clBlack, clBlack, 'test test ' + TimeToStr(Time));
// DxDraw.Surface.Canvas.Release;
ProcessKeyMessages;
ProcessActionMessages;
DScreen.DrawScreen (DxDraw.Surface);
g_DWinMan.DirectPaint (DxDraw.Surface);
DScreen.DrawScreenTop (DxDraw.Surface);
DScreen.DrawHint (DxDraw.Surface);
{$IF USECURSOR = IMAGECURSOR}
{Draw cursor}
//=========================================
//顯示光標
CursorSurface := g_WMainImages.Images[0];
if CursorSurface <> nil then begin
GetCursorPos (p);
DxDraw.Surface.Draw (p.x, p.y, CursorSurface.ClientRect, CursorSurface, TRUE);
end;
//==========================
{$IFEND}
if g_boItemMoving then begin
if (g_MovingItem.Item.S.Name <> g_sGoldName{'金幣'}) then
d := g_WBagItemImages.Images[g_MovingItem.Item.S.Looks]
else d := g_WBagItemImages.Images[115]; //金幣外形
if d <> nil then begin
GetCursorPos (p);
DxDraw.Surface.Draw (p.x-(d.ClientRect.Right div 2),
p.y-(d.ClientRect.Bottom div 2),
d.ClientRect,
d,
TRUE);
//顯示物品的ID號
if (g_MovingItem.Item.S.Name <> g_sGoldName{'金幣'}) then
with DxDraw.Surface.Canvas do begin
SetBkMode (Handle, TRANSPARENT);
Font.Color := clYellow;
TextOut (p.X + 9, p.Y + 3,g_MovingItem.Item.S.Name);
Release;
end;
end;
end;
if g_boDoFadeOut then begin
if g_nFadeIndex < 1 then g_nFadeIndex := 1;
MakeDark (DxDraw.Surface, g_nFadeIndex);
if g_nFadeIndex <= 1 then g_boDoFadeOut := FALSE
else Dec (g_nFadeIndex, 2);
end else
if g_boDoFadeIn then begin
if g_nFadeIndex > 29 then g_nFadeIndex := 29;
MakeDark (DxDraw.Surface, g_nFadeIndex);
if g_nFadeIndex >= 29 then g_boDoFadeIn := FALSE
else Inc (g_nFadeIndex, 2);
end else
if g_boDoFastFadeOut then begin
if g_nFadeIndex < 1 then g_nFadeIndex := 1;
MakeDark (DxDraw.Surface, g_nFadeIndex);
if g_nFadeIndex > 1 then Dec (g_nFadeIndex, 4);
end;
{
for i:=0 to 15 do
for j:=0 to 15 do begin
DxDraw.Surface.FillRect(Rect (j*16, i*16, (j+1)*16, (i+1)*16), i*16 + j);
end;
for i:=0 to 15 do
DxDraw.Surface.Canvas.TextOut (600, i*14,
IntToStr(i) + ' ' +
IntToStr(DxDraw.ColorTable[i].rgbRed) + ' ' +
IntToStr(DxDraw.ColorTable[i].rgbGreen) + ' ' +
IntToStr(DxDraw.ColorTable[i].rgbBlue));
DxDraw.Surface.Canvas.Release;}
//DxDraw.Flip;
//登錄的時候顯示圓形LOGO
if g_ConnectionStep = cnsLogin then begin
with DxDraw.Surface.Canvas do begin
Brush.Color:=clLime;
nC:=64;
RoundRect(SCREENWIDTH - nC,0,SCREENWIDTH,nC,nC,nC);
// RoundRect(800 - nC,0,SCREENWIDTH,nC,nC,nC);
Font.Color := clBlack;
SetBkMode (Handle, TRANSPARENT);
TextOut ((SCREENWIDTH - nC) + ((nC - TextWidth(g_sLogoText)) div 2), (nC - TextHeight('W')) div 2,g_sLogoText);
// TextOut ((800 - nC) + ((nC - TextWidth(sLogoText)) div 2), (nC - TextHeight('W')) div 2,sLogoText);
Release;
end;
end;
DxDraw.Primary.Draw (0, 0, DxDraw.Surface.ClientRect, DxDraw.Surface, FALSE);
if g_MySelf <> nil then begin
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -