Вверх ↑
Ответов: 2057
Рейтинг: 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