Commit 15518a428a79a1d489f2e00f49219287c5ef526a
1 parent
f214aa24
Exists in
master
change compilation rule, bug fixes and improvements
- need to investigate why we getting Runtime 216 errors when compiling with optimization 3 - fix harcoded value on function TGameControl.ShouldAskQuestion - increase system messages time to 15000 ms - show system message on start turn - add 'KEY_CHAT_FOR_PLAYERS' key for disabling chat for players and admins on Runner, need to update Designer - add fullscreen on player login - fix bug on loading key 'KEY_CYCLES_GEN' - need to test save, resume and cancel experiment
Showing
9 changed files
with
207 additions
and
148 deletions
Show diff stats
experiment_runner/experiment_runner.lpi
@@ -14,7 +14,11 @@ | @@ -14,7 +14,11 @@ | ||
14 | <EnableI18N LFM="False"/> | 14 | <EnableI18N LFM="False"/> |
15 | </i18n> | 15 | </i18n> |
16 | <VersionInfo> | 16 | <VersionInfo> |
17 | - <StringTable ProductVersion=""/> | 17 | + <UseVersionInfo Value="True"/> |
18 | + <AutoIncrementBuild Value="True"/> | ||
19 | + <MinorVersionNr Value="1"/> | ||
20 | + <Language Value="0416"/> | ||
21 | + <StringTable Comments="https://github.com/lacs-ufpa/free-mtrix" CompanyName="Laboratório de Comportamento Social e Seleção Cultural" FileDescription="Experimentos livres de seleção cultural e comportamento social." LegalCopyright="Copyright (C) Carlos Rafael Fernandes Picanço, Universidade Federal do Pará." OriginalFilename="experiment_runner" ProductName="Free-mtrix" ProductVersion="0.1.0"/> | ||
18 | </VersionInfo> | 22 | </VersionInfo> |
19 | <BuildModes Count="4"> | 23 | <BuildModes Count="4"> |
20 | <Item1 Name="Linux 64 Debug" Default="True"/> | 24 | <Item1 Name="Linux 64 Debug" Default="True"/> |
@@ -30,18 +34,10 @@ | @@ -30,18 +34,10 @@ | ||
30 | <OtherUnitFiles Value="units;../dependencies/delphizmq"/> | 34 | <OtherUnitFiles Value="units;../dependencies/delphizmq"/> |
31 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> | 35 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> |
32 | </SearchPaths> | 36 | </SearchPaths> |
33 | - <CodeGeneration> | ||
34 | - <SmartLinkUnit Value="True"/> | ||
35 | - <Optimizations> | ||
36 | - <OptimizationLevel Value="3"/> | ||
37 | - </Optimizations> | ||
38 | - </CodeGeneration> | ||
39 | <Linking> | 37 | <Linking> |
40 | <Debugging> | 38 | <Debugging> |
41 | - <GenerateDebugInfo Value="False"/> | ||
42 | - <StripSymbols Value="True"/> | 39 | + <UseExternalDbgSyms Value="True"/> |
43 | </Debugging> | 40 | </Debugging> |
44 | - <LinkSmart Value="True"/> | ||
45 | <Options> | 41 | <Options> |
46 | <Win32> | 42 | <Win32> |
47 | <GraphicApplication Value="True"/> | 43 | <GraphicApplication Value="True"/> |
@@ -86,18 +82,10 @@ | @@ -86,18 +82,10 @@ | ||
86 | <OtherUnitFiles Value="units;../dependencies/delphizmq"/> | 82 | <OtherUnitFiles Value="units;../dependencies/delphizmq"/> |
87 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> | 83 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> |
88 | </SearchPaths> | 84 | </SearchPaths> |
89 | - <CodeGeneration> | ||
90 | - <SmartLinkUnit Value="True"/> | ||
91 | - <Optimizations> | ||
92 | - <OptimizationLevel Value="4"/> | ||
93 | - </Optimizations> | ||
94 | - </CodeGeneration> | ||
95 | <Linking> | 85 | <Linking> |
96 | <Debugging> | 86 | <Debugging> |
97 | - <GenerateDebugInfo Value="False"/> | ||
98 | - <StripSymbols Value="True"/> | 87 | + <UseExternalDbgSyms Value="True"/> |
99 | </Debugging> | 88 | </Debugging> |
100 | - <LinkSmart Value="True"/> | ||
101 | <Options> | 89 | <Options> |
102 | <Win32> | 90 | <Win32> |
103 | <GraphicApplication Value="True"/> | 91 | <GraphicApplication Value="True"/> |
experiment_runner/form_matrixgame.lfm
@@ -7,7 +7,7 @@ object FormMatrixGame: TFormMatrixGame | @@ -7,7 +7,7 @@ object FormMatrixGame: TFormMatrixGame | ||
7 | VertScrollBar.Page = 542 | 7 | VertScrollBar.Page = 542 |
8 | AutoScroll = True | 8 | AutoScroll = True |
9 | Caption = 'Matrix' | 9 | Caption = 'Matrix' |
10 | - ClientHeight = 609 | 10 | + ClientHeight = 616 |
11 | ClientWidth = 1167 | 11 | ClientWidth = 1167 |
12 | Font.Name = 'Monospace' | 12 | Font.Name = 'Monospace' |
13 | OnActivate = FormActivate | 13 | OnActivate = FormActivate |
@@ -16,24 +16,24 @@ object FormMatrixGame: TFormMatrixGame | @@ -16,24 +16,24 @@ object FormMatrixGame: TFormMatrixGame | ||
16 | AnchorSideLeft.Control = GBIndividualAB | 16 | AnchorSideLeft.Control = GBIndividualAB |
17 | AnchorSideTop.Control = GBIndividualAB | 17 | AnchorSideTop.Control = GBIndividualAB |
18 | Left = 800 | 18 | Left = 800 |
19 | - Height = 131 | 19 | + Height = 122 |
20 | Top = 8 | 20 | Top = 8 |
21 | - Width = 162 | 21 | + Width = 170 |
22 | AutoSize = True | 22 | AutoSize = True |
23 | Caption = 'Pontuação Individual' | 23 | Caption = 'Pontuação Individual' |
24 | ChildSizing.LeftRightSpacing = 35 | 24 | ChildSizing.LeftRightSpacing = 35 |
25 | ChildSizing.TopBottomSpacing = 45 | 25 | ChildSizing.TopBottomSpacing = 45 |
26 | ChildSizing.Layout = cclLeftToRightThenTopToBottom | 26 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
27 | ChildSizing.ControlsPerLine = 1 | 27 | ChildSizing.ControlsPerLine = 1 |
28 | - ClientHeight = 108 | ||
29 | - ClientWidth = 158 | 28 | + ClientHeight = 105 |
29 | + ClientWidth = 166 | ||
30 | TabOrder = 7 | 30 | TabOrder = 7 |
31 | Visible = False | 31 | Visible = False |
32 | object LabelIndCount: TLabel | 32 | object LabelIndCount: TLabel |
33 | Left = 35 | 33 | Left = 35 |
34 | - Height = 18 | 34 | + Height = 15 |
35 | Top = 45 | 35 | Top = 45 |
36 | - Width = 88 | 36 | + Width = 96 |
37 | Align = alClient | 37 | Align = alClient |
38 | Alignment = taCenter | 38 | Alignment = taCenter |
39 | AutoSize = False | 39 | AutoSize = False |
@@ -71,9 +71,9 @@ object FormMatrixGame: TFormMatrixGame | @@ -71,9 +71,9 @@ object FormMatrixGame: TFormMatrixGame | ||
71 | end | 71 | end |
72 | object GBIndividualAB: TGroupBox | 72 | object GBIndividualAB: TGroupBox |
73 | Left = 800 | 73 | Left = 800 |
74 | - Height = 135 | 74 | + Height = 122 |
75 | Top = 8 | 75 | Top = 8 |
76 | - Width = 162 | 76 | + Width = 170 |
77 | AutoSize = True | 77 | AutoSize = True |
78 | Caption = 'Pontuação Individual' | 78 | Caption = 'Pontuação Individual' |
79 | ChildSizing.LeftRightSpacing = 10 | 79 | ChildSizing.LeftRightSpacing = 10 |
@@ -83,14 +83,14 @@ object FormMatrixGame: TFormMatrixGame | @@ -83,14 +83,14 @@ object FormMatrixGame: TFormMatrixGame | ||
83 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize | 83 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize |
84 | ChildSizing.Layout = cclLeftToRightThenTopToBottom | 84 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
85 | ChildSizing.ControlsPerLine = 2 | 85 | ChildSizing.ControlsPerLine = 2 |
86 | - ClientHeight = 112 | ||
87 | - ClientWidth = 158 | 86 | + ClientHeight = 105 |
87 | + ClientWidth = 166 | ||
88 | TabOrder = 1 | 88 | TabOrder = 1 |
89 | object LabelIndA: TLabel | 89 | object LabelIndA: TLabel |
90 | Left = 10 | 90 | Left = 10 |
91 | - Height = 19 | 91 | + Height = 15 |
92 | Top = 30 | 92 | Top = 30 |
93 | - Width = 59 | 93 | + Width = 63 |
94 | Alignment = taCenter | 94 | Alignment = taCenter |
95 | AutoSize = False | 95 | AutoSize = False |
96 | Caption = 'A' | 96 | Caption = 'A' |
@@ -103,10 +103,10 @@ object FormMatrixGame: TFormMatrixGame | @@ -103,10 +103,10 @@ object FormMatrixGame: TFormMatrixGame | ||
103 | Transparent = False | 103 | Transparent = False |
104 | end | 104 | end |
105 | object LabelIndB: TLabel | 105 | object LabelIndB: TLabel |
106 | - Left = 89 | ||
107 | - Height = 19 | 106 | + Left = 93 |
107 | + Height = 15 | ||
108 | Top = 30 | 108 | Top = 30 |
109 | - Width = 59 | 109 | + Width = 63 |
110 | Alignment = taCenter | 110 | Alignment = taCenter |
111 | AutoSize = False | 111 | AutoSize = False |
112 | Caption = 'B' | 112 | Caption = 'B' |
@@ -120,9 +120,9 @@ object FormMatrixGame: TFormMatrixGame | @@ -120,9 +120,9 @@ object FormMatrixGame: TFormMatrixGame | ||
120 | end | 120 | end |
121 | object LabelIndACount: TLabel | 121 | object LabelIndACount: TLabel |
122 | Left = 10 | 122 | Left = 10 |
123 | - Height = 18 | ||
124 | - Top = 64 | ||
125 | - Width = 59 | 123 | + Height = 15 |
124 | + Top = 60 | ||
125 | + Width = 63 | ||
126 | Alignment = taCenter | 126 | Alignment = taCenter |
127 | AutoSize = False | 127 | AutoSize = False |
128 | Caption = '0' | 128 | Caption = '0' |
@@ -131,10 +131,10 @@ object FormMatrixGame: TFormMatrixGame | @@ -131,10 +131,10 @@ object FormMatrixGame: TFormMatrixGame | ||
131 | Transparent = False | 131 | Transparent = False |
132 | end | 132 | end |
133 | object LabelIndBCount: TLabel | 133 | object LabelIndBCount: TLabel |
134 | - Left = 89 | ||
135 | - Height = 18 | ||
136 | - Top = 64 | ||
137 | - Width = 59 | 134 | + Left = 93 |
135 | + Height = 15 | ||
136 | + Top = 60 | ||
137 | + Width = 63 | ||
138 | Alignment = taCenter | 138 | Alignment = taCenter |
139 | AutoSize = False | 139 | AutoSize = False |
140 | Caption = '0' | 140 | Caption = '0' |
@@ -147,10 +147,10 @@ object FormMatrixGame: TFormMatrixGame | @@ -147,10 +147,10 @@ object FormMatrixGame: TFormMatrixGame | ||
147 | AnchorSideLeft.Control = GBIndividualAB | 147 | AnchorSideLeft.Control = GBIndividualAB |
148 | AnchorSideLeft.Side = asrBottom | 148 | AnchorSideLeft.Side = asrBottom |
149 | AnchorSideTop.Control = GBIndividualAB | 149 | AnchorSideTop.Control = GBIndividualAB |
150 | - Left = 972 | ||
151 | - Height = 131 | 150 | + Left = 980 |
151 | + Height = 122 | ||
152 | Top = 8 | 152 | Top = 8 |
153 | - Width = 171 | 153 | + Width = 170 |
154 | AutoSize = True | 154 | AutoSize = True |
155 | BorderSpacing.Left = 10 | 155 | BorderSpacing.Left = 10 |
156 | Caption = ' Pontuação do Grupo ' | 156 | Caption = ' Pontuação do Grupo ' |
@@ -158,14 +158,14 @@ object FormMatrixGame: TFormMatrixGame | @@ -158,14 +158,14 @@ object FormMatrixGame: TFormMatrixGame | ||
158 | ChildSizing.TopBottomSpacing = 45 | 158 | ChildSizing.TopBottomSpacing = 45 |
159 | ChildSizing.Layout = cclLeftToRightThenTopToBottom | 159 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
160 | ChildSizing.ControlsPerLine = 1 | 160 | ChildSizing.ControlsPerLine = 1 |
161 | - ClientHeight = 108 | ||
162 | - ClientWidth = 167 | 161 | + ClientHeight = 105 |
162 | + ClientWidth = 166 | ||
163 | TabOrder = 2 | 163 | TabOrder = 2 |
164 | object LabelGroupCount: TLabel | 164 | object LabelGroupCount: TLabel |
165 | Left = 35 | 165 | Left = 35 |
166 | - Height = 18 | 166 | + Height = 15 |
167 | Top = 45 | 167 | Top = 45 |
168 | - Width = 97 | 168 | + Width = 96 |
169 | Align = alClient | 169 | Align = alClient |
170 | Alignment = taCenter | 170 | Alignment = taCenter |
171 | AutoSize = False | 171 | AutoSize = False |
@@ -183,9 +183,9 @@ object FormMatrixGame: TFormMatrixGame | @@ -183,9 +183,9 @@ object FormMatrixGame: TFormMatrixGame | ||
183 | AnchorSideBottom.Control = Owner | 183 | AnchorSideBottom.Control = Owner |
184 | AnchorSideBottom.Side = asrBottom | 184 | AnchorSideBottom.Side = asrBottom |
185 | Left = 0 | 185 | Left = 0 |
186 | - Height = 22 | ||
187 | - Top = 587 | ||
188 | - Width = 1625 | 186 | + Height = 17 |
187 | + Top = 599 | ||
188 | + Width = 1632 | ||
189 | Anchors = [akLeft, akRight, akBottom] | 189 | Anchors = [akLeft, akRight, akBottom] |
190 | AutoSize = True | 190 | AutoSize = True |
191 | Caption = 'Escolhas na última jogada' | 191 | Caption = 'Escolhas na última jogada' |
@@ -200,21 +200,21 @@ object FormMatrixGame: TFormMatrixGame | @@ -200,21 +200,21 @@ object FormMatrixGame: TFormMatrixGame | ||
200 | AnchorSideLeft.Control = GBGrupo | 200 | AnchorSideLeft.Control = GBGrupo |
201 | AnchorSideLeft.Side = asrBottom | 201 | AnchorSideLeft.Side = asrBottom |
202 | AnchorSideTop.Control = GBGrupo | 202 | AnchorSideTop.Control = GBGrupo |
203 | - Left = 1153 | 203 | + Left = 1160 |
204 | Height = 486 | 204 | Height = 486 |
205 | Top = 8 | 205 | Top = 8 |
206 | Width = 472 | 206 | Width = 472 |
207 | BorderSpacing.Left = 10 | 207 | BorderSpacing.Left = 10 |
208 | Caption = 'Pesquisador' | 208 | Caption = 'Pesquisador' |
209 | - ClientHeight = 463 | 209 | + ClientHeight = 469 |
210 | ClientWidth = 468 | 210 | ClientWidth = 468 |
211 | TabOrder = 4 | 211 | TabOrder = 4 |
212 | Visible = False | 212 | Visible = False |
213 | object GBExperiment: TGroupBox | 213 | object GBExperiment: TGroupBox |
214 | Left = 16 | 214 | Left = 16 |
215 | - Height = 221 | 215 | + Height = 197 |
216 | Top = 60 | 216 | Top = 60 |
217 | - Width = 220 | 217 | + Width = 228 |
218 | AutoSize = True | 218 | AutoSize = True |
219 | Caption = 'Experimento' | 219 | Caption = 'Experimento' |
220 | ChildSizing.LeftRightSpacing = 10 | 220 | ChildSizing.LeftRightSpacing = 10 |
@@ -224,102 +224,102 @@ object FormMatrixGame: TFormMatrixGame | @@ -224,102 +224,102 @@ object FormMatrixGame: TFormMatrixGame | ||
224 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize | 224 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize |
225 | ChildSizing.Layout = cclLeftToRightThenTopToBottom | 225 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
226 | ChildSizing.ControlsPerLine = 2 | 226 | ChildSizing.ControlsPerLine = 2 |
227 | - ClientHeight = 198 | ||
228 | - ClientWidth = 216 | 227 | + ClientHeight = 180 |
228 | + ClientWidth = 224 | ||
229 | TabOrder = 0 | 229 | TabOrder = 0 |
230 | object LabelExpCond: TLabel | 230 | object LabelExpCond: TLabel |
231 | Left = 10 | 231 | Left = 10 |
232 | - Height = 18 | 232 | + Height = 15 |
233 | Top = 20 | 233 | Top = 20 |
234 | - Width = 154 | 234 | + Width = 168 |
235 | Caption = 'Condição:' | 235 | Caption = 'Condição:' |
236 | ParentColor = False | 236 | ParentColor = False |
237 | end | 237 | end |
238 | object LabelExpCountCondition: TLabel | 238 | object LabelExpCountCondition: TLabel |
239 | - Left = 184 | ||
240 | - Height = 18 | 239 | + Left = 198 |
240 | + Height = 15 | ||
241 | Top = 20 | 241 | Top = 20 |
242 | - Width = 22 | 242 | + Width = 16 |
243 | Caption = 'NA' | 243 | Caption = 'NA' |
244 | ParentColor = False | 244 | ParentColor = False |
245 | end | 245 | end |
246 | object LabelExpGen: TLabel | 246 | object LabelExpGen: TLabel |
247 | Left = 10 | 247 | Left = 10 |
248 | - Height = 18 | ||
249 | - Top = 48 | ||
250 | - Width = 154 | 248 | + Height = 15 |
249 | + Top = 45 | ||
250 | + Width = 168 | ||
251 | Caption = 'Geração:' | 251 | Caption = 'Geração:' |
252 | ParentColor = False | 252 | ParentColor = False |
253 | end | 253 | end |
254 | object LabelExpCountGeneration: TLabel | 254 | object LabelExpCountGeneration: TLabel |
255 | - Left = 184 | ||
256 | - Height = 18 | ||
257 | - Top = 48 | ||
258 | - Width = 22 | 255 | + Left = 198 |
256 | + Height = 15 | ||
257 | + Top = 45 | ||
258 | + Width = 16 | ||
259 | Caption = 'NA' | 259 | Caption = 'NA' |
260 | ParentColor = False | 260 | ParentColor = False |
261 | end | 261 | end |
262 | object LabelExpCycle: TLabel | 262 | object LabelExpCycle: TLabel |
263 | Left = 10 | 263 | Left = 10 |
264 | - Height = 18 | ||
265 | - Top = 76 | ||
266 | - Width = 154 | 264 | + Height = 15 |
265 | + Top = 70 | ||
266 | + Width = 168 | ||
267 | Caption = 'Ciclo:' | 267 | Caption = 'Ciclo:' |
268 | ParentColor = False | 268 | ParentColor = False |
269 | end | 269 | end |
270 | object LabelExpCountCycle: TLabel | 270 | object LabelExpCountCycle: TLabel |
271 | - Left = 184 | ||
272 | - Height = 18 | ||
273 | - Top = 76 | ||
274 | - Width = 22 | 271 | + Left = 198 |
272 | + Height = 15 | ||
273 | + Top = 70 | ||
274 | + Width = 16 | ||
275 | Caption = 'NA' | 275 | Caption = 'NA' |
276 | ParentColor = False | 276 | ParentColor = False |
277 | end | 277 | end |
278 | object LabelExpTurn: TLabel | 278 | object LabelExpTurn: TLabel |
279 | Left = 10 | 279 | Left = 10 |
280 | - Height = 18 | ||
281 | - Top = 104 | ||
282 | - Width = 154 | 280 | + Height = 15 |
281 | + Top = 95 | ||
282 | + Width = 168 | ||
283 | Caption = 'Turno:' | 283 | Caption = 'Turno:' |
284 | ParentColor = False | 284 | ParentColor = False |
285 | end | 285 | end |
286 | object LabelExpCountTurn: TLabel | 286 | object LabelExpCountTurn: TLabel |
287 | - Left = 184 | ||
288 | - Height = 18 | ||
289 | - Top = 104 | ||
290 | - Width = 22 | 287 | + Left = 198 |
288 | + Height = 15 | ||
289 | + Top = 95 | ||
290 | + Width = 16 | ||
291 | Caption = 'NA' | 291 | Caption = 'NA' |
292 | ParentColor = False | 292 | ParentColor = False |
293 | end | 293 | end |
294 | object LabelExpInterlocks: TLabel | 294 | object LabelExpInterlocks: TLabel |
295 | Left = 10 | 295 | Left = 10 |
296 | - Height = 18 | ||
297 | - Top = 132 | ||
298 | - Width = 154 | 296 | + Height = 15 |
297 | + Top = 120 | ||
298 | + Width = 168 | ||
299 | Caption = 'Entrelaçamentos:' | 299 | Caption = 'Entrelaçamentos:' |
300 | ParentColor = False | 300 | ParentColor = False |
301 | end | 301 | end |
302 | object LabelExpCountInterlocks: TLabel | 302 | object LabelExpCountInterlocks: TLabel |
303 | - Left = 184 | ||
304 | - Height = 18 | ||
305 | - Top = 132 | ||
306 | - Width = 22 | 303 | + Left = 198 |
304 | + Height = 15 | ||
305 | + Top = 120 | ||
306 | + Width = 16 | ||
307 | Caption = 'NA' | 307 | Caption = 'NA' |
308 | ParentColor = False | 308 | ParentColor = False |
309 | end | 309 | end |
310 | object LabelExpTInterlocks: TLabel | 310 | object LabelExpTInterlocks: TLabel |
311 | Left = 10 | 311 | Left = 10 |
312 | - Height = 18 | ||
313 | - Top = 160 | ||
314 | - Width = 154 | 312 | + Height = 15 |
313 | + Top = 145 | ||
314 | + Width = 168 | ||
315 | Caption = 'Entrelaçamentos Alvo:' | 315 | Caption = 'Entrelaçamentos Alvo:' |
316 | ParentColor = False | 316 | ParentColor = False |
317 | end | 317 | end |
318 | object LabelExpCountTInterlocks: TLabel | 318 | object LabelExpCountTInterlocks: TLabel |
319 | - Left = 184 | ||
320 | - Height = 18 | ||
321 | - Top = 160 | ||
322 | - Width = 22 | 319 | + Left = 198 |
320 | + Height = 15 | ||
321 | + Top = 145 | ||
322 | + Width = 16 | ||
323 | Caption = 'NA' | 323 | Caption = 'NA' |
324 | ParentColor = False | 324 | ParentColor = False |
325 | end | 325 | end |
@@ -372,19 +372,19 @@ object FormMatrixGame: TFormMatrixGame | @@ -372,19 +372,19 @@ object FormMatrixGame: TFormMatrixGame | ||
372 | AnchorSideRight.Side = asrBottom | 372 | AnchorSideRight.Side = asrBottom |
373 | Left = 800 | 373 | Left = 800 |
374 | Height = 354 | 374 | Height = 354 |
375 | - Top = 153 | ||
376 | - Width = 343 | 375 | + Top = 140 |
376 | + Width = 350 | ||
377 | Anchors = [akTop, akLeft, akRight] | 377 | Anchors = [akTop, akLeft, akRight] |
378 | BorderSpacing.Top = 10 | 378 | BorderSpacing.Top = 10 |
379 | ClientHeight = 354 | 379 | ClientHeight = 354 |
380 | - ClientWidth = 343 | 380 | + ClientWidth = 350 |
381 | TabOrder = 6 | 381 | TabOrder = 6 |
382 | object ChatMemoRecv: TMemo | 382 | object ChatMemoRecv: TMemo |
383 | AnchorSideBottom.Control = ChatSplitter | 383 | AnchorSideBottom.Control = ChatSplitter |
384 | Left = 6 | 384 | Left = 6 |
385 | Height = 221 | 385 | Height = 221 |
386 | Top = 6 | 386 | Top = 6 |
387 | - Width = 331 | 387 | + Width = 338 |
388 | Align = alTop | 388 | Align = alTop |
389 | Anchors = [akTop, akLeft, akRight, akBottom] | 389 | Anchors = [akTop, akLeft, akRight, akBottom] |
390 | BorderSpacing.Left = 5 | 390 | BorderSpacing.Left = 5 |
@@ -405,7 +405,7 @@ object FormMatrixGame: TFormMatrixGame | @@ -405,7 +405,7 @@ object FormMatrixGame: TFormMatrixGame | ||
405 | Left = 0 | 405 | Left = 0 |
406 | Height = 5 | 406 | Height = 5 |
407 | Top = 232 | 407 | Top = 232 |
408 | - Width = 341 | 408 | + Width = 348 |
409 | Align = alNone | 409 | Align = alNone |
410 | Anchors = [akLeft, akRight] | 410 | Anchors = [akLeft, akRight] |
411 | ResizeAnchor = akTop | 411 | ResizeAnchor = akTop |
@@ -416,7 +416,7 @@ object FormMatrixGame: TFormMatrixGame | @@ -416,7 +416,7 @@ object FormMatrixGame: TFormMatrixGame | ||
416 | Left = 6 | 416 | Left = 6 |
417 | Height = 106 | 417 | Height = 106 |
418 | Top = 242 | 418 | Top = 242 |
419 | - Width = 331 | 419 | + Width = 338 |
420 | Align = alBottom | 420 | Align = alBottom |
421 | Anchors = [akTop, akLeft, akRight, akBottom] | 421 | Anchors = [akTop, akLeft, akRight, akBottom] |
422 | BorderSpacing.Around = 5 | 422 | BorderSpacing.Around = 5 |
@@ -439,7 +439,7 @@ object FormMatrixGame: TFormMatrixGame | @@ -439,7 +439,7 @@ object FormMatrixGame: TFormMatrixGame | ||
439 | top = 360 | 439 | top = 360 |
440 | end | 440 | end |
441 | object PopupNotifier: TPopupNotifier | 441 | object PopupNotifier: TPopupNotifier |
442 | - Color = clTeal | 442 | + Color = clDefault |
443 | Icon.Data = { | 443 | Icon.Data = { |
444 | 07544269746D617000000000 | 444 | 07544269746D617000000000 |
445 | } | 445 | } |
experiment_runner/form_matrixgame.pas
@@ -80,6 +80,7 @@ type | @@ -80,6 +80,7 @@ type | ||
80 | public | 80 | public |
81 | procedure SetID(S : string); | 81 | procedure SetID(S : string); |
82 | procedure SetGameActor(AValue: TGameActor); | 82 | procedure SetGameActor(AValue: TGameActor); |
83 | + procedure SetFullscreen; | ||
83 | property ID : string read FID; | 84 | property ID : string read FID; |
84 | end; | 85 | end; |
85 | 86 | ||
@@ -248,6 +249,17 @@ begin | @@ -248,6 +249,17 @@ begin | ||
248 | end; | 249 | end; |
249 | end; | 250 | end; |
250 | 251 | ||
252 | +procedure TFormMatrixGame.SetFullscreen; | ||
253 | +begin | ||
254 | + BorderStyle:=bsNone; | ||
255 | + {$IFDEF WINDOWS} | ||
256 | + BoundsRect := Monitor.BoundsRect; | ||
257 | + {$ENDIF} | ||
258 | + Position:=poDesigned; | ||
259 | + FormStyle:=fsNormal; | ||
260 | + WindowState:=wsFullScreen; | ||
261 | +end; | ||
262 | + | ||
251 | procedure TFormMatrixGame.SetID(S: string); | 263 | procedure TFormMatrixGame.SetID(S: string); |
252 | begin | 264 | begin |
253 | FID := S; | 265 | FID := S; |
@@ -256,6 +268,7 @@ end; | @@ -256,6 +268,7 @@ end; | ||
256 | 268 | ||
257 | procedure TFormMatrixGame.FormActivate(Sender: TObject); | 269 | procedure TFormMatrixGame.FormActivate(Sender: TObject); |
258 | begin | 270 | begin |
271 | + PopupNotifier.Icon.Assign(Application.Icon); | ||
259 | if not Assigned(FGameControl) then | 272 | if not Assigned(FGameControl) then |
260 | begin | 273 | begin |
261 | FormChooseActor := TFormChooseActor.Create(Self); | 274 | FormChooseActor := TFormChooseActor.Create(Self); |
@@ -319,15 +332,15 @@ begin | @@ -319,15 +332,15 @@ begin | ||
319 | ButtonExpStart.Caption := CAPTION_START; | 332 | ButtonExpStart.Caption := CAPTION_START; |
320 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; | 333 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; |
321 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; | 334 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; |
322 | - //FGameControl.Experiment.SaveToFile(SaveDialog.FileName'.canceled'); | ||
323 | - //FGameControl.Experiment.Clean; | 335 | + FGameControl.Experiment.SaveToFile(OpenDialog.FileName+'.canceled'); |
336 | + FGameControl.SendMessage(K_END); | ||
324 | end; | 337 | end; |
325 | 338 | ||
326 | procedure TFormMatrixGame.ButtonExpPauseClick(Sender: TObject); | 339 | procedure TFormMatrixGame.ButtonExpPauseClick(Sender: TObject); |
327 | begin | 340 | begin |
328 | - ButtonExpStart.Enabled := True; | ||
329 | - ButtonExpStart.Caption := CAPTION_RESUME; | ||
330 | - ButtonExpPause.Enabled := not ButtonExpStart.Enabled; | 341 | + //ButtonExpStart.Enabled := True; |
342 | + //ButtonExpStart.Caption := CAPTION_RESUME; | ||
343 | + //ButtonExpPause.Enabled := not ButtonExpStart.Enabled; | ||
331 | //FGameControl.Pause; | 344 | //FGameControl.Pause; |
332 | end; | 345 | end; |
333 | 346 | ||
@@ -344,7 +357,7 @@ begin | @@ -344,7 +357,7 @@ begin | ||
344 | ButtonExpStart.Caption := CAPTION_RUNNING; | 357 | ButtonExpStart.Caption := CAPTION_RUNNING; |
345 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; | 358 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; |
346 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; | 359 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; |
347 | - | 360 | + ChatPanel.Visible := FGameControl.Experiment.ShowChat; |
348 | end; | 361 | end; |
349 | 362 | ||
350 | if ButtonExpStart.Caption = CAPTION_RESUME then | 363 | if ButtonExpStart.Caption = CAPTION_RESUME then |
@@ -353,7 +366,7 @@ begin | @@ -353,7 +366,7 @@ begin | ||
353 | ButtonExpStart.Caption := CAPTION_RUNNING; | 366 | ButtonExpStart.Caption := CAPTION_RUNNING; |
354 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; | 367 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; |
355 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; | 368 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; |
356 | - //FGameControl.Resume; | 369 | + FGameControl.Resume; |
357 | end; | 370 | end; |
358 | end; | 371 | end; |
359 | 372 |
experiment_runner/lib/x86_64-linux/experiment_runner.compiled
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <CONFIG> | 2 | <CONFIG> |
3 | <Compiler Value="/usr/bin/fpc" Date="1449313866"/> | 3 | <Compiler Value="/usr/bin/fpc" Date="1449313866"/> |
4 | - <Params Value=" -MObjFPC -Scghi -CX -Cg -O3 -Xs -XX -l -vewnhibq -Fi/home/rafael/git/sc_split/experiment_runner/lib/x86_64-linux -Fl/usr/lib/gcc/x86_64-linux-gnu/4.9 -Fl/opt/gnome/lib -Fu/home/rafael/git/sc_split/experiment_runner/units -Fu/home/rafael/git/sc_split/dependencies/delphizmq -Fu/usr/share/lazarus/1.6.2/lcl/units/x86_64-linux/gtk2 -Fu/usr/share/lazarus/1.6.2/lcl/units/x86_64-linux -Fu/usr/share/lazarus/1.6.2/components/lazutils/lib/x86_64-linux -Fu/usr/share/lazarus/1.6.2/packager/units/x86_64-linux -Fu/home/rafael/git/sc_split/experiment_runner/ -FU/home/rafael/git/sc_split/experiment_runner/lib/x86_64-linux/ -dLCL -dLCLgtk2 -dUseCThreads experiment_runner.lpr"/> | 4 | + <Params Value=" -MObjFPC -Scghi -Cg -O1 -g -gl -Xg -l -vewnhibq -Fi/home/rafael/git/sc_split/experiment_runner/lib/x86_64-linux -Fl/usr/lib/gcc/x86_64-linux-gnu/4.9 -Fl/opt/gnome/lib -Fu/home/rafael/git/sc_split/experiment_runner/units -Fu/home/rafael/git/sc_split/dependencies/delphizmq -Fu/usr/share/lazarus/1.6.2/lcl/units/x86_64-linux/gtk2 -Fu/usr/share/lazarus/1.6.2/lcl/units/x86_64-linux -Fu/usr/share/lazarus/1.6.2/components/lazutils/lib/x86_64-linux -Fu/usr/share/lazarus/1.6.2/packager/units/x86_64-linux -Fu/home/rafael/git/sc_split/experiment_runner/ -FU/home/rafael/git/sc_split/experiment_runner/lib/x86_64-linux/ -dLCL -dLCLgtk2 -dUseCThreads experiment_runner.lpr"/> |
5 | </CONFIG> | 5 | </CONFIG> |
experiment_runner/units/game_actors.pas
@@ -442,7 +442,7 @@ end; | @@ -442,7 +442,7 @@ end; | ||
442 | 442 | ||
443 | procedure TPrompt.ClearResponses; | 443 | procedure TPrompt.ClearResponses; |
444 | begin | 444 | begin |
445 | - FResponses := nil; | 445 | + SetLength(FResponses,0); |
446 | end; | 446 | end; |
447 | 447 | ||
448 | constructor TPrompt.Create(AOwner: TComponent; APStyle: TPromptStyle; | 448 | constructor TPrompt.Create(AOwner: TComponent; APStyle: TPromptStyle; |
@@ -473,7 +473,7 @@ end; | @@ -473,7 +473,7 @@ end; | ||
473 | procedure TPrompt.Clean; | 473 | procedure TPrompt.Clean; |
474 | begin | 474 | begin |
475 | //inherited Clean; | 475 | //inherited Clean; |
476 | - FResponses := nil; | 476 | + SetLength(FResponses,0); |
477 | end; | 477 | end; |
478 | 478 | ||
479 | function TPrompt.AsString: TStringList; | 479 | function TPrompt.AsString: TStringList; |
experiment_runner/units/game_control.pas
@@ -53,7 +53,7 @@ type | @@ -53,7 +53,7 @@ type | ||
53 | private | 53 | private |
54 | function AskQuestion(AQuestion:string):UTF8string; | 54 | function AskQuestion(AQuestion:string):UTF8string; |
55 | function ShowConsequence(AID,S:string;ForGroup:Boolean;ShowPopUp : Boolean = True) : string; | 55 | function ShowConsequence(AID,S:string;ForGroup:Boolean;ShowPopUp : Boolean = True) : string; |
56 | - procedure ShowPopUp(AText:string;AInterval : integer = 5000); | 56 | + procedure ShowPopUp(AText:string;AInterval : integer = 15000); |
57 | procedure DisableConfirmationButton; | 57 | procedure DisableConfirmationButton; |
58 | procedure CleanMatrix(AEnabled : Boolean); | 58 | procedure CleanMatrix(AEnabled : Boolean); |
59 | procedure NextConditionSetup(S : string); | 59 | procedure NextConditionSetup(S : string); |
@@ -137,6 +137,7 @@ const | @@ -137,6 +137,7 @@ const | ||
137 | function GetRowColor(ARow: integer; ARowBase:integer): TColor; | 137 | function GetRowColor(ARow: integer; ARowBase:integer): TColor; |
138 | var LRow : integer; | 138 | var LRow : integer; |
139 | begin | 139 | begin |
140 | + Result := 0; | ||
140 | if ARowBase = 1 then | 141 | if ARowBase = 1 then |
141 | LRow := aRow -1 | 142 | LRow := aRow -1 |
142 | else LRow := aRow; | 143 | else LRow := aRow; |
@@ -179,7 +180,7 @@ end; | @@ -179,7 +180,7 @@ end; | ||
179 | 180 | ||
180 | function TGameControl.ShouldAskQuestion: Boolean; | 181 | function TGameControl.ShouldAskQuestion: Boolean; |
181 | begin | 182 | begin |
182 | - Result := Assigned(FExperiment.Condition[FExperiment.CurrentCondition].Prompt) and FExperiment.Condition[FExperiment.CurrentCondition].Contingencies[3].Fired; | 183 | + Result := Assigned(FExperiment.Condition[FExperiment.CurrentCondition].Prompt) and FExperiment.TargetIntelockingFired; |
183 | end; | 184 | end; |
184 | 185 | ||
185 | procedure TGameControl.EndExperiment(Sender: TObject); | 186 | procedure TGameControl.EndExperiment(Sender: TObject); |
@@ -298,9 +299,8 @@ end; | @@ -298,9 +299,8 @@ end; | ||
298 | 299 | ||
299 | procedure TGameControl.Stop; | 300 | procedure TGameControl.Stop; |
300 | begin | 301 | begin |
301 | - // Pause | ||
302 | - | ||
303 | // cleaning | 302 | // cleaning |
303 | + FExperiment.Clean; | ||
304 | end; | 304 | end; |
305 | 305 | ||
306 | function TGameControl.GetPlayerBox(AID: UTF8string): TPlayerBox; | 306 | function TGameControl.GetPlayerBox(AID: UTF8string): TPlayerBox; |
@@ -317,6 +317,7 @@ end; | @@ -317,6 +317,7 @@ end; | ||
317 | 317 | ||
318 | function TGameControl.GetActorNicname(AID: UTF8string): UTF8string; | 318 | function TGameControl.GetActorNicname(AID: UTF8string): UTF8string; |
319 | begin | 319 | begin |
320 | + Result := ''; | ||
320 | case FActor of | 321 | case FActor of |
321 | gaPlayer: begin | 322 | gaPlayer: begin |
322 | Result := 'UNKNOWN'; | 323 | Result := 'UNKNOWN'; |
@@ -501,8 +502,8 @@ end; | @@ -501,8 +502,8 @@ end; | ||
501 | procedure TGameControl.ShowPopUp(AText: string; AInterval: integer); | 502 | procedure TGameControl.ShowPopUp(AText: string; AInterval: integer); |
502 | var PopUpPos : TPoint; | 503 | var PopUpPos : TPoint; |
503 | begin | 504 | begin |
504 | - PopUpPos.X := FormMatrixGame.GBIndividualAB.Left-110; | ||
505 | - PopUpPos.Y := FormMatrixGame.GBIndividualAB.Top+FormMatrixGame.GBIndividual.Height-10; | 505 | + PopUpPos.X := (FormMatrixGame.StringGridMatrix.Width div 2) - (FormMatrixGame.PopupNotifier.vNotifierForm.Width div 2); |
506 | + PopUpPos.Y := (FormMatrixGame.StringGridMatrix.Height div 2) - (FormMatrixGame.PopupNotifier.vNotifierForm.Height div 2); | ||
506 | PopUpPos := FormMatrixGame.ClientToScreen(PopUpPos); | 507 | PopUpPos := FormMatrixGame.ClientToScreen(PopUpPos); |
507 | FormMatrixGame.PopupNotifier.Title:=''; | 508 | FormMatrixGame.PopupNotifier.Title:=''; |
508 | FormMatrixGame.PopupNotifier.Text:=AText; | 509 | FormMatrixGame.PopupNotifier.Text:=AText; |
@@ -609,7 +610,7 @@ begin | @@ -609,7 +610,7 @@ begin | ||
609 | for P in FExperiment.Players do | 610 | for P in FExperiment.Players do |
610 | begin | 611 | begin |
611 | PB := GetPlayerBox(P.ID); | 612 | PB := GetPlayerBox(P.ID); |
612 | - A += StrToInt(PB.LabelPointsCount.Caption) + B; | 613 | + A += StrToInt(PB.LabelPointsCount.Caption); |
613 | PB.LabelPointsCount.Caption := IntToStr(A); | 614 | PB.LabelPointsCount.Caption := IntToStr(A); |
614 | end; | 615 | end; |
615 | end; | 616 | end; |
@@ -620,6 +621,9 @@ procedure TGameControl.EnablePlayerMatrix(AID:UTF8string; ATurn:integer; AEnable | @@ -620,6 +621,9 @@ procedure TGameControl.EnablePlayerMatrix(AID:UTF8string; ATurn:integer; AEnable | ||
620 | begin | 621 | begin |
621 | if FExperiment.PlayerFromID[AID].Turn = ATurn then | 622 | if FExperiment.PlayerFromID[AID].Turn = ATurn then |
622 | CleanMatrix(AEnabled); | 623 | CleanMatrix(AEnabled); |
624 | + | ||
625 | + if AEnabled then | ||
626 | + ShowPopUp('É sua vez! Clique sobre uma linha da matrix e confirme sua escolha.'); | ||
623 | end; | 627 | end; |
624 | 628 | ||
625 | constructor TGameControl.Create(AOwner: TComponent;AppPath:string); | 629 | constructor TGameControl.Create(AOwner: TComponent;AppPath:string); |
@@ -681,6 +685,7 @@ var | @@ -681,6 +685,7 @@ var | ||
681 | M[i] := A[i]; | 685 | M[i] := A[i]; |
682 | end; | 686 | end; |
683 | begin | 687 | begin |
688 | + SetLength(M,0); | ||
684 | case ARequest of | 689 | case ARequest of |
685 | K_LOGIN :SetM([ | 690 | K_LOGIN :SetM([ |
686 | FZMQActor.ID | 691 | FZMQActor.ID |
@@ -854,10 +859,7 @@ procedure TGameControl.ReceiveMessage(AMessage: TStringList); | @@ -854,10 +859,7 @@ procedure TGameControl.ReceiveMessage(AMessage: TStringList); | ||
854 | case FActor of | 859 | case FActor of |
855 | gaPlayer: | 860 | gaPlayer: |
856 | if FExperiment.PlayerFromID[Self.ID].Turn = 0 then | 861 | if FExperiment.PlayerFromID[Self.ID].Turn = 0 then |
857 | - begin | ||
858 | - EnablePlayerMatrix(Self.ID, 0, True); | ||
859 | - ShowPopUp('É sua vez! Clique sobre uma linha da matrix e confirme sua escolha.'); | ||
860 | - end | 862 | + EnablePlayerMatrix(Self.ID, 0, True) |
861 | else | 863 | else |
862 | ShowPopUp('Começou! Aguarde sua vez.'); | 864 | ShowPopUp('Começou! Aguarde sua vez.'); |
863 | 865 | ||
@@ -1055,7 +1057,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1055,7 +1057,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1055 | 1057 | ||
1056 | // check if we already know this player | 1058 | // check if we already know this player |
1057 | i := FExperiment.PlayerIndexFromID[P.ID]; | 1059 | i := FExperiment.PlayerIndexFromID[P.ID]; |
1058 | - if i > -1then | 1060 | + if i > -1 then |
1059 | begin | 1061 | begin |
1060 | // then load p data | 1062 | // then load p data |
1061 | P := FExperiment.Player[i] | 1063 | P := FExperiment.Player[i] |
@@ -1105,11 +1107,16 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1105,11 +1107,16 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1105 | // appen matrix type | 1107 | // appen matrix type |
1106 | ARequest.Append(FExperiment.MatrixTypeAsString); // COUNT-4 | 1108 | ARequest.Append(FExperiment.MatrixTypeAsString); // COUNT-4 |
1107 | 1109 | ||
1108 | - // append chat data if allowed | ||
1109 | - if FExperiment.SendChatHistoryForNewPlayers then | ||
1110 | - ARequest.Append(FormMatrixGame.ChatMemoRecv.Lines.Text) // COUNT-3 | 1110 | + // append chat data |
1111 | + if FExperiment.ShowChat then | ||
1112 | + begin | ||
1113 | + if FExperiment.SendChatHistoryForNewPlayers then | ||
1114 | + ARequest.Append(FormMatrixGame.ChatMemoRecv.Lines.Text) // COUNT-3 | ||
1115 | + else | ||
1116 | + ARequest.Append('[CHAT]'); // must append something to keep the message envelop with standard size | ||
1117 | + end | ||
1111 | else | 1118 | else |
1112 | - ARequest.Append('[CHAT]'); // must append something to keep the message envelop standard | 1119 | + ARequest.Append('[NOCHAT]'); // must append something to keep the message envelop with standard size |
1113 | 1120 | ||
1114 | // append global configs. | 1121 | // append global configs. |
1115 | ARequest.Append(BoolToStr(FExperiment.ABPoints)); // COUNT-2 | 1122 | ARequest.Append(BoolToStr(FExperiment.ABPoints)); // COUNT-2 |
@@ -1145,6 +1152,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1145,6 +1152,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1145 | LEndCycle : Boolean; | 1152 | LEndCycle : Boolean; |
1146 | LEndGeneration: string; | 1153 | LEndGeneration: string; |
1147 | begin | 1154 | begin |
1155 | + LConsequences := ''; | ||
1148 | {$IFDEF DEBUG} | 1156 | {$IFDEF DEBUG} |
1149 | WriteLn('Count:',FExperiment.Condition[FExperiment.CurrentCondition].Turn.Count, '<', FExperiment.Condition[FExperiment.CurrentCondition].Turn.Value); | 1157 | WriteLn('Count:',FExperiment.Condition[FExperiment.CurrentCondition].Turn.Count, '<', FExperiment.Condition[FExperiment.CurrentCondition].Turn.Value); |
1150 | {$ENDIF} | 1158 | {$ENDIF} |
@@ -1185,7 +1193,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1185,7 +1193,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1185 | begin | 1193 | begin |
1186 | ARequest.Append(#32); // 8 | 1194 | ARequest.Append(#32); // 8 |
1187 | if Assigned(FExperiment.Condition[FExperiment.CurrentCondition].Prompt) then | 1195 | if Assigned(FExperiment.Condition[FExperiment.CurrentCondition].Prompt) then |
1188 | - FExperiment.WriteReportRowPrompt; | 1196 | + FExperiment.WriteReportRowPrompt; //TODO: FIND WHY OPTIMIZATION 3 GENERATES BUG HERE |
1189 | FExperiment.Clean; | 1197 | FExperiment.Clean; |
1190 | end; | 1198 | end; |
1191 | 1199 | ||
@@ -1223,7 +1231,6 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1223,7 +1231,6 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1223 | // return to experiment and present the prompt consequence, if any | 1231 | // return to experiment and present the prompt consequence, if any |
1224 | if FExperiment.Condition[FExperiment.CurrentCondition].Prompt.ResponsesCount = FExperiment.PlayersCount then | 1232 | if FExperiment.Condition[FExperiment.CurrentCondition].Prompt.ResponsesCount = FExperiment.PlayersCount then |
1225 | begin | 1233 | begin |
1226 | - | ||
1227 | // generate messages | 1234 | // generate messages |
1228 | LPromptConsequences := FExperiment.Condition[FExperiment.CurrentCondition].Prompt.AsString; | 1235 | LPromptConsequences := FExperiment.Condition[FExperiment.CurrentCondition].Prompt.AsString; |
1229 | SetLength(M, 3+LPromptConsequences.Count); | 1236 | SetLength(M, 3+LPromptConsequences.Count); |
@@ -1243,7 +1250,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1243,7 +1250,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1243 | end | 1250 | end |
1244 | else; | 1251 | else; |
1245 | 1252 | ||
1246 | - // send identified messages; each player takes only its own message and ignore the rest | 1253 | + // send identified messages; each player takes only its own message and ignore the rest |
1247 | FZMQActor.SendMessage(M); | 1254 | FZMQActor.SendMessage(M); |
1248 | FExperiment.WriteReportRowPrompt; | 1255 | FExperiment.WriteReportRowPrompt; |
1249 | FExperiment.Clean; | 1256 | FExperiment.Clean; |
@@ -1263,7 +1270,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | @@ -1263,7 +1270,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); | ||
1263 | P.Nicname := InputBox | 1270 | P.Nicname := InputBox |
1264 | ( | 1271 | ( |
1265 | 'Mudança de geração', | 1272 | 'Mudança de geração', |
1266 | - 'Um novo participante entrou no lugar do participante mais antigo.Qual o apelido do novo participante?', | 1273 | + 'Um novo participante entrou no lugar do participante mais antigo. Qual o apelido do novo participante?', |
1267 | GenResourceName(-1) | 1274 | GenResourceName(-1) |
1268 | ); | 1275 | ); |
1269 | 1276 | ||
@@ -1312,9 +1319,15 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); | @@ -1312,9 +1319,15 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); | ||
1312 | // set matrix type/ stringgrid | 1319 | // set matrix type/ stringgrid |
1313 | FExperiment.MatrixTypeAsString:=AReply[AReply.Count-4]; | 1320 | FExperiment.MatrixTypeAsString:=AReply[AReply.Count-4]; |
1314 | 1321 | ||
1315 | - // add chat | ||
1316 | - FormMatrixGame.ChatMemoRecv.Lines.Clear; | ||
1317 | - FormMatrixGame.ChatMemoRecv.Lines.Add(AReply[AReply.Count-3]); | 1322 | + // enable chat |
1323 | + if AReply[AReply.Count-3] = '[NOCHAT]' then | ||
1324 | + FormMatrixGame.ChatPanel.Visible := False | ||
1325 | + else | ||
1326 | + begin | ||
1327 | + FormMatrixGame.ChatPanel.Visible := True; | ||
1328 | + FormMatrixGame.ChatMemoRecv.Lines.Clear; | ||
1329 | + FormMatrixGame.ChatMemoRecv.Lines.Append(AReply[AReply.Count-3]); | ||
1330 | + end; | ||
1318 | 1331 | ||
1319 | // set global configs | 1332 | // set global configs |
1320 | FExperiment.ABPoints := StrToBool(AReply[AReply.Count-2]); | 1333 | FExperiment.ABPoints := StrToBool(AReply[AReply.Count-2]); |
@@ -1322,7 +1335,10 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); | @@ -1322,7 +1335,10 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); | ||
1322 | FormMatrixGame.GBIndividual.Visible:= not FormMatrixGame.GBIndividualAB.Visible; | 1335 | FormMatrixGame.GBIndividual.Visible:= not FormMatrixGame.GBIndividualAB.Visible; |
1323 | 1336 | ||
1324 | // set condition specific configurations | 1337 | // set condition specific configurations |
1325 | - NextConditionSetup(AReply[AReply.Count-1]) | 1338 | + NextConditionSetup(AReply[AReply.Count-1]); |
1339 | + | ||
1340 | + // set fullscreen | ||
1341 | + FormMatrixGame.SetFullscreen; | ||
1326 | end | 1342 | end |
1327 | else | 1343 | else |
1328 | begin | 1344 | begin |
experiment_runner/units/game_experiment.pas
@@ -143,6 +143,7 @@ type | @@ -143,6 +143,7 @@ type | ||
143 | function AppendContingency(ACondition : integer;AContingency : TContingency) : integer;overload; | 143 | function AppendContingency(ACondition : integer;AContingency : TContingency) : integer;overload; |
144 | function AppendPlayer : integer;overload; | 144 | function AppendPlayer : integer;overload; |
145 | function AppendPlayer(APlayer : TPlayer) : integer; overload; | 145 | function AppendPlayer(APlayer : TPlayer) : integer; overload; |
146 | + function TargetIntelockingFired : Boolean; | ||
146 | property Condition[I : Integer]: TCondition read GetCondition write SetCondition; | 147 | property Condition[I : Integer]: TCondition read GetCondition write SetCondition; |
147 | property ConditionsCount : integer read GetConditionsCount; | 148 | property ConditionsCount : integer read GetConditionsCount; |
148 | property CurrentCondition : integer read FCurrentCondition write FCurrentCondition; | 149 | property CurrentCondition : integer read FCurrentCondition write FCurrentCondition; |
@@ -300,8 +301,19 @@ end; | @@ -300,8 +301,19 @@ end; | ||
300 | function TExperiment.GetPlayer(AID: UTF8string): TPlayer; | 301 | function TExperiment.GetPlayer(AID: UTF8string): TPlayer; |
301 | var | 302 | var |
302 | i : integer; | 303 | i : integer; |
303 | -begin | ||
304 | - //Result.ID := ''; | 304 | + P : TPlayer = ( |
305 | + ID : ''; | ||
306 | + Nicname : ''; | ||
307 | + Login: ''; | ||
308 | + Password: ''; | ||
309 | + Status : gpsWaiting; | ||
310 | + Data : nil; | ||
311 | + Choice : (Row:grNone; Color:gcNone); | ||
312 | + Points : (A:0; B:0); | ||
313 | + Turn : -1; | ||
314 | + ); | ||
315 | +begin | ||
316 | + Result := P; | ||
305 | if PlayersCount > 0 then | 317 | if PlayersCount > 0 then |
306 | for i:= 0 to PlayersCount -1 do | 318 | for i:= 0 to PlayersCount -1 do |
307 | if FPlayers[i].ID = AID then | 319 | if FPlayers[i].ID = AID then |
@@ -746,7 +758,7 @@ begin | @@ -746,7 +758,7 @@ begin | ||
746 | LRow += 'NA'+#9; | 758 | LRow += 'NA'+#9; |
747 | 759 | ||
748 | FRegData.SaveData(LRow); | 760 | FRegData.SaveData(LRow); |
749 | - FReportReader.Extend(LRow); | 761 | + FReportReader.Extend(LRow); // Write, i.e, extend last row |
750 | end; | 762 | end; |
751 | end; | 763 | end; |
752 | 764 | ||
@@ -886,6 +898,18 @@ begin | @@ -886,6 +898,18 @@ begin | ||
886 | FPlayers[Result] := APlayer; | 898 | FPlayers[Result] := APlayer; |
887 | end; | 899 | end; |
888 | 900 | ||
901 | +function TExperiment.TargetIntelockingFired: Boolean; | ||
902 | +var i : integer; | ||
903 | +begin | ||
904 | + Result := False; | ||
905 | + for i:= 0 to ContingenciesCount[CurrentCondition]-1 do | ||
906 | + if Condition[CurrentCondition].Contingencies[i].Meta then | ||
907 | + begin | ||
908 | + Result := Condition[CurrentCondition].Contingencies[i].Fired; | ||
909 | + Break; | ||
910 | + end; | ||
911 | +end; | ||
912 | + | ||
889 | function TExperiment.ShouldEndCondition: Boolean; | 913 | function TExperiment.ShouldEndCondition: Boolean; |
890 | var | 914 | var |
891 | LInterlocks: Real; | 915 | LInterlocks: Real; |
@@ -960,7 +984,7 @@ begin | @@ -960,7 +984,7 @@ begin | ||
960 | for i := 0 to ContingenciesCount[c]-1 do | 984 | for i := 0 to ContingenciesCount[c]-1 do |
961 | Contingency[c,i].Clean; | 985 | Contingency[c,i].Clean; |
962 | 986 | ||
963 | - if Assigned(Condition[c].Prompt) then | 987 | + if Assigned(Condition[c].Prompt) then // TODO: FIND WHY OPTIMIZATION 3 GENERATES BUG HERE |
964 | Condition[c].Prompt.Clean; | 988 | Condition[c].Prompt.Clean; |
965 | 989 | ||
966 | FRegData.CloseAndOpen; | 990 | FRegData.CloseAndOpen; |
experiment_runner/units/game_file_methods.pas
@@ -35,6 +35,7 @@ implementation | @@ -35,6 +35,7 @@ implementation | ||
35 | 35 | ||
36 | uses LCLIntf, game_resources, game_actors, game_actors_helpers, string_methods, regdata; | 36 | uses LCLIntf, game_resources, game_actors, game_actors_helpers, string_methods, regdata; |
37 | 37 | ||
38 | +// for dev only | ||
38 | function LoadExperimentFromResource(var AExperiment: TExperiment): Boolean; | 39 | function LoadExperimentFromResource(var AExperiment: TExperiment): Boolean; |
39 | var | 40 | var |
40 | C : TCondition; | 41 | C : TCondition; |
@@ -68,6 +69,7 @@ begin | @@ -68,6 +69,7 @@ begin | ||
68 | begin | 69 | begin |
69 | ExperimentName:='test_experiment'; | 70 | ExperimentName:='test_experiment'; |
70 | ExperimentAim:='This is a test experiment.'; | 71 | ExperimentAim:='This is a test experiment.'; |
72 | + ShowChat := True; | ||
71 | Researcher := VAL_RESEARCHER; | 73 | Researcher := VAL_RESEARCHER; |
72 | ResearcherCanPlay:=False; | 74 | ResearcherCanPlay:=False; |
73 | ResearcherCanChat:=True; | 75 | ResearcherCanChat:=True; |
@@ -169,6 +171,7 @@ var | @@ -169,6 +171,7 @@ var | ||
169 | AExperiment.ExperimentAim:=ReadString(SEC_EXPERIMENT, KEY_AIM,''); | 171 | AExperiment.ExperimentAim:=ReadString(SEC_EXPERIMENT, KEY_AIM,''); |
170 | 172 | ||
171 | // general configs | 173 | // general configs |
174 | + AExperiment.ShowChat := ReadBool(SEC_EXPERIMENT, KEY_CHAT_FOR_PLAYERS, False); | ||
172 | AExperiment.ResearcherCanPlay := ReadBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANPLAY,False); | 175 | AExperiment.ResearcherCanPlay := ReadBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANPLAY,False); |
173 | AExperiment.ResearcherCanChat := ReadBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANCHAT,False); | 176 | AExperiment.ResearcherCanChat := ReadBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANCHAT,False); |
174 | AExperiment.GenPlayersAsNeeded := ReadBool(SEC_EXPERIMENT, KEY_GEN_PLAYER_AS_NEEDED,False); | 177 | AExperiment.GenPlayersAsNeeded := ReadBool(SEC_EXPERIMENT, KEY_GEN_PLAYER_AS_NEEDED,False); |
@@ -177,7 +180,7 @@ var | @@ -177,7 +180,7 @@ var | ||
177 | AExperiment.MatrixType := GetMatrixTypeFromString(ReadString(SEC_EXPERIMENT,KEY_MATRIX_TYPE,DEF_MATRIX_TYPE)); | 180 | AExperiment.MatrixType := GetMatrixTypeFromString(ReadString(SEC_EXPERIMENT,KEY_MATRIX_TYPE,DEF_MATRIX_TYPE)); |
178 | 181 | ||
179 | // used when loading from paused experiments | 182 | // used when loading from paused experiments |
180 | - AExperiment.CurrentCondition := ReadInteger(SEC_EXPERIMENT, KEY_CURRENT_CONDITION,0)-1; //zero based | 183 | + AExperiment.CurrentCondition := ReadInteger(SEC_EXPERIMENT, KEY_CURRENT_CONDITION,0); //zero based |
181 | end; | 184 | end; |
182 | end; | 185 | end; |
183 | 186 | ||
@@ -256,7 +259,7 @@ var | @@ -256,7 +259,7 @@ var | ||
256 | Turn.Random:= ReadBool(LS, KEY_TURN_RANDOM,False); | 259 | Turn.Random:= ReadBool(LS, KEY_TURN_RANDOM,False); |
257 | Cycles.Count:= ReadInteger(LS, KEY_CYCLES_COUNT,0); | 260 | Cycles.Count:= ReadInteger(LS, KEY_CYCLES_COUNT,0); |
258 | Cycles.Value:= ReadInteger(LS, KEY_CYCLES_VALUE,10); | 261 | Cycles.Value:= ReadInteger(LS, KEY_CYCLES_VALUE,10); |
259 | - Cycles.Generation:= ReadInteger(LS, KEY_CYCLES_GEN,5); | 262 | + Cycles.Generation:= ReadInteger(LS, KEY_CYCLES_GEN,0); |
260 | EndCriterium.Style := GetEndCriteriaStyleFromString(ReadString(LS,KEY_ENDCRITERIA,DEF_END_CRITERIA_STYLE)); | 263 | EndCriterium.Style := GetEndCriteriaStyleFromString(ReadString(LS,KEY_ENDCRITERIA,DEF_END_CRITERIA_STYLE)); |
261 | EndCriterium.AbsoluteCycles:=ReadInteger(LS,KEY_ENDCRITERIA_CYCLES,20); | 264 | EndCriterium.AbsoluteCycles:=ReadInteger(LS,KEY_ENDCRITERIA_CYCLES,20); |
262 | s1 := ReadString(LS,KEY_ENDCRITERIA_PORCENTAGE,DEF_END_CRITERIA_PORCENTAGE); | 265 | s1 := ReadString(LS,KEY_ENDCRITERIA_PORCENTAGE,DEF_END_CRITERIA_PORCENTAGE); |
@@ -383,9 +386,23 @@ begin | @@ -383,9 +386,23 @@ begin | ||
383 | LIniFile:= TIniFile.Create(LWriter.FileName); | 386 | LIniFile:= TIniFile.Create(LWriter.FileName); |
384 | LWriter.Free; | 387 | LWriter.Free; |
385 | 388 | ||
386 | - LIniFile.WriteString(SEC_EXPERIMENT,KEY_RESEARCHER,AExperiment.Researcher); | ||
387 | - | 389 | + // write experiment |
388 | with LIniFile do | 390 | with LIniFile do |
391 | + begin | ||
392 | + WriteString(SEC_EXPERIMENT, KEY_RESEARCHER, AExperiment.Researcher); | ||
393 | + WriteString(SEC_EXPERIMENT, KEY_NAME, AExperiment.ExperimentName); | ||
394 | + WriteString(SEC_EXPERIMENT, KEY_AIM, AExperiment.ExperimentAim); | ||
395 | + WriteBool(SEC_EXPERIMENT, KEY_CHAT_FOR_PLAYERS, AExperiment.ShowChat); | ||
396 | + WriteBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANPLAY, AExperiment.ResearcherCanPlay); | ||
397 | + WriteBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANCHAT, AExperiment.ResearcherCanChat); | ||
398 | + WriteBool(SEC_EXPERIMENT, KEY_GEN_PLAYER_AS_NEEDED, AExperiment.GenPlayersAsNeeded); | ||
399 | + WriteBool(SEC_EXPERIMENT, KEY_CHAT_HISTORY_FOR_NEW_PLAYERS, AExperiment.SendChatHistoryForNewPlayers); | ||
400 | + WriteBool(SEC_EXPERIMENT, KEY_POINTS_TYPE, AExperiment.ABPoints); | ||
401 | + WriteString(SEC_EXPERIMENT,KEY_MATRIX_TYPE,GetMatrixTypeString(AExperiment.MatrixType)); | ||
402 | + WriteInteger(SEC_EXPERIMENT, KEY_CURRENT_CONDITION, AExperiment.CurrentCondition); | ||
403 | + end; | ||
404 | + | ||
405 | + with LIniFile do // write conditions | ||
389 | for i := 0 to AExperiment.ConditionsCount-1 do | 406 | for i := 0 to AExperiment.ConditionsCount-1 do |
390 | begin | 407 | begin |
391 | LC := SEC_CONDITION+IntToStr(i+1); | 408 | LC := SEC_CONDITION+IntToStr(i+1); |
@@ -415,7 +432,7 @@ begin | @@ -415,7 +432,7 @@ begin | ||
415 | 432 | ||
416 | MI := 0; | 433 | MI := 0; |
417 | CI := 0; | 434 | CI := 0; |
418 | - for j := 0 to High(Contingencies) do | 435 | + for j := 0 to High(Contingencies) do // write ocntingencies |
419 | begin | 436 | begin |
420 | if Contingencies[j].Meta then | 437 | if Contingencies[j].Meta then |
421 | begin | 438 | begin |
experiment_runner/units/game_resources.pas
@@ -28,6 +28,7 @@ resourcestring | @@ -28,6 +28,7 @@ resourcestring | ||
28 | KEY_RESEARCHER_CANCHAT = 'Pesquisador.BatePapo'; | 28 | KEY_RESEARCHER_CANCHAT = 'Pesquisador.BatePapo'; |
29 | KEY_RESEARCHER_CANPLAY = 'Pesquisador.PodeJogar'; | 29 | KEY_RESEARCHER_CANPLAY = 'Pesquisador.PodeJogar'; |
30 | KEY_GEN_PLAYER_AS_NEEDED = 'Jogadores.GerarAutomaticamente'; | 30 | KEY_GEN_PLAYER_AS_NEEDED = 'Jogadores.GerarAutomaticamente'; |
31 | + KEY_CHAT_FOR_PLAYERS = 'Jogadores.BatePapo'; | ||
31 | KEY_CHAT_HISTORY_FOR_NEW_PLAYERS = 'Jogadores.Novos.Enviar_Histórico_do_BatePapo'; | 32 | KEY_CHAT_HISTORY_FOR_NEW_PLAYERS = 'Jogadores.Novos.Enviar_Histórico_do_BatePapo'; |
32 | KEY_CURRENT_CONDITION = 'ComeçarNaCondição'; | 33 | KEY_CURRENT_CONDITION = 'ComeçarNaCondição'; |
33 | KEY_MATRIX_TYPE= 'TipoDaMatrix'; | 34 | KEY_MATRIX_TYPE= 'TipoDaMatrix'; |