--- a/hedgewars/uFLGameConfig.pas Sun Sep 28 01:17:55 2014 +0400
+++ b/hedgewars/uFLGameConfig.pas Sun Sep 28 21:33:14 2014 +0400
@@ -12,7 +12,7 @@
function getSeed: PChar; cdecl;
implementation
-uses uFLIPC, hwengine;
+uses uFLIPC, hwengine, uFLUtils, uFLTeams;
var guiCallbackPointer: pointer;
guiCallbackFunction: TGUICallback;
@@ -22,26 +22,11 @@
MAXARGS = 32;
type
- TGameType = (gtPreview, gtLocal);
- THedgehog = record
- name: shortstring;
- hat: shortstring;
- end;
- TTeam = record
- teamName: shortstring;
- flag: shortstring;
- graveName: shortstring;
- fortName: shortstring;
- owner: shortstring;
- extDriven: boolean;
- botLevel: Longword;
- hedgehogs: array[0..7] of THedgehog;
- hogsNumber: Longword;
- end;
TGameConfig = record
seed: shortstring;
theme: shortstring;
script: shortstring;
+ mapgen: Longint;
gameType: TGameType;
teams: array[0..7] of TTeam;
arguments: array[0..Pred(MAXARGS)] of shortstring;
@@ -50,19 +35,40 @@
end;
PGameConfig = ^TGameConfig;
-var currentConfig: TGameConfig;
- str2PCharBuffer: array[0..255] of char;
+var
+ currentConfig: TGameConfig;
+
-function str2PChar(const s: shortstring): PChar;
-var i: Integer;
+procedure sendConfig(config: PGameConfig);
+var i: Longword;
+begin
+with config^ do
begin
- for i:= 1 to Length(s) do
- begin
- str2PCharBuffer[i - 1] := s[i];
- end;
- str2PCharBuffer[Length(s)]:= #0;
- str2PChar:= @(str2PCharBuffer[0]);
-end;
+ case gameType of
+ gtPreview: begin
+ ipcToEngine('eseed ' + seed);
+ ipcToEngine('e$mapgen ' + intToStr(mapgen));
+ end;
+ gtLocal: begin
+ ipcToEngine('eseed ' + seed);
+ ipcToEngine('e$mapgen ' + intToStr(mapgen));
+ i:= 0;
+ while (i < 8) and (teams[i].hogsNumber > 0) do
+ begin
+ ipcToEngine('eammloadt 93919294221991210322351110012000000002111001010111110001');
+ ipcToEngine('eammprob 04050405416006555465544647765766666661555101011154111111');
+ ipcToEngine('eammdelay 00000000000002055000000400070040000000002200000006000200');
+ ipcToEngine('eammreinf 13111103121111111231141111111111111112111111011111111111');
+ ipcToEngine('eammstore');
+ sendTeamConfig(teams[i]);
+ inc(i)
+ end;
+ end;
+ end;
+
+ ipcToEngine('!');
+end;
+end;
procedure queueExecution;
var pConfig: PGameConfig;
@@ -82,6 +88,8 @@
end;
RunEngine(pConfig^.argumentsNumber, @pConfig^.argv);
+
+ sendConfig(pConfig)
end;
procedure resetGameConfig; cdecl;
@@ -100,7 +108,22 @@
procedure runQuickGame; cdecl;
begin
+ with currentConfig do
+ begin
+ gameType:= gtLocal;
+ arguments[0]:= '';
+ arguments[1]:= '--internal';
+ arguments[2]:= '--nosound';
+ argumentsNumber:= 3;
+ teams[0]:= createRandomTeam;
+ teams[0].color:= '6341088';
+ teams[1]:= createRandomTeam;
+ teams[1].color:= '2113696';
+ teams[1].botLevel:= 1;
+
+ queueExecution;
+ end;
end;
procedure getPreview; cdecl;
@@ -114,10 +137,6 @@
argumentsNumber:= 3;
queueExecution;
-
- ipcToEngine('eseed ' + seed);
- ipcToEngine('e$mapgen 0');
- ipcToEngine('!');
end;
end;