hedgewars/uFLGameConfig.pas
branchqmlfrontend
changeset 10452 03519fd9f98d
parent 10450 bf9e30b4ef9b
child 10456 6fd99bb73524
equal deleted inserted replaced
10450:bf9e30b4ef9b 10452:03519fd9f98d
    10 procedure registerGUIMessagesCallback(p: pointer; f: TGUICallback); cdecl;
    10 procedure registerGUIMessagesCallback(p: pointer; f: TGUICallback); cdecl;
    11 
    11 
    12 procedure setSeed(seed: PChar); cdecl;
    12 procedure setSeed(seed: PChar); cdecl;
    13 function  getSeed: PChar; cdecl;
    13 function  getSeed: PChar; cdecl;
    14 
    14 
    15 procedure tryAddTeam(teamName: PChar);
    15 procedure tryAddTeam(teamName: PChar); cdecl;
    16 procedure tryRemoveTeam(teamName: PChar);
    16 procedure tryRemoveTeam(teamName: PChar); cdecl;
       
    17 procedure changeTeamColor(teamName: PChar; dir: LongInt); cdecl;
    17 
    18 
    18 implementation
    19 implementation
    19 uses uFLIPC, hwengine, uFLUtils, uFLTeams, uFLData;
    20 uses uFLIPC, hwengine, uFLUtils, uFLTeams, uFLData;
    20 
    21 
    21 var guiCallbackPointer: pointer;
    22 var guiCallbackPointer: pointer;
   201 
   202 
   202     registerIPCCallback(nil, @engineMessageCallback)
   203     registerIPCCallback(nil, @engineMessageCallback)
   203 end;
   204 end;
   204 
   205 
   205 
   206 
   206 procedure tryAddTeam(teamName: PChar);
   207 procedure tryAddTeam(teamName: PChar); cdecl;
   207 var msg: ansistring;
   208 var msg: ansistring;
   208     i, hn, hedgehogsNumber: Longword;
   209     i, hn, hedgehogsNumber: Longword;
   209     team: PTeam;
   210     team: PTeam;
   210     c: Longword;
   211     c: Longword;
   211 begin
   212 begin
   233         if i = 0 then hn:= 4 else hn:= teams[i - 1].hogsNumber;
   234         if i = 0 then hn:= 4 else hn:= teams[i - 1].hogsNumber;
   234         if hn > 48 - hedgehogsNumber then hn:= 48 - hedgehogsNumber;
   235         if hn > 48 - hedgehogsNumber then hn:= 48 - hedgehogsNumber;
   235         teams[i].hogsNumber:= hn;
   236         teams[i].hogsNumber:= hn;
   236 
   237 
   237         teams[i].color:= c;
   238         teams[i].color:= c;
   238     end;
   239 
   239 
   240         msg:= '0' + #10 + teamName;
   240 
   241         guiCallbackFunction(guiCallbackPointer, mtAddPlayingTeam, @msg[1], length(msg));
   241     msg:= '0' + #10 + teamName;
   242 
   242 
   243         msg:= teamName + #10 + colorsSet[teams[i].color];
   243     guiCallbackFunction(guiCallbackPointer, mtAddPlayingTeam, @msg[1], length(msg));
   244         guiCallbackFunction(guiCallbackPointer, mtTeamColor, @msg[1], length(msg));
   244 
   245 
   245     msg:= teamName;
   246         msg:= teamName;
   246 
   247         guiCallbackFunction(guiCallbackPointer, mtRemoveTeam, @msg[1], length(msg))
   247     guiCallbackFunction(guiCallbackPointer, mtRemoveTeam, @msg[1], length(msg))
   248     end
   248 end;
   249 end;
   249 
   250 
   250 
   251 
   251 procedure tryRemoveTeam(teamName: PChar);
   252 procedure tryRemoveTeam(teamName: PChar); cdecl;
   252 var msg: ansistring;
   253 var msg: ansistring;
   253     i: Longword;
   254     i: Longword;
   254     tn: shortstring;
   255     tn: shortstring;
   255 begin
   256 begin
   256     with currentConfig do
   257     with currentConfig do
   276 
   277 
   277     guiCallbackFunction(guiCallbackPointer, mtRemovePlayingTeam, @msg[1], length(msg));
   278     guiCallbackFunction(guiCallbackPointer, mtRemovePlayingTeam, @msg[1], length(msg));
   278     guiCallbackFunction(guiCallbackPointer, mtAddTeam, @msg[1], length(msg))
   279     guiCallbackFunction(guiCallbackPointer, mtAddTeam, @msg[1], length(msg))
   279 end;
   280 end;
   280 
   281 
       
   282 
       
   283 procedure changeTeamColor(teamName: PChar; dir: LongInt); cdecl;
       
   284 var i, dc: Longword;
       
   285     tn: shortstring;
       
   286     msg: ansistring;
       
   287 begin
       
   288     with currentConfig do
       
   289     begin
       
   290         i:= 0;
       
   291         tn:= teamName;
       
   292         while (i < 8) and (teams[i].teamName <> tn) do
       
   293             inc(i);
       
   294         // team not found???
       
   295         if (i > 7) then exit;
       
   296 
       
   297         if dir >= 0 then dc:= 1 else dc:= 8;
       
   298         teams[i].color:= (teams[i].color + dc) mod 9;
       
   299 
       
   300         msg:= tn + #10 + colorsSet[teams[i].color];
       
   301         guiCallbackFunction(guiCallbackPointer, mtTeamColor, @msg[1], length(msg))
       
   302     end
       
   303 end;
       
   304 
   281 end.
   305 end.