hedgewars/hwengine.pas
changeset 3021 1d3302ac371f
parent 2990 b62e567f17b9
child 3025 01682ec58eb0
equal deleted inserted replaced
3020:9b443edb8dd1 3021:1d3302ac371f
    67 //       HHHandlers.inc
    67 //       HHHandlers.inc
    68 //       SinTable.inc
    68 //       SinTable.inc
    69 //       proto.inc
    69 //       proto.inc
    70 
    70 
    71 {$IFDEF HWLIBRARY}
    71 {$IFDEF HWLIBRARY}
    72 type arrayofpchar = array[0..5] of PChar;
    72 type arrayofpchar = array[0..7] of PChar;
    73 procedure DoTimer(Lag: LongInt);
    73 
    74 procedure OnDestroy;
       
    75 procedure MainLoop;
       
    76 procedure ShowMainWindow;
       
    77 procedure Game(gameArgs: arrayofpchar); cdecl; export;
       
    78 procedure initEverything;
    74 procedure initEverything;
    79 procedure freeEverything;
    75 procedure freeEverything;
    80 
    76 
    81 implementation
    77 implementation
    82 
       
    83 {$ELSE}
    78 {$ELSE}
    84 procedure OnDestroy; forward;
    79 procedure OnDestroy; forward;
    85 procedure freeEverything; forward;
    80 procedure freeEverything; forward;
    86 {$ENDIF}
    81 {$ENDIF}
    87 
    82 
   233 begin
   228 begin
   234 {$IFDEF HWLIBRARY}
   229 {$IFDEF HWLIBRARY}
   235     initEverything();
   230     initEverything();
   236     Randomize();
   231     Randomize();
   237 
   232 
   238     cScreenWidth:= 480;
       
   239     cScreenHeight:= 320;
       
   240     cInitWidth:= cScreenWidth;
       
   241     cInitHeight:= cScreenHeight;
       
   242     cBits:= 32;
   233     cBits:= 32;
   243     cFullScreen:= false;
   234     cFullScreen:= false;
   244     cVSyncInUse:= true;
   235     cVSyncInUse:= true;
   245     cTimerInterval:= 8;
   236     cTimerInterval:= 8;
   246     PathPrefix:= 'Data';
   237     PathPrefix:= 'Data';
   252     val(gameArgs[1], ipcPort);
   243     val(gameArgs[1], ipcPort);
   253     isSoundEnabled:= gameArgs[2] = '1';
   244     isSoundEnabled:= gameArgs[2] = '1';
   254     isMusicEnabled:= gameArgs[3] = '1';
   245     isMusicEnabled:= gameArgs[3] = '1';
   255     cLocaleFName:= gameArgs[4];
   246     cLocaleFName:= gameArgs[4];
   256     cAltDamage:= gameArgs[5] = '1';
   247     cAltDamage:= gameArgs[5] = '1';
       
   248     val(gameArgs[6], cScreenHeight);
       
   249     val(gameArgs[7], cScreenWidth);
       
   250     cInitHeight:= cScreenHeight;
       
   251     cInitWidth:= cScreenWidth;
   257 {$ENDIF}
   252 {$ENDIF}
   258 
   253 
   259     for p:= Succ(Low(TPathType)) to High(TPathType) do
   254     for p:= Succ(Low(TPathType)) to High(TPathType) do
   260         if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p];
   255         if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p];
   261         
   256         
   355 begin
   350 begin
   356     free_uWorld();
   351     free_uWorld();
   357     free_uVisualGears();    //stub
   352     free_uVisualGears();    //stub
   358     free_uTeams();
   353     free_uTeams();
   359     free_uStore();
   354     free_uStore();
   360     free_uStats();      //stub
   355     free_uStats();          //stub
   361     free_uSound();      //stub
   356     free_uSound();          //stub
   362     //uSHA does not need to be freed
   357     //uSHA does not need to be freed
   363     free_uRandom();     //stub
   358     free_uRandom();     //stub
   364     //uLocale does not need to be freed
   359     //uLocale does not need to be freed
   365     //uLandTemplates does not need to be freed
   360     //uLandTemplates does not need to be freed
   366     //uLandTexture does not need to be freed
   361     //uLandTexture does not need to be freed
   367     //uLandObjects does not need to be freed
   362     //uLandObjects does not need to be freed
   368     //uLandGraphics does not need to be freed
   363     //uLandGraphics does not need to be freed
   369     free_uLand();
   364     free_uLand();
   370     free_uKeys();       //stub
   365     free_uKeys();           //stub
   371     free_uIO();
   366     free_uIO();
   372     free_uGears();
   367     free_uGears();
   373     //uGame does not need to be freed
   368     //uGame does not need to be freed
   374     //uFloat does not need to be freed
   369     //uFloat does not need to be freed
   375     free_uCollisions();
   370     free_uCollisions();
   376     free_uChat();
   371     free_uChat();
   377     free_uAmmos();
   372     free_uAmmos();
   378     free_uAIMisc();     //stub
   373     free_uAIMisc();         //stub
   379     //uAIAmmoTests does not need to be freed
   374     //uAIAmmoTests does not need to be freed
   380     //uAIActions does not need to be freed
   375     //uAIActions does not need to be freed
   381     free_uAI();     //stub
   376     free_uAI();             //stub
   382 
   377 
   383     free_uConsole();
   378     free_uConsole();
   384     free_uMisc();
   379     free_uMisc();
   385     free_uConsts();     //stub
   380     free_uConsts();         //stub
   386     free_uScript();
   381     free_uScript();
   387 end;
   382 end;
   388 
   383 
   389 {$IFNDEF HWLIBRARY}
       
   390 /////////////////////////
   384 /////////////////////////
   391 procedure GenLandPreview;
   385 procedure GenLandPreview;
   392 var Preview: TPreview;
   386 var Preview: TPreview;
   393     h: byte;
   387     h: byte;
   394 begin
   388 begin
   403     SendIPCRaw(@h, sizeof(h));
   397     SendIPCRaw(@h, sizeof(h));
   404     WriteLnToConsole('Preview sent, disconnect');
   398     WriteLnToConsole('Preview sent, disconnect');
   405     CloseIPC();
   399     CloseIPC();
   406 end;
   400 end;
   407 
   401 
       
   402 {$IFNDEF HWLIBRARY}
   408 ////////////////////////////////
   403 ////////////////////////////////
   409 procedure Resize(w, h: LongInt);
   404 procedure Resize(w, h: LongInt);
   410 begin
   405 begin
   411     cScreenWidth:= w;
   406     cScreenWidth:= w;
   412     cScreenHeight:= h;
   407     cScreenHeight:= h;
   559 
   554 
   560 {$IFDEF DEBUGFILE}
   555 {$IFDEF DEBUGFILE}
   561     AddFileLog('Prefix: "' + PathPrefix +'"');
   556     AddFileLog('Prefix: "' + PathPrefix +'"');
   562     for i:= 0 to ParamCount do
   557     for i:= 0 to ParamCount do
   563         AddFileLog(inttostr(i) + ': ' + ParamStr(i));
   558         AddFileLog(inttostr(i) + ': ' + ParamStr(i));
   564 {$IFDEF IPHONEOS}
   559 {$ENDIF}
   565     WriteLnToConsole('Saving debug file at: ' + IPH_getDocumentsPath());
   560 end;
   566 {$ENDIF}
   561 
   567 {$ENDIF}
       
   568 end;
       
   569 ////////////////////////////////////////////////////////////////////////////////
   562 ////////////////////////////////////////////////////////////////////////////////
   570 /////////////////////////////// m a i n ////////////////////////////////////////
   563 /////////////////////////////// m a i n ////////////////////////////////////////
   571 ////////////////////////////////////////////////////////////////////////////////
   564 ////////////////////////////////////////////////////////////////////////////////
   572 
       
   573 begin
   565 begin
   574     initEverything();
   566     initEverything();
   575     WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')');
   567     WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')');
   576     
   568     
   577     GetParams();
   569     GetParams();