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 | 14 | <EnableI18N LFM="False"/> |
| 15 | 15 | </i18n> |
| 16 | 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 | 22 | </VersionInfo> |
| 19 | 23 | <BuildModes Count="4"> |
| 20 | 24 | <Item1 Name="Linux 64 Debug" Default="True"/> |
| ... | ... | @@ -30,18 +34,10 @@ |
| 30 | 34 | <OtherUnitFiles Value="units;../dependencies/delphizmq"/> |
| 31 | 35 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> |
| 32 | 36 | </SearchPaths> |
| 33 | - <CodeGeneration> | |
| 34 | - <SmartLinkUnit Value="True"/> | |
| 35 | - <Optimizations> | |
| 36 | - <OptimizationLevel Value="3"/> | |
| 37 | - </Optimizations> | |
| 38 | - </CodeGeneration> | |
| 39 | 37 | <Linking> |
| 40 | 38 | <Debugging> |
| 41 | - <GenerateDebugInfo Value="False"/> | |
| 42 | - <StripSymbols Value="True"/> | |
| 39 | + <UseExternalDbgSyms Value="True"/> | |
| 43 | 40 | </Debugging> |
| 44 | - <LinkSmart Value="True"/> | |
| 45 | 41 | <Options> |
| 46 | 42 | <Win32> |
| 47 | 43 | <GraphicApplication Value="True"/> |
| ... | ... | @@ -86,18 +82,10 @@ |
| 86 | 82 | <OtherUnitFiles Value="units;../dependencies/delphizmq"/> |
| 87 | 83 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> |
| 88 | 84 | </SearchPaths> |
| 89 | - <CodeGeneration> | |
| 90 | - <SmartLinkUnit Value="True"/> | |
| 91 | - <Optimizations> | |
| 92 | - <OptimizationLevel Value="4"/> | |
| 93 | - </Optimizations> | |
| 94 | - </CodeGeneration> | |
| 95 | 85 | <Linking> |
| 96 | 86 | <Debugging> |
| 97 | - <GenerateDebugInfo Value="False"/> | |
| 98 | - <StripSymbols Value="True"/> | |
| 87 | + <UseExternalDbgSyms Value="True"/> | |
| 99 | 88 | </Debugging> |
| 100 | - <LinkSmart Value="True"/> | |
| 101 | 89 | <Options> |
| 102 | 90 | <Win32> |
| 103 | 91 | <GraphicApplication Value="True"/> | ... | ... |
experiment_runner/form_matrixgame.lfm
| ... | ... | @@ -7,7 +7,7 @@ object FormMatrixGame: TFormMatrixGame |
| 7 | 7 | VertScrollBar.Page = 542 |
| 8 | 8 | AutoScroll = True |
| 9 | 9 | Caption = 'Matrix' |
| 10 | - ClientHeight = 609 | |
| 10 | + ClientHeight = 616 | |
| 11 | 11 | ClientWidth = 1167 |
| 12 | 12 | Font.Name = 'Monospace' |
| 13 | 13 | OnActivate = FormActivate |
| ... | ... | @@ -16,24 +16,24 @@ object FormMatrixGame: TFormMatrixGame |
| 16 | 16 | AnchorSideLeft.Control = GBIndividualAB |
| 17 | 17 | AnchorSideTop.Control = GBIndividualAB |
| 18 | 18 | Left = 800 |
| 19 | - Height = 131 | |
| 19 | + Height = 122 | |
| 20 | 20 | Top = 8 |
| 21 | - Width = 162 | |
| 21 | + Width = 170 | |
| 22 | 22 | AutoSize = True |
| 23 | 23 | Caption = 'Pontuação Individual' |
| 24 | 24 | ChildSizing.LeftRightSpacing = 35 |
| 25 | 25 | ChildSizing.TopBottomSpacing = 45 |
| 26 | 26 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
| 27 | 27 | ChildSizing.ControlsPerLine = 1 |
| 28 | - ClientHeight = 108 | |
| 29 | - ClientWidth = 158 | |
| 28 | + ClientHeight = 105 | |
| 29 | + ClientWidth = 166 | |
| 30 | 30 | TabOrder = 7 |
| 31 | 31 | Visible = False |
| 32 | 32 | object LabelIndCount: TLabel |
| 33 | 33 | Left = 35 |
| 34 | - Height = 18 | |
| 34 | + Height = 15 | |
| 35 | 35 | Top = 45 |
| 36 | - Width = 88 | |
| 36 | + Width = 96 | |
| 37 | 37 | Align = alClient |
| 38 | 38 | Alignment = taCenter |
| 39 | 39 | AutoSize = False |
| ... | ... | @@ -71,9 +71,9 @@ object FormMatrixGame: TFormMatrixGame |
| 71 | 71 | end |
| 72 | 72 | object GBIndividualAB: TGroupBox |
| 73 | 73 | Left = 800 |
| 74 | - Height = 135 | |
| 74 | + Height = 122 | |
| 75 | 75 | Top = 8 |
| 76 | - Width = 162 | |
| 76 | + Width = 170 | |
| 77 | 77 | AutoSize = True |
| 78 | 78 | Caption = 'Pontuação Individual' |
| 79 | 79 | ChildSizing.LeftRightSpacing = 10 |
| ... | ... | @@ -83,14 +83,14 @@ object FormMatrixGame: TFormMatrixGame |
| 83 | 83 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize |
| 84 | 84 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
| 85 | 85 | ChildSizing.ControlsPerLine = 2 |
| 86 | - ClientHeight = 112 | |
| 87 | - ClientWidth = 158 | |
| 86 | + ClientHeight = 105 | |
| 87 | + ClientWidth = 166 | |
| 88 | 88 | TabOrder = 1 |
| 89 | 89 | object LabelIndA: TLabel |
| 90 | 90 | Left = 10 |
| 91 | - Height = 19 | |
| 91 | + Height = 15 | |
| 92 | 92 | Top = 30 |
| 93 | - Width = 59 | |
| 93 | + Width = 63 | |
| 94 | 94 | Alignment = taCenter |
| 95 | 95 | AutoSize = False |
| 96 | 96 | Caption = 'A' |
| ... | ... | @@ -103,10 +103,10 @@ object FormMatrixGame: TFormMatrixGame |
| 103 | 103 | Transparent = False |
| 104 | 104 | end |
| 105 | 105 | object LabelIndB: TLabel |
| 106 | - Left = 89 | |
| 107 | - Height = 19 | |
| 106 | + Left = 93 | |
| 107 | + Height = 15 | |
| 108 | 108 | Top = 30 |
| 109 | - Width = 59 | |
| 109 | + Width = 63 | |
| 110 | 110 | Alignment = taCenter |
| 111 | 111 | AutoSize = False |
| 112 | 112 | Caption = 'B' |
| ... | ... | @@ -120,9 +120,9 @@ object FormMatrixGame: TFormMatrixGame |
| 120 | 120 | end |
| 121 | 121 | object LabelIndACount: TLabel |
| 122 | 122 | Left = 10 |
| 123 | - Height = 18 | |
| 124 | - Top = 64 | |
| 125 | - Width = 59 | |
| 123 | + Height = 15 | |
| 124 | + Top = 60 | |
| 125 | + Width = 63 | |
| 126 | 126 | Alignment = taCenter |
| 127 | 127 | AutoSize = False |
| 128 | 128 | Caption = '0' |
| ... | ... | @@ -131,10 +131,10 @@ object FormMatrixGame: TFormMatrixGame |
| 131 | 131 | Transparent = False |
| 132 | 132 | end |
| 133 | 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 | 138 | Alignment = taCenter |
| 139 | 139 | AutoSize = False |
| 140 | 140 | Caption = '0' |
| ... | ... | @@ -147,10 +147,10 @@ object FormMatrixGame: TFormMatrixGame |
| 147 | 147 | AnchorSideLeft.Control = GBIndividualAB |
| 148 | 148 | AnchorSideLeft.Side = asrBottom |
| 149 | 149 | AnchorSideTop.Control = GBIndividualAB |
| 150 | - Left = 972 | |
| 151 | - Height = 131 | |
| 150 | + Left = 980 | |
| 151 | + Height = 122 | |
| 152 | 152 | Top = 8 |
| 153 | - Width = 171 | |
| 153 | + Width = 170 | |
| 154 | 154 | AutoSize = True |
| 155 | 155 | BorderSpacing.Left = 10 |
| 156 | 156 | Caption = ' Pontuação do Grupo ' |
| ... | ... | @@ -158,14 +158,14 @@ object FormMatrixGame: TFormMatrixGame |
| 158 | 158 | ChildSizing.TopBottomSpacing = 45 |
| 159 | 159 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
| 160 | 160 | ChildSizing.ControlsPerLine = 1 |
| 161 | - ClientHeight = 108 | |
| 162 | - ClientWidth = 167 | |
| 161 | + ClientHeight = 105 | |
| 162 | + ClientWidth = 166 | |
| 163 | 163 | TabOrder = 2 |
| 164 | 164 | object LabelGroupCount: TLabel |
| 165 | 165 | Left = 35 |
| 166 | - Height = 18 | |
| 166 | + Height = 15 | |
| 167 | 167 | Top = 45 |
| 168 | - Width = 97 | |
| 168 | + Width = 96 | |
| 169 | 169 | Align = alClient |
| 170 | 170 | Alignment = taCenter |
| 171 | 171 | AutoSize = False |
| ... | ... | @@ -183,9 +183,9 @@ object FormMatrixGame: TFormMatrixGame |
| 183 | 183 | AnchorSideBottom.Control = Owner |
| 184 | 184 | AnchorSideBottom.Side = asrBottom |
| 185 | 185 | Left = 0 |
| 186 | - Height = 22 | |
| 187 | - Top = 587 | |
| 188 | - Width = 1625 | |
| 186 | + Height = 17 | |
| 187 | + Top = 599 | |
| 188 | + Width = 1632 | |
| 189 | 189 | Anchors = [akLeft, akRight, akBottom] |
| 190 | 190 | AutoSize = True |
| 191 | 191 | Caption = 'Escolhas na última jogada' |
| ... | ... | @@ -200,21 +200,21 @@ object FormMatrixGame: TFormMatrixGame |
| 200 | 200 | AnchorSideLeft.Control = GBGrupo |
| 201 | 201 | AnchorSideLeft.Side = asrBottom |
| 202 | 202 | AnchorSideTop.Control = GBGrupo |
| 203 | - Left = 1153 | |
| 203 | + Left = 1160 | |
| 204 | 204 | Height = 486 |
| 205 | 205 | Top = 8 |
| 206 | 206 | Width = 472 |
| 207 | 207 | BorderSpacing.Left = 10 |
| 208 | 208 | Caption = 'Pesquisador' |
| 209 | - ClientHeight = 463 | |
| 209 | + ClientHeight = 469 | |
| 210 | 210 | ClientWidth = 468 |
| 211 | 211 | TabOrder = 4 |
| 212 | 212 | Visible = False |
| 213 | 213 | object GBExperiment: TGroupBox |
| 214 | 214 | Left = 16 |
| 215 | - Height = 221 | |
| 215 | + Height = 197 | |
| 216 | 216 | Top = 60 |
| 217 | - Width = 220 | |
| 217 | + Width = 228 | |
| 218 | 218 | AutoSize = True |
| 219 | 219 | Caption = 'Experimento' |
| 220 | 220 | ChildSizing.LeftRightSpacing = 10 |
| ... | ... | @@ -224,102 +224,102 @@ object FormMatrixGame: TFormMatrixGame |
| 224 | 224 | ChildSizing.EnlargeHorizontal = crsHomogenousChildResize |
| 225 | 225 | ChildSizing.Layout = cclLeftToRightThenTopToBottom |
| 226 | 226 | ChildSizing.ControlsPerLine = 2 |
| 227 | - ClientHeight = 198 | |
| 228 | - ClientWidth = 216 | |
| 227 | + ClientHeight = 180 | |
| 228 | + ClientWidth = 224 | |
| 229 | 229 | TabOrder = 0 |
| 230 | 230 | object LabelExpCond: TLabel |
| 231 | 231 | Left = 10 |
| 232 | - Height = 18 | |
| 232 | + Height = 15 | |
| 233 | 233 | Top = 20 |
| 234 | - Width = 154 | |
| 234 | + Width = 168 | |
| 235 | 235 | Caption = 'Condição:' |
| 236 | 236 | ParentColor = False |
| 237 | 237 | end |
| 238 | 238 | object LabelExpCountCondition: TLabel |
| 239 | - Left = 184 | |
| 240 | - Height = 18 | |
| 239 | + Left = 198 | |
| 240 | + Height = 15 | |
| 241 | 241 | Top = 20 |
| 242 | - Width = 22 | |
| 242 | + Width = 16 | |
| 243 | 243 | Caption = 'NA' |
| 244 | 244 | ParentColor = False |
| 245 | 245 | end |
| 246 | 246 | object LabelExpGen: TLabel |
| 247 | 247 | Left = 10 |
| 248 | - Height = 18 | |
| 249 | - Top = 48 | |
| 250 | - Width = 154 | |
| 248 | + Height = 15 | |
| 249 | + Top = 45 | |
| 250 | + Width = 168 | |
| 251 | 251 | Caption = 'Geração:' |
| 252 | 252 | ParentColor = False |
| 253 | 253 | end |
| 254 | 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 | 259 | Caption = 'NA' |
| 260 | 260 | ParentColor = False |
| 261 | 261 | end |
| 262 | 262 | object LabelExpCycle: TLabel |
| 263 | 263 | Left = 10 |
| 264 | - Height = 18 | |
| 265 | - Top = 76 | |
| 266 | - Width = 154 | |
| 264 | + Height = 15 | |
| 265 | + Top = 70 | |
| 266 | + Width = 168 | |
| 267 | 267 | Caption = 'Ciclo:' |
| 268 | 268 | ParentColor = False |
| 269 | 269 | end |
| 270 | 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 | 275 | Caption = 'NA' |
| 276 | 276 | ParentColor = False |
| 277 | 277 | end |
| 278 | 278 | object LabelExpTurn: TLabel |
| 279 | 279 | Left = 10 |
| 280 | - Height = 18 | |
| 281 | - Top = 104 | |
| 282 | - Width = 154 | |
| 280 | + Height = 15 | |
| 281 | + Top = 95 | |
| 282 | + Width = 168 | |
| 283 | 283 | Caption = 'Turno:' |
| 284 | 284 | ParentColor = False |
| 285 | 285 | end |
| 286 | 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 | 291 | Caption = 'NA' |
| 292 | 292 | ParentColor = False |
| 293 | 293 | end |
| 294 | 294 | object LabelExpInterlocks: TLabel |
| 295 | 295 | Left = 10 |
| 296 | - Height = 18 | |
| 297 | - Top = 132 | |
| 298 | - Width = 154 | |
| 296 | + Height = 15 | |
| 297 | + Top = 120 | |
| 298 | + Width = 168 | |
| 299 | 299 | Caption = 'Entrelaçamentos:' |
| 300 | 300 | ParentColor = False |
| 301 | 301 | end |
| 302 | 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 | 307 | Caption = 'NA' |
| 308 | 308 | ParentColor = False |
| 309 | 309 | end |
| 310 | 310 | object LabelExpTInterlocks: TLabel |
| 311 | 311 | Left = 10 |
| 312 | - Height = 18 | |
| 313 | - Top = 160 | |
| 314 | - Width = 154 | |
| 312 | + Height = 15 | |
| 313 | + Top = 145 | |
| 314 | + Width = 168 | |
| 315 | 315 | Caption = 'Entrelaçamentos Alvo:' |
| 316 | 316 | ParentColor = False |
| 317 | 317 | end |
| 318 | 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 | 323 | Caption = 'NA' |
| 324 | 324 | ParentColor = False |
| 325 | 325 | end |
| ... | ... | @@ -372,19 +372,19 @@ object FormMatrixGame: TFormMatrixGame |
| 372 | 372 | AnchorSideRight.Side = asrBottom |
| 373 | 373 | Left = 800 |
| 374 | 374 | Height = 354 |
| 375 | - Top = 153 | |
| 376 | - Width = 343 | |
| 375 | + Top = 140 | |
| 376 | + Width = 350 | |
| 377 | 377 | Anchors = [akTop, akLeft, akRight] |
| 378 | 378 | BorderSpacing.Top = 10 |
| 379 | 379 | ClientHeight = 354 |
| 380 | - ClientWidth = 343 | |
| 380 | + ClientWidth = 350 | |
| 381 | 381 | TabOrder = 6 |
| 382 | 382 | object ChatMemoRecv: TMemo |
| 383 | 383 | AnchorSideBottom.Control = ChatSplitter |
| 384 | 384 | Left = 6 |
| 385 | 385 | Height = 221 |
| 386 | 386 | Top = 6 |
| 387 | - Width = 331 | |
| 387 | + Width = 338 | |
| 388 | 388 | Align = alTop |
| 389 | 389 | Anchors = [akTop, akLeft, akRight, akBottom] |
| 390 | 390 | BorderSpacing.Left = 5 |
| ... | ... | @@ -405,7 +405,7 @@ object FormMatrixGame: TFormMatrixGame |
| 405 | 405 | Left = 0 |
| 406 | 406 | Height = 5 |
| 407 | 407 | Top = 232 |
| 408 | - Width = 341 | |
| 408 | + Width = 348 | |
| 409 | 409 | Align = alNone |
| 410 | 410 | Anchors = [akLeft, akRight] |
| 411 | 411 | ResizeAnchor = akTop |
| ... | ... | @@ -416,7 +416,7 @@ object FormMatrixGame: TFormMatrixGame |
| 416 | 416 | Left = 6 |
| 417 | 417 | Height = 106 |
| 418 | 418 | Top = 242 |
| 419 | - Width = 331 | |
| 419 | + Width = 338 | |
| 420 | 420 | Align = alBottom |
| 421 | 421 | Anchors = [akTop, akLeft, akRight, akBottom] |
| 422 | 422 | BorderSpacing.Around = 5 |
| ... | ... | @@ -439,7 +439,7 @@ object FormMatrixGame: TFormMatrixGame |
| 439 | 439 | top = 360 |
| 440 | 440 | end |
| 441 | 441 | object PopupNotifier: TPopupNotifier |
| 442 | - Color = clTeal | |
| 442 | + Color = clDefault | |
| 443 | 443 | Icon.Data = { |
| 444 | 444 | 07544269746D617000000000 |
| 445 | 445 | } | ... | ... |
experiment_runner/form_matrixgame.pas
| ... | ... | @@ -80,6 +80,7 @@ type |
| 80 | 80 | public |
| 81 | 81 | procedure SetID(S : string); |
| 82 | 82 | procedure SetGameActor(AValue: TGameActor); |
| 83 | + procedure SetFullscreen; | |
| 83 | 84 | property ID : string read FID; |
| 84 | 85 | end; |
| 85 | 86 | |
| ... | ... | @@ -248,6 +249,17 @@ begin |
| 248 | 249 | end; |
| 249 | 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 | 263 | procedure TFormMatrixGame.SetID(S: string); |
| 252 | 264 | begin |
| 253 | 265 | FID := S; |
| ... | ... | @@ -256,6 +268,7 @@ end; |
| 256 | 268 | |
| 257 | 269 | procedure TFormMatrixGame.FormActivate(Sender: TObject); |
| 258 | 270 | begin |
| 271 | + PopupNotifier.Icon.Assign(Application.Icon); | |
| 259 | 272 | if not Assigned(FGameControl) then |
| 260 | 273 | begin |
| 261 | 274 | FormChooseActor := TFormChooseActor.Create(Self); |
| ... | ... | @@ -319,15 +332,15 @@ begin |
| 319 | 332 | ButtonExpStart.Caption := CAPTION_START; |
| 320 | 333 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; |
| 321 | 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 | 337 | end; |
| 325 | 338 | |
| 326 | 339 | procedure TFormMatrixGame.ButtonExpPauseClick(Sender: TObject); |
| 327 | 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 | 344 | //FGameControl.Pause; |
| 332 | 345 | end; |
| 333 | 346 | |
| ... | ... | @@ -344,7 +357,7 @@ begin |
| 344 | 357 | ButtonExpStart.Caption := CAPTION_RUNNING; |
| 345 | 358 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; |
| 346 | 359 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; |
| 347 | - | |
| 360 | + ChatPanel.Visible := FGameControl.Experiment.ShowChat; | |
| 348 | 361 | end; |
| 349 | 362 | |
| 350 | 363 | if ButtonExpStart.Caption = CAPTION_RESUME then |
| ... | ... | @@ -353,7 +366,7 @@ begin |
| 353 | 366 | ButtonExpStart.Caption := CAPTION_RUNNING; |
| 354 | 367 | ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; |
| 355 | 368 | ButtonExpPause.Enabled := not ButtonExpStart.Enabled; |
| 356 | - //FGameControl.Resume; | |
| 369 | + FGameControl.Resume; | |
| 357 | 370 | end; |
| 358 | 371 | end; |
| 359 | 372 | ... | ... |
experiment_runner/lib/x86_64-linux/experiment_runner.compiled
| 1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | 2 | <CONFIG> |
| 3 | 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 | 5 | </CONFIG> | ... | ... |
experiment_runner/units/game_actors.pas
| ... | ... | @@ -442,7 +442,7 @@ end; |
| 442 | 442 | |
| 443 | 443 | procedure TPrompt.ClearResponses; |
| 444 | 444 | begin |
| 445 | - FResponses := nil; | |
| 445 | + SetLength(FResponses,0); | |
| 446 | 446 | end; |
| 447 | 447 | |
| 448 | 448 | constructor TPrompt.Create(AOwner: TComponent; APStyle: TPromptStyle; |
| ... | ... | @@ -473,7 +473,7 @@ end; |
| 473 | 473 | procedure TPrompt.Clean; |
| 474 | 474 | begin |
| 475 | 475 | //inherited Clean; |
| 476 | - FResponses := nil; | |
| 476 | + SetLength(FResponses,0); | |
| 477 | 477 | end; |
| 478 | 478 | |
| 479 | 479 | function TPrompt.AsString: TStringList; | ... | ... |
experiment_runner/units/game_control.pas
| ... | ... | @@ -53,7 +53,7 @@ type |
| 53 | 53 | private |
| 54 | 54 | function AskQuestion(AQuestion:string):UTF8string; |
| 55 | 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 | 57 | procedure DisableConfirmationButton; |
| 58 | 58 | procedure CleanMatrix(AEnabled : Boolean); |
| 59 | 59 | procedure NextConditionSetup(S : string); |
| ... | ... | @@ -137,6 +137,7 @@ const |
| 137 | 137 | function GetRowColor(ARow: integer; ARowBase:integer): TColor; |
| 138 | 138 | var LRow : integer; |
| 139 | 139 | begin |
| 140 | + Result := 0; | |
| 140 | 141 | if ARowBase = 1 then |
| 141 | 142 | LRow := aRow -1 |
| 142 | 143 | else LRow := aRow; |
| ... | ... | @@ -179,7 +180,7 @@ end; |
| 179 | 180 | |
| 180 | 181 | function TGameControl.ShouldAskQuestion: Boolean; |
| 181 | 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 | 184 | end; |
| 184 | 185 | |
| 185 | 186 | procedure TGameControl.EndExperiment(Sender: TObject); |
| ... | ... | @@ -298,9 +299,8 @@ end; |
| 298 | 299 | |
| 299 | 300 | procedure TGameControl.Stop; |
| 300 | 301 | begin |
| 301 | - // Pause | |
| 302 | - | |
| 303 | 302 | // cleaning |
| 303 | + FExperiment.Clean; | |
| 304 | 304 | end; |
| 305 | 305 | |
| 306 | 306 | function TGameControl.GetPlayerBox(AID: UTF8string): TPlayerBox; |
| ... | ... | @@ -317,6 +317,7 @@ end; |
| 317 | 317 | |
| 318 | 318 | function TGameControl.GetActorNicname(AID: UTF8string): UTF8string; |
| 319 | 319 | begin |
| 320 | + Result := ''; | |
| 320 | 321 | case FActor of |
| 321 | 322 | gaPlayer: begin |
| 322 | 323 | Result := 'UNKNOWN'; |
| ... | ... | @@ -501,8 +502,8 @@ end; |
| 501 | 502 | procedure TGameControl.ShowPopUp(AText: string; AInterval: integer); |
| 502 | 503 | var PopUpPos : TPoint; |
| 503 | 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 | 507 | PopUpPos := FormMatrixGame.ClientToScreen(PopUpPos); |
| 507 | 508 | FormMatrixGame.PopupNotifier.Title:=''; |
| 508 | 509 | FormMatrixGame.PopupNotifier.Text:=AText; |
| ... | ... | @@ -609,7 +610,7 @@ begin |
| 609 | 610 | for P in FExperiment.Players do |
| 610 | 611 | begin |
| 611 | 612 | PB := GetPlayerBox(P.ID); |
| 612 | - A += StrToInt(PB.LabelPointsCount.Caption) + B; | |
| 613 | + A += StrToInt(PB.LabelPointsCount.Caption); | |
| 613 | 614 | PB.LabelPointsCount.Caption := IntToStr(A); |
| 614 | 615 | end; |
| 615 | 616 | end; |
| ... | ... | @@ -620,6 +621,9 @@ procedure TGameControl.EnablePlayerMatrix(AID:UTF8string; ATurn:integer; AEnable |
| 620 | 621 | begin |
| 621 | 622 | if FExperiment.PlayerFromID[AID].Turn = ATurn then |
| 622 | 623 | CleanMatrix(AEnabled); |
| 624 | + | |
| 625 | + if AEnabled then | |
| 626 | + ShowPopUp('É sua vez! Clique sobre uma linha da matrix e confirme sua escolha.'); | |
| 623 | 627 | end; |
| 624 | 628 | |
| 625 | 629 | constructor TGameControl.Create(AOwner: TComponent;AppPath:string); |
| ... | ... | @@ -681,6 +685,7 @@ var |
| 681 | 685 | M[i] := A[i]; |
| 682 | 686 | end; |
| 683 | 687 | begin |
| 688 | + SetLength(M,0); | |
| 684 | 689 | case ARequest of |
| 685 | 690 | K_LOGIN :SetM([ |
| 686 | 691 | FZMQActor.ID |
| ... | ... | @@ -854,10 +859,7 @@ procedure TGameControl.ReceiveMessage(AMessage: TStringList); |
| 854 | 859 | case FActor of |
| 855 | 860 | gaPlayer: |
| 856 | 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 | 863 | else |
| 862 | 864 | ShowPopUp('Começou! Aguarde sua vez.'); |
| 863 | 865 | |
| ... | ... | @@ -1055,7 +1057,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1055 | 1057 | |
| 1056 | 1058 | // check if we already know this player |
| 1057 | 1059 | i := FExperiment.PlayerIndexFromID[P.ID]; |
| 1058 | - if i > -1then | |
| 1060 | + if i > -1 then | |
| 1059 | 1061 | begin |
| 1060 | 1062 | // then load p data |
| 1061 | 1063 | P := FExperiment.Player[i] |
| ... | ... | @@ -1105,11 +1107,16 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1105 | 1107 | // appen matrix type |
| 1106 | 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 | 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 | 1121 | // append global configs. |
| 1115 | 1122 | ARequest.Append(BoolToStr(FExperiment.ABPoints)); // COUNT-2 |
| ... | ... | @@ -1145,6 +1152,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1145 | 1152 | LEndCycle : Boolean; |
| 1146 | 1153 | LEndGeneration: string; |
| 1147 | 1154 | begin |
| 1155 | + LConsequences := ''; | |
| 1148 | 1156 | {$IFDEF DEBUG} |
| 1149 | 1157 | WriteLn('Count:',FExperiment.Condition[FExperiment.CurrentCondition].Turn.Count, '<', FExperiment.Condition[FExperiment.CurrentCondition].Turn.Value); |
| 1150 | 1158 | {$ENDIF} |
| ... | ... | @@ -1185,7 +1193,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1185 | 1193 | begin |
| 1186 | 1194 | ARequest.Append(#32); // 8 |
| 1187 | 1195 | if Assigned(FExperiment.Condition[FExperiment.CurrentCondition].Prompt) then |
| 1188 | - FExperiment.WriteReportRowPrompt; | |
| 1196 | + FExperiment.WriteReportRowPrompt; //TODO: FIND WHY OPTIMIZATION 3 GENERATES BUG HERE | |
| 1189 | 1197 | FExperiment.Clean; |
| 1190 | 1198 | end; |
| 1191 | 1199 | |
| ... | ... | @@ -1223,7 +1231,6 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1223 | 1231 | // return to experiment and present the prompt consequence, if any |
| 1224 | 1232 | if FExperiment.Condition[FExperiment.CurrentCondition].Prompt.ResponsesCount = FExperiment.PlayersCount then |
| 1225 | 1233 | begin |
| 1226 | - | |
| 1227 | 1234 | // generate messages |
| 1228 | 1235 | LPromptConsequences := FExperiment.Condition[FExperiment.CurrentCondition].Prompt.AsString; |
| 1229 | 1236 | SetLength(M, 3+LPromptConsequences.Count); |
| ... | ... | @@ -1243,7 +1250,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1243 | 1250 | end |
| 1244 | 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 | 1254 | FZMQActor.SendMessage(M); |
| 1248 | 1255 | FExperiment.WriteReportRowPrompt; |
| 1249 | 1256 | FExperiment.Clean; |
| ... | ... | @@ -1263,7 +1270,7 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); |
| 1263 | 1270 | P.Nicname := InputBox |
| 1264 | 1271 | ( |
| 1265 | 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 | 1274 | GenResourceName(-1) |
| 1268 | 1275 | ); |
| 1269 | 1276 | |
| ... | ... | @@ -1312,9 +1319,15 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); |
| 1312 | 1319 | // set matrix type/ stringgrid |
| 1313 | 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 | 1332 | // set global configs |
| 1320 | 1333 | FExperiment.ABPoints := StrToBool(AReply[AReply.Count-2]); |
| ... | ... | @@ -1322,7 +1335,10 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); |
| 1322 | 1335 | FormMatrixGame.GBIndividual.Visible:= not FormMatrixGame.GBIndividualAB.Visible; |
| 1323 | 1336 | |
| 1324 | 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 | 1342 | end |
| 1327 | 1343 | else |
| 1328 | 1344 | begin | ... | ... |
experiment_runner/units/game_experiment.pas
| ... | ... | @@ -143,6 +143,7 @@ type |
| 143 | 143 | function AppendContingency(ACondition : integer;AContingency : TContingency) : integer;overload; |
| 144 | 144 | function AppendPlayer : integer;overload; |
| 145 | 145 | function AppendPlayer(APlayer : TPlayer) : integer; overload; |
| 146 | + function TargetIntelockingFired : Boolean; | |
| 146 | 147 | property Condition[I : Integer]: TCondition read GetCondition write SetCondition; |
| 147 | 148 | property ConditionsCount : integer read GetConditionsCount; |
| 148 | 149 | property CurrentCondition : integer read FCurrentCondition write FCurrentCondition; |
| ... | ... | @@ -300,8 +301,19 @@ end; |
| 300 | 301 | function TExperiment.GetPlayer(AID: UTF8string): TPlayer; |
| 301 | 302 | var |
| 302 | 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 | 317 | if PlayersCount > 0 then |
| 306 | 318 | for i:= 0 to PlayersCount -1 do |
| 307 | 319 | if FPlayers[i].ID = AID then |
| ... | ... | @@ -746,7 +758,7 @@ begin |
| 746 | 758 | LRow += 'NA'+#9; |
| 747 | 759 | |
| 748 | 760 | FRegData.SaveData(LRow); |
| 749 | - FReportReader.Extend(LRow); | |
| 761 | + FReportReader.Extend(LRow); // Write, i.e, extend last row | |
| 750 | 762 | end; |
| 751 | 763 | end; |
| 752 | 764 | |
| ... | ... | @@ -886,6 +898,18 @@ begin |
| 886 | 898 | FPlayers[Result] := APlayer; |
| 887 | 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 | 913 | function TExperiment.ShouldEndCondition: Boolean; |
| 890 | 914 | var |
| 891 | 915 | LInterlocks: Real; |
| ... | ... | @@ -960,7 +984,7 @@ begin |
| 960 | 984 | for i := 0 to ContingenciesCount[c]-1 do |
| 961 | 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 | 988 | Condition[c].Prompt.Clean; |
| 965 | 989 | |
| 966 | 990 | FRegData.CloseAndOpen; | ... | ... |
experiment_runner/units/game_file_methods.pas
| ... | ... | @@ -35,6 +35,7 @@ implementation |
| 35 | 35 | |
| 36 | 36 | uses LCLIntf, game_resources, game_actors, game_actors_helpers, string_methods, regdata; |
| 37 | 37 | |
| 38 | +// for dev only | |
| 38 | 39 | function LoadExperimentFromResource(var AExperiment: TExperiment): Boolean; |
| 39 | 40 | var |
| 40 | 41 | C : TCondition; |
| ... | ... | @@ -68,6 +69,7 @@ begin |
| 68 | 69 | begin |
| 69 | 70 | ExperimentName:='test_experiment'; |
| 70 | 71 | ExperimentAim:='This is a test experiment.'; |
| 72 | + ShowChat := True; | |
| 71 | 73 | Researcher := VAL_RESEARCHER; |
| 72 | 74 | ResearcherCanPlay:=False; |
| 73 | 75 | ResearcherCanChat:=True; |
| ... | ... | @@ -169,6 +171,7 @@ var |
| 169 | 171 | AExperiment.ExperimentAim:=ReadString(SEC_EXPERIMENT, KEY_AIM,''); |
| 170 | 172 | |
| 171 | 173 | // general configs |
| 174 | + AExperiment.ShowChat := ReadBool(SEC_EXPERIMENT, KEY_CHAT_FOR_PLAYERS, False); | |
| 172 | 175 | AExperiment.ResearcherCanPlay := ReadBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANPLAY,False); |
| 173 | 176 | AExperiment.ResearcherCanChat := ReadBool(SEC_EXPERIMENT, KEY_RESEARCHER_CANCHAT,False); |
| 174 | 177 | AExperiment.GenPlayersAsNeeded := ReadBool(SEC_EXPERIMENT, KEY_GEN_PLAYER_AS_NEEDED,False); |
| ... | ... | @@ -177,7 +180,7 @@ var |
| 177 | 180 | AExperiment.MatrixType := GetMatrixTypeFromString(ReadString(SEC_EXPERIMENT,KEY_MATRIX_TYPE,DEF_MATRIX_TYPE)); |
| 178 | 181 | |
| 179 | 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 | 184 | end; |
| 182 | 185 | end; |
| 183 | 186 | |
| ... | ... | @@ -256,7 +259,7 @@ var |
| 256 | 259 | Turn.Random:= ReadBool(LS, KEY_TURN_RANDOM,False); |
| 257 | 260 | Cycles.Count:= ReadInteger(LS, KEY_CYCLES_COUNT,0); |
| 258 | 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 | 263 | EndCriterium.Style := GetEndCriteriaStyleFromString(ReadString(LS,KEY_ENDCRITERIA,DEF_END_CRITERIA_STYLE)); |
| 261 | 264 | EndCriterium.AbsoluteCycles:=ReadInteger(LS,KEY_ENDCRITERIA_CYCLES,20); |
| 262 | 265 | s1 := ReadString(LS,KEY_ENDCRITERIA_PORCENTAGE,DEF_END_CRITERIA_PORCENTAGE); |
| ... | ... | @@ -383,9 +386,23 @@ begin |
| 383 | 386 | LIniFile:= TIniFile.Create(LWriter.FileName); |
| 384 | 387 | LWriter.Free; |
| 385 | 388 | |
| 386 | - LIniFile.WriteString(SEC_EXPERIMENT,KEY_RESEARCHER,AExperiment.Researcher); | |
| 387 | - | |
| 389 | + // write experiment | |
| 388 | 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 | 406 | for i := 0 to AExperiment.ConditionsCount-1 do |
| 390 | 407 | begin |
| 391 | 408 | LC := SEC_CONDITION+IntToStr(i+1); |
| ... | ... | @@ -415,7 +432,7 @@ begin |
| 415 | 432 | |
| 416 | 433 | MI := 0; |
| 417 | 434 | CI := 0; |
| 418 | - for j := 0 to High(Contingencies) do | |
| 435 | + for j := 0 to High(Contingencies) do // write ocntingencies | |
| 419 | 436 | begin |
| 420 | 437 | if Contingencies[j].Meta then |
| 421 | 438 | begin | ... | ... |
experiment_runner/units/game_resources.pas
| ... | ... | @@ -28,6 +28,7 @@ resourcestring |
| 28 | 28 | KEY_RESEARCHER_CANCHAT = 'Pesquisador.BatePapo'; |
| 29 | 29 | KEY_RESEARCHER_CANPLAY = 'Pesquisador.PodeJogar'; |
| 30 | 30 | KEY_GEN_PLAYER_AS_NEEDED = 'Jogadores.GerarAutomaticamente'; |
| 31 | + KEY_CHAT_FOR_PLAYERS = 'Jogadores.BatePapo'; | |
| 31 | 32 | KEY_CHAT_HISTORY_FOR_NEW_PLAYERS = 'Jogadores.Novos.Enviar_Histórico_do_BatePapo'; |
| 32 | 33 | KEY_CURRENT_CONDITION = 'ComeçarNaCondição'; |
| 33 | 34 | KEY_MATRIX_TYPE= 'TipoDaMatrix'; | ... | ... |