equal
deleted
inserted
replaced
79 procedure freeEverything(complete:boolean); |
79 procedure freeEverything(complete:boolean); |
80 |
80 |
81 implementation |
81 implementation |
82 {$ELSE} |
82 {$ELSE} |
83 procedure OnDestroy; forward; |
83 procedure OnDestroy; forward; |
|
84 procedure initEverything(complete:boolean); forward; |
84 procedure freeEverything(complete:boolean); forward; |
85 procedure freeEverything(complete:boolean); forward; |
85 {$ENDIF} |
86 {$ENDIF} |
86 |
87 |
87 //////////////////////////////// |
88 //////////////////////////////// |
88 procedure DoTimer(Lag: LongInt); |
89 procedure DoTimer(Lag: LongInt); |
243 {$ELSE} |
244 {$ELSE} |
244 procedure Game; |
245 procedure Game; |
245 {$ENDIF} |
246 {$ENDIF} |
246 var p: TPathType; |
247 var p: TPathType; |
247 s: shortstring; |
248 s: shortstring; |
|
249 {$IFDEF DEBUGFILE} |
|
250 i: LongInt; |
|
251 {$ENDIF} |
248 begin |
252 begin |
249 {$IFDEF HWLIBRARY} |
253 {$IFDEF HWLIBRARY} |
250 initEverything(true); |
|
251 |
|
252 cBits:= 32; |
254 cBits:= 32; |
253 cFullScreen:= false; |
255 cFullScreen:= false; |
254 cVSyncInUse:= true; |
256 cVSyncInUse:= true; |
255 cTimerInterval:= 8; |
257 cTimerInterval:= 8; |
256 PathPrefix:= 'Data'; |
258 PathPrefix:= 'Data'; |
264 isMusicEnabled:= gameArgs[3] = '1'; |
266 isMusicEnabled:= gameArgs[3] = '1'; |
265 cLocaleFName:= gameArgs[4]; |
267 cLocaleFName:= gameArgs[4]; |
266 cAltDamage:= gameArgs[5] = '1'; |
268 cAltDamage:= gameArgs[5] = '1'; |
267 val(gameArgs[6], cScreenHeight); |
269 val(gameArgs[6], cScreenHeight); |
268 val(gameArgs[7], cScreenWidth); |
270 val(gameArgs[7], cScreenWidth); |
269 cInitHeight:= cScreenHeight; |
|
270 cInitWidth:= cScreenWidth; |
|
271 recordFileName:= gameArgs[8]; |
271 recordFileName:= gameArgs[8]; |
|
272 {$ENDIF} |
|
273 initEverything(true); |
|
274 WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')'); |
|
275 {$IFDEF DEBUGFILE} |
|
276 AddFileLog('Prefix: "' + PathPrefix +'"'); |
|
277 for i:= 0 to ParamCount do |
|
278 AddFileLog(inttostr(i) + ': ' + ParamStr(i)); |
272 {$ENDIF} |
279 {$ENDIF} |
273 |
280 |
274 for p:= Succ(Low(TPathType)) to High(TPathType) do |
281 for p:= Succ(Low(TPathType)) to High(TPathType) do |
275 if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]; |
282 if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]; |
276 |
283 |
333 |
340 |
334 ParseCommand('rotmask', true); |
341 ParseCommand('rotmask', true); |
335 |
342 |
336 MainLoop(); |
343 MainLoop(); |
337 OnDestroy(); |
344 OnDestroy(); |
338 {$IFDEF HWLIBRARY}freeEverything(true);{$ENDIF} |
345 freeEverything(true); |
339 if alsoShutdownFrontend then halt; |
346 if alsoShutdownFrontend then halt; |
340 end; |
347 end; |
341 |
348 |
342 procedure initEverything (complete:boolean); |
349 procedure initEverything (complete:boolean); |
343 begin |
350 begin |
421 |
428 |
422 ///////////////////////// |
429 ///////////////////////// |
423 procedure GenLandPreview{$IFDEF HWLIBRARY}(port: LongInt); cdecl; export{$ENDIF}; |
430 procedure GenLandPreview{$IFDEF HWLIBRARY}(port: LongInt); cdecl; export{$ENDIF}; |
424 var Preview: TPreview; |
431 var Preview: TPreview; |
425 begin |
432 begin |
|
433 initEverything(false); |
426 {$IFDEF HWLIBRARY} |
434 {$IFDEF HWLIBRARY} |
427 initEverything(false); |
|
428 WriteLnToConsole('Preview connecting on port ' + inttostr(port)); |
435 WriteLnToConsole('Preview connecting on port ' + inttostr(port)); |
429 ipcPort:= port; |
436 ipcPort:= port; |
430 {$ENDIF} |
437 {$ENDIF} |
431 InitIPC; |
438 InitIPC; |
432 IPCWaitPongEvent; |
439 IPCWaitPongEvent; |
436 WriteLnToConsole('Sending preview...'); |
443 WriteLnToConsole('Sending preview...'); |
437 SendIPCRaw(@Preview, sizeof(Preview)); |
444 SendIPCRaw(@Preview, sizeof(Preview)); |
438 SendIPCRaw(@MaxHedgehogs, sizeof(byte)); |
445 SendIPCRaw(@MaxHedgehogs, sizeof(byte)); |
439 WriteLnToConsole('Preview sent, disconnect'); |
446 WriteLnToConsole('Preview sent, disconnect'); |
440 CloseIPC(); |
447 CloseIPC(); |
441 {$IFDEF HWLIBRARY} |
|
442 freeEverything(false); |
448 freeEverything(false); |
443 {$ENDIF} |
|
444 end; |
449 end; |
445 |
450 |
446 {$IFNDEF HWLIBRARY} |
451 {$IFNDEF HWLIBRARY} |
447 ///////////////////// |
452 ///////////////////// |
448 procedure DisplayUsage; |
453 procedure DisplayUsage; |
466 WriteLn(); |
471 WriteLn(); |
467 end; |
472 end; |
468 |
473 |
469 //////////////////// |
474 //////////////////// |
470 procedure GetParams; |
475 procedure GetParams; |
471 {$IFDEF DEBUGFILE} |
|
472 var i: LongInt; |
|
473 {$ENDIF} |
|
474 begin |
476 begin |
475 case ParamCount of |
477 case ParamCount of |
476 18: begin |
478 18: begin |
477 val(ParamStr(2), cScreenWidth); |
479 val(ParamStr(2), cScreenWidth); |
478 val(ParamStr(3), cScreenHeight); |
480 val(ParamStr(3), cScreenHeight); |
479 cInitWidth:= cScreenWidth; |
|
480 cInitHeight:= cScreenHeight; |
|
481 cBitsStr:= ParamStr(4); |
481 cBitsStr:= ParamStr(4); |
482 val(cBitsStr, cBits); |
482 val(cBitsStr, cBits); |
483 val(ParamStr(5), ipcPort); |
483 val(ParamStr(5), ipcPort); |
484 cFullScreen:= ParamStr(6) = '1'; |
484 cFullScreen:= ParamStr(6) = '1'; |
485 isSoundEnabled:= ParamStr(7) = '1'; |
485 isSoundEnabled:= ParamStr(7) = '1'; |
515 |
515 |
516 if ParamStr(3) = '--set-video' then |
516 if ParamStr(3) = '--set-video' then |
517 begin |
517 begin |
518 val(ParamStr(4), cScreenWidth); |
518 val(ParamStr(4), cScreenWidth); |
519 val(ParamStr(5), cScreenHeight); |
519 val(ParamStr(5), cScreenHeight); |
520 cInitWidth:= cScreenWidth; |
|
521 cInitHeight:= cScreenHeight; |
|
522 cBitsStr:= ParamStr(6); |
520 cBitsStr:= ParamStr(6); |
523 val(cBitsStr, cBits); |
521 val(cBitsStr, cBits); |
524 end |
522 end |
525 else |
523 else |
526 begin |
524 begin |
548 |
546 |
549 if ParamStr(3) = '--set-multimedia' then |
547 if ParamStr(3) = '--set-multimedia' then |
550 begin |
548 begin |
551 val(ParamStr(4), cScreenWidth); |
549 val(ParamStr(4), cScreenWidth); |
552 val(ParamStr(5), cScreenHeight); |
550 val(ParamStr(5), cScreenHeight); |
553 cInitWidth:= cScreenWidth; |
|
554 cInitHeight:= cScreenHeight; |
|
555 cBitsStr:= ParamStr(6); |
551 cBitsStr:= ParamStr(6); |
556 val(cBitsStr, cBits); |
552 val(cBitsStr, cBits); |
557 val(ParamStr(7), cInitVolume); |
553 val(ParamStr(7), cInitVolume); |
558 isMusicEnabled:= ParamStr(8) = '1'; |
554 isMusicEnabled:= ParamStr(8) = '1'; |
559 isSoundEnabled:= ParamStr(9) = '1'; |
555 isSoundEnabled:= ParamStr(9) = '1'; |
567 recordFileName:= ParamStr(2); |
563 recordFileName:= ParamStr(2); |
568 if ParamStr(3) = '--set-everything' then |
564 if ParamStr(3) = '--set-everything' then |
569 begin |
565 begin |
570 val(ParamStr(4), cScreenWidth); |
566 val(ParamStr(4), cScreenWidth); |
571 val(ParamStr(5), cScreenHeight); |
567 val(ParamStr(5), cScreenHeight); |
572 cInitWidth:= cScreenWidth; |
|
573 cInitHeight:= cScreenHeight; |
|
574 cBitsStr:= ParamStr(6); |
568 cBitsStr:= ParamStr(6); |
575 val(cBitsStr, cBits); |
569 val(cBitsStr, cBits); |
576 val(ParamStr(7), cInitVolume); |
570 val(ParamStr(7), cInitVolume); |
577 isMusicEnabled:= ParamStr(8) = '1'; |
571 isMusicEnabled:= ParamStr(8) = '1'; |
578 isSoundEnabled:= ParamStr(9) = '1'; |
572 isSoundEnabled:= ParamStr(9) = '1'; |
588 end |
582 end |
589 else GameType:= gmtSyntax; |
583 else GameType:= gmtSyntax; |
590 end; |
584 end; |
591 else GameType:= gmtSyntax; |
585 else GameType:= gmtSyntax; |
592 end; |
586 end; |
593 |
|
594 {$IFDEF DEBUGFILE} |
|
595 AddFileLog('Prefix: "' + PathPrefix +'"'); |
|
596 for i:= 0 to ParamCount do |
|
597 AddFileLog(inttostr(i) + ': ' + ParamStr(i)); |
|
598 {$ENDIF} |
|
599 end; |
587 end; |
600 |
588 |
601 //////////////////////////////////////////////////////////////////////////////// |
589 //////////////////////////////////////////////////////////////////////////////// |
602 /////////////////////////////// m a i n //////////////////////////////////////// |
590 /////////////////////////////// m a i n //////////////////////////////////////// |
603 //////////////////////////////////////////////////////////////////////////////// |
591 //////////////////////////////////////////////////////////////////////////////// |
604 begin |
592 begin |
605 initEverything(true); |
|
606 WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')'); |
|
607 |
|
608 GetParams(); |
593 GetParams(); |
609 |
594 |
610 if GameType = gmtLandPreview then GenLandPreview() |
595 if GameType = gmtLandPreview then GenLandPreview() |
611 else if GameType = gmtSyntax then DisplayUsage() |
596 else if GameType = gmtSyntax then DisplayUsage() |
612 else Game(); |
597 else Game(); |
613 |
598 |
614 freeEverything(true); |
|
615 if GameType = gmtSyntax then |
599 if GameType = gmtSyntax then |
616 ExitCode:= 1 |
600 ExitCode:= 1 |
617 else |
601 else |
618 ExitCode:= 0; |
602 ExitCode:= 0; |
619 {$ENDIF} |
603 {$ENDIF} |