clmain.pas

来自「2009最新 传奇汉化0599代码 传奇汉化」· PAS 代码 · 共 1,906 行 · 第 1/5 页

PAS
1,906
字号
         end else begin
            CSocket.Address := g_sMainParam2;
            CSocket.Port := Str_ToInt (g_sMainParam3, 0);
            BoOneClick := TRUE;
         end;
      end;
   end;
   if BO_FOR_TEST then
      CSocket.Address := TestServerAddr;

   CSocket.Active:=True;

   //MainSurface := nil;
   DebugOutStr ('----------------------- started ------------------------');

   Application.OnException := OnProgramException;
   Application.OnIdle := AppOnIdle;
   
end;

procedure TfrmMain.OnProgramException (Sender: TObject; E: Exception);
begin
   DebugOutStr (E.Message);
end;

procedure TfrmMain.WMSysCommand(var Message: TWMSysCommand);
begin
{   with Message do begin
      if (CmdType and $FFF0) = SC_KEYMENU then begin
         if (Key = VK_TAB) or (Key = VK_RETURN) then begin
            FrmMain.WindowState := wsMinimized;
         end else
            inherited;
      end else
         inherited;
   end;
}
   inherited;
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
function GetColorDepth: integer ;//得到桌面颜色深度
var
dc: HDC; 
begin 
dc := GetDC(0); 
Result := GetDeviceCaps(dc, BITSPIXEL); 
ReleaseDC(0, dc); 
end;
function Resolution(X:word):boolean;
var
DevMode:TDeviceMode;
begin
Result:=EnumDisplaySettings(nil,0,DevMode);
if Result then
begin
DevMode.dmFields:=DM_BITSPERPEL;
DevMode.dmBitsPerPel:=x;
Result:=ChangeDisplaySettings(DevMode,0)=DISP_CHANGE_SUCCESSFUL;
end;
end;
function GetDisplayFrequency: Integer;//得到刷新率
var
DeviceMode: TDeviceMode;
begin
EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
Result := DeviceMode.dmDisplayFrequency;
end;

procedure ChangeDisplayFrequency(iFrequency:Integer);//更改刷新率,在Win2000下成功
var
DeviceMode: TDeviceMode;
begin
EnumDisplaySettings(nil,Cardinal(-1), DeviceMode);
DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency);
ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY);
end;
var
  I: Integer;
begin
   if not g_boFullScreen then begin
Resolution(OldColor);
if OldFreq>0 then 
ChangeDisplayFrequency(OldFreq);
   end;
  ClearShowItemList();
  g_ShowItemList.Free;
  g_ShowItemList:=nil;
  g_AutoPickupList.Free;
  g_AutoPickupList:=nil;
   if g_ToolMenuHook <> 0 then UnhookWindowsHookEx(g_ToolMenuHook);
   //SoundCloseProc;
   //DXTimer.Enabled := FALSE;
   Timer1.Enabled := FALSE;
   MinTimer.Enabled := FALSE;

   UnLoadWMImagesLib();
//   WTiles.Finalize;
   {
   WObjects1.Finalize;
   WObjects2.Finalize;
   WObjects3.Finalize;
   WObjects4.Finalize;
   WObjects5.Finalize;
   WObjects6.Finalize;
   WObjects7.Finalize;
   WObjects8.Finalize;
   WObjects9.Finalize;
   WObjects10.Finalize;
   }
//   WHumWing.Finalize;
   WDragonImg.Finalize;
//   WSmTiles.Finalize;
//   WHumImg.Finalize;
//   WHairImg.Finalize;
//   WWeapon.Finalize;
//   WMagic.Finalize;
//   WMagic2.Finalize;
//   WMagIcon.Finalize;
 //  FrmMain.WPrgUse.Finalize;
 WPrgUse3.Finalize;
   WMonImg.Finalize;
   WMon2Img.Finalize;
   WMon3Img.Finalize;
   WMon4Img.Finalize;
   WMon5Img.Finalize;
   WMon6Img.Finalize;
   WMon7Img.Finalize;
   WMon8Img.Finalize;
   WMon9Img.Finalize;
   WMon10Img.Finalize;
   WMon11Img.Finalize;
   WMon12Img.Finalize;
   WMon13Img.Finalize;
   WMon14Img.Finalize;
   WMon15Img.Finalize;
   WMon16Img.Finalize;
   WMon17Img.Finalize;
   WMon18Img.Finalize;
   WMon19Img.Finalize;
   WMon20Img.Finalize;
   WMon21Img.Finalize;
   WMon50Img.Finalize;
   WMon51Img.Finalize;
   WMon52Img.Finalize;
   WMon53Img.Finalize;
   WMon54Img.Finalize;

      
//   WNpcImg.Finalize;
   WEffectImg.Finalize;
//   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;
      WPrgUse3.DDraw := DxDraw.DDraw;
  //    FrmMain.WPrgUse.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;
      WMon24Img.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;
    //  FrmMain.WPrgUse.Initialize;
      WPrgUse3.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;
      WMon24Img.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);
      buildrealrgb(DxDraw.ColorTable);//thedeath

      DScreen.Initialize;
      PlayScene.Initialize;
      FrmDlg.Initialize;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?