diff --git a/src/shared/xdynrec.pas b/src/shared/xdynrec.pas
index ac55cf5d0360202e28589c97e5525e71253dc3e2..12d7256429d473c5f46061d7a7fe4084d2251f97 100644 (file)
--- a/src/shared/xdynrec.pas
+++ b/src/shared/xdynrec.pas
procedure setUserField (const fldname: AnsiString; v: LongInt);
procedure setUserField (const fldname: AnsiString; v: AnsiString);
+ procedure setUserField (const fldname: AnsiString; v: Boolean);
public
property id: AnsiString read mId; // for map parser
end;
+procedure TDynRecord.setUserField (const fldname: AnsiString; v: Boolean);
+var
+ fld: TDynField;
+begin
+ if (Length(fldname) = 0) then exit;
+ fld := field[fldname];
+ if (fld <> nil) then
+ begin
+ if (fld.mType <> fld.TType.TBool) or (fld.mEBS <> fld.TEBS.TNone) then
+ begin
+ raise Exception.Create(Format('invalid user field ''%s'' type', [fld.name]));
+ end;
+ end
+ else
+ begin
+ fld := TDynField.Create(fldname, fld.TType.TBool);
+ fld.mOwner := self;
+ fld.mIVal := Integer(v);
+ fld.mInternal := true;
+ fld.mDefined := true;
+ addField(fld);
+ end;
+end;
+
+
procedure TDynRecord.parseDef (pr: TTextParser);
var
fld: TDynField;