hedgewars/uFLGameConfig.pas
branchqmlfrontend
changeset 11462 33a0e3a14ddc
parent 11458 8318e841648f
child 11480 b0c34402038c
equal deleted inserted replaced
11460:9f2fb0031ef0 11462:33a0e3a14ddc
    31 procedure netAddTeam(team: TTeam);
    31 procedure netAddTeam(team: TTeam);
    32 procedure netAcceptedTeam(teamName: shortstring);
    32 procedure netAcceptedTeam(teamName: shortstring);
    33 procedure netSetTeamColor(team: shortstring; color: Longword);
    33 procedure netSetTeamColor(team: shortstring; color: Longword);
    34 procedure netSetHedgehogsNumber(team: shortstring; hogsNumber: Longword);
    34 procedure netSetHedgehogsNumber(team: shortstring; hogsNumber: Longword);
    35 procedure netRemoveTeam(teamName: shortstring);
    35 procedure netRemoveTeam(teamName: shortstring);
       
    36 procedure netDrawnData(data: ansistring);
    36 procedure netResetTeams();
    37 procedure netResetTeams();
    37 procedure updatePreviewIfNeeded;
    38 procedure updatePreviewIfNeeded;
    38 
    39 
    39 procedure sendConfig(config: PGameConfig);
    40 procedure sendConfig(config: PGameConfig);
    40 procedure runNetGame();
    41 procedure runNetGame();
    41 
    42 
    42 implementation
    43 implementation
    43 uses uFLIPC, uFLUtils, uFLTeams, uFLThemes, uFLSChemes, uFLAmmo, uFLUICallback, uFLRunQueue, uFLNet;
    44 uses uFLIPC, uFLUtils, uFLTeams, uFLThemes, uFLSChemes, uFLAmmo
       
    45     , uFLUICallback, uFLRunQueue, uFLNet, uUtils;
    44 
    46 
    45 var
    47 var
    46     currentConfig: TGameConfig;
    48     currentConfig: TGameConfig;
    47     previewNeedsUpdate: boolean;
    49     previewNeedsUpdate: boolean;
    48 
    50 
    49 function getScriptPath(scriptName: shortstring): shortstring;
    51 function getScriptPath(scriptName: shortstring): shortstring;
    50 begin
    52 begin
    51     getScriptPath:= '/Scripts/Multiplayer/' + scriptName + '.lua'
    53     getScriptPath:= '/Scripts/Multiplayer/' + scriptName + '.lua'
       
    54 end;
       
    55 
       
    56 procedure sendDrawnMap(config: PGameConfig);
       
    57 var i: Longword;
       
    58     s: shortstring;
       
    59 begin
       
    60     i:= 1;
       
    61 
       
    62     while i < config^.drawnDataSize do
       
    63     begin
       
    64         if config^.drawnDataSize - i > 240 then
       
    65             s:= copy(config^.drawnData, i, 240)
       
    66         else
       
    67             s:= copy(config^.drawnData, i, config^.drawnDataSize - i);
       
    68         system.writeln('[DRAWN MAP] ', s);
       
    69         ipcToEngine('edraw ' + DecodeBase64(s));
       
    70         inc(i, 240)
       
    71     end;
    52 end;
    72 end;
    53 
    73 
    54 procedure sendConfig(config: PGameConfig);
    74 procedure sendConfig(config: PGameConfig);
    55 var i: Longword;
    75 var i: Longword;
    56 begin
    76 begin
    65             if (mapgen = 1) or (mapgen = 2) then
    85             if (mapgen = 1) or (mapgen = 2) then
    66                 ipcToEngine('e$maze_size ' + intToStr(mazeSize))
    86                 ipcToEngine('e$maze_size ' + intToStr(mazeSize))
    67             else
    87             else
    68                 ipcToEngine('e$template_filter ' + intToStr(template));
    88                 ipcToEngine('e$template_filter ' + intToStr(template));
    69             ipcToEngine('e$feature_size ' + intToStr(featureSize));
    89             ipcToEngine('e$feature_size ' + intToStr(featureSize));
       
    90             if mapgen = 3 then
       
    91                 sendDrawnMap(config);
    70         end;
    92         end;
    71 gtLocal, gtNet: begin
    93 gtLocal, gtNet: begin
    72             if gameType = gtNet then
    94             if gameType = gtNet then
    73                 ipcToEngine('TN');
    95                 ipcToEngine('TN');
    74             if script <> 'Normal' then
    96             if script <> 'Normal' then
    79                 ipcToEngine('e$maze_size ' + intToStr(mazeSize))
   101                 ipcToEngine('e$maze_size ' + intToStr(mazeSize))
    80             else
   102             else
    81                 ipcToEngine('e$template_filter ' + intToStr(template));
   103                 ipcToEngine('e$template_filter ' + intToStr(template));
    82             ipcToEngine('e$feature_size ' + intToStr(featureSize));
   104             ipcToEngine('e$feature_size ' + intToStr(featureSize));
    83             ipcToEngine('e$theme ' + theme);
   105             ipcToEngine('e$theme ' + theme);
       
   106             if mapgen = 3 then
       
   107                 sendDrawnMap(config);
    84 
   108 
    85             sendSchemeConfig(scheme);
   109             sendSchemeConfig(scheme);
    86 
   110 
    87             i:= 0;
   111             i:= 0;
    88             while (i < 8) and (teams[i].hogsNumber > 0) do
   112             while (i < 8) and (teams[i].hogsNumber > 0) do
   638         end;
   662         end;
   639 
   663 
   640     end;
   664     end;
   641 end;
   665 end;
   642 
   666 
       
   667 procedure netDrawnData(data: ansistring);
       
   668 begin
       
   669     currentConfig.drawnDataSize:= length(data);
       
   670     currentConfig.drawnData:= data;
       
   671 
       
   672     getPreview
       
   673 end;
       
   674 
   643 end.
   675 end.