Вверх ↑
Ответов: 2060
Рейтинг: 28
#1: 2008-02-01 14:47:37 ЛС | профиль | цитата
tsdima, я как раз использую DLL. Выходит надо искать причину в DLL?

------------ Дoбавленo:


Вот код

#pas
unit HiAsmUnit;

interface

uses kol,Share,Debug, GameTypes, DGLEngine_header;

type
 THiAsmClass = class(TDebug)
   private

   public
     _data_Data:THI_Event;
     Data1:THI_Event;
     Data2:THI_Event;
     Data3:THI_Event;
     
   procedure doinit(var _Data:TData; Index:word);
   procedure doPlayerX(var _Data:TData; Index:word);
 end;


implementation

 var Font, Space : cardinal;


procedure Init;
begin
 DirectSoundInit;
 ExploSound:=LoadSample('Data\expl.wav');
 PlasmaSound:=LoadSample('Data\plasma.wav');
 
WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '1') ;

 Font:=LoadFontFromFile('Data\Font.dft');
 AsteroidModel:=LoadModel('Data\Asteroid.dmd',MDL_NO_SCALE);// MDL_SCALE_EVERY_FRAME - указывает, что модель будет автомасштабироватья при загрузке
 Space:=LoadTextureFromFile('Data\space.bmp');
 SpaceShip:=LoadTextureFromFile('Data\Ship.bmp',TEXDETAIL_BEST,TRANSCOLOR_AQUA);
 PlasmaTexture:=LoadTextureFromFile('Data\Plasma.bmp',PlasmaTexture);
 AsteroidTexture:=LoadTextureFromFile('Data\Asteroid.jpg');
 ExploTexture:=LoadTextureFromFile('Data\Explo.bmp');


 CreateConsole(Font);
 WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '2') ;
 RegisterCommandProcedure('quit',@QuitEngine);
 WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '3') ;
end;


procedure Draw;
begin
WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '6') ;
Begin2D;
 DrawTexture2D_Simple(Space,0,0,640,480);
 DrawPlasma;
 DrawPlayer;
End2D;
WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '4') ;
 DrawAsteroid;

Begin2D;
 DrawExplo;

 DrawText2D(Font,10,10,'FPS: '+Int2Str(GetFPS),$FFFFFF,200);
 DrawConsole;
End2D;
end;


procedure Process;
begin
  WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '5') ;
if random(25) = 10 then CreateAsteroid(random(600),-64);
 ProcessPlayer;
 ProcessPlasma;
 ProcessConsole;
 ProcessAsteroid;
 ProcessExplo;

 if IsKeyPressed(Key_Escape) then QuitEngine;
end;

procedure InitMan;

begin
 RegProcedure(PROC_DRAW,@Draw);
 RegProcedure(PROC_PROCESS,@Process);
 RegProcedure(PROC_INIT,@init);

 SetGameProcessInterval(25);

 SetEngineInitParametrs(640,480,32,0,False,FALSE,FALSE,TRUE);

 ApplicationName('Пример');

 WaitShot:=0;
 PlayerX:=(640-64) div 2;

 SetLength(Plasma,0);
 SetLength(Asteroids,0);
 SetLength(Explosions,0);

 randomize;

 //PlayMusic('Data\Music.mid',TRUE);

 StartEngine;  

end;  


procedure THiAsmClass.doInit;
begin
  if LoadDGLEngineDLL('DGLEngine.dll') then InitMan;


end;


procedure THiAsmClass.doPlayerX;
begin
// PlayerX := ToIntegerEvent(Data1); 
// PlayerY := ToIntegerEvent(Data2); 
// Ogon := ToIntegerEvent(Data3);
end;



end.

------------ Дoбавленo:


Данная процедура

#pas
WriteValueToIniFile ('C:\Program Files\HiAsm\Разрабатываемые компоненты\DGLE\DGLEngine_Log.ini', 'Section', 'Key', '3') ;
Записывет в ini файл числа от 1 до 6. И она останавливаеться на 3. Значит procedure Init; выполняеться полностью и потом происходит Бум.
------------ Дoбавленo:

Вот этот движок хочу подключить DGLE
Выше приведённый код работат если отключить загрузку 3D модели. Вот если эту строчку

#pas
 AsteroidModel:=LoadModel('Data\Asteroid.dmd',MDL_NO_SCALE);// MDL_SCALE_EVERY_FRAME - указывает, что модель будет автомасштабироватья при загрузке
закоментировать, программа не вылетает.
карма: 1

1
Голосовали:Stasie