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 |