hedgewars/uFLGameConfig.pas
branchqmlfrontend
changeset 10430 899a30018ede
parent 10428 7c25297720f1
child 10432 b0abef0ee78c
equal deleted inserted replaced
10428:7c25297720f1 10430:899a30018ede
     1 unit uFLGameConfig;
     1 unit uFLGameConfig;
     2 interface
     2 interface
     3 uses uFLTypes;
     3 uses uFLTypes;
     4 
     4 
     5 procedure resetGameConfig; cdecl; export;
     5 procedure resetGameConfig; cdecl;
     6 procedure runQuickGame; cdecl; export;
     6 procedure runQuickGame; cdecl;
     7 procedure getPreview; cdecl; export;
     7 procedure getPreview; cdecl;
     8 
     8 
     9 procedure registerGUIMessagesCallback(p: pointer; f: TGUICallback); cdecl; export;
     9 procedure registerGUIMessagesCallback(p: pointer; f: TGUICallback); cdecl;
       
    10 
       
    11 procedure setSeed(seed: PChar); cdecl;
       
    12 function  getSeed: PChar; cdecl;
    10 
    13 
    11 implementation
    14 implementation
    12 uses uFLIPC, hwengine;
    15 uses uFLIPC, hwengine;
    13 
    16 
    14 var guiCallbackPointer: pointer;
    17 var guiCallbackPointer: pointer;
    46             argumentsNumber: Longword;
    49             argumentsNumber: Longword;
    47             end;
    50             end;
    48     PGameConfig = ^TGameConfig;
    51     PGameConfig = ^TGameConfig;
    49 
    52 
    50 var currentConfig: TGameConfig;
    53 var currentConfig: TGameConfig;
       
    54     str2PCharBuffer: array[0..255] of char;
       
    55 
       
    56 function str2PChar(const s: shortstring): PChar;
       
    57 var i: Integer;
       
    58 begin
       
    59    for i:= 1 to Length(s) do
       
    60       begin
       
    61       str2PCharBuffer[i - 1] := s[i];
       
    62       end;
       
    63    str2PCharBuffer[Length(s)]:= #0;
       
    64    str2PChar:= @(str2PCharBuffer[0]);
       
    65 end;    
    51 
    66 
    52 procedure queueExecution;
    67 procedure queueExecution;
    53 var pConfig: PGameConfig;
    68 var pConfig: PGameConfig;
    54     i: Longword;
    69     i: Longword;
    55 begin
    70 begin
    71 
    86 
    72 procedure resetGameConfig; cdecl;
    87 procedure resetGameConfig; cdecl;
    73 begin
    88 begin
    74 end;
    89 end;
    75 
    90 
    76 procedure runQuickGame; cdecl; export;
    91 procedure setSeed(seed: PChar); cdecl;
       
    92 begin
       
    93     currentConfig.seed:= seed
       
    94 end;
       
    95 
       
    96 function getSeed: PChar; cdecl;
       
    97 begin
       
    98     getSeed:= str2PChar(currentConfig.seed)
       
    99 end;
       
   100 
       
   101 procedure runQuickGame; cdecl;
    77 begin
   102 begin
    78 
   103 
    79 end;
   104 end;
    80 
   105 
    81 procedure getPreview; cdecl; export;
   106 procedure getPreview; cdecl;
    82 begin
   107 begin
    83     with currentConfig do
   108     with currentConfig do
    84     begin
   109     begin
    85         gameType:= gtPreview;
   110         gameType:= gtPreview;
    86         arguments[0]:= '';
   111         arguments[0]:= '';
    99 procedure engineMessageCallback(p: pointer; msg: PChar; len: Longword);
   124 procedure engineMessageCallback(p: pointer; msg: PChar; len: Longword);
   100 begin
   125 begin
   101     if len = 128 * 256 then guiCallbackFunction(guiCallbackPointer, mtPreview, msg, len)
   126     if len = 128 * 256 then guiCallbackFunction(guiCallbackPointer, mtPreview, msg, len)
   102 end;
   127 end;
   103 
   128 
   104 procedure registerGUIMessagesCallback(p: pointer; f: TGUICallback); cdecl; export;
   129 procedure registerGUIMessagesCallback(p: pointer; f: TGUICallback); cdecl;
   105 begin
   130 begin
   106     guiCallbackPointer:= p;
   131     guiCallbackPointer:= p;
   107     guiCallbackFunction:= f;
   132     guiCallbackFunction:= f;
   108 
   133 
   109     registerIPCCallback(nil, @engineMessageCallback)
   134     registerIPCCallback(nil, @engineMessageCallback)