From 81caf87805425d65a2dbef91380432961597df22 Mon Sep 17 00:00:00 2001 From: cpicanco Date: Sat, 3 Dec 2016 22:28:28 -0300 Subject: [PATCH] cleaning, admin feedback and dumps --- cultural_matrix.lpi | 7 ++++--- form_matrixgame.lfm | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- form_matrixgame.pas | 11 ++++++----- units/backup/presentation_classes.pas | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ units/game_actors.pas | 27 +++++++++++++++++++++------ units/game_experiment.pas | 42 +++++++++++++++++++++++++++++++++++++----- units/game_resources.pas | 8 ++++---- units/game_visual_elements.pas | 18 ++++++++++++++++-- units/game_zmq_actors.pas | 2 -- units/string_methods.pas | 9 +++++++++ 10 files changed, 294 insertions(+), 94 deletions(-) create mode 100644 units/backup/presentation_classes.pas diff --git a/cultural_matrix.lpi b/cultural_matrix.lpi index e2285af..b4a7a67 100644 --- a/cultural_matrix.lpi +++ b/cultural_matrix.lpi @@ -25,7 +25,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -147,6 +147,7 @@ + @@ -162,7 +163,7 @@ - + diff --git a/form_matrixgame.lfm b/form_matrixgame.lfm index bdd398e..75d2fd0 100644 --- a/form_matrixgame.lfm +++ b/form_matrixgame.lfm @@ -1,14 +1,14 @@ object FormMatrixGame: TFormMatrixGame - Left = 0 - Height = 565 - Top = 124 - Width = 1278 - HorzScrollBar.Page = 1278 + Left = 54 + Height = 612 + Top = 80 + Width = 1164 + HorzScrollBar.Page = 1164 VertScrollBar.Page = 542 AutoScroll = True Caption = 'FormMatrixGame' - ClientHeight = 555 - ClientWidth = 1278 + ClientHeight = 602 + ClientWidth = 1164 Font.Name = 'Monospace' OnActivate = FormActivate LCLVersion = '1.6.2.0' @@ -184,7 +184,7 @@ object FormMatrixGame: TFormMatrixGame AnchorSideBottom.Side = asrBottom Left = 0 Height = 17 - Top = 538 + Top = 585 Width = 1632 Anchors = [akLeft, akRight, akBottom] AutoSize = True @@ -211,10 +211,10 @@ object FormMatrixGame: TFormMatrixGame TabOrder = 4 Visible = False object GBExperiment: TGroupBox - Left = 8 - Height = 277 + Left = 16 + Height = 197 Top = 60 - Width = 188 + Width = 228 AutoSize = True Caption = 'Experimento' ChildSizing.LeftRightSpacing = 10 @@ -224,19 +224,19 @@ object FormMatrixGame: TFormMatrixGame ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 2 - ClientHeight = 260 - ClientWidth = 184 + ClientHeight = 180 + ClientWidth = 224 TabOrder = 0 object LabelExpCond: TLabel Left = 10 Height = 15 Top = 20 - Width = 128 + Width = 168 Caption = 'Condição:' ParentColor = False end object LabelExpCountCondition: TLabel - Left = 158 + Left = 198 Height = 15 Top = 20 Width = 16 @@ -247,12 +247,12 @@ object FormMatrixGame: TFormMatrixGame Left = 10 Height = 15 Top = 45 - Width = 128 + Width = 168 Caption = 'Geração:' ParentColor = False end object LabelExpCountGeneration: TLabel - Left = 158 + Left = 198 Height = 15 Top = 45 Width = 16 @@ -263,12 +263,12 @@ object FormMatrixGame: TFormMatrixGame Left = 10 Height = 15 Top = 70 - Width = 128 + Width = 168 Caption = 'Ciclo:' ParentColor = False end object LabelExpCountCycle: TLabel - Left = 158 + Left = 198 Height = 15 Top = 70 Width = 16 @@ -279,12 +279,12 @@ object FormMatrixGame: TFormMatrixGame Left = 10 Height = 15 Top = 95 - Width = 128 + Width = 168 Caption = 'Turno:' ParentColor = False end object LabelExpCountTurn: TLabel - Left = 158 + Left = 198 Height = 15 Top = 95 Width = 16 @@ -295,74 +295,69 @@ object FormMatrixGame: TFormMatrixGame Left = 10 Height = 15 Top = 120 - Width = 128 + Width = 168 Caption = 'Entrelaçamentos:' ParentColor = False end object LabelExpCountInterlocks: TLabel - Left = 158 + Left = 198 Height = 15 Top = 120 Width = 16 Caption = 'NA' ParentColor = False end - object ButtonExpStart: TButton + object LabelExpTInterlocks: TLabel Left = 10 - Height = 25 - Top = 145 - Width = 128 - Caption = 'Começar' - OnClick = ButtonExpStartClick - TabOrder = 0 - end - object LabelUnseen1: TLabel - Left = 158 - Height = 25 + Height = 15 Top = 145 - Width = 16 - ParentColor = False - end - object ButtonExpPause: TButton - Left = 10 - Height = 25 - Top = 180 - Width = 128 - Caption = 'Pausar' - Enabled = False - OnClick = ButtonExpPauseClick - TabOrder = 1 - end - object LabelUnseen2: TLabel - Left = 158 - Height = 25 - Top = 180 - Width = 16 + Width = 168 + Caption = 'Entrelaçamentos Alvo:' ParentColor = False end - object ButtonExpCancel: TButton - Left = 10 - Height = 25 - Top = 215 - Width = 128 - Caption = 'Cancelar' - Enabled = False - OnClick = ButtonExpCancelClick - TabOrder = 2 - end - object LabelUnseen3: TLabel - Left = 158 - Height = 25 - Top = 215 + object LabelExpCountTInterlocks: TLabel + Left = 198 + Height = 15 + Top = 145 Width = 16 + Caption = 'NA' ParentColor = False end end + object ButtonExpStart: TButton + Left = 16 + Height = 25 + Top = 16 + Width = 128 + Caption = 'Começar' + OnClick = ButtonExpStartClick + TabOrder = 1 + end + object ButtonExpPause: TButton + Left = 168 + Height = 25 + Top = 16 + Width = 128 + Caption = 'Pausar' + Enabled = False + OnClick = ButtonExpPauseClick + TabOrder = 2 + end + object ButtonExpCancel: TButton + Left = 320 + Height = 25 + Top = 16 + Width = 128 + Caption = 'Cancelar' + Enabled = False + OnClick = ButtonExpCancelClick + TabOrder = 3 + end end object btnConfirmRow: TButton Left = 712 Height = 26 - Top = 319 + Top = 152 Width = 86 Caption = 'Confirmar' OnClick = btnConfirmRowClick diff --git a/form_matrixgame.pas b/form_matrixgame.pas index d18cda3..45d0ff1 100644 --- a/form_matrixgame.pas +++ b/form_matrixgame.pas @@ -28,23 +28,22 @@ type TFormMatrixGame = class(TForm) btnConfirmRow: TButton; - ButtonExpStart: TButton; - ButtonExpPause: TButton; ButtonExpCancel: TButton; + ButtonExpPause: TButton; + ButtonExpStart: TButton; GBIndividual: TGroupBox; GBLastChoice: TGroupBox; GBIndividualAB: TGroupBox; GBGrupo: TGroupBox; GBAdmin: TGroupBox; GBExperiment: TGroupBox; - LabelUnseen1: TLabel; - LabelUnseen2: TLabel; - LabelUnseen3: TLabel; LabelExpCountCondition: TLabel; + LabelExpCountTInterlocks: TLabel; LabelExpGen: TLabel; LabelExpCountGeneration: TLabel; LabelExpCycle: TLabel; LabelExpCountCycle: TLabel; + LabelExpTInterlocks: TLabel; LabelExpTurn: TLabel; LabelExpCountTurn: TLabel; LabelExpInterlocks: TLabel; @@ -222,6 +221,8 @@ procedure TFormMatrixGame.SetGameActor(AValue: TGameActor); procedure SetZMQAdmin; begin FGameControl := TGameControl.Create(TZMQAdmin.Create(Self,FID),ExtractFilePath(Application.ExeName)); + GBIndividual.Visible:=False; + GBIndividualAB.Visible:=False; GBAdmin.Visible:= True; end; diff --git a/units/backup/presentation_classes.pas b/units/backup/presentation_classes.pas new file mode 100644 index 0000000..6137680 --- /dev/null +++ b/units/backup/presentation_classes.pas @@ -0,0 +1,135 @@ +unit presentation_classes; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, ExtCtrls; + +type + + { TAnnouncerStartEvent } + + TAnnouncerStartEvent = procedure (AMessage : array of UTF8String) of object; + + { TAnnoucerMessages } + + TAnnoucerMessages = array of array of UTF8String; + + { TIntervalarAnnouncer } + + TIntervalarAnnouncer = class(TComponent) + private + FMessages: TAnnoucerMessages; + FTimer : TTimer; + FOnStart: TAnnouncerStartEvent; + function GetEnabled: Boolean; + function GetInterval: integer; + procedure NextMessage; + procedure SetEnabled(AValue: Boolean); + procedure SelfDestroy(Sender: TObject); + procedure SetInterval(AValue: integer); + procedure StartTimer(Sender:TObject); + public + constructor Create(AOwner : TComponent); override; + procedure Append(M : array of UTF8String); + procedure Reversed; + property Messages : TAnnoucerMessages read FMessages write FMessages; + property OnStart : TAnnouncerStartEvent read FOnStart write FOnStart; + property Interval : integer read GetInterval write SetInterval; + property Enabled : Boolean read GetEnabled write SetEnabled; + end; + +implementation + +{ TIntervalarAnnouncer } + +procedure TIntervalarAnnouncer.SetEnabled(AValue: Boolean); +begin + if FTimer.Enabled=AValue then Exit; + FTimer.Enabled:= AValue; +end; + +function TIntervalarAnnouncer.GetEnabled: Boolean; +begin + Result := FTimer.Enabled; +end; + +function TIntervalarAnnouncer.GetInterval: integer; +begin + Result := FTimer.Interval; +end; + +procedure TIntervalarAnnouncer.NextMessage; +begin + SetLength(FMessages,Length(FMessages)-1); +end; + +procedure TIntervalarAnnouncer.SelfDestroy(Sender : TObject); +var LAnnouncer : TIntervalarAnnouncer; +begin + if Length(FMessages) > 0 then + begin + LAnnouncer := TIntervalarAnnouncer.Create(nil); + LAnnouncer.Messages := FMessages; + LAnnouncer.OnStart:= FOnStart; + LAnnouncer.Enabled:=True; + end; + Free; +end; + +procedure TIntervalarAnnouncer.SetInterval(AValue: integer); +begin + if FTimer.Interval=AValue then Exit; + FTimer.Interval:= AValue; +end; + +procedure TIntervalarAnnouncer.StartTimer(Sender: TObject); +var M : array of UTF8String; +begin + M := FMessages[High(FMessages)]; + NextMessage; + if Assigned(FOnStart) then FOnStart(M); +end; + +constructor TIntervalarAnnouncer.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FTimer := TTimer.Create(Self); + FTimer.Enabled := False; + FTimer.Interval := 5000; + FTimer.OnTimer:=@SelfDestroy; + //FTimer.OnStopTimer:=@SelfDestroy; + FTimer.OnStartTimer:=@StartTimer; +end; + +procedure TIntervalarAnnouncer.Append(M: array of UTF8String); +var + H : TAnnoucerMessages; + i: Integer; +begin + SetLength(H,1,Length(M)); + + for i := Low(M) to High(M) do + H[0,i] := M[i]; + + SetLength(FMessages,Length(FMessages)+1); + FMessages[High(FMessages)] := H[0]; +end; + +procedure TIntervalarAnnouncer.Reversed; +var + i : integer; + M : TAnnoucerMessages; +begin + for i := High(FMessages) downto Low(FMessages) do + begin + SetLength(M,Length(M)+1); + M[High(M)] := FMessages[i] + end; + FMessages := M; +end; + +end. + diff --git a/units/game_actors.pas b/units/game_actors.pas index 71a2d0a..2c55767 100644 --- a/units/game_actors.pas +++ b/units/game_actors.pas @@ -15,7 +15,7 @@ interface uses Classes, SysUtils, Forms,PopupNotifier, ExtCtrls - , game_actors_point + , game_actors_point, game_visual_elements ; type @@ -42,7 +42,7 @@ type //TGameOperator = (goNONE, goAND, goOR); TGameStyle = (gtNone, gtRowsOnly, gtColorsOnly, gtRowsAndColors, gtRowsOrColors); - TGameConsequenceStyle = (gscNone, gscMessage, gscBroadcastMessage, gscPoints, gscVariablePoints, gscA, gscB,gscG); + TGameConsequenceStyle = (gscNone, gscMessage, gscBroadcastMessage, gscPoints, gscVariablePoints, gscA, gscB,gscG,gscI); TConsequenceStyle = set of TGameConsequenceStyle; TGamePromptStyle = (gsYes, gsNo, gsAll, gsMetacontingency, gsContingency, gsBasA, gsRevertPoints); @@ -109,6 +109,7 @@ type procedure Clean; virtual; procedure PresentMessage; procedure PresentPoints; + procedure PresentPoints(APlayerBox : TPlayerBox); overload; property ShouldPublishMessage : Boolean read GetShouldPublishMessage; property PlayerNicname : string read FNicname write FNicname; property AppendiceSingular : string read FAppendiceSingular; @@ -127,6 +128,7 @@ type FCriteria : TCriteria; FName: string; FOnCriteria: TNotifyEvent; + FOnTargetCriteria : TNotifyEvent; function RowMod(R:TGameRow):TGameRow; procedure CriteriaEvent; public @@ -137,6 +139,7 @@ type function ConsequenceFromPlayerID(AID:string):string; procedure Clean; property OnCriteria : TNotifyEvent read FOnCriteria write FOncriteria; + property OnTargetCriteria : TNotifyEvent read FOnTargetCriteria write FOnTargetCriteria; property Fired : Boolean read FFired; property Consequence : TConsequence read FConsequence; property Criteria : TCriteria read FCriteria; @@ -184,10 +187,10 @@ type TCondition = record ConditionName : string; Contingencies : TContingencies; // for producing points during the condition - Interlocks : record - Count : integer; // culturant, - History: array of Boolean; // to calculate interlock porcentage in the last cycles. sync with OnCycles - end; + //Interlocks : record + // Count : integer; // culturant, + // History: array of Boolean; // to calculate interlock porcentage in the last cycles. sync with OnCycles + //end; Points : record Count : TPoints; // sum of points produced during the condition @@ -235,6 +238,7 @@ procedure TContingency.CriteriaEvent; begin FFired:=True; if Assigned(FOnCriteria) then FOnCriteria(Self); + if Assigned(FOnTargetCriteria) then FOnTargetCriteria(Self); end; constructor TContingency.Create(AOwner:TComponent;AConsequence:TConsequence;ACriteria:TCriteria;IsMeta:Boolean); @@ -646,6 +650,9 @@ end; procedure TConsequence.PresentPoints; begin //is gscPoints in FStyle then just in case... + if gscI in FStyle then + FormMatrixGame.LabelIndACount.Caption := IntToStr(StrToInt(FormMatrixGame.LabelIndACount.Caption) + FP.ResultAsInteger); + if gscA in FStyle then FormMatrixGame.LabelIndACount.Caption := IntToStr(StrToInt(FormMatrixGame.LabelIndACount.Caption) + FP.ResultAsInteger); @@ -656,6 +663,14 @@ begin FormMatrixGame.LabelGroupCount.Caption:= IntToStr(StrToInt(FormMatrixGame.LabelGroupCount.Caption) + FP.ResultAsInteger); end; +procedure TConsequence.PresentPoints(APlayerBox: TPlayerBox); +begin + if gscG in FStyle then + FormMatrixGame.LabelGroupCount.Caption:= IntToStr(StrToInt(FormMatrixGame.LabelGroupCount.Caption) + FP.ResultAsInteger) + else + APlayerBox.LabelPointsCount.Caption := IntToStr(StrToInt(APlayerBox.LabelPointsCount.Caption) + FP.ResultAsInteger); +end; + function TConsequence.GetShouldPublishMessage: Boolean; // for players only begin Result := gscBroadcastMessage in FStyle; diff --git a/units/game_experiment.pas b/units/game_experiment.pas index 42d4c80..4a860ed 100644 --- a/units/game_experiment.pas +++ b/units/game_experiment.pas @@ -85,6 +85,7 @@ type procedure SetResearcherCanPlay(AValue: Boolean); procedure SetSendChatHistoryForNewPlayers(AValue: Boolean); procedure SetState(AValue: TExperimentState); + procedure SetTargetInterlocking; private FABPoints: Boolean; FChangeGeneration: string; @@ -95,9 +96,11 @@ type FOnEndCycle: TNotifyEvent; FOnEndExperiment: TNotifyEvent; FOnEndGeneration: TNotifyEvent; + FOnTargetInterlocking: TNotifyEvent; procedure Consequence(Sender : TObject); function GetPlayerToKick: string; procedure Interlocking(Sender : TObject); + procedure TargetInterlocking(Sender : TObject); procedure SetPlayersQueue(AValue: string); procedure WriteReportHeader; procedure WriteReportRowNames; @@ -136,6 +139,7 @@ type property CurrentCondition : integer read FCurrentCondition write FCurrentCondition; property Contingency[C, I : integer] : TContingency read GetContingency write SetContingency; property ContingenciesCount[C:integer]:integer read GetContingenciesCount; + property Cycles : integer read GetCurrentAbsoluteCycle; property Player[I : integer] : TPlayer read GetPlayer write SetPlayer; property PlayerFromID[S : UTF8string ] : TPlayer read GetPlayer write SetPlayer; property PlayersCount : integer read GetPlayersCount; @@ -161,6 +165,7 @@ type property OnEndExperiment : TNotifyEvent read FOnEndExperiment write SetOnEndExperiment; property OnConsequence : TNotifyEvent read FOnConsequence write SetOnConsequence; property OnInterlocking : TNotifyEvent read FOnInterlocking write SetOnInterlocking; + property OnTargetInterlocking : TNotifyEvent read FOnTargetInterlocking write FOnTargetInterlocking; end; resourcestring @@ -246,7 +251,7 @@ var begin if Assigned(FOnEndCondition) then FOnEndCondition(Self); Inc(FCurrentCondition); - if FCurrentCondition = ConditionsCount-1 then + if FCurrentCondition = ConditionsCount then begin EndExperiment; Exit; @@ -264,13 +269,13 @@ begin case FConditions[CurrentCondition].EndCriterium.Style of gecWhichComeFirst: begin - if (GetCurrentAbsoluteCycle = FConditions[CurrentCondition].EndCriterium.AbsoluteCycles) or + if (GetCurrentAbsoluteCycle = FConditions[CurrentCondition].EndCriterium.AbsoluteCycles-1) or (LInterlocks >= FConditions[CurrentCondition].EndCriterium.InterlockingPorcentage) then EndCondition; end; gecAbsoluteCycles: - if GetCurrentAbsoluteCycle = FConditions[CurrentCondition].EndCriterium.AbsoluteCycles then + if GetCurrentAbsoluteCycle = FConditions[CurrentCondition].EndCriterium.AbsoluteCycles-1 then EndCondition; gecInterlockingPorcentage: @@ -288,6 +293,9 @@ var c:integer; begin c := CurrentCondition; Result := (Condition[c].Cycles.Value*Condition[c].Cycles.Generation)+Condition[c].Cycles.Count; + {$IFDEF DEBUG} + WriteLn('TExperiment.GetCurrentAbsoluteCycle:',Result); + {$ENDIF} end; function TExperiment.GetPlayer(I : integer): TPlayer; @@ -382,6 +390,9 @@ begin // return result in porcentage Result := (i*100)/LContingencyResults.Count; end; + {$IFDEF DEBUG} + WriteLn('TExperiment.GetInterlockingPorcentageInLastCycles:',Result); + {$ENDIF} end; function TExperiment.GetConsequenceStringFromChoice(P: TPlayer): Utf8string; @@ -542,14 +553,25 @@ begin FState:=AValue; end; +procedure TExperiment.SetTargetInterlocking; +var i : integer; +begin + for i:= 0 to ContingenciesCount[CurrentCondition] do + if Condition[CurrentCondition].Contingencies[i].Meta then + begin + Condition[CurrentCondition].Contingencies[i].OnTargetCriteria:=@TargetInterlocking; + Break; + end; +end; + procedure TExperiment.Consequence(Sender: TObject); begin if Assigned(FOnConsequence) then FOnConsequence(Sender); end; -procedure TExperiment.Interlocking(Sender: TObject); +procedure TExperiment.TargetInterlocking(Sender: TObject); begin - if Assigned(FOnInterlocking) then FOnInterlocking(Sender); + if Assigned(FOnTargetInterlocking) then FOnTargetInterlocking(Sender); end; procedure TExperiment.SetPlayersQueue(AValue: string); @@ -573,6 +595,11 @@ begin Result := FPlayers[0].ID; end; +procedure TExperiment.Interlocking(Sender: TObject); +begin + if Assigned(FOnInterlocking) then FOnInterlocking(Sender); +end; + procedure TExperiment.WriteReportHeader; var @@ -715,10 +742,15 @@ begin end; constructor TExperiment.Create(AOwner: TComponent;AppPath:string); +var i : integer; begin inherited Create(AOwner); FTurnsRandom := TStringList.Create; LoadExperimentFromResource(Self); + + // TODO: Allow custom target interlocking. Now just taking the first meta, as usual in the lab. + SetTargetInterlocking; + CheckNeedForRandomTurns; FReportReader := TReportReader.Create; diff --git a/units/game_resources.pas b/units/game_resources.pas index 118f9e8..71224bf 100644 --- a/units/game_resources.pas +++ b/units/game_resources.pas @@ -216,10 +216,10 @@ const ( ConditionName : ''; Contingencies : nil; - Interlocks : ( - Count : 0; - History : nil; - ); + //Interlocks : ( + // Count : 0; + // History : nil; + //); Points : ( Count : ( A:0; B:0; G:0; ); diff --git a/units/game_visual_elements.pas b/units/game_visual_elements.pas index 839b282..0bba2f8 100644 --- a/units/game_visual_elements.pas +++ b/units/game_visual_elements.pas @@ -25,16 +25,19 @@ type PanelLastColor : TPanel; LabelLastRow : TLabel; LabelLastRowCount : TLabel; + LabelPoints : TLabel; + LabelPointsCount : TLabel; private FID: string; public - constructor Create(AOwner: TComponent;AID:string); reintroduce; + constructor Create(AOwner: TComponent;AID:string;Admin:Boolean=False); reintroduce; property ID : string read FID write FID; end; resourcestring CAP_ROW = 'Linha:'; CAP_COLOR = 'Cor:'; + CAP_POINTS = 'Pontos:'; CAP_NA = 'NA'; CAP_WAINTING_FOR_PLAYER = 'Esperando Jogador...'; @@ -42,7 +45,7 @@ implementation { TPlayerBox } -constructor TPlayerBox.Create(AOwner: TComponent; AID: string); +constructor TPlayerBox.Create(AOwner: TComponent; AID: string; Admin: Boolean); begin inherited Create(AOwner); FID := AID; @@ -74,6 +77,17 @@ begin LabelLastRowCount.Caption:=CAP_NA; LabelLastRowCount.Parent := Self; Enabled:= False; + + if Admin then + begin + LabelPoints:= TLabel.Create(Self); + LabelPoints.Caption:=CAP_POINTS; + LabelPoints.Parent := Self; + + LabelPointsCount:= TLabel.Create(Self); + LabelPointsCount.Caption:='0'; + LabelPointsCount.Parent := Self; + end; //LabelLastRow.AutoSize := False; end; diff --git a/units/game_zmq_actors.pas b/units/game_zmq_actors.pas index 7a474b0..0df0a2e 100644 --- a/units/game_zmq_actors.pas +++ b/units/game_zmq_actors.pas @@ -11,8 +11,6 @@ unit game_zmq_actors; {$mode objfpc}{$H+} -{$DEFINE DEBUG} - interface uses diff --git a/units/string_methods.pas b/units/string_methods.pas index 23c1c8b..cbae7b7 100644 --- a/units/string_methods.pas +++ b/units/string_methods.pas @@ -234,6 +234,10 @@ begin 'MENSAGEM A TODOS' : Result:= gscBroadcastMessage; 'PONTOS' : Result:= gscPoints; 'PONTOS COM VARIAÇÃO' : Result:= gscVariablePoints; + 'PONTOS A' : Result:= gscA; + 'PONTOS B' : Result:= gscB; + 'PONTOS G' : Result:= gscG; + 'PONTOS I' : Result:= gscI; end; end; @@ -245,6 +249,10 @@ begin gscBroadcastMessage : Result:= 'MENSAGEM A TODOS'; gscPoints : Result:= 'PONTOS' ; gscVariablePoints : Result:= 'PONTOS COM VARIAÇÃO'; + gscA : Result:= 'PONTOS A'; + gscB : Result:= 'PONTOS B'; + gscG : Result:= 'PONTOS G'; + gscI : Result:= 'PONTOS I'; end; end; @@ -358,6 +366,7 @@ begin gscA:Result += 'A'; gscB:Result += 'B'; gscG:Result += 'G'; + gscI:Result += 'I'; end; Result += ','; end; -- libgit2 0.21.2