diff --git a/experiment_runner/form_matrixgame.pas b/experiment_runner/form_matrixgame.pas index 014c7c7..d0c8fbf 100644 --- a/experiment_runner/form_matrixgame.pas +++ b/experiment_runner/form_matrixgame.pas @@ -339,6 +339,7 @@ begin begin if not FGameControl.Experiment.LoadFromFile(OpenDialog.FileName) then Exit; + FGameControl.SetMatrix; ButtonExpStart.Enabled := False; ButtonExpStart.Caption := CAPTION_RUNNING; ButtonExpCancel.Enabled := not ButtonExpStart.Enabled; diff --git a/experiment_runner/units/game_control.pas b/experiment_runner/units/game_control.pas index 5e86920..e92d45d 100644 --- a/experiment_runner/units/game_control.pas +++ b/experiment_runner/units/game_control.pas @@ -1100,8 +1100,10 @@ procedure TGameControl.ReceiveRequest(var ARequest: TStringList); if FExperiment.Player[i].ID <> P.ID then begin TS := FExperiment.PlayerAsString[FEXperiment.Player[i]]; - ARequest.Append(TS); // FROM 3 to COUNT-4 + ARequest.Append(TS); // FROM 3 to COUNT-5 end; + // appen matrix type + ARequest.Append(FExperiment.MatrixTypeAsString); // COUNT-4 // append chat data if allowed if FExperiment.SendChatHistoryForNewPlayers then @@ -1300,13 +1302,16 @@ procedure TGameControl.ReceiveReply(AReply: TStringList); begin if Self.ID = AReply[0] then begin - for i:= 3 to AReply.Count -4 do + for i:= 3 to AReply.Count -5 do begin P := FExperiment.PlayerFromString[AReply[i]]; FExperiment.AppendPlayer(P); CreatePlayerBox(P, False); end; + // set matrix type/ stringgrid + FExperiment.MatrixTypeAsString:=AReply[AReply.Count-4]; + // add chat FormMatrixGame.ChatMemoRecv.Lines.Clear; FormMatrixGame.ChatMemoRecv.Lines.Add(AReply[AReply.Count-3]); diff --git a/experiment_runner/units/game_experiment.pas b/experiment_runner/units/game_experiment.pas index 497b207..55d5d13 100644 --- a/experiment_runner/units/game_experiment.pas +++ b/experiment_runner/units/game_experiment.pas @@ -103,7 +103,9 @@ type FOnEndGeneration: TNotifyEvent; FOnTargetInterlocking: TNotifyEvent; procedure Consequence(Sender : TObject); + function GetMatrixTypeAsUTF8String: UTF8String; procedure Interlocking(Sender : TObject); + procedure SetMatrixTypeFromUTF8String(AValue: UTF8String); procedure SetOnTargetInterlocking(AValue: TNotifyEvent); procedure TargetInterlocking(Sender : TObject); procedure SetOnConsequence(AValue: TNotifyEvent); @@ -133,6 +135,7 @@ type property ShowChat : Boolean read FShowChat write FShowChat; property SendChatHistoryForNewPlayers : Boolean read FSendChatHistoryForNewPlayers write SetSendChatHistoryForNewPlayers; property MatrixType : TGameMatrixType read FMatrixType write SetMatrixType; + property MatrixTypeAsString : UTF8String read GetMatrixTypeAsUTF8String write SetMatrixTypeFromUTF8String; public // manipulation/ self awareness function AppendCondition : integer; overload; function AppendCondition(ACondition : TCondition) : integer;overload; @@ -567,6 +570,11 @@ begin if Assigned(FOnConsequence) then FOnConsequence(Sender); end; +function TExperiment.GetMatrixTypeAsUTF8String: UTF8String; +begin + Result := GetMatrixTypeString(MatrixType); +end; + procedure TExperiment.TargetInterlocking(Sender: TObject); begin if Assigned(FOnTargetInterlocking) then FOnTargetInterlocking(Sender); @@ -598,6 +606,11 @@ begin if Assigned(FOnInterlocking) then FOnInterlocking(Sender); end; +procedure TExperiment.SetMatrixTypeFromUTF8String(AValue: UTF8String); +begin + MatrixType := GetMatrixTypeFromString(AValue); +end; + procedure TExperiment.SetOnTargetInterlocking(AValue: TNotifyEvent); begin if FOnTargetInterlocking=AValue then Exit; @@ -719,9 +732,9 @@ var c,i: integer; LRow : string; begin + c := CurrentCondition; if Assigned(FRegData) and Assigned(Condition[c].Prompt) then begin - c := CurrentCondition; LRow := ''; if Condition[c].Prompt.ResponsesCount = Condition[c].Turn.Value then for i:=0 to Condition[c].Prompt.ResponsesCount-1 do @@ -754,7 +767,7 @@ begin end; constructor TExperiment.Create(AOwner: TComponent;AppPath:string); -var LDataPath : string; +//var LDataPath : string; begin inherited Create(AOwner); FExperimentPath := AppPath; @@ -782,9 +795,12 @@ constructor TExperiment.Create(AOwner:TComponent;AFilename,AppPath:string); begin inherited Create(AOwner); FTurnsRandom := TStringList.Create; - LoadExperimentFromFile(Self,AFilename); - CheckNeedForRandomTurns; - State := xsWaiting; + if LoadExperimentFromFile(Self,AFilename) then + begin + FExperimentPath := AppPath; + CheckNeedForRandomTurns; + State := xsWaiting; + end; //FReportReader := TReportReader.Create; //FRegData := TRegData.Create(Self, AppPath+VAL_RESEARCHER+'es'+PathDelim+Researcher+PathDelim+ExperimentName+PathDelim+'000.dat'); end; -- libgit2 0.21.2