hedgewars/uFLGameConfig.pas
branchqmlfrontend
changeset 11431 80a9b14bb8d3
parent 11424 86c13e5662f1
child 11432 97e3e62ea5f9
equal deleted inserted replaced
11430:f88b3948adf3 11431:80a9b14bb8d3
    15 procedure setAmmo(ammoName: PChar); cdecl;
    15 procedure setAmmo(ammoName: PChar); cdecl;
    16 
    16 
    17 procedure tryAddTeam(teamName: PChar); cdecl;
    17 procedure tryAddTeam(teamName: PChar); cdecl;
    18 procedure tryRemoveTeam(teamName: PChar); cdecl;
    18 procedure tryRemoveTeam(teamName: PChar); cdecl;
    19 procedure changeTeamColor(teamName: PChar; dir: LongInt); cdecl;
    19 procedure changeTeamColor(teamName: PChar; dir: LongInt); cdecl;
       
    20 
       
    21 procedure netSetSeed(seed: shortstring);
       
    22 procedure netSetTheme(themeName: shortstring);
       
    23 procedure netSetScript(scriptName: shortstring);
    20 
    24 
    21 implementation
    25 implementation
    22 uses uFLIPC, hwengine, uFLUtils, uFLTeams, uFLData, uFLSChemes, uFLAmmo, uFLUICallback;
    26 uses uFLIPC, hwengine, uFLUtils, uFLTeams, uFLData, uFLSChemes, uFLAmmo, uFLUICallback;
    23 
    27 
    24 const
    28 const
    42     PGameConfig = ^TGameConfig;
    46     PGameConfig = ^TGameConfig;
    43 
    47 
    44 var
    48 var
    45     currentConfig: TGameConfig;
    49     currentConfig: TGameConfig;
    46 
    50 
       
    51 function getScriptPath(scriptName: shortstring): shortstring;
       
    52 begin
       
    53     getScriptPath:= '/Scripts/Multiplayer/' + scriptName + '.lua'
       
    54 end;
    47 
    55 
    48 procedure sendConfig(config: PGameConfig);
    56 procedure sendConfig(config: PGameConfig);
    49 var i: Longword;
    57 var i: Longword;
    50 begin
    58 begin
    51 with config^ do
    59 with config^ do
    52 begin
    60 begin
    53     case gameType of
    61     case gameType of
    54     gtPreview: begin
    62     gtPreview: begin
    55             if script <> '' then
    63             if script <> 'Normal' then
    56                 ipcToEngine('escript ' + script);
    64                 ipcToEngine('escript ' + getScriptPath(script));
    57             ipcToEngine('eseed ' + seed);
    65             ipcToEngine('eseed ' + seed);
    58             ipcToEngine('e$mapgen ' + intToStr(mapgen));
    66             ipcToEngine('e$mapgen ' + intToStr(mapgen));
    59         end;
    67         end;
    60     gtLocal: begin
    68     gtLocal: begin
    61             if script <> '' then
    69             if script <> 'Normal' then
    62                 ipcToEngine('escript ' + script);
    70                 ipcToEngine('escript ' + getScriptPath(script));
    63             ipcToEngine('eseed ' + seed);
    71             ipcToEngine('eseed ' + seed);
    64             ipcToEngine('e$mapgen ' + intToStr(mapgen));
    72             ipcToEngine('e$mapgen ' + intToStr(mapgen));
    65             ipcToEngine('e$theme ' + theme);
    73             ipcToEngine('e$theme ' + theme);
    66 
    74 
    67             sendSchemeConfig(scheme);
    75             sendSchemeConfig(scheme);
   106 procedure resetGameConfig; cdecl;
   114 procedure resetGameConfig; cdecl;
   107 var i: Longword;
   115 var i: Longword;
   108 begin
   116 begin
   109     with currentConfig do
   117     with currentConfig do
   110     begin
   118     begin
       
   119         script:= 'Normal';
       
   120 
   111         for i:= 0 to 7 do
   121         for i:= 0 to 7 do
   112             teams[i].hogsNumber:= 0
   122             teams[i].hogsNumber:= 0
   113     end
   123     end
   114 end;
   124 end;
   115 
   125 
   116 procedure setSeed(seed: PChar); cdecl;
   126 procedure setSeed(seed: PChar); cdecl;
   117 begin
   127 begin
       
   128     sendUI(mtSeed, @seed[1], length(seed));
   118     currentConfig.seed:= seed
   129     currentConfig.seed:= seed
   119 end;
   130 end;
   120 
       
   121 
   131 
   122 function getSeed: PChar; cdecl;
   132 function getSeed: PChar; cdecl;
   123 begin
   133 begin
   124     getSeed:= str2PChar(currentConfig.seed)
   134     getSeed:= str2PChar(currentConfig.seed)
   125 end;
   135 end;
   298     currentConfig.theme:= themeName
   308     currentConfig.theme:= themeName
   299 end;
   309 end;
   300 
   310 
   301 procedure setScript(scriptName: PChar); cdecl;
   311 procedure setScript(scriptName: PChar); cdecl;
   302 begin
   312 begin
   303     if scriptName <> 'Normal' then
   313     currentConfig.script:= scriptName
   304         currentConfig.script:= '/Scripts/Multiplayer/' + scriptName + '.lua'
       
   305     else
       
   306         currentConfig.script:= ''
       
   307 end;
   314 end;
   308 
   315 
   309 procedure setScheme(schemeName: PChar); cdecl;
   316 procedure setScheme(schemeName: PChar); cdecl;
   310 var scheme: PScheme;
   317 var scheme: PScheme;
   311 begin
   318 begin
   322 
   329 
   323     if ammo <> nil then
   330     if ammo <> nil then
   324         currentConfig.ammo:= ammo^
   331         currentConfig.ammo:= ammo^
   325 end;
   332 end;
   326 
   333 
       
   334 procedure netSetSeed(seed: shortstring);
       
   335 begin
       
   336     if seed <> currentConfig.seed then
       
   337     begin
       
   338         currentConfig.seed:= seed;
       
   339         sendUI(mtSeed, @seed[1], length(seed))
       
   340     end
       
   341 end;
       
   342 
       
   343 procedure netSetTheme(themeName: shortstring);
       
   344 begin
       
   345     if themeName <> currentConfig.theme then
       
   346     begin
       
   347         currentConfig.theme:= themeName;
       
   348         sendUI(mtTheme, @themeName[1], length(themeName))
       
   349     end
       
   350 end;
       
   351 
       
   352 procedure netSetScript(scriptName: shortstring);
       
   353 begin
       
   354     if scriptName <> currentConfig.script then
       
   355     begin
       
   356         currentConfig.script:= scriptName;
       
   357         sendUI(mtScript, @scriptName[1], length(scriptName))
       
   358     end
       
   359 end;
       
   360 
   327 end.
   361 end.