27 procedure netSetMazeSize(mazesize: LongInt); |
27 procedure netSetMazeSize(mazesize: LongInt); |
28 procedure netSetTemplate(template: LongInt); |
28 procedure netSetTemplate(template: LongInt); |
29 procedure netSetAmmo(name: shortstring; definition: ansistring); |
29 procedure netSetAmmo(name: shortstring; definition: ansistring); |
30 procedure netSetScheme(scheme: TScheme); |
30 procedure netSetScheme(scheme: TScheme); |
31 procedure netAddTeam(team: TTeam); |
31 procedure netAddTeam(team: TTeam); |
|
32 procedure netAcceptedTeam(teamName: shortstring); |
32 procedure netSetTeamColor(team: shortstring; color: Longword); |
33 procedure netSetTeamColor(team: shortstring; color: Longword); |
33 procedure netSetHedgehogsNumber(team: shortstring; hogsNumber: Longword); |
34 procedure netSetHedgehogsNumber(team: shortstring; hogsNumber: Longword); |
34 procedure netRemoveTeam(teamName: shortstring); |
35 procedure netRemoveTeam(teamName: shortstring); |
35 procedure netResetTeams(); |
36 procedure netResetTeams(); |
36 procedure updatePreviewIfNeeded; |
37 procedure updatePreviewIfNeeded; |
37 |
38 |
38 procedure sendConfig(config: PGameConfig); |
39 procedure sendConfig(config: PGameConfig); |
39 |
40 |
40 implementation |
41 implementation |
41 uses uFLIPC, uFLUtils, uFLTeams, uFLThemes, uFLSChemes, uFLAmmo, uFLUICallback, uFLRunQueue; |
42 uses uFLIPC, uFLUtils, uFLTeams, uFLThemes, uFLSChemes, uFLAmmo, uFLUICallback, uFLRunQueue, uFLNet; |
42 |
43 |
43 var |
44 var |
44 currentConfig: TGameConfig; |
45 currentConfig: TGameConfig; |
45 previewNeedsUpdate: boolean; |
46 previewNeedsUpdate: boolean; |
46 |
47 |
457 msg:= '0' + #10 + team.teamName; |
462 msg:= '0' + #10 + team.teamName; |
458 sendUI(mtAddPlayingTeam, @msg[1], length(msg)); |
463 sendUI(mtAddPlayingTeam, @msg[1], length(msg)); |
459 |
464 |
460 msg:= team.teamName + #10 + colorsSet[teams[i].color]; |
465 msg:= team.teamName + #10 + colorsSet[teams[i].color]; |
461 sendUI(mtTeamColor, @msg[1], length(msg)); |
466 sendUI(mtTeamColor, @msg[1], length(msg)); |
|
467 end |
|
468 end; |
|
469 |
|
470 procedure netAcceptedTeam(teamName: shortstring); |
|
471 var msg: ansistring; |
|
472 i, hn, hedgehogsNumber: Longword; |
|
473 c: Longword; |
|
474 team: PTeam; |
|
475 begin |
|
476 with currentConfig do |
|
477 begin |
|
478 team:= teamByName(teamName); |
|
479 // no such team??? |
|
480 if team = nil then exit; |
|
481 |
|
482 hedgehogsNumber:= 0; |
|
483 i:= 0; |
|
484 |
|
485 while (i < 8) and (teams[i].hogsNumber > 0) do |
|
486 begin |
|
487 inc(i); |
|
488 inc(hedgehogsNumber, teams[i].hogsNumber) |
|
489 end; |
|
490 |
|
491 // no free space for a team - server bug??? |
|
492 if (i > 7) or (hedgehogsNumber >= 48) then exit; |
|
493 |
|
494 c:= getUnusedColor; |
|
495 |
|
496 teams[i]:= team^; |
|
497 teams[i].extDriven:= false; |
|
498 |
|
499 if i = 0 then hn:= 4 else hn:= teams[i - 1].hogsNumber; |
|
500 if hn > 48 - hedgehogsNumber then hn:= 48 - hedgehogsNumber; |
|
501 teams[i].hogsNumber:= hn; |
|
502 |
|
503 teams[i].color:= c; |
|
504 |
|
505 msg:= '0' + #10 + teamName; |
|
506 sendUI(mtAddPlayingTeam, @msg[1], length(msg)); |
|
507 |
|
508 msg:= teamName + #10 + colorsSet[teams[i].color]; |
|
509 sendUI(mtTeamColor, @msg[1], length(msg)); |
|
510 |
|
511 msg:= teamName; |
|
512 sendUI(mtRemoveTeam, @msg[1], length(msg)) |
462 end |
513 end |
463 end; |
514 end; |
464 |
515 |
465 procedure netRemoveTeam(teamName: shortstring); |
516 procedure netRemoveTeam(teamName: shortstring); |
466 var msg: shortstring; |
517 var msg: shortstring; |